Commit Graph

129 Commits

Author SHA1 Message Date
gsxdsm
4f037679ad feat: planner overseer session advisor (OMP advisor parity) (#2082)
## Summary

Adds a **session advisor** to the planner overseer so Fusion can review
live executor transcripts the way [oh-my-pi’s
advisor](https://github.com/can1357/oh-my-pi/tree/main/packages/coding-agent/src/advisor)
does — without replacing the existing lifecycle supervisor (stage watch,
retry, merge confirmation, human-control withhold).

### What ships

- **Emission guard** (`OverseerEmissionGuard`) — content-free phrase
filter, session dedupe with severity-rank escalation, one accept per
advisor update
- **Session delta runtime** — queues agent-log deltas, drains through an
advisor agent, drops backlog after 3 failures
- **Session advisor service** — model gate, level matrix (`observe` /
`steer` / `autonomous`), human-control re-check at inject,
`[session-advisor]` steering comments
- **OVERSEER.md / WATCHDOG.md** discovery for project review priorities
- **AgentLogger `onEntriesFlushed`** + poll-backed agent-log cursor for
durable deltas
- Workflow settings: `plannerOverseerAdvisorProvider` +
`plannerOverseerAdvisorModelId` (both required; empty = soft-disabled
for cost safety)
- Docs + changeset

### What does not ship (deferred)

- Multi-advisor YAML roster, mutating advisor tools, reviewer/merger
shadowing, true tool-abort interrupt

### Plan

`docs/plans/2026-07-13-001-feat-overseer-advisor-parity-plan.md`

## Enablement

1. Set workflow **Session advisor model provider** + **Session advisor
model id**
2. Oversight level `observe` (log only), `steer`, or `autonomous`
(inject)
3. Optional: add `OVERSEER.md` or `WATCHDOG.md` in the project

## Test plan

- [x] `pnpm --filter @fusion/core exec vitest run
src/__tests__/overseer-emission-guard.test.ts`
- [x] `pnpm --filter @fusion/engine exec vitest run` overseer-* unit
tests (21 tests)
- [x] Related planner-overseer / intervention regression tests
- [x] `@fusion/engine` + `@fusion/core` typecheck
- [ ] Manual: configure advisor model, run an executor task, confirm
`[session-advisor]` inject + timeline metadata when concern is raised

## Residual Review Findings

None from autofix pass (log-cursor ordering fix already committed).


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added an off-by-default “session advisor” that can review live
execution activity and provide severity-based guidance.
* Added project and per-task controls to enable it, including a default
enable switch and Quick Add / Task Detail toggles.
* Enhanced advisor prompting by discovering and incorporating
`OVERSEER.md`/`WATCHDOG.md` review files.
* **Documentation**
* Added architecture and settings documentation for the new
session-advisor parity behavior.
* **Bug Fixes**
* Improved fail-soft handling so advisor behavior won’t disrupt
execution.
  * Fixed concurrent PostgreSQL migration startup failures.
* **Tests**
* Added coverage for advice parsing, emission guarding, runtime
behavior, and watchdog discovery.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-14 20:27:35 -07:00
gsxdsm
c7c6c5a8c4 FN-7842: color-code priority icons by urgency across quick add, task form, and task cards
Adds a shared urgency color source to priorityIndicator and wires it into every priority-glyph surface so low/normal/high/urgent read consistently by color, not just icon shape.

- priorityIndicator.tsx: add colorVar (low=info/blue, normal=muted, high=warning/amber, urgent=error/red) and new getPriorityColorVar() export as the single source of truth
- QuickEntryBox: tint the icon-only priority trigger and each option row in the priority picker with the matching urgency color
- TaskForm: tint the New Task inline priority glyph using the same color source
- TaskCard: render a colored priority glyph alongside the existing text label in the card-priority-badge (kept the non-normal visibility gate and badge geometry via a small CSS gap addition)
- Updated/added tests for QuickEntryBox, TaskCard (badge, badge-height, badge-wrap), and priorityIndicator to assert the new colors; added a patch changeset and a dashboard-guide.md doc update

Files changed:
 .changeset/fn-7842-priority-color-coding.md        |  7 +++++
 docs/dashboard-guide.md                            |  7 +++--
 .../dashboard/app/components/QuickEntryBox.tsx     |  7 +++--
 packages/dashboard/app/components/TaskCard.css     |  2 ++
 packages/dashboard/app/components/TaskCard.tsx     |  6 +++-
 packages/dashboard/app/components/TaskForm.tsx     |  7 +++--
 .../components/__tests__/QuickEntryBox.test.tsx    | 17 +++++++++--
 .../__tests__/TaskCard.badge-height.test.tsx       |  5 ++++
 .../__tests__/TaskCard.badge-wrap.test.tsx         |  5 ++++
 .../app/components/__tests__/TaskCard.test.tsx     | 33 +++++++++++++++++++++-
 .../app/utils/__tests__/priorityIndicator.test.tsx | 13 +++++----
 packages/dashboard/app/utils/priorityIndicator.tsx | 16 ++++++++---
 12 files changed, 103 insertions(+), 22 deletions(-)

Fusion-Task-Id: FN-7842

Fusion-Task-Lineage: 0b2d0d15-6e61-45fc-9378-bc09002bef55

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-11 22:16:48 -07:00
gsxdsm
60b8b4e4c5 FN-7805: redesign quick-add priority indicators as icon-only controls
Redesigns the Quick Add composer's priority selector to icon-only glyph buttons and relocates GitHub tracking beside attach, backed by a new shared priorityIndicator helper.

- Add packages/dashboard/app/utils/priorityIndicator.tsx as the single source of ArrowUp/ArrowDown/Flag/TriangleAlert priority glyphs, shared by QuickEntryBox and TaskForm
- Rework QuickEntryBox.tsx to render icon-only priority/Fast controls and move GitHub tracking + Priority into the .quick-entry-primary-group, with matching QuickEntryBox.css layout updates
- Update TaskForm.tsx to reuse the new priorityIndicator helper instead of duplicating icon/label logic
- Update quick-entry height-parity/trigger-height tests and QuickEntryBox/TaskForm/NewTaskModal tests for the new icon-only layout
- Add priorityIndicator.test.tsx covering the shared helper
- Update docs/dashboard-guide.md and add changeset fn-7805-quick-add-priority-indicators.md (patch, feature)

Files changed:
 .../fn-7805-quick-add-priority-indicators.md       |   7 +
 docs/dashboard-guide.md                            |   3 +-
 .../quick-entry-action-row-height-parity.test.tsx  |  13 +-
 .../quick-entry-workflow-trigger-height.test.tsx   |  10 +-
 .../dashboard/app/components/QuickEntryBox.css     |  19 +-
 .../dashboard/app/components/QuickEntryBox.tsx     | 197 +++++++++++----------
 packages/dashboard/app/components/TaskForm.tsx     |  33 ++--
 .../app/components/__tests__/NewTaskModal.test.tsx |   3 +
 .../components/__tests__/QuickEntryBox.test.tsx    | 113 ++++++++----
 .../app/components/__tests__/TaskForm.test.tsx     |   3 +
 .../app/utils/__tests__/priorityIndicator.test.tsx |  21 +++
 packages/dashboard/app/utils/priorityIndicator.tsx |  30 ++++
 12 files changed, 300 insertions(+), 152 deletions(-)

Fusion-Task-Id: FN-7805

Fusion-Task-Lineage: 404fe8d6-0851-44cb-b31d-f47896aaaaba

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-10 22:25:21 -07:00
gsxdsm
ec1a2eafcf fix(dashboard): organize board quick-add composer and expose task actions menu
- Quick-add composer: single divider, option chips grouped left
  (workflow, priority, steps, deps, models, node, agent, GitHub) and
  primary actions right-aligned (attach, fast, Save last).
- Task cards get a visible kebab button (hover on desktop, always on
  mobile) opening the same context menu as right-click, which was
  previously undiscoverable.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 18:05:50 -07:00
gsxdsm
3cda9d830a FN-7768: inline thinking-level control in CustomModelDropdown and migrate task/agent surfaces
Adds an inline thinking-level selector to CustomModelDropdown and migrates existing model-selection surfaces (task form, quick entry, new agent dialog, model selection modal/tab) to use it instead of their own bespoke thinking-level controls.

- CustomModelDropdown: add inline thinking-level control (CSS + component logic)
- ModelSelectionModal / ModelSelectorTab: drop local thinking-level UI in favor of the dropdown's inline control
- NewAgentDialog: migrate to the shared inline thinking-level control
- QuickEntryBox: remove now-redundant thinking-level UI, delegate to CustomModelDropdown
- TaskForm: migrate to the shared inline thinking-level control
- Add/update tests for CustomModelDropdown, ModelSelectionModal, ModelSelectorTab, NewAgentDialog, QuickEntryBox, TaskForm
- Add changeset for @runfusion/fusion (feature)
- Update dashboard guide docs

Files changed:
 .changeset/fn-7768-inline-thinking-dropdown.md     |  7 ++
 docs/dashboard-guide.md                            |  1 +
 .../app/components/CustomModelDropdown.css         | 33 +++++++++
 .../app/components/CustomModelDropdown.tsx         | 69 ++++++++++++++++-
 .../app/components/ModelSelectionModal.tsx         | 32 +-------
 .../dashboard/app/components/ModelSelectorTab.tsx  | 33 +--------
 .../dashboard/app/components/NewAgentDialog.tsx    | 18 +----
 .../dashboard/app/components/QuickEntryBox.tsx     | 59 +--------------
 packages/dashboard/app/components/TaskForm.tsx     | 23 +-----
 .../__tests__/CustomModelDropdown.test.tsx         | 72 ++++++++++++++++++
 .../__tests__/ModelSelectionModal.test.tsx         | 48 +++++++++---
 .../components/__tests__/ModelSelectorTab.test.tsx |  3 +-
 .../components/__tests__/NewAgentDialog.test.tsx   | 86 ++++++++++++++++++++++
 .../components/__tests__/QuickEntryBox.test.tsx    | 42 +++++++----
 .../app/components/__tests__/TaskForm.test.tsx     |  7 +-
 15 files changed, 354 insertions(+), 179 deletions(-)

Fusion-Task-Id: FN-7768
Fusion-Task-Lineage: 8f32731b-9865-4902-9420-62d3c0295805
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-10 00:48:14 -07:00
gsxdsm
2c4052c76b FN-7746: Add thinking level selector to model pickers
Adds a thinking-level (reasoning-effort) selector to the quick-create model pickers, matching the levels already available in the full task pickers.

- ModelSelectionModal: adds optional thinking-level <select> (off/minimal/low/medium/high/xhigh) with a status badge, rendered only when onThinkingLevelChange is supplied
- QuickEntryBox: wires thinking-level state through to ModelSelectionModal and persists the override with quick-created tasks
- InlineCreateCard: same thinking-level wiring for the inline task creation card
- Adds i18n strings for the new thinking-level labels across en/es/fr/ko/zh-CN/zh-TW locale files
- Adds test coverage in InlineCreateCard.test.tsx, ModelSelectionModal.test.tsx, and QuickEntryBox.test.tsx for the new selector

Files changed:
 .../dashboard/app/components/InlineCreateCard.tsx  | 16 ++++-
 .../app/components/ModelSelectionModal.tsx         | 47 +++++++++++++-
 .../dashboard/app/components/QuickEntryBox.tsx     | 67 ++++++++++++++++++-
 .../components/__tests__/InlineCreateCard.test.tsx | 70 ++++++++++++++++++++
 .../__tests__/ModelSelectionModal.test.tsx         | 69 ++++++++++++++++++++
 .../components/__tests__/QuickEntryBox.test.tsx    | 75 ++++++++++++++++++++++
 packages/i18n/locales/en/app.json                  |  2 +
 packages/i18n/locales/es/app.json                  |  2 +
 packages/i18n/locales/fr/app.json                  |  2 +
 packages/i18n/locales/ko/app.json                  |  2 +
 packages/i18n/locales/zh-CN/app.json               |  2 +
 packages/i18n/locales/zh-TW/app.json               |  2 +
 12 files changed, 351 insertions(+), 5 deletions(-)

Fusion-Task-Id: FN-7746

Fusion-Task-Lineage: 4a221203-0222-47d6-93f8-632638bcfbfe

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-09 19:58:07 -07:00
gsxdsm
cf3fe8b485 FN-7591: make dashboard create surfaces resolve intake column from workflow instead of hard-coding triage
Fixes dashboard task creation so new cards land in the selected/default workflow's intake column instead of always forcing legacy triage, letting workflows like Coding (Ideas) park new cards in 'ideas' until an operator promotes them.

- InlineCreateCard, QuickEntryBox, and NewTaskModal no longer hard-code column:"triage"; InlineCreateCard now forwards workflowId at create time instead of applying it post-create.
- Fixed a glue-layer regression in useTaskHandlers.ts (handleBoardQuickCreate/handleModalCreate) that re-forced column:"triage" even after UI surfaces stopped sending it.
- Added/updated tests covering the store's intake-column resolution and the dashboard create surfaces/hooks.
- Documented the new manual-intake-column parking behavior in dashboard-guide.md and workflow-steps.md.
- Added a patch changeset for @runfusion/fusion.

Files changed:
 .changeset/fn-7591-coding-ideas-intake.md          |  7 +++
 docs/dashboard-guide.md                            |  4 ++
 docs/workflow-steps.md                             |  1 +
 packages/core/src/__tests__/store-create-intake-column.test.ts   | 20 ++++++++
 packages/dashboard/app/App.tsx                     |  5 +-
 packages/dashboard/app/components/InlineCreateCard.tsx  | 28 ++++------
 packages/dashboard/app/components/NewTaskModal.tsx |  5 +-
 packages/dashboard/app/components/QuickEntryBox.tsx     |  5 +-
 packages/dashboard/app/components/TodoView.tsx     |  7 ++-
 packages/dashboard/app/components/__tests__/InlineCreateCard.test.tsx | 59 +++++++++++++++++++++-
 packages/dashboard/app/components/__tests__/QuickEntryBox.test.tsx    | 14 +++--
 packages/dashboard/app/components/__tests__/TodoView.test.tsx | 10 ++--
 packages/dashboard/app/components/__tests__/board-quickcreate-workflow-lane-visibility.test.tsx | 45 ++++++++++++++++-
 packages/dashboard/app/hooks/__tests__/useTaskHandlers.test.ts    | 27 ++++++++--
 packages/dashboard/app/hooks/useTaskHandlers.ts    |  8 ++-
 15 files changed, 207 insertions(+), 38 deletions(-)

Fusion-Task-Id: FN-7591

Fusion-Task-Lineage: 510f0e6a-89e7-468f-a6df-ad6aebd5c33a

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-05 13:15:56 -07:00
gsxdsm
aa4c2c1b26 FN-7331: remove Quick Add AI refine control
Remove the Quick Add refine affordance while preserving richer task refinement elsewhere.

- Drop QuickEntryBox refine state, menu positioning, API calls, and action rendering.
- Update Quick Add tests to assert the refine controls and refine-text path are absent.
- Add a patch changeset for the published CLI bundle.

Files changed:
 .changeset/fn-7331-remove-quick-add-refine.md      |   7 +
 .../__tests__/quick-entry-expanded-height.test.tsx |   3 +-
 .../dashboard/app/components/QuickEntryBox.tsx     | 198 +-------------
 .../components/__tests__/QuickEntryBox.test.tsx    | 286 ++++-----------------
 4 files changed, 71 insertions(+), 423 deletions(-)

Fusion-Task-Id: FN-7331

Fusion-Task-Lineage: ed30e9da-1c1c-4e94-9fbe-e44ad5ae7133

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 23:45:00 -07:00
gsxdsm
d58ba268c5 FN-7326: move Quick Add attach action next to Save
Align the expanded Quick Add action row so attachment controls sit beside Save.\n\n- Move the icon-only attachment button immediately after Save while keeping its hidden file input trigger and pending image badge.\n- Update QuickEntryBox DOM-order expectations to lock Attach next to Save.\n- Add a patch changeset for the published Fusion package.\n\nFiles changed:\n .changeset/fn-7326-quick-add-attach.md             |  7 +++++\n .../dashboard/app/components/QuickEntryBox.tsx     | 31 +++++++++++-----------\n .../components/__tests__/QuickEntryBox.test.tsx    |  8 +++---\n 3 files changed, 28 insertions(+), 18 deletions(-)

Fusion-Task-Id: FN-7326

Fusion-Task-Lineage: f9469a3f-2e94-4af4-8c74-332f2b4a10c2

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 19:36:10 -07:00
gsxdsm
21fc28698f FN-7304: add Quick Add drag-and-drop attachments
Quick Add now supports compact icon-only image attachment controls and drag/drop intake.

- Convert the Quick Add attach action to an accessible icon-only button with pending-count feedback.
- Add file drag-over and drop handling that reuses the existing image preview/upload path.
- Document the Quick Add attachment affordances, add a changeset, and cover icon/drop behavior with tests.

Files changed:
 .changeset/fn-7304-quick-add-attachments.md        |   7 ++
 docs/dashboard-guide.md                            |   3 +
 .../dashboard/app/components/QuickEntryBox.css     |  49 ++++++++
 .../dashboard/app/components/QuickEntryBox.tsx     |  81 ++++++++++++-
 .../components/__tests__/QuickEntryBox.test.tsx    | 128 ++++++++++++++++++++-
 5 files changed, 257 insertions(+), 11 deletions(-)

Fusion-Task-Id: FN-7304

Fusion-Task-Lineage: 0ff78d99-5b6a-476c-99d2-32f53389f808

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 14:42:45 -07:00
gsxdsm
7ca6c784c4 FN-7302: compact quick-add workflow selector
Keep the Quick Add workflow selector compact without sacrificing readable workflow menu options.

- Narrow the closed workflow trigger and truncate only its label so action controls keep room.
- Portal and viewport-clamp the expanded workflow menu for right-side columns and mobile layouts.
- Preserve readable wrapping for long workflow names and duplicate-id subtitles in the menu.
- Cover compact trigger sizing, menu readability, and viewport clamping with QuickEntryBox tests.
- Add a patch changeset for the published Fusion package.

Files changed:
 .changeset/fn-7302-quick-add-workflow-trigger.md   |   7 ++
 .../dashboard/app/components/QuickEntryBox.css     |  29 ++++--
 .../dashboard/app/components/QuickEntryBox.tsx     | 114 ++++++++++++++++++++-
 .../components/__tests__/QuickEntryBox.test.tsx    |  79 +++++++++++++-
 4 files changed, 211 insertions(+), 18 deletions(-)

Fusion-Task-Id: FN-7302

Fusion-Task-Lineage: 4a8042d8-6cc5-4f40-bbcb-71aa5bfb7cd2

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 14:20:25 -07:00
gsxdsm
3dd02dd011 FN-7300: hide local-only Quick Add node pickers
Hide the Quick Add node picker whenever local execution is the only available route.

- Gate QuickEntryBox and InlineCreateCard node controls behind meaningful remote or multi-node choices.
- Clear stale node overrides when the hidden picker no longer offers a valid selection.
- Cover local-only and multi-node picker behavior in Quick Add component tests.
- Add a patch changeset for the published Fusion package.

Files changed:
 ...n-7300-hide-local-only-quick-add-node-button.md |   7 ++
 .../dashboard/app/components/InlineCreateCard.tsx  | 121 ++++++++++++---------
 .../dashboard/app/components/QuickEntryBox.tsx     | 102 ++++++++++-------
 .../components/__tests__/InlineCreateCard.test.tsx |  74 +++++++++++++
 .../components/__tests__/QuickEntryBox.test.tsx    |  89 +++++++++++++++
 5 files changed, 303 insertions(+), 90 deletions(-)

Fusion-Task-Id: FN-7300

Fusion-Task-Lineage: 83ef956f-7993-4f58-8497-49da15509c08

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 13:53:01 -07:00
gsxdsm
7beb64eba5 FN-7296: show quick-add workflow icons
Improve the quick-add workflow selector so workflow choices are easier to identify before creating a task.

- Render shared workflow icons in the quick-add trigger and workflow option list.
- Widen the workflow selector/menu with tokenized responsive CSS while avoiding empty custom icon shells.
- Cover built-in, custom, and iconless workflow rendering plus widened CSS expectations.
- Add a patch changeset for the published Fusion package.

Files changed:
 .changeset/fn-7296-quick-add-workflow-icons.md     |  7 ++++
 .../dashboard/app/components/QuickEntryBox.css     | 45 ++++++++++++++++++++--
 .../dashboard/app/components/QuickEntryBox.tsx     | 15 +++++++-
 .../components/__tests__/QuickEntryBox.test.tsx    | 41 +++++++++++++++++---
 4 files changed, 98 insertions(+), 10 deletions(-)

Fusion-Task-Id: FN-7296

Fusion-Task-Lineage: e493eb27-6957-4fbd-bfb9-903f9ec43b29

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 12:47:11 -07:00
gsxdsm
3cd5695f52 FN-7288: remove quick-add Plan buttons
Remove quick-add planning buttons from board create surfaces while preserving other planning entry points.

- Remove the Plan button, icon imports, handlers, test id, disabled state, tooltip, and click targets from QuickEntryBox and InlineCreateCard.
- Update quick-add and mobile board tests to assert the Plan affordance is absent while task creation and Subtask behavior remain available.
- Refresh dashboard docs and add a patch changeset describing the quick-add Plan removal.

Files changed:
 .changeset/fn-7288-remove-quick-add-plan-button.md |   7 +
 docs/dashboard-guide.md                            |   4 +-
 docs/getting-started.md                            |   2 +-
 docs/workflow-steps.md                             |   2 +-
 .../dashboard/app/components/InlineCreateCard.tsx  |  38 +---
 .../dashboard/app/components/QuickEntryBox.tsx     |  38 +---
 .../components/__tests__/InlineCreateCard.test.tsx |  56 +++---
 .../components/__tests__/QuickEntryBox.test.tsx    | 196 +++++----------------
 .../app/components/__tests__/board-mobile.test.tsx |   6 +-
 9 files changed, 97 insertions(+), 252 deletions(-)

Fusion-Task-Id: FN-7288

Fusion-Task-Lineage: b4a5d6b6-83e7-4b0c-a38d-6ff36d8cd97e

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 10:40:49 -07:00
gsxdsm
a92f15efaa FN-7284: remove Quick Add Plan icon
Remove the extra Quick Add Plan icon while preserving the text button planning flow.

- Drop the Lightbulb icon from the QuickEntryBox Plan action and document the text-only affordance requirement.
- Extend QuickEntryBox coverage to assert the Plan action remains text-only and still trims the draft for planning handoff.
- Add a patch changeset for the published CLI package.

Files changed:
 .changeset/remove-quick-add-plan-icon.md                          | 7 +++++++
 packages/dashboard/app/components/QuickEntryBox.tsx               | 2 +-
 .../dashboard/app/components/__tests__/QuickEntryBox.test.tsx     | 8 ++++++--
 3 files changed, 14 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-7284

Fusion-Task-Lineage: 331eaf54-d51e-4f37-8434-1a0590edf7a1

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 10:14:47 -07:00
gsxdsm
7eca99c8b1 FN-7283: clear optional workflow steps in fast mode
Fast mode now treats optional workflow steps as opt-out by default while preserving manual reselection.

- Clear default-on optional workflow steps when switching task creation forms into Fast mode.
- Submit explicit empty optional-step selections in Fast mode to prevent store defaults from reappearing.
- Allow explicitly enabled optional workflow groups to run under Fast mode and during recovery.
- Document the Fast-mode optional-step contract and add regression coverage for dashboard and engine flows.

Files changed:
 .changeset/FN-7283-fast-mode-optional-steps.md     |   7 ++
 docs/workflow-steps.md                             |  15 ++-
 packages/dashboard/app/components/NewTaskModal.tsx |  27 +++--
 .../dashboard/app/components/QuickEntryBox.tsx     |  29 ++++-
 packages/dashboard/app/components/TaskForm.tsx     |  42 +++++--
 .../app/components/__tests__/NewTaskModal.test.tsx |  58 +++++++++
 .../components/__tests__/QuickEntryBox.test.tsx    |  84 +++++++++++++
 .../app/components/__tests__/TaskForm.test.tsx     |  85 ++++++++++++-
 .../__tests__/executor-fast-mode-workflows.test.ts | 134 +++++++++++++++++++++
 packages/engine/src/executor.ts                    | 107 ++++++++++------
 packages/engine/src/workflow-graph-executor.ts     |  14 ++-
 11 files changed, 539 insertions(+), 63 deletions(-)

Fusion-Task-Id: FN-7283

Fusion-Task-Lineage: e7028af8-3d05-4db7-8db9-a16c7f7575de

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 09:46:26 -07:00
gsxdsm
6c8884e67b FN-7276: add quick-add workflow selection
Add workflow-aware quick task creation across Board and List quick-add surfaces.

- Add a quick-add workflow picker that filters out the aggregate workflow sentinel.
- Route create, planning, subtask, and optional-step flows through the selected real workflow.
- Resolve workflow-specific intake columns for Board/List quick creates and cover behavior with component tests.
- Add a minor changeset for the published CLI package.

Files changed:
 .changeset/fn-7276-quick-add-workflow-selector.md  |   7 +
 packages/dashboard/app/components/Board.tsx        |  43 +++++-
 packages/dashboard/app/components/Column.tsx       |  12 +-
 packages/dashboard/app/components/ListView.tsx     |  20 ++-
 .../dashboard/app/components/QuickEntryBox.css     |  51 +++++++
 .../dashboard/app/components/QuickEntryBox.tsx     | 169 +++++++++++++++++++--
 .../app/components/__tests__/Board.test.tsx        |  42 ++++-
 .../app/components/__tests__/ListView.test.tsx     |  67 +++++++-
 .../components/__tests__/QuickEntryBox.test.tsx    |  73 +++++++++
 9 files changed, 453 insertions(+), 31 deletions(-)

Fusion-Task-Id: FN-7276
Fusion-Task-Lineage: 422f0359-c71f-4610-8fdb-39d7a21a2a52
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 08:52:51 -07:00
gsxdsm
998a7f2745 fix(FN-7226): make plan review the single pre-execution gate
Fusion-Task-Id: FN-7226
2026-06-29 01:48:27 -07:00
gsxdsm
3ee47dec86 merge: integrate origin/main into feature/workflow-steps (FN-7039)
Resolve conflicts from 56 upstream commits:
- db.ts: renumber my migrations around main's new migration 130 (columnDwellMs) —
  enable-id normalization 130→131, drop-table 131→132, SCHEMA_VERSION→132.
- index.ts / routes.ts: take main's new MCP exports/imports; keep WORKFLOW_STEP_TEMPLATES
  array removed (kept the WorkflowStepTemplate type).
- merger.ts: keep the legacy post-merge execution path removed (U7c) over main's version.
- ci-workflow.test.ts (from main): add port-4040/process-supervisor allowlist markers to
  the gate-script assertions that reference the checker filenames (pre-existing self-match).

Gate green (engine-core 299, ci-shape 62); boot smoke PASS; migration tests + typecheck clean.
2026-06-26 08:50:22 -07:00
gsxdsm
da69e03d29 FN-7047: remove quick-entry keyboard hint
Remove the retired quick-entry keyboard hint and its empty UI shell from task creation.

- Drop the quick-entry hint element and associated responsive styles.
- Remove the retired quickEntryHint locale key from all app locales and generated resources.
- Add coverage asserting the hint and shell stay absent across expanded and collapsed quick-entry modes.
- Add a patch changeset for the published Fusion package.

Files changed:
 .changeset/fn-7047-quick-entry-hint-removal.md         |  7 +++++++
 packages/dashboard/app/components/QuickEntryBox.css    | 18 ------------------
 packages/dashboard/app/components/QuickEntryBox.tsx    |  4 +---
 .../app/components/__tests__/QuickEntryBox.test.tsx    | 18 ++++++++++++++++++
 packages/i18n/locales/en/app.json                      |  1 -
 packages/i18n/locales/es/app.json                      |  1 -
 packages/i18n/locales/fr/app.json                      |  1 -
 packages/i18n/locales/ko/app.json                      |  1 -
 packages/i18n/locales/zh-CN/app.json                   |  1 -
 packages/i18n/locales/zh-TW/app.json                   |  1 -
 packages/i18n/src/resources.d.ts                       |  1 -
 11 files changed, 26 insertions(+), 28 deletions(-)

Fusion-Task-Id: FN-7047

Fusion-Task-Lineage: c838f25b-a3cf-4c2c-b214-511df12dd423
2026-06-25 23:34:08 -07:00
gsxdsm
ea5e12e8eb FN-7042: stop refocusing quick task input after submit
Prevent successful quick task creation from stealing focus back to the quick-entry textarea.

- Remove the post-submit focus restoration request/effect from QuickEntryBox.\n- Update desktop, mobile, duplicate-confirm, and image-upload tests to assert no automatic refocus.\n- Add a patch changeset documenting the quick-entry focus fix.\n\nFiles changed:\n .changeset/fn-7042-quick-entry-no-refocus.md       |  7 +++\n .../dashboard/app/components/QuickEntryBox.tsx     | 46 +------------------\n .../components/__tests__/QuickEntryBox.test.tsx    | 53 ++++++++++++----------\n 3 files changed, 39 insertions(+), 67 deletions(-)

Fusion-Task-Id: FN-7042

Fusion-Task-Lineage: 7c8e26a6-3a6b-463f-bfb7-8310682584f8
2026-06-25 23:34:08 -07:00
gsxdsm
dd1b9603bc fix(FN-7039): run enabled optional workflow steps via builtin:coding resolution
optionalGroupIdSet falls back to builtin:coding (mirroring the executor's
unselected-task resolution) so a toggled built-in group id like
browser-verification is no longer downgraded to a legacy WS-xxx step row the
graph executor never matches. Create-time optional-step controls resolve
builtin:coding when no project default workflow is set so the toggles render.

First unit of the graph-native workflow-step refactor (see
docs/plans/2026-06-25-001-refactor-workflow-steps-graph-native-plan.md).

Fusion-Task-Id: FN-7039

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 21:47:03 -07:00
gsxdsm
541f1f6533 FN-7017: expose optional workflow steps in task creation
Surface active workflow optional steps on task creation surfaces so users can opt into workflow-specific steps before creating tasks.

- Add optional-step dropdown state and creation payload handling to quick entry.
- Move New Task optional-step controls into the inline quick-button row.
- Cover default-on, workflow selection, duplicate-confirmed create, empty-step rendering, and mobile touch-target behavior with tests.
- Document create-time optional-step controls and add the published package changeset.

Files changed:
 .../fn-7017-optional-steps-quick-dropdown.md       |   7 +
 docs/dashboard-guide.md                            |   4 +-
 docs/workflow-steps.md                             |   2 +
 .../dashboard/app/components/QuickEntryBox.css     |   6 +-
 .../dashboard/app/components/QuickEntryBox.tsx     |  65 ++++++++-
 packages/dashboard/app/components/TaskForm.tsx     |  34 ++---
 .../app/components/__tests__/NewTaskModal.test.tsx |  21 ++-
 .../components/__tests__/QuickEntryBox.test.tsx    | 145 ++++++++++++++++++++-
 .../app/components/__tests__/TaskForm.test.tsx     |   1 +
 9 files changed, 258 insertions(+), 27 deletions(-)

Fusion-Task-Id: FN-7017

Fusion-Task-Lineage: 1b7d21e6-ff7f-4d27-b285-4fd865eafce6
2026-06-25 19:35:05 -07:00
gsxdsm
003c5d01c0 FN-6914: preserve quick-add drafts for planning
Keep quick-add and inline-create drafts intact while planning is open, and clear them only after planning creates tasks.

- Stop resetting QuickEntryBox and InlineCreateCard state when handing text to planning mode.
- Clear scoped quick-entry and inline-create drafts after single-task or multi-task planning completion.
- Update component and modal-manager tests for preserved drafts, retained options, and completion cleanup.

Files changed:
 packages/dashboard/app/components/InlineCreateCard.tsx  | 25 ++------
 packages/dashboard/app/components/QuickEntryBox.tsx     |  8 ++-
 .../components/__tests__/InlineCreateCard.test.tsx      |  9 +--
 .../components/__tests__/QuickEntryBox.test.tsx         | 73 +++++++++++++++-------
 .../app/hooks/__tests__/useModalManager.test.ts         | 53 +++++++++++++++-
 packages/dashboard/app/hooks/useModalManager.ts         | 16 ++++-
 6 files changed, 131 insertions(+), 53 deletions(-)

Fusion-Task-Id: FN-6914
Fusion-Task-Lineage: f7241ae3-658d-48d4-b730-cd3169aec8c8
2026-06-22 18:03:53 -07:00
gsxdsm
e6aebdc316 feat(dashboard): full issue/PR preview, floating dock pop-out, header dedups, gm one-row, single-line quick entry
- 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>
2026-06-22 04:37:28 -07:00
gsxdsm
322077b804 feat(dashboard): quick-add collapsed by default in List, open in Board
Add a defaultExpanded prop to QuickEntryBox (default true = open, preserving Board/column behavior); List view passes defaultExpanded={false} so the quick-add controls start collapsed. autoExpand (expand-on-focus) is unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 03:34:15 -07:00
gsxdsm
f4d2fa2ece FN-6910: hide subtask quick-add behind experiment
Hide the AI subtask-breakdown quick-add action unless the experimental flag is explicitly enabled.

- Gate Subtask Breakdown callbacks from App on the default-off subtaskBreakdown experiment.
- Remove Subtask quick-add buttons from inline create and quick entry surfaces when no callback is wired.
- Add settings, quick-add, documentation, and changeset coverage for the new experiment toggle.

Files changed:
 .changeset/fn-6910-subtask-breakdown-flag.md       |  5 ++++
 docs/dashboard-guide.md                            |  2 +-
 packages/dashboard/app/App.tsx                     |  8 ++++---
 .../dashboard/app/components/InlineCreateCard.tsx  | 27 ++++++++++++----------
 .../dashboard/app/components/QuickEntryBox.tsx     | 27 ++++++++++++----------
 .../dashboard/app/components/SettingsModal.tsx     |  2 ++
 .../components/__tests__/InlineCreateCard.test.tsx | 13 +++++++++++
 .../components/__tests__/QuickEntryBox.test.tsx    | 12 ++++++++++
 .../components/__tests__/SettingsModal.test.tsx    | 13 +++++++++++
 9 files changed, 81 insertions(+), 28 deletions(-)

Fusion-Task-Id: FN-6910

Fusion-Task-Lineage: a7738b1f-7b41-438d-bd94-79ef56928262
2026-06-21 23:02:16 -07:00
gsxdsm
3b61ac3d23 fix: make loading spinners actually spin across the dashboard
Many loading states rendered bare "Loading…" text with no spinner
element, and a couple rendered an unstyled `loading-spinner` div with no
matching CSS (invisible). The global spin animation was never broken —
it rotates in Chromium and WebKit — so prior transform-box edits chased
a non-bug, validated only by a string-matching CSS test.

Add a shared <LoadingSpinner> (self-contained animated SVG, no
lucide-react import so it survives partial test mocks) and adopt it
across ~47 loading placeholders so every loading state shows a
consistent animated spinner. Includes a component test that asserts the
svg carries the animate-spin utility.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 03:53:43 -07:00
gsxdsm
36b8950dbe FN-6804: carry workflow selection into planning creates
Planning and subtask creation now preserve the workflow lane chosen from dashboard task entry points.

- Thread optional workflow IDs through quick entry, modal state, planning mode, and subtask breakdown flows.
- Apply supplied or parent-derived workflow IDs when creating planning and breakdown tasks, including validation errors for invalid workflow selections.
- Cover workflow-aware task creation and quick-entry modal handoff with regression tests and document the dashboard behavior.

Files changed:
 .changeset/planning-subtask-workflow-selection.md  |   5 +
 docs/dashboard-guide.md                            |   2 +
 packages/dashboard/app/App.tsx                     |   8 +-
 packages/dashboard/app/api/legacy.ts               |   6 +
 packages/dashboard/app/components/AppModals.tsx    |   2 +
 packages/dashboard/app/components/Board.tsx        |   4 +-
 packages/dashboard/app/components/Column.tsx       |   5 +-
 .../dashboard/app/components/InlineCreateCard.tsx  |  20 ++-
 packages/dashboard/app/components/Lane.tsx         |   4 +-
 packages/dashboard/app/components/ListView.tsx     |   4 +-
 .../dashboard/app/components/PlanningModeModal.tsx |  18 +-
 .../dashboard/app/components/QuickEntryBox.tsx     |  24 ++-
 .../app/components/SubtaskBreakdownModal.tsx       |  20 ++-
 packages/dashboard/app/components/TaskForm.tsx     |   4 +-
 .../components/__tests__/QuickEntryBox.test.tsx    |  34 ++++
 packages/dashboard/app/hooks/useModalManager.ts    |  26 ++-
 .../planning-subtask-create-workflow-route.test.ts | 192 +++++++++++++++++++++
 .../src/routes/register-planning-subtask-routes.ts |  72 ++++++--
 18 files changed, 398 insertions(+), 52 deletions(-)

Fusion-Task-Id: FN-6804
Fusion-Task-Lineage: ca03e666-2dd4-4983-8c84-c5540f5adb0b
2026-06-20 18:04:02 -07:00
gsxdsm
d06d1052db FN-6743: rescue QuickEntryBox focus restoration
Restore reliable QuickEntryBox post-submit focus and return its test to the dashboard suite.

- Replace the ref-gated focus effect with a state-driven post-submit focus request.
- Cover desktop Enter, Save, duplicate-confirmed submit, mobile non-focus, and failed-submit draft preservation.
- Remove QuickEntryBox from dashboard quarantine while keeping the remaining workflow editor quarantine.

Files changed:
 .../dashboard/app/components/QuickEntryBox.tsx     | 46 +++++++++++++++++-----
 .../components/__tests__/QuickEntryBox.test.tsx    | 29 +++++++++++++-
 packages/dashboard/vitest.config.ts                |  5 ++-
 scripts/lib/test-quarantine.json                   |  5 ---
 4 files changed, 69 insertions(+), 16 deletions(-)

Fusion-Task-Id: FN-6743

Fusion-Task-Lineage: 2d458631-3ff3-4d96-8d91-bc2a17538be2
2026-06-19 17:49:06 -07:00
gsxdsm
8a53871de2 FN-6388: enable quick-entry GitHub tracking overrides
Allow quick entry to override GitHub tracking regardless of the project default.

- Send explicit githubTracking overrides whenever the quick-entry toggle is changed.
- Keep the GitHub toggle usable when settings are loading or default tracking is off.
- Cover off-default opt-in, opt-out, label, and reset behavior in QuickEntryBox tests.
- Document the quick-entry GitHub icon as a per-task tracking override.

Files changed:
 docs/dashboard-guide.md                            |   1 +
 .../dashboard/app/components/QuickEntryBox.tsx     |  27 ++---
 .../components/__tests__/QuickEntryBox.test.tsx    | 118 ++++++++++++++++++---
 3 files changed, 110 insertions(+), 36 deletions(-)

Fusion-Task-Id: FN-6388

Fusion-Task-Lineage: f46ef738-ccd6-48cc-8919-9c2de7ecb4e3
2026-06-13 16:30:28 -07:00
gsxdsm
8eb99ed0f8 FN-6217: prevent visibility-driven quick entry focus
Limit Quick Entry focus restoration to successful submissions instead of dashboard visibility changes.

- Gate desktop focus restoration behind an in-component successful submit marker.
- Remove the stale touch-driven suppressRefocus blur/timer path so touch actions do not force unexpected blurs.
- Cover mount, remount, mobile, submit, duplicate-confirm, Escape, Plan, and Subtask focus behavior in QuickEntryBox tests.
- Add a patch changeset for the published CLI package.

Files changed:
 .changeset/FN-6217-quick-entry-focus.md            |   5 +
 .../dashboard/app/components/QuickEntryBox.tsx     |  36 ++---
 .../components/__tests__/QuickEntryBox.test.tsx    | 167 +++++++++++++++++++--
 3 files changed, 174 insertions(+), 34 deletions(-)

Fusion-Task-Id: FN-6217

Fusion-Task-Lineage: cf8c55c0-583e-42f5-98af-8f3406c86d8c
2026-06-11 14:55:19 -07:00
gsxdsm
7923148490 FN-6211: prevent QuickEntry option taps from refocusing input
Prevents mobile option taps from re-opening the QuickEntry textarea keyboard.

- suppresses textarea refocus briefly while QuickEntry action buttons handle touch interactions
- only prevents default touch behavior when the textarea is already focused
- adds mobile regression coverage for blurred action toggles, menus, attachments, refine, planning, subtasks, and save flows

Files changed:
 .../dashboard/app/components/QuickEntryBox.tsx     |  17 ++-
 .../components/__tests__/QuickEntryBox.test.tsx    | 148 +++++++++++++++++++++
 2 files changed, 164 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6211

Fusion-Task-Lineage: 9e20c4e3-8b19-4374-b492-745a92c7bb10
2026-06-11 14:03:16 -07:00
gsxdsm
c27c321a8b FN-6160: fix mobile quick-entry touch handling
Let mobile Quick Entry actions rely on native tap-to-click behavior again.

- remove the manual quick-entry action button click dispatch on touchend
- switch mobile quick-entry action buttons to touch-action: manipulation
- update QuickEntryBox mobile touch tests and add a patch changeset for @runfusion/fusion

Files changed:
 .changeset/tiny-mobile-clicks.md                           |  5 +++++
 packages/dashboard/app/components/QuickEntryBox.css        |  4 ++--
 packages/dashboard/app/components/QuickEntryBox.tsx        |  9 ---------
 packages/dashboard/app/components/__tests__/QuickEntryBox.test.tsx        | 14 +++++++++++++-
 4 files changed, 20 insertions(+), 12 deletions(-)

Fusion-Task-Id: FN-6160

Fusion-Task-Lineage: a8c13f7e-fb86-4087-a516-a6e16dac2092
2026-06-09 22:13:54 -07:00
gsxdsm
f26cfe0cb0 FN-6145: fix mobile quick-entry touch targets
Preserve quick-entry mobile touch behavior for Fast and Priority controls.

- treat action touch targets as generic Elements so nested SVG taps still resolve to their parent buttons
- add mobile touch-action styling for quick-entry action buttons to improve tap handling
- extend QuickEntryBox mobile tests to cover Fast toggle, Priority picker, and SVG touch targets

Files changed:
 packages/dashboard/app/components/QuickEntryBox.css     |   5 +
 packages/dashboard/app/components/QuickEntryBox.tsx     |   2 +-
 packages/dashboard/app/components/__tests__/QuickEntryBox.test.tsx    | 117 +++++++++++++++++----
 3 files changed, 102 insertions(+), 22 deletions(-)

Fusion-Task-Id: FN-6145

Fusion-Task-Lineage: 2af1c142-25ba-41a8-ba4f-c58e38cc870a
2026-06-09 17:50:46 -07:00
gsxdsm
0b589e1f2b FN-6131: move quick entry save and toggles to top
Reorder the Quick Entry action row so the primary create controls appear first.

- move Save, Fast, GitHub, and Priority controls to the start of the Quick Entry actions row
- preserve the existing priority picker behavior while relocating its trigger and portal markup
- update QuickEntryBox tests to assert the new DOM order and keep focus-coverage stable after the reorder

Files changed:
 packages/dashboard/app/components/QuickEntryBox.tsx     | 225 +++++++++++----------
 packages/dashboard/app/components/__tests__/QuickEntryBox.test.tsx    |  47 +++--
 2 files changed, 145 insertions(+), 127 deletions(-)

Fusion-Task-Id: FN-6131

Fusion-Task-Lineage: d95401b9-4440-4c55-ad32-94df7d0c33fe
2026-06-09 15:02:53 -07:00
gsxdsm
e78203e7fb FN-6128: preserve textarea focus on mobile quick-entry buttons
Prevent mobile quick-entry touches from stealing focus from the task textarea.

- intercept touch interactions on quick-entry action buttons before the browser refocuses them
- restore textarea focus after touch-triggered quick-entry actions complete
- avoid autofocus in the deps search input when the textarea is already focused
- add mobile regression coverage across the full quick-entry action button surface, including disabled buttons

Files changed:
 packages/dashboard/app/components/QuickEntryBox.tsx     |  32 +++++-
 packages/dashboard/app/components/__tests__/QuickEntryBox.test.tsx    | 123 +++++++++++++++++++++
 2 files changed, 153 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-6128

Fusion-Task-Lineage: 598e6ba5-6e83-426c-9bf2-dd2ac4215092
2026-06-09 14:51:22 -07:00
gsxdsm
7c4e44d6a1 FN-6122: prevent quick-entry buttons from refocusing textarea
Keep quick-entry textarea focus stable while action buttons are clicked.

- prevent mousedown on refine, deps, attach, models, node, agent, and priority controls from stealing textarea focus
- add quick-entry focus regression coverage for individual controls and the full action row
- add a patch changeset for the quick-entry focus behavior fix

Files changed:
 .changeset/fn-6122-quick-entry-focus.md            |  5 ++
 .../dashboard/app/components/QuickEntryBox.tsx     |  7 ++
 .../components/__tests__/QuickEntryBox.test.tsx    | 87 ++++++++++++++++++++++
 3 files changed, 99 insertions(+)

Fusion-Task-Id: FN-6122

Fusion-Task-Lineage: 2a8f876d-f387-4b04-bd1e-0bf79938707e
2026-06-09 13:40:24 -07:00
gsxdsm
49bd88f4d0 FN-6104: preserve QuickEntryBox disclosure state after task creation
Keep QuickEntryBox expanded or collapsed after creating a task instead of forcing a reset.

- stop resetForm from collapsing the textarea and disclosure controls after successful task creation
- update QuickEntryBox tests to expect preserved visible controls after submit and preserved collapsed state when manually collapsed
- cover the submit flow where focus restoration keeps controls visible without changing user-selected disclosure state

Files changed:
 .../dashboard/app/components/QuickEntryBox.tsx     |  2 --
 .../components/__tests__/QuickEntryBox.test.tsx    | 38 +++++++++++++++++-----
 2 files changed, 29 insertions(+), 11 deletions(-)

Fusion-Task-Id: FN-6104

Fusion-Task-Lineage: fd77c491-cd37-4a57-8270-3eb5e7ba3c94
2026-06-09 12:51:20 -07:00
gsxdsm
2a2b7d0b61 FN-6081: expand quick task entry by default
Make quick task entry open with its controls visible by default.

- default the quick entry textarea and disclosure controls to the expanded state
- update quick entry component tests to assert the new default-expanded behavior and collapse toggle flow
- tighten App settings-button selection to avoid collisions with quick-entry control labels

Files changed:
 .../__tests__/quick-entry-expanded-height.test.tsx |  24 +--
 .../dashboard/app/components/QuickEntryBox.tsx     |   6 +-
 .../app/components/__tests__/App.test.tsx          |   8 +-
 .../components/__tests__/QuickEntryBox.test.tsx    | 174 ++++++++++-----------
 4 files changed, 103 insertions(+), 109 deletions(-)

Fusion-Task-Id: FN-6081

Fusion-Task-Lineage: 37cce52f-170c-4f2a-b340-33bbe225f610
2026-06-09 08:46:25 -07:00
gsxdsm
a2e96b132a feat(i18n): round-2 sweep — 488 residual strings migrated, markup fidelity restored (#1352)
- 51 fix agents covered every dirty batch from the round-1 verifiers:
  helper-function labels (roles, statuses, relative time), constant
  label maps (SETTINGS_SECTIONS, PROVIDER_INFO, EVENT_TYPE_LABELS),
  TUI help overlay + tab labels, toasts, placeholders, aria-labels
- Inline markup flattened by round 1 restored with <Trans>
  (DbCorruptionBanner storage-docs link, UpdateAvailableBanner code chip)
- Catalogs merged: +527 en keys across 5 locales; CLI bundles + app
  locale tree regenerated (6 locales)
- All 23 sweep-caused test regressions fixed: delta vs the clean-main
  baseline is now zero (remaining 4 local failures reproduce identically
  on origin/main; CI-green upstream)
- typecheck/lint clean; TUI 82/82, core locale 9/9

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 20:52:44 -07:00
gsxdsm
1e49494bac feat(i18n): full-sweep string migration — 5,930 keys across 5 locales (#1352)
Migration (multi-agent sweep over 216 files, 60 batches):
- Every user-visible dashboard + TUI string moved to t() with the exact
  English inline default (en rendering byte-identical)
- Catalogs merged from per-batch fragments: en/zh-CN/zh-TW/fr/es now
  carry ~5,930 keys each across common/app/errors/cli namespaces;
  CLI bundles regenerated (6 locales incl. ko)

Integration fixes:
- 18 type errors: reserved {{count}} interpolations renamed, malformed
  plural call, hand-rolled t-param types replaced with TFunction<"app">
- 23 lint errors: superseded label constants/helpers removed
- ExecutorStatusBar hook-order violation (keyboard-open early return
  moved below hooks)
- TUI tests wrapped in I18nextProvider (uninitialized fallback renders
  literal {{placeholders}}); dashboard vitest.setup boots a minimal en
  i18next instance for the same reason

Known WIP (next commits): ~457 residual strings across 50 batches,
Korean drafts for swept keys, and a dashboard test-suite pass that is
still being stabilized (~283 failures under investigation — fake-timer
waitFor interaction, likely stale node_modules vs merged lockfile).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 19:06:53 -07:00
gsxdsm
3989193cf2 FN-5876: prevent mobile quick-entry autofocus
Avoid restoring focus to the new-task quick entry on mobile while preserving desktop behavior.

- gate quick-entry autofocus and post-submit focus restoration behind a desktop-width check
- add desktop and mobile coverage for initial focus behavior
- add mobile coverage for avoiding focus restoration after successful task creation

Files changed:
 .../dashboard/app/components/QuickEntryBox.tsx     |  5 ++-
 .../components/__tests__/QuickEntryBox.test.tsx    | 42 ++++++++++++++++++++++
 2 files changed, 46 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-5876

Fusion-Task-Lineage: ede08207-6506-4f5e-8a6f-f7f1cbfb37c9
2026-06-02 08:08:01 -07:00
gsxdsm
a381863b5c FN-5860: allow Shift+Enter newlines in collapsed quick entry
Ensure quick entry keeps Shift+Enter newline behavior even before expansion.

- allow Shift+Enter to bypass submit handling in any quick-entry state
- expand the quick entry when Shift+Enter inserts a newline from the collapsed state
- update QuickEntryBox coverage to verify newline behavior without submission while collapsed

Files changed:
 packages/dashboard/app/components/QuickEntryBox.tsx         |  5 +++--
 packages/dashboard/app/components/__tests__/QuickEntryBox.test.tsx | 13 ++++++++-----
 2 files changed, 11 insertions(+), 7 deletions(-)

Fusion-Task-Id: FN-5860

Fusion-Task-Lineage: 58a65cb7-2d5b-45bb-bce9-8ffdbebbe586
2026-06-02 00:14:28 -07:00
Fusion (runfusion.ai)
7652bbf29e feat(FN-5136): lock quick entry submit before duplicate check
Adds duplicate-submission guard to the Quick Entry box, locking the submit action before the duplicate check resolves and preventing concurrent or double submissions from creating duplicate tasks. Includes tests covering the lock/unlock flow and duplicate-skip behavior.

Fusion-Task-Id: FN-5136
2026-05-19 07:35:24 -07:00
gsxdsm
7a6a3d0d22 feat(FN-4856): merge fusion/fn-4856 2026-05-17 01:08:01 -07:00
gsxdsm
df998cb54f feat(FN-4829): merge fusion/fn-4829 2026-05-16 22:26:42 -07:00
gsxdsm
4180816e01 feat(FN-4805): merge fusion/fn-4805 2026-05-16 16:03:09 -07:00
Fusion (runfusion.ai)
e9403df6ba feat(FN-4727): add github tracking toggle to quick entry box
Adds a GitHub tracking toggle to the QuickEntryBox component with co-located tests, shipped as a patch to `@runfusion/fusion`.

Fusion-Task-Id: FN-4727
2026-05-16 08:33:29 -07:00
Fusion
fa57034c05 feat(FN-3632): remove quick-entry branch handling from dashboard and docs
Removes the `QuickEntryBox` component and its styles as part of FN-3632 cleanup, with its tests refactored accordingly. Also updates the test-changed script and fixes an isolated test home cleanup ordering issue.

Fusion-Task-Id: FN-3632
2026-05-07 01:30:34 -07:00