gsxdsm
89b4621a93
FN-8607: migrate shared modals to FloatingWindow
...
Standardize agent, onboarding, and utility modal behavior on the shared FloatingWindow contract.
- Migrate modal hosts to shared geometry, sheet, dismissal, and focus behavior.
- Make FloatingWindow the sole owner of modal ARIA semantics and protect portal-safe dismissal surfaces.
- Cover migrated modal contracts and document the responsive sheet requirements.
Files changed:
docs/dashboard-guide.md | 6 +-
packages/dashboard/app/components/AgentGenerationModal.tsx | 8 +-
packages/dashboard/app/components/AgentImportModal.tsx | 4 +-
packages/dashboard/app/components/AgentListModal.tsx | 4 +-
packages/dashboard/app/components/AgentOnboardingModal.tsx | 4 +-
packages/dashboard/app/components/DockerNodeOnboardingModal.tsx | 4 +-
packages/dashboard/app/components/ExperimentalAgentOnboardingModal.tsx | 4 +-
packages/dashboard/app/components/FloatingWindow.css | 36 ++++--
packages/dashboard/app/components/FloatingWindow.tsx | 12 ++
packages/dashboard/app/components/MilestoneSliceInterviewModal.tsx | 2 +-
packages/dashboard/app/components/NativeShellOnboardingModal.tsx | 2 +-
packages/dashboard/app/components/SetupWizardModal.tsx | 3 +-
packages/dashboard/app/components/SubtaskBreakdownModal.tsx | 2 +-
packages/dashboard/app/components/__tests__/AgentModals.floatingWindow.test.tsx | 134 ++++++++++++++++++---
packages/dashboard/app/components/__tests__/OnboardingModals.floatingWindow.test.tsx | 128 +++++++++++++++++---
packages/dashboard/app/components/__tests__/UtilityModals.floatingWindow.test.tsx | 124 +++++++++++++++++--
packages/dashboard/app/components/__tests__/migratedModalFixtures.tsx | 59 ++++++---
packages/dashboard/app/components/__tests__/modalFloatingWindowContract.test.tsx | 20 ++-
18 files changed, 458 insertions(+), 98 deletions(-)
Fusion-Task-Id: FN-8607
Fusion-Task-Lineage: 11ba6a9c-ce89-4358-83c4-a15ef15b6128
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-26 18:57:02 -07:00
gsxdsm
bdfa5186c4
FN-8622: capture Chromium CDP modal screenshots
...
Add assertion-guarded CDP evidence for migrated Agent List and Setup Wizard modal touch geometry.
- Mount production modal surfaces in the resize browser fixture
- Verify tablet resize and drag behavior plus true-phone sheet behavior
- Store the captured phone and tablet screenshots as regression evidence
- Extend mobile sheet styling to the migrated modal hosts
Files changed:
.../dashboard/app/components/FloatingWindow.css | 8 ++
.../app/task-modal-touch-resize-e2e-fixture.tsx | 17 +++-
.../fn-8607/phone-fullscreen-sheet.png | Bin 0 -> 17823 bytes
.../fn-8607/tablet-agent-list-after.png | Bin 0 -> 21489 bytes
.../fn-8607/tablet-setup-wizard-after.png | Bin 0 -> 81964 bytes
.../task-modal-touch-resize-browser.test.ts | 99 +++++++++++++++++++++
6 files changed, 120 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-8622
Fusion-Task-Lineage: 3fabd950-bac0-47f4-9649-08709db31e02
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-26 18:43:18 -07:00
gsxdsm
ba24a530ef
FN-8620: migrate dashboard modals to FloatingWindow
...
Standardize dashboard modal geometry and interaction behavior through the shared FloatingWindow contract.
- Migrate New Task, right-dock expansion, terminal, onboarding, and utility modals to FloatingWindow.
- Expand shared window resizing, positioning, accessibility, and contract coverage.
- Document the modal migration inventory and publish changesets.
Files changed:
.changeset/fn-8607-floating-modal-contract.md | 7 +
.changeset/fn-8620-bespoke-geometry-modals.md | 7 +
docs/dashboard-guide.md | 47 ++
docs/dashboard-modal-inventory.md | 6 +-
.../app/components/AgentGenerationModal.tsx | 14 +-
.../dashboard/app/components/AgentImportModal.tsx | 7 +-
.../dashboard/app/components/AgentListModal.tsx | 8 +-
.../app/components/AgentOnboardingModal.tsx | 6 +-
.../app/components/DockerNodeOnboardingModal.tsx | 14 +-
.../ExperimentalAgentOnboardingModal.tsx | 6 +-
.../dashboard/app/components/FloatingWindow.css | 21 +
.../dashboard/app/components/FloatingWindow.tsx | 62 ++-
packages/dashboard/app/components/MailboxModal.tsx | 14 +-
.../components/MilestoneSliceInterviewModal.tsx | 12 +-
.../app/components/NativeShellOnboardingModal.tsx | 6 +-
packages/dashboard/app/components/NewTaskModal.css | 196 +------
packages/dashboard/app/components/NewTaskModal.tsx | 593 +++++++--------------
packages/dashboard/app/components/RightDock.css | 84 +--
.../app/components/RightDockExpandModal.tsx | 333 ++----------
.../dashboard/app/components/SetupWizardModal.tsx | 20 +-
.../app/components/SubtaskBreakdownModal.tsx | 6 +-
.../dashboard/app/components/TerminalModal.css | 120 +----
.../dashboard/app/components/TerminalModal.tsx | 321 ++---------
.../__tests__/AgentModals.floatingWindow.test.tsx | 26 +
.../components/__tests__/FloatingWindow.test.tsx | 27 +-
.../app/components/__tests__/NewTaskModal.test.tsx | 66 +--
.../OnboardingModals.floatingWindow.test.tsx | 20 +
.../app/components/__tests__/RightDock.test.tsx | 18 +-
.../components/__tests__/TerminalModal.test.tsx | 61 +--
.../UtilityModals.floatingWindow.test.tsx | 18 +
.../components/__tests__/migratedModalFixtures.tsx | 25 +
.../__tests__/modalFloatingWindowContract.test.tsx | 30 ++
32 files changed, 726 insertions(+), 1475 deletions(-)
Fusion-Task-Id: FN-8620
Fusion-Task-Lineage: 2a912260-3292-4b13-bcf0-9de5a3df8ccd
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-26 18:35:10 -07:00
gsxdsm
743dc5f46e
FN-8612: remove tablet task modal padding
...
Keep task modals dense on tablets without reducing their touch resize targets.
- Move the Task Detail drag target out of layout flow while preserving its 44px hit area.
- Restore desktop-density New Task header and body padding on tablet resize surfaces.
- Add CSS, unit, and browser coverage for tablet geometry and generic floating windows.
Files changed:
.changeset/fn-8612-tablet-modal-padding.md | 7 +
docs/dashboard-guide.md | 8 +-
.../task-detail-modal-tablet-width.test.ts | 8 +
.../dashboard/app/components/FloatingWindow.css | 40 ++++-
packages/dashboard/app/components/NewTaskModal.css | 14 ++
.../FloatingWindow.touch-geometry.test.tsx | 14 ++
.../app/components/__tests__/NewTaskModal.test.tsx | 8 +
.../app/task-modal-touch-resize-e2e-fixture.tsx | 54 ++++++-
.../task-modal-touch-resize-browser.test.ts | 177 ++++++++++++++++++++-
packages/dashboard/vitest.config.ts | 6 +
10 files changed, 322 insertions(+), 14 deletions(-)
Fusion-Task-Id: FN-8612
Fusion-Task-Lineage: fecd7c48-7b6c-434e-9002-f8f21241120c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-26 15:42:53 -07:00
gsxdsm
a6885b73f2
FN-8606: migrate core workflow modals to shared floating windows
...
Migrate dashboard dialogs to the shared movable and resizable FloatingWindow contract.
- Move core, workflow, Git, planning, and automation modal surfaces to stable floating-window identities with persisted geometry.
- Suspend geometry and floating controls for phone and short-viewport sheets, including Quick Chat.
- Add accessibility wiring, tablet touch targets, migration tests, and operator documentation.
Files changed:
.changeset/fn-8606-floating-window-core-modals.md | 7 +
docs/dashboard-guide.md | 4 +
packages/dashboard/app/App.tsx | 8 +-
.../dashboard/app/components/ActivityLogModal.tsx | 30 ++--
packages/dashboard/app/components/AddNodeModal.tsx | 8 +-
.../dashboard/app/components/ChangesDiffModal.tsx | 35 +++--
.../dashboard/app/components/ConnectNodeModal.tsx | 9 +-
.../dashboard/app/components/FloatingWindow.css | 71 ++++++++-
.../dashboard/app/components/FloatingWindow.tsx | 27 +++-
.../dashboard/app/components/GitManagerModal.tsx | 30 +++-
.../dashboard/app/components/GroupTaskModal.tsx | 8 +-
.../app/components/ModelOnboardingModal.tsx | 28 ++--
.../dashboard/app/components/NodeDetailModal.tsx | 9 +-
.../dashboard/app/components/PlanningModeModal.css | 1 -
.../dashboard/app/components/PlanningModeModal.tsx | 57 +++----
.../app/components/ScheduledTasksModal.tsx | 9 +-
packages/dashboard/app/components/ScriptsModal.css | 1 -
packages/dashboard/app/components/ScriptsModal.tsx | 32 ++--
.../dashboard/app/components/SettingsModal.css | 1 -
.../dashboard/app/components/SettingsModal.tsx | 58 ++++---
.../app/components/WorkflowAddStepModal.css | 15 --
.../app/components/WorkflowAddStepModal.tsx | 46 +++---
.../components/__tests__/ActivityLogModal.test.tsx | 33 ++--
.../app/components/__tests__/AddNodeModal.test.tsx | 12 +-
.../components/__tests__/ChangesDiffModal.test.tsx | 78 +++++-----
.../components/__tests__/ConnectNodeModal.test.tsx | 7 +
.../components/__tests__/FloatingWindow.test.tsx | 173 ++++++++++++++++++++-
.../components/__tests__/GitManagerModal.test.tsx | 30 ++--
.../components/__tests__/GroupTaskModal.test.tsx | 9 ++
.../__tests__/ModelOnboardingModal.test.tsx | 18 ++-
.../components/__tests__/NodeDetailModal.test.tsx | 9 ++
.../__tests__/PlanningModeModal.autosize.test.tsx | 30 ++--
.../__tests__/ScheduledTasksModal.test.tsx | 21 ++-
.../app/components/__tests__/ScriptsModal.test.tsx | 15 +-
.../__tests__/SettingsModal.mobileClose.test.tsx | 25 ++-
.../__tests__/WorkflowAddStepModal.test.tsx | 7 +
.../floatingWindowMigration.test-helpers.ts | 126 +++++++++++++++
37 files changed, 828 insertions(+), 259 deletions(-)
Fusion-Task-Id: FN-8606
Fusion-Task-Lineage: dab0df2d-73f4-4b0f-bec3-a45016310c91
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-26 14:37:35 -07:00
gsxdsm
47087342fc
FN-8605: harden tablet touch window controls
...
Make shared floating dashboard windows reliably movable and resizable on tablet touch viewports.
- Apply a tablet-aware 44px drag and resize hit-target contract to FloatingWindow.
- Preserve phone full-screen sheets below 768px while retaining desktop-hybrid geometry.
- Add geometry, browser touch, and viewport boundary coverage with captured visual evidence.
- Document the shared modal touch contract and release the dashboard fix.
Files changed:
.changeset/fn-8605-floating-window-touch.md | 7 ++
docs/dashboard-guide.md | 5 +
docs/testing.md | 2 +-
.../dashboard/app/components/FloatingWindow.css | 116 ++++++++++++++----
.../dashboard/app/components/FloatingWindow.tsx | 56 ++++++++-
.../components/__tests__/FloatingWindow.test.tsx | 80 +++---------
.../FloatingWindow.touch-geometry.test.tsx | 136 +++++++++++++++++++++
.../FloatingWindowStack.cross-type.test.tsx | 2 +-
.../app/hooks/__tests__/useViewportMode.test.ts | 18 ++-
packages/dashboard/app/hooks/useViewportMode.ts | 7 +-
.../app/task-modal-touch-resize-e2e-fixture.tsx | 39 +++++-
.../__screenshots__/fn-8605/phone-fullscreen.png | Bin 0 -> 11393 bytes
.../e2e/__screenshots__/fn-8605/tablet-after.png | Bin 0 -> 14275 bytes
.../e2e/__screenshots__/fn-8605/tablet-before.png | Bin 0 -> 14308 bytes
.../task-modal-touch-resize-browser.test.ts | 83 +++++++++++++
15 files changed, 453 insertions(+), 98 deletions(-)
Fusion-Task-Id: FN-8605
Fusion-Task-Lineage: 993c7ed8-c3e9-4673-b0b7-5c50746991a7
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-26 12:51:39 -07:00
gsxdsm
8b9cf3d4e8
fix(dashboard): remove right-edge dead space on landscape-tablet task pop-ups
...
The `.floating-window__body` resize-handle clearance gutter (FN-8015) was
carved out only for 769-1024px, so landscape iPads (1180-1366 CSS px) fell
through to the desktop contract and kept it — content stopped ~17px short of
the right edge while the left edge stayed flush.
Gate the carve-out on the input device instead of viewport width: the gutter
only protects resize hot zones a pointer can actually grab. `(pointer: coarse)`
is primary-input only, so a touchscreen laptop on a trackpad still reports
`fine` and keeps desktop clearance.
Measured at 1180px: header inset went from 1px/17px to 1px/1px.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-07-26 00:00:19 -07:00
gsxdsm
82b8b0251e
FN-8474: remove tablet task popup gutter
...
Remove desktop resize clearance from tablet task-detail popups.
- Remove the tablet-only right body gutter and suppress resize handles.
- Preserve desktop resize clearance and mobile sheet behavior.
- Cover empty and populated tablet task popup contracts.
Files changed:
.changeset/fn-8474-tablet-task-popup-gutter.md | 7 +++
packages/dashboard/app/components/FloatingWindow.css | 14 ++++++
packages/dashboard/app/components/__tests__/FloatingWindow.test.tsx | 57 +++++++++++++++++++++-
3 files changed, 77 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-8474
Fusion-Task-Lineage: 975478fa-c0da-4490-8b47-b09e02c6ff5e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-22 00:09:30 -07:00
gsxdsm
482dbe77a4
FN-8340: preserve Quick Chat layout on restore
...
Keep minimized Quick Chat mounted and layout-stable for instant restores.
- Hide retained floating windows with visibility and disable pointer interaction
- Cover conversation-load, session, and scroll retention across desktop and mobile restores
- Document the retained Quick Chat behavior
Files changed:
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/FloatingWindow.css | 12 +++--
packages/dashboard/app/components/FloatingWindow.tsx | 9 ++--
packages/dashboard/app/components/__tests__/FloatingWindow.test.tsx | 4 ++
packages/dashboard/app/components/__tests__/QuickChat.persist.test.tsx | 58 +++++++++++++++++-----
5 files changed, 63 insertions(+), 22 deletions(-)
Fusion-Task-Id: FN-8340
Fusion-Task-Lineage: 25027098-b89a-481c-bf00-de64cf302628
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-18 19:11:56 -07:00
gsxdsm
d94fd0e61b
FN-8257: retain quick chat state when closed
...
Keep Quick Chat mounted after its first opening so closing and reopening preserves its session and scroll state.
- Add an opt-in hidden state for FloatingWindow that suspends invisible-window effects.
- Retain Quick Chat per project while resetting its React identity on project changes.
- Cover persistent close/reopen behavior and hidden floating-window semantics.
Files changed:
packages/dashboard/app/App.tsx | 25 ++++-
.../dashboard/app/components/FloatingWindow.css | 10 ++
.../dashboard/app/components/FloatingWindow.tsx | 38 +++++--
.../components/__tests__/FloatingWindow.test.tsx | 90 +++++++++++++++-
.../__tests__/QuickChat.persist.test.tsx | 120 +++++++++++++++++++++
5 files changed, 274 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-8257
Fusion-Task-Lineage: 6b0cd41c-32e8-4cd4-8c0c-82d0254aa1e4
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 18:12:47 -07:00
gsxdsm
c6adac6e7c
fix(dashboard): stop mobile task-detail panel shifting left
...
The full-screen mobile task-detail sheet hides all resize handles, so
FN-8015's `margin-inline-end: var(--space-lg)` gutter on the shared
`.floating-window__body` (added to keep the scrollbar clear of desktop
resize hot zones) only added dead space on the right and shifted the
entire panel left. Zero it for `.floating-window--task-detail` inside
the mobile breakpoint so `.detail-body`'s own padding defines both
insets equally; desktop resize-handle clearance is untouched.
Refined the FN-8015 invariant test to enforce the desktop hot-zone gutter
media-aware (strips @media blocks) and added a regression guard for the
mobile zeroing.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-07-17 08:35:44 -07:00
gsxdsm
72378cb4f2
FN-8037: add resizable image preview windows
...
Make pending task images compact and inspectable across task creation surfaces.
- Extract shared pending-image thumbnail controls for Quick Add, Task Form, and inline creation.
- Open full images in a responsive, movable, resizable FloatingWindow with Escape focus restoration.
- Add styling, coverage, operator documentation, and a minor changeset.
Files changed:
.changeset/fn-8037-image-preview-modal.md | 7 ++
docs/dashboard-guide.md | 4 +-
.../quick-entry-image-preview-modal.test.tsx | 60 ++++++++++
.../dashboard/app/components/FloatingWindow.css | 22 ++++
.../dashboard/app/components/InlineCreateCard.css | 14 ++-
.../dashboard/app/components/InlineCreateCard.tsx | 26 ++---
.../app/components/PendingImagePreviews.css | 35 ++++++
.../app/components/PendingImagePreviews.tsx | 121 +++++++++++++++++++++
.../dashboard/app/components/QuickEntryBox.tsx | 27 ++---
packages/dashboard/app/components/TaskForm.tsx | 26 ++---
10 files changed, 280 insertions(+), 62 deletions(-)
Fusion-Task-Id: FN-8037
Fusion-Task-Lineage: 3d92f695-67c9-4791-bfcc-ad25f6aa56f4
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 04:58:03 -07:00
gsxdsm
551a2a3c1e
fix(dashboard): align import detail header and show translated titles in its title bar
...
The GitHub/GitLab import detail panel had no inset of its own, so it sat
flush against the window's left edge while FN-8015's resize gutter left a
gap on the right only — "Preview" was clipped and the whole header read as
misaligned on both the desktop window and the mobile sheet. Give the panel a
symmetric inset, letting that existing gutter supply the right side rather
than overriding it (which would push the inner scrollbar back into the
resize hot zone the gutter protects).
Also in the header: `space-between` spread three children apart and flung
"Close issue" into the middle, so the label now takes the free space and the
two actions stay grouped as a pair. Both actions size from one rule instead
of each inheriting its own .btn defaults, at a 40px touch target on mobile
where Import is the sheet's primary action. "Preview" becomes a muted
eyebrow matching the existing ISSUE #NNNN label.
Fix title truncation while here: `.floating-window__title` declared
text-overflow: ellipsis but was display:flex, which made the text an
anonymous flex item that text-overflow cannot act on, so titles hard-cut
mid-word. Every caller passes a plain string, so a block box makes the
existing declaration work as written.
Finally, the detail title bar kept the raw upstream title while the card
below showed the translation — one item displaying two different titles at
once. Both now read importTranslation.display.title, gated on activeTab to
match translateSelection so an item's number is never paired with the other
tab's title. The existing translation test now asserts both surfaces in both
directions; it fails without this change.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-15 23:22:33 -07:00
gsxdsm
e57f52bb0d
FN-8015: keep floating window scrollbars clear of resize handles
...
Keep desktop floating-window scrollbars away from right-edge resize targets.
- Reserve a shared right-side gutter on floating-window bodies.
- Cover scrollbar clearance and right-edge resize behavior with component tests.
Files changed:
.../dashboard/app/components/FloatingWindow.css | 4 +
.../components/__tests__/FloatingWindow.test.tsx | 90 ++++++++++++++++++++++
2 files changed, 94 insertions(+)
Fusion-Task-Id: FN-8015
Fusion-Task-Lineage: ef7eb1a6-7a8f-4b12-acd0-99a509902ad2
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-15 22:08:13 -07:00
gsxdsm
0b06026c74
FN-7992: open GitHub import issue/PR details in FloatingWindow
...
Show GitHub/GitLab import item details in a draggable FloatingWindow instead of an embedded two-pane preview, simplifying the import modal layout.
- Replace inline list/preview split with FloatingWindow for issue and PR detail
- Remove two-pane resize handle, mobile list/preview switch, and related CSS
- Keep close confirmation when discarding detail-window changes
- Update FloatingWindow styles and dashboard guide for floating import details
- Slim GitHubImportModal tests while restoring core import-modal coverage
Files changed:
docs/dashboard-guide.md | 6 +-
.../dashboard/app/components/FloatingWindow.css | 23 +-
.../dashboard/app/components/GitHubImportModal.css | 359 +-------
.../dashboard/app/components/GitHubImportModal.tsx | 347 ++------
.../components/__tests__/FloatingWindow.test.tsx | 2 +-
.../__tests__/GitHubImportModal.test.tsx | 909 ++-------------------
6 files changed, 139 insertions(+), 1507 deletions(-)
Fusion-Task-Id: FN-7992
Fusion-Task-Lineage: 0991e28c-d793-4a41-9312-6e250e8a09c4
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-15 16:51:34 -07:00
gsxdsm
ad3d26d365
FN-7873: fix mobile floating-window header drag being intersected by page pan-y lockdown
...
Restores reliable single-finger dragging of movable FloatingWindow headers on mobile by reasserting touch-action: none at the mobile breakpoint, and adds regression coverage for the touch drag path.
- Reassert touch-action: none on movable FloatingWindow headers within the mobile media query, excluding full-screen sheet variants (chat, task-detail, workflow-editor, automation, mission-interview, file-browser, pr-create, artifacts-gallery), so the drag-handle contract isn't overridden by the global pan-y lockdown on mobile.
- Add a test verifying the movable mobile drag-handle selector keeps touch-action: none alongside the other opted-out draggable selectors (right-dock-expand-modal header, terminal header).
- Add a test exercising the captured pointermove drag path (pointerdown/move/up with pointer capture) confirming the window repositions correctly on touch input.
- Add a patch changeset for @runfusion/fusion documenting the fix.
Files changed:
.changeset/fn-7873-mobile-modal-header-drag.md | 7 +++
packages/dashboard/app/components/FloatingWindow.css | 8 +++
packages/dashboard/app/components/__tests__/FloatingWindow.test.tsx | 59 ++++++++++++++++++++++
3 files changed, 74 insertions(+)
Fusion-Task-Id: FN-7873
Fusion-Task-Lineage: 96f2b199-549e-4cab-a42b-05946a7bae86
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-12 13:00:56 -07:00
gsxdsm
17fce43205
FN-7259: add mobile task popup setting
...
Add an opt-in mobile board-card route that opens task details in the existing popup.
- Add the openMobileTasksInPopup project setting, defaults, types, docs, and changeset.
- Expose the Appearance setting and include it in dashboard settings persistence.
- Route mobile board-card clicks without deep tabs into the task FloatingWindow while preserving dock and main-panel behavior.
- Add coverage for settings defaults, Appearance controls, mobile routing, and task popup sizing.
Files changed:
.changeset/fn-7259-mobile-task-popups.md | 7 ++++
docs/dashboard-guide.md | 5 ++-
docs/settings-reference.md | 1 +
.../core/src/__tests__/settings-defaults.test.ts | 13 ++++++
packages/core/src/settings-schema.ts | 5 +++
packages/core/src/types.ts | 7 ++++
packages/dashboard/app/App.tsx | 45 ++++++++++++++++++--
.../__tests__/App.openTasksInRightSidebar.test.ts | 48 +++++++++++++++++++++-
.../dashboard/app/components/FloatingWindow.css | 28 +++++++++++++
.../dashboard/app/components/SettingsModal.tsx | 1 +
.../components/__tests__/FloatingWindow.test.tsx | 22 ++++++++++
.../settings/sections/AppearanceSection.tsx | 7 ++++
.../sections/__tests__/AppearanceSection.test.tsx | 19 +++++++++
packages/dashboard/app/hooks/useAppSettings.ts | 5 +++
14 files changed, 206 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-7259
Fusion-Task-Lineage: 05f22978-ede7-4d13-940c-5108390959f7
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 23:12:56 -07:00
gsxdsm
6ca51185f3
FN-7152: close Quick Chat on outside clicks
...
Quick Chat now dismisses from page clicks while other floating windows stay persistent.
- Add an opt-in outside-pointer dismissal path to FloatingWindow with safeguards for inside clicks, nested dialogs, touch compatibility events, and active drag/resize gestures.
- Enable outside-click dismissal only for the Quick Chat floating window and document the behavior.
- Cover the opt-in behavior, default persistence, nested surfaces, gesture guards, and listener cleanup with FloatingWindow tests.
- Add a release changeset for the Quick Chat dismissal feature.
Files changed:
.changeset/fn-7152-quick-chat-outside-click-close.md | 7 ++
docs/dashboard-guide.md | 1 +
packages/dashboard/app/App.tsx | 4 +
packages/dashboard/app/components/FloatingWindow.css | 5 +-
packages/dashboard/app/components/FloatingWindow.tsx | 45 +++++++++
packages/dashboard/app/components/__tests__/FloatingWindow.test.tsx | 109 +++++++++++++++++++++
6 files changed, 170 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-7152
Fusion-Task-Lineage: 5bd6c10a-3e21-4eb9-bd1e-99f3aaf9c7b6
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-27 19:48:50 -07:00
gsxdsm
b293525751
fix(dashboard): repair CSS token/contrast regressions and stale tests
...
Fixes ~19 deterministic dashboard test failures pre-existing on origin/main
(non-blocking full-suite lane). Mix of real product fixes and stale-test
reconciliation; no appeasement (no widened timeouts, skips, or weakened
assertions).
Product CSS fixes (real regressions the guards caught):
- Info toast contrast: shadcn-custom light theme had white-on-#0284c7 (4.10,
below WCAG AA 4.5); enrolled it in the light-mode dark-text correction.
- 27 undefined CSS token references (typos/foreign tokens) renamed to canonical
defined tokens; defined the genuinely-intended --border-strong and
--right-dock-min/max-width.
- Raw rgba() box-shadow fallback tokenized to color-mix; dev-server mobile
header split into its own responsive rule.
Stale tests reconciled with intentional product changes:
- workflowColumns graduated to always-on (board-workflows unit test).
- workflow optional-steps source re-pointed to v2 optional-group nodes.
- command-center pricing docs (one doc gap filled: openai-codex:* keying).
- SetupWizardModal added detectWorkspace + workspaceMode/taskPrefix payload.
- board-mobile listener-count assertion → unmount no-throw behavior.
- CommandCenterControls / ThemeSelector: default theme relabeled "Fusion Legacy".
- ProjectOverview / WorkflowNodeEditor: header divider intentionally removed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-25 14:37:52 -07:00
gsxdsm
2d038e7ffa
feat(FN-6950): polish dashboard responsive chrome
2026-06-22 23:58:38 -07:00
gsxdsm
a1cac3a6a3
fix(dashboard): replace quick chat with modal chat
2026-06-22 15:23:43 -07:00
gsxdsm
915d4b028a
fix(dashboard): unify movable task detail header
2026-06-22 12:16:07 -07:00
gsxdsm
62a96e3712
feat(dashboard): floating windows (pop-out task detail, floating New Task), consolidate AI engine row
...
- FloatingWindow: reusable non-blocking, draggable, smoothly-resizable window with focus-to-front z-index so multiple coexist (file browser + terminal + several task details open and movable at once).
- Task detail gains a Pop out (Maximize2) button in List + Board; App tracks multiple open floating task-detail windows (dedupe by id).
- New Task dialog is now a floating, draggable, resizable, non-blocking window; all quick-add controls visible without expanding (TaskForm forceMoreOptionsOpen).
- Dashboard Overview: removed the duplicate AI Engine row — View Board / View Agents moved into the first instance (the AI engine card, under Stop AI Engine).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-22 05:10:12 -07:00