Skip to content

feat(dialog): migrate Manager dialog to Reka-UI (Phase 4)#12403

Open
dante01yoon wants to merge 1 commit into
jaewon/fe-575-dialog-reka-migration-phase-3from
jaewon/fe-576-dialog-reka-migration-phase-4
Open

feat(dialog): migrate Manager dialog to Reka-UI (Phase 4)#12403
dante01yoon wants to merge 1 commit into
jaewon/fe-575-dialog-reka-migration-phase-3from
jaewon/fe-576-dialog-reka-migration-phase-4

Conversation

@dante01yoon
Copy link
Copy Markdown
Collaborator

@dante01yoon dante01yoon commented May 21, 2026

Summary

Phase 4 of the dialog migration. Flips useManagerDialog onto the Reka renderer added in Phase 0, with content sizing that matches the legacy .manager-dialog CSS (1724px × 80vh, expanding to 2200×1320 above 3000px). Public API of useManagerDialog / useDialogService is unchanged.

Parent: FE-571
This phase: FE-576
Predecessors: #11719 (Phase 0, merged), #12041 (Phase 1, merged), #12109 (Phase 2, merged), #12182 (Phase 3, stacked PR base)

Stacked on Phase 3: this PR targets jaewon/fe-575-dialog-reka-migration-phase-3. Rebase onto main after #12182 lands.

Changes

src/workbench/extensions/manager/composables/useManagerDialog.ts (+12)

Field Value Reason
renderer 'reka' Flip onto the new path
size 'full' Free DialogContent to take the contentClass dimensions
contentClass w-[90vw] max-w-[1724px] sm:max-w-[1724px] h-[80vh] max-h-[1026px] min-[3000px]:max-w-[2200px] min-[3000px]:max-h-[1320px] rounded-2xl overflow-hidden Mirrors legacy .manager-dialog global CSS exactly
modal false Manager hosts PrimeVue overlays (SingleSelect, SearchAutocomplete-host scope, sort dropdown) teleported to body. Reka modal trap disables their pointer-events. Same fix Phase 3 applied to Settings

Intentionally left for Phase 6: the global .manager-dialog CSS in GlobalDialog.vue <style> and the matching class="manager-dialog" on BaseModalLayout. Removing them here is a cascade-order risk (they currently override BaseModalLayout size="lg" 1280px cap with 1724px); Phase 6 owns the CSS-overrides cleanup pass.

Tests

  • src/workbench/extensions/manager/composables/useManagerDialog.test.ts (new) — 5 tests: renderer flip + Manager sizing, non-modal, initialTab forwarding, initialPackId forwarding, hide() closes.

Verification

DOM probes (local dev, useManagerDialog().show() against ComfyUI on :8189)

Probe Result
Manager dialog node [role="dialog"] at z-1804, rect 1724×794 — contentClass applied exactly
SingleSelect listbox Teleported to BODY > DIV > listbox, z-3000 — escapes Reka overflow-hidden
SearchAutocomplete Uses Reka ComboboxPortal (z-3000, position="popper") — same teleport guarantee by construction
Stacked Reka confirm over Manager Manager z-1804, confirm z-1806 — vRekaZIndex orders correctly
ESC on stacked confirm Top confirm closes, Manager remains open

Screenshots from local verification will be attached as PR comments.

Quality gates

  • pnpm typecheck — clean
  • pnpm lint — clean for touched files
  • pnpm format — applied
  • pnpm test:unit (touched + adjacent):
    • useManagerDialog.test.ts — 5/5
    • src/workbench/extensions/manager/composables/ — 156/156
    • useSettingsDialog.test.ts + src/components/dialog/ (Phase 3 regression net) — 86/86
  • CI Playwright matrix
  • Manual verification on a backend (ComfyUI :8189)

Public API impact

None. useManagerDialog().show(initialTab?, initialPackId?) keeps the same signature.

