Commit Graph

11 Commits

Author SHA1 Message Date
gsxdsm
0ddfe9a422 FN-7084: add concurrency save confirmations
Require explicit confirmation before Command Center concurrency sliders persist live capacity changes.

- Add confirmation flows for global and project concurrency sliders after debounce settles.
- Revert pending slider values on cancel, Escape, or backdrop dismissal without saving.
- Cover single, batched, no-op, failure, and dismissal paths in Command Center control tests.
- Document the confirmation behavior and add a published package changeset.

Files changed:
 .changeset/FN-7084-concurrency-confirm.md          |   7 +
 docs/dashboard-guide.md                            |   3 +-
 .../command-center/CommandCenterControls.tsx       | 169 ++++++++++++++---
 .../__tests__/CommandCenterControls.test.tsx       | 203 +++++++++++++++++----
 4 files changed, 323 insertions(+), 59 deletions(-)

Fusion-Task-Id: FN-7084

Fusion-Task-Lineage: f1ebe1f7-f570-4bcb-9dad-7c8f03808d54

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-26 18:01:21 -07:00
gsxdsm
93b01c8ea9 FN-7076: show Command Center concurrency utilization
Surface Command Center concurrency utilization beside the editable caps.

- Add loaded-only running-agent readouts for global and current-project concurrency.
- Render clamped current-use markers on the global and project max-concurrent sliders without intercepting drags.
- Cover loaded, zero, unavailable, over-subscribed, and persistence behavior in Command Center tests.
- Document the utilization indicators and add a release changeset.

Files changed:
 .../fn-7076-command-center-concurrency-counts.md   |   7 ++
 docs/dashboard-guide.md                            |   3 +-
 .../command-center/CommandCenterControls.css       |  22 ++++
 .../command-center/CommandCenterControls.tsx       | 103 ++++++++++++++-----
 .../__tests__/CommandCenterControls.test.tsx       | 111 +++++++++++++++++++++
 5 files changed, 219 insertions(+), 27 deletions(-)

Fusion-Task-Id: FN-7076

Fusion-Task-Lineage: 540a57aa-a31b-4a57-aff6-47b373713ab3
2026-06-26 14:38:12 -07:00
gsxdsm
1ebb518698 fix(review): resolve PR feedback on global concurrency hook
- Double-commit race: null pendingValueRef synchronously at commit() start
  so the close-flush + unmount-cleanup guards can't both fire and send a
  duplicate PUT for the same value.
- Clamp ceiling: clamp setValue against max(SLIDER_BASE_MAX, currentValue)
  instead of Number(raw) (which had no effective upper bound for
  programmatic callers).
- Out-of-band staleness: force-revalidate on each activate so a Settings-modal
  save (which writes globalMaxConcurrent directly, bypassing this store) is
  reflected when a slider surface reopens.
- Load-error label: add an explicit error branch in both EngineControlMenu
  and CommandCenterControls so a failed initial load shows "Load failed"
  instead of "Ready" while the slider is disabled.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 23:05:56 -07:00
gsxdsm
1d860ec310 feat: global concurrency slider (footer + dashboard) and scoped settings
Add a "Global Max Concurrent" slider to the footer engine menu and the
Command Center Concurrency card, and group the Scheduling settings by
Global vs Project scope so the global cap isn't mistaken for a per-project
setting (clearer on mobile).

Both sliders are backed by a single shared `useGlobalConcurrency` hook
(module-level store) so they read/write one source of truth and revalidate
after every PUT /api/global-concurrency — fixing the last-writer-wins and
stale-clobber races a per-component cache would cause. The hook treats a
fetch error as non-interactive (slider disabled, not stuck at 1), surfaces
a save-state indicator, and flushes a pending edit on menu close / unmount
so a quick drag-then-dismiss is never silently dropped.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 22:19:24 -07:00
gsxdsm
13bd2e473a feat(dashboard): list-header one-row, file pop-out opens current file, taller overview buttons; fix redesign test suite
- 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>
2026-06-22 09:47:27 -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
gsxdsm
58f758842b FN-6816: add shadcn custom color picker
Add a Shadcn Custom theme flow for editing and applying sanitized dashboard color tokens.

- Add a lazy-loaded Shadcn color picker modal with token defaults, reset controls, and validation tests.
- Persist sanitized custom color overrides through settings, pre-hydration theme bootstrapping, and Command Center/theme dropdown surfaces.
- Register the Shadcn Custom theme option in core types, schema, docs, theme CSS, and release notes.

Files changed:
 .changeset/fn-6816-shadcn-custom-colors.md         |   5 +
 docs/dashboard-guide.md                            |   2 +-
 docs/settings-reference.md                         |   3 +-
 packages/core/src/settings-schema.ts               |   1 +
 packages/core/src/types.ts                         |   4 +
 packages/dashboard/app/App.tsx                     |   7 +-
 packages/dashboard/app/components/AppModals.tsx    |   6 +
 .../dashboard/app/components/SettingsModal.tsx     |  12 ++
 .../dashboard/app/components/ShadcnColorPicker.css | 101 ++++++++++++++
 .../dashboard/app/components/ShadcnColorPicker.tsx |  95 +++++++++++++
 .../dashboard/app/components/ThemeDropdown.tsx     |  23 +++-
 .../dashboard/app/components/ThemeSelector.css     |  14 ++
 .../dashboard/app/components/ThemeSelector.tsx     |  19 ++-
 .../__tests__/ShadcnColorPicker.test.tsx           |  50 +++++++
 .../components/__tests__/ThemeDropdown.test.tsx    |  19 +++
 .../components/__tests__/ThemeSelector.test.tsx    |  64 +++++++++
 .../__tests__/shadcnCustomColors.test.ts           |  52 ++++++++
 .../components/command-center/CommandCenter.tsx    |  15 +++
 .../command-center/CommandCenterControls.tsx       |   8 +-
 .../settings/sections/AppearanceSection.tsx        |   8 +-
 .../dashboard/app/components/shadcnCustomColors.ts |  80 +++++++++++
 packages/dashboard/app/components/themeOptions.ts  |   1 +
 .../dashboard/app/hooks/__tests__/useTheme.test.ts | 108 +++++++++++++++
 packages/dashboard/app/hooks/useTheme.ts           |  91 ++++++++++++-
 packages/dashboard/app/index.html                  |  19 ++-
 packages/dashboard/app/public/theme-data.css       | 148 ++++++++++++++++++++-
 26 files changed, 938 insertions(+), 17 deletions(-)

Fusion-Task-Id: FN-6816

Fusion-Task-Lineage: f16baaa9-16f5-4526-8159-9a1ceff4f807
2026-06-21 16:13:54 -07:00
gsxdsm
ca08828813 FN-6855: raise Command Center concurrency sliders to 50
Command Center scheduler controls now expose a default slider ceiling of 50 without hiding higher persisted values.

- Set max concurrent tasks, max triage concurrency, and max worktrees sliders to default to a maximum of 50.
- Preserve dynamic slider maxima for persisted settings above 50 so existing out-of-range values remain visible.
- Add regression coverage for persisting 50, in-range slider maxima, and above-range readouts.

Files changed:
 .../command-center/CommandCenterControls.tsx       |  9 ++-
 .../__tests__/CommandCenterControls.test.tsx       | 71 +++++++++++++++++++---
 2 files changed, 67 insertions(+), 13 deletions(-)

Fusion-Task-Id: FN-6855

Fusion-Task-Lineage: 780d5322-5f3c-4503-9ec7-17716e966961
2026-06-21 13:25:41 -07:00
gsxdsm
a98a0ae23e FN-6768: show actual concurrency slider values
Command Center concurrency controls now preserve persisted scheduler values and improve mobile slider handling.

- Load concurrency defaults from project settings and display persisted values without clamping the readout.
- Expand range slider maxima when existing settings exceed normal UI bounds while keeping edits bounded.
- Add mobile touch-drag affordance styling and regression coverage for actual values, overflow values, and CSS contracts.

Files changed:
 .../command-center/CommandCenterControls.css       | 26 +++++++-
 .../command-center/CommandCenterControls.tsx       | 63 +++++++++++++-----
 .../__tests__/CommandCenterControls.test.tsx       | 74 +++++++++++++++++++++-
 3 files changed, 143 insertions(+), 20 deletions(-)

Fusion-Task-Id: FN-6768

Fusion-Task-Lineage: 2508c2ab-9e57-4d29-934c-828a015bdfe1
2026-06-20 03:08:19 -07:00
gsxdsm
9483670d6a FN-6755: move org chart and heartbeat controls to Team
Relocate Command Center team operations out of Overview and into the Team section.

- Render the agent org chart and heartbeat pause/resume controls above Team analytics.
- Keep Overview controls focused on global engine, concurrency, and theme settings.
- Add Team-specific styling and tests for org chart, heartbeat, and responsive placement.
- Update Command Center documentation to describe the new Team operations layout.

Files changed:
 docs/dashboard-guide.md                            |   5 +-
 .../components/command-center/CommandCenter.tsx    |   2 +-
 .../command-center/CommandCenterControls.css       |  61 ------
 .../command-center/CommandCenterControls.tsx       | 188 +------------------
 .../__tests__/CommandCenter.mobile-scroll.test.tsx |   8 +-
 .../__tests__/CommandCenter.tablet-layout.test.tsx |   2 +-
 .../__tests__/CommandCenter.test.tsx               |   4 +
 .../__tests__/CommandCenterControls.test.tsx       |  89 +--------
 .../components/command-center/areas/TeamArea.tsx   | 204 ++++++++++++++++++++-
 .../command-center/areas/__tests__/areas.test.tsx  | 123 ++++++++++++-
 .../app/components/command-center/areas/areas.css  | 181 ++++++++++++++++++
 11 files changed, 526 insertions(+), 341 deletions(-)

Fusion-Task-Id: FN-6755

Fusion-Task-Lineage: 63ceb609-f0e3-4e02-8fea-c97cfc18ccf2
2026-06-20 00:15:25 -07:00
gsxdsm
5145e609cc FN-6727: add Command Center operator controls
Add operator controls to the Command Center overview and reuse a shared theme dropdown.

- Add Command Center controls for org chart status, pause toggles, heartbeat, concurrency settings, and theme selection.
- Extract theme option metadata and a reusable ThemeDropdown for app-level and Command Center theme controls.
- Update localization, documentation, and dashboard tests for the new controls and mobile layout behavior.

Files changed:
 docs/dashboard-guide.md                            |   1 +
 docs/settings-reference.md                         |   6 +-
 packages/dashboard/app/App.tsx                     |   8 +-
 .../dashboard/app/components/ThemeDropdown.css     |  96 +++++
 .../dashboard/app/components/ThemeDropdown.tsx     | 175 +++++++++
 .../dashboard/app/components/ThemeSelector.tsx     |  65 +---
 .../components/__tests__/ThemeDropdown.test.tsx    |  76 ++++
 .../components/__tests__/ThemeSelector.test.tsx    |  18 +
 .../components/command-center/CommandCenter.tsx    |  52 ++-
 .../command-center/CommandCenterControls.css       | 193 ++++++++++
 .../command-center/CommandCenterControls.tsx       | 424 +++++++++++++++++++++
 .../__tests__/CommandCenter.mobile-scroll.test.tsx |  17 +
 .../__tests__/CommandCenter.test.tsx               |  26 +-
 .../__tests__/CommandCenterControls.test.tsx       | 241 ++++++++++++
 packages/dashboard/app/components/themeOptions.ts  |  70 ++++
 packages/i18n/locales/en/app.json                  |  47 +++
 16 files changed, 1442 insertions(+), 73 deletions(-)

Fusion-Task-Id: FN-6727

Fusion-Task-Lineage: bd7752cf-9f6e-4359-a5bc-d2a4b68d086b
2026-06-19 16:47:33 -07:00