Default list width 256px (min 160, max min(480px,50%)), driven by an inline width var with flex:0 0 so the drag actually wins (the embedded wide layout previously forced a clamp via !important, so the handle did nothing). Preview pane is flex:1 1 auto;min-width:0 so freed space flows to it. Persisted per-project via kb-dashboard-github-import-list-width. Shared workspace covers both Issues and Pull Requests tabs.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
detail===null always rendered the 'Loading PR…' spinner, so with no pullRequestId (nothing to load) the view spun forever. Add a flag set only while a fetch is in flight (no id → empty state), a fetch timeout (15s) so a hung request surfaces an error, and a 'No pull request to show' empty state.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Move Clear / Shortcuts / Preferences from the top toolbar into the bottom footer next to the text-size control; text-size sits at the far left, then the action cluster, then connection status pushed right. The pop-out toggle is now icon-only (Maximize2/Minimize2, aria-label/title kept). Footer wraps + the action cluster scrolls on narrow widths.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- New Task dialog: deep options (models, branch, node, review level, auto-merge, workflow, github tracking, attachments) collapse behind an 'Advanced' disclosure (collapsed by default); inline Attach/Fast/Priority quick-add buttons (QuickEntryBox style) sit next to Plan, wired to existing TaskForm state.
- Memory view: cap the editor box to ~a page (max-height: 60vh) with internal CodeMirror scroll, so a long memory file no longer forces endless page scrolling.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- List view: remove the 'X of Y tasks' count from the desktop sidebar toolbar and the border between the controls row and the quick-add box (mobile count kept). Count-display tests now verify the filter via rendered rows.
- Command Center Overview: View Board / View Agents are btn btn-secondary (taller, centered) matching the Stop AI Engine button.
- Dependency graph: fit/center on load — the initial fit ran before the viewport was measured + before nodes were positioned (async), and never re-fit. Now fits only when fittable (nodes + measured viewport) and re-fits when the node set changes (covers async load + re-entering the view).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- List view header: count + Bulk Edit + View options + New Task on one compact btn-sm row; view-options shrunk; count compacted/secondary.
- File browser pop-out now opens the file you're currently viewing — current path shared via scoped storage (kb-dashboard-dock-files-current) with cross-instance live-sync.
- Dashboard Overview: View Board / View Agents are now btn btn-secondary (taller, centered) to match the Stop AI Engine button.
- Test suite: fix ~40 stale assertions from the redesign (App nav moved to LeftSidebarNav, Import Tasks embedded, removed Todos in-view header, SkillsView shared ViewHeader, gm embedded keyboard rule, ThemeSelector option drift) — test-only, nothing weakened. Pre-existing board-mobile InlineCreateCard failure left as-is.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Map the shared dashboard ViewHeader module in Vite, Vitest, and app TS paths so bundled plugin dashboard views resolve the host component during PR build/typecheck.
References: https://github.com/Runfusion/Fusion/issues/1721
Pass the active projectId when the GitHub import modal detects remotes so multi-project dashboards do not show a false no-remotes state. Ignore stale remote responses when projectId changes while the modal remains open.
References: https://github.com/Runfusion/Fusion/issues/1721
Verified against the live DOM: a panel z-index is trapped inside the position:fixed overlay's stacking context, so page elements that are themselves stacking contexts in body (the right dock at position:absolute z-index:20, card badge contexts) painted OVER the modal, and tap-to-front (which raised the panel z) had no effect at the body level. Move the dynamic shared-stack z onto each modal's fixed overlay (FloatingWindow, RightDockExpandModal, TerminalModal floating, NewTaskModal floating) so the whole window sits at the shared band in body's stacking context — modals now paint above all page content and tapping reliably brings a window to the front across types.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- GitManagerModal mobile tab strip is now icon-only one-row: assert non-shrink via flex:0 0 auto + width:auto (was min-height for the old icon+label layout).
- MailboxView split-pane divider now mirrors the Chat divider: handle width var(--space-sm) + transparent background, ::before line var(--space-xs) (was --space-xs handle + color-mix bg).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Root causes of modals being overlapped + tap-to-front not working across types:
- Only FloatingWindow was portaled; the dock pop-out, terminal, and New Task rendered inline in their own stacking contexts, so the shared z-counter could not order them across types. Portal all three to document.body so all four floating modals share the one root stacking context.
- The floating band started at 4000, below page overlays/popovers at 10000-10001 (log viewer, workflow editor, selection popover, fullscreen overlay) which painted over the modals. Raise the shared band base to 10100. Toasts already sit at 200 (below), unaffected.
- Update RightDock dock-toggle test to the current behavior (popping out closes the dock; the floating modal survives) and fix NewTaskModal keyboard-vars test to query the portaled modal from document.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Spaced-glyph rendering on fold: FitAddon could fit while the container width was mid-fold-transition, computing a wrong cell width. Add a deferred rAF re-fit once width settles + an orientationchange listener so columns re-settle after a fold/rotate.
- Shortcut bar now scrolls horizontally: keys are flex:0 0 auto (kept intrinsic width so the row overflows) with touch-action:pan-x + overscroll-behavior-x:contain + momentum scroll.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Floating modals (FloatingWindow, right-dock pop-out, terminal, New Task) now share one z-index stack (floatingWindowStack) — tapping any one raises it above all others regardless of type. Floating overlays reset to z-index:auto so panels interleave in the shared 4000+ band.
- TaskChatTab tests: the test i18n now resolves the entryCount/toolCallCount plural forms (production already had them) so '2 entries'/'7 tool calls' render; fixed stale 'Tool call → result/error' casing to match the rendered 'Result'/'Error'. All 179 pass.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The idle session hint banner is suppressed (empty) per user request — idle chats stay sendable but no longer show the banner. Done/active hints remain. Test updated to assert the banner is absent.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- FloatingWindow renders via createPortal(document.body) so it escapes every ancestor stacking context — card dependency/overlap badges and the List view's sticky sort header + column divider no longer paint over the modal (4000+ z-index now wins page-wide).
- Popping out a task detail from the board's full-panel view also returns the main panel to the board, so the board sits behind the floating window.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- 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>
- Terminal move/resize: pointer-capture + captured-element listeners + rAF-batched updates + touch-action:none on the move grip; stop per-move localStorage writes. Matches the dock pop-out smoothness.
- Task detail: Summarize-as-title inline at the title's bottom-right; priority + speed controls shorter and equal height (30px); trimmed the gray id-header vertical padding.
- Fix footer Actions/Move dropdowns that vanished — they opened downward off the panel bottom (clipped by overflow); now open upward (above the trigger).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Git Manager mobile (<=768px) nav strip: icon-only compact tabs with width:auto (was inheriting base width:100% → one tab/swipe) in a horizontally-scrolling row so multiple sections show at once — matches the dock one-row treatment.
- Remove unused selectedWorkflowId from Board's useBoardWorkflows destructure (lint).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- GitHub import preview shows the full issue/PR body (markdown) + metadata (list already returned full bodies; removed client truncation).
- Task-detail main view: constrain width (no right cutoff); move 'Back to board' into the gray header far right.
- Dock pop-out: smoother touch drag (touch-action:none + captured-element listeners); popping out closes the dock but keeps the floating modal; modal survives dock dismiss.
- Remove duplicate inner headers in Git Manager / Activity Log / Dev Server / Secrets (dock + pop-out chrome already titles them); keep the title on mobile narrow; relocate gm Refresh into the section tab strip.
- Git Manager tabs: one scrollable row of compact icon-only tabs (max visible, scroll if needed).
- List quick entry is single-line (not tall) via singleLine prop; Board unchanged.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Code review (8 reviewers) fixes:
- P1: embedded board task-detail now passes onRequestClose so delete/merge/retry dismiss the panel (no ghost task).
- P1: RightDock + TerminalModal drag handlers add pointercancel + unmount teardown (no leaked document listeners / rAF / stuck userSelect); remove dead onOpenChange prop.
- Planning slot DOM-poll interval now caps (self-cancels on mobile); heartbeat slider persist debounced + mounted-guarded.
- Cleanup: remove dead ViewHeader-migration CSS (Skills/Insights), extract shared GithubIcon, move Activity Log embedded CSS to ActivityLogModal.css, FNXC date-format fixes, AGENTS lazy-view note.
- Update stale RightDock roster tests + LeftSidebarNav 'Compound Eng' test to current behavior.
Live UI tweaks:
- Default load lands on board, never the Command Center Dashboard.
- View Board/View Agents moved to the Command Center Overview tab (under the live-activity strip).
- Heartbeat card full-width with spaced, wrapping controls.
- Dev Server panel scrolls in the dock; ChatView right-pane title takes the full line.
- Files pop-out renders deterministic left-right two-pane.
- Mailbox list pane narrower + narrow by default; Add Goal button height matches the Compound stage button; Memory Working-Memory tab no longer overlaps; Skills view fills full width.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Move the Command Center AI-engine card's View Board / View Agents shortcuts to sit directly under the engine toggle button (above the heartbeat-speed slider) so they read as engine-card navigation.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Container queries on the dock-body container so embedded views use their single-column mobile layout in the narrow dock: Git Manager (full mobile layout incl. labeled tabs + mobile remotes view), Activity Log, Dev Server (config/logs/preview stack full-width and scroll), Secrets, Pull Requests. Wide pop-out keeps the desktop layout. 80 view tests pass.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Embedded Import Tasks: the preview pane's inner content kept a side-by-side flex:1/overflow that collapsed it under the stacked natural-height parent (preview looked short). Stacked layout now lets the preview take full intrinsic height and the view body scrolls; wide two-pane lets the preview scroll internally without moving the list.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The .dock-files-view root lacked width:100%, so as a flex root it reported a shrunk width to its container query and the min-width:720px two-pane rule never fired in the wide expand modal (which can be ~864px and shrinks with 90vw). Add width:100% and lower the breakpoint to 640px so the pop-out shows tree-left / viewer-right; narrow dock keeps the single-panel stack.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- WorkflowNodeEditor.css.test: update selector lookups to the :not(--embedded)-scoped mobile rules (the embedded editor no longer takes over the mobile viewport).
- Memory view: add flex-shrink:0 to the description + tab bar so they don't collapse and overlap the scrolling content (regressed when the header moved to ViewHeader).
- Settings General: fix literal ''' showing in the GitHub-tracking helper copy (pre-existing FN-6771 localization bug) in the i18n source + component default.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Compound Engineering plugin view now renders the dashboard's shared ViewHeader (Sparkles icon + title) so it matches the other main-content views. Expose ViewHeader via the dashboard exports map; resolve it in the plugin via an ambient interop declaration (no host runtime dependency). Tests updated (plugin suite green).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- gm: reset the base .gm-nav-item width:100% in the icon-only container query so each tab is icon-sized and many fit horizontally (was one full-width tab at a time).
- Skills view content no longer repeats the ViewHeader's top padding (removes the doubled gap under the header).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Skills, Mailbox, Agents migrated to the shared ViewHeader (existing controls passed through actions; Skills icon -> Zap to match sidebar).
- Missions keeps its integrated header but adopts the shared 1.125rem title + size-20 icon.
- ChatView intentionally left as-is (height-sensitive two-pane; documented with FNXC).
- Tests updated for the new header markup (606 pass across the view suites).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Clicking a board card opens its detail in a full main-content view (replacing the board) with a 'Back to board' button, instead of the TaskDetailModal overlay. Only the Board entry point changes; list-view embed, right-dock cards, and other openDetail callers keep the modal. New 'task-detail' task view; embedded TaskDetailContent prefers the live task. Works within the mobile shell (swipe-back reverts to board). Tests updated (70 pass).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Normalize these main-content views onto the shared ViewHeader (icon + CC-style title; existing header controls moved into the actions slot). Tests updated for the new header markup (95 pass).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- TeamArea heartbeat card gains a heartbeat-multiplier slider (mirrors AgentsView: same range/step/presets, persisted via updateSettings) and a View Board / View Agents nav row (onChangeView threaded from CommandCenter <- App handleChangeTaskView).
- Update CC/TeamArea test mocks to export fetchSettings/updateSettings (220 pass).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Dashboard (Command Center) is the first mobile bottom-nav tab (before Tasks), matching the desktop sidebar.
- Skills is never a top-level mobile tab; when enabled it lives only in the three-dot More sheet.
- Tests updated to the new order/More-sheet behavior (74 pass).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Scope each converted modal's mobile full-screen/viewport-takeover rules to :not(--embedded) (Settings, GitHub import, Git Manager, Workflows) so the embedded main-content variant fills only the content pane and the app Header + MobileNavBar stay visible on mobile. Modal presentation unchanged.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
DockFilesView uses a container query: narrow (dock) keeps the single-panel tree<->viewer navigation stack; wide (pop-out expand modal) shows the file tree and viewer side by side with an empty 'Select a file' state.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>