Out of scope (later phases)

  • ConfirmDialog callers — Phase 5 (FE-577)
  • Removing PrimeVue Dialog/<style> overrides in GlobalDialog.vue (incl. .manager-dialog) — Phase 6 (FE-578)
  • Designer pass on Manager dimensions (FE-576 acceptance Bump braces from 3.0.2 to 3.0.3 in /tests-ui #1) — owner Jaewon, async with this PR

Review focus

  1. Sizing translated literallycontentClass mirrors the existing .manager-dialog CSS rule (height + max-width + max-height + 3000px breakpoint). Net visible should be byte-identical to today. Worth a designer pass per FE-576 acceptance criteria.
  2. modal: false rationale — same as Phase 3 Settings: Manager's PrimeVue-overlay children break under Reka modal focus trap. Acceptance Configure vite to copy from src to dist #2 ("Install/uninstall flows behave identically") is preserved because no overlay component changed; only the outer dialog renderer.
  3. Phase 6 deferred cleanup.manager-dialog CSS rule + class="manager-dialog" on BaseModalLayout are kept on purpose. They override BaseModalLayout size="lg"'s 1280px cap with 1724px on small viewports; removing them naively regresses width. Phase 6 will replace via size prop or new variant.

screenshot

keybinding-panel nested-modify-keybinding phase4-manager-node-pack-dropdown settings-dialog-reka

Test plan

  • Unit: 5/5 new + 156/156 manager composables + 86/86 adjacent
  • CI: full Vitest + Playwright matrix
  • Manual on a backend:
    • Open Manager (nav, search filter, install button visible, scroll grid)
    • SingleSelect (Node Pack) dropdown not clipped by dialog overflow-hidden
    • Stacked Reka confirm over Manager renders above with correct z-index
    • ESC closes only the top dialog

Flip useManagerDialog onto the Reka renderer added in Phase 0. Public API
of useManagerDialog and useDialogService is unchanged.

- dialogComponentProps.renderer='reka' + size='full' + Manager content
  sizing (matches legacy .manager-dialog: 1724px × 80vh, expanding to
  2200×1320 above 3000px viewports).
- modal=false to keep SingleSelect / SearchAutocomplete PrimeVue overlays
  working (focus trap + body pointer-events). Same reason Settings flipped
  to non-modal in Phase 3.
- New useManagerDialog.test.ts pins the renderer flip against regression.

Parent FE-571, this phase FE-576.
@dosubot dosubot Bot added the size:S This PR changes 10-29 lines, ignoring generated files. label May 21, 2026
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 21, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: a9c3e00e-e082-4e81-9042-6b17eec0bc58

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch jaewon/fe-576-dialog-reka-migration-phase-4

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 21, 2026

🎨 Storybook: ✅ Built — View Storybook

Details

⏰ Completed at: 05/21/2026, 02:08:42 PM UTC

Links

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 21, 2026

🎭 Playwright: ✅ 1623 passed, 0 failed · 4 flaky

📊 Browser Reports
  • chromium: View Report (✅ 1602 / ❌ 0 / ⚠️ 4 / ⏭️ 5)
  • chromium-2x: View Report (✅ 2 / ❌ 0 / ⚠️ 0 / ⏭️ 0)
  • chromium-0.5x: View Report (✅ 1 / ❌ 0 / ⚠️ 0 / ⏭️ 0)
  • mobile-chrome: View Report (✅ 18 / ❌ 0 / ⚠️ 0 / ⏭️ 0)

@codecov
Copy link
Copy Markdown

codecov Bot commented May 21, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

@@                             Coverage Diff                              @@
##           jaewon/fe-575-dialog-reka-migration-phase-3   #12403   +/-   ##
============================================================================
  Coverage                                        59.90%   59.90%           
============================================================================
  Files                                             1415     1415           
  Lines                                            72289    72290    +1     
  Branches                                         20070    20070           
============================================================================
+ Hits                                             43302    43307    +5     
+ Misses                                           28513    28509    -4     
  Partials                                           474      474           
Flag Coverage Δ
unit 59.90% <100.00%> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...extensions/manager/composables/useManagerDialog.ts 100.00% <100.00%> (+44.44%) ⬆️
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@dante01yoon dante01yoon force-pushed the jaewon/fe-576-dialog-reka-migration-phase-4 branch from c0d46c6 to 3de88b7 Compare May 21, 2026 14:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S This PR changes 10-29 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants