Fusion Agent
e80fef3fe0
FN-040: fix chat source-link integrity and contrast
...
Harden chat source links across streaming providers while improving new-tab behavior and visual contrast.
- Preserve source-link metadata through streamed delta and event bridges.
- Open chat source links safely in new tabs across desktop and mobile surfaces.
- Improve source-link contrast and add regression coverage plus user-facing guidance.
Files changed:
.changeset/fn-040-chat-source-links.md | 7 +++
docs/dashboard-guide.md | 3 +
.../ui-bugs/chat-streamed-source-link-integrity.md | 53 ++++++++++++++++
packages/dashboard/app/components/ChatView.css | 24 ++++++++
.../app/components/StandardChatSurface.tsx | 8 ++-
.../components/__tests__/ChatView.core.test.tsx | 38 ++++++++++++
.../components/__tests__/ChatView.mobile.test.tsx | 70 ++++++++++++++++++++--
.../__tests__/ChatView.sessions-rooms.test.tsx | 49 +++++++++++++++
...andardChatSurface.nativeStructureEmbed.test.tsx | 52 +++++++++++++++-
.../__tests__/TaskPlannerChatTab.test.tsx | 48 +++++++++++++++
.../engine/src/__tests__/streaming-delta.test.ts | 36 +++++++++++
packages/engine/src/execution/streaming-delta.ts | 17 +++++-
.../src/__tests__/event-bridge.test.ts | 30 +++++++++-
packages/pi-claude-cli/src/event-bridge.ts | 14 +++--
.../src/__tests__/event-bridge.test.ts | 42 +++++++++++++
.../fusion-plugin-acp-runtime/src/event-bridge.ts | 8 ++-
.../src/__tests__/provider.test.ts | 34 +++++++++++
.../src/acp/event-bridge.ts | 8 ++-
.../src/__tests__/event-bridge.test.ts | 28 +++++++++
.../src/event-bridge.ts | 14 +++--
.../src/__tests__/provider.test.ts | 34 +++++++++++
.../src/acp/event-bridge.ts | 8 ++-
.../src/__tests__/runtime-adapter.test.ts | 34 +++++++++++
.../src/acp/event-bridge.ts | 8 ++-
24 files changed, 642 insertions(+), 25 deletions(-)
Fusion-Task-Id: FN-040
Fusion-Task-Lineage: 364ad678-df3e-4fb2-b19c-29eb44d8a429
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-20 03:57:23 +00:00
Fusion Agent
21b3baa62d
FN-029: unify direct and planner chat queues
...
Standardize queued-message controls across Direct Chat and planner conversations while preserving force-send ordering during cancellation reconciliation.
- Add shared pending-message queue UI with edit, reorder, delete, and force-send actions.
- Coordinate durable cancellation reconciliation before dispatching selected queued messages.
- Disable the Direct composer and related controls until force-send reconciliation completes.
- Add localized queue copy, documentation, styling, and regression coverage.
Files changed:
docs/dashboard-guide.md | 8 +
packages/dashboard/app/components/ChatView.css | 63 ------
packages/dashboard/app/components/ChatView.tsx | 55 +++--
packages/dashboard/app/components/PendingChatMessageQueue.css | 94 +++++++++
packages/dashboard/app/components/PendingChatMessageQueue.tsx | 200 ++++++++++++++++++
packages/dashboard/app/components/TaskPlannerChatTab.css | 84 --------
packages/dashboard/app/components/TaskPlannerChatTab.tsx | 113 ++---------
packages/dashboard/app/components/__tests__/ChatView.core-interactions.test.tsx | 24 ++-
packages/dashboard/app/components/__tests__/PendingChatMessageQueue.test.tsx | 76 +++++++
packages/dashboard/app/hooks/__tests__/useChat.test.ts | 39 +++
packages/dashboard/app/hooks/useChat.ts | 224 ++++++++++++++++-----
packages/i18n/locales/en/app.json | 25 +--
packages/i18n/locales/es/app.json | 25 +--
packages/i18n/locales/fr/app.json | 25 +--
packages/i18n/locales/ko/app.json | 25 +--
packages/i18n/locales/pt-BR/app.json | 25 +--
packages/i18n/locales/zh-CN/app.json | 25 +--
packages/i18n/locales/zh-TW/app.json | 25 +--
packages/i18n/src/resources.d.ts | 25 +--
19 files changed, 746 insertions(+), 434 deletions(-)
Fusion-Task-Id: FN-029
Fusion-Task-Lineage: 3330d0e7-ba77-4392-98f7-69425070cfd1
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-20 03:55:39 +00:00
Fusion Agent
df5c580a50
FN-024: cap and resize chat composers
...
Keep chat drafts compact by default while allowing intentional desktop resizing.
- Autosize Chat, Rooms, Activity, and Planner Chat composers through five lines.
- Cap overflow with internal scrolling and provide desktop/tablet-only manual resize behavior.
- Reset transient composer sizing on draft and target lifecycle changes, with regression coverage and operator documentation.
- Preserve shared terminal session documentation, including detach, end, and reopen behavior.
Files changed:
.changeset/fn-024-chat-composer-height.md | 7 +
docs/dashboard-guide.md | 3 +
packages/dashboard/app/components/ChatView.css | 28 ++-
packages/dashboard/app/components/ChatView.tsx | 65 +++----
packages/dashboard/app/components/TaskChatTab.css | 9 +-
packages/dashboard/app/components/TaskChatTab.tsx | 32 ++--
packages/dashboard/app/components/TaskPlannerChatTab.css | 11 +-
packages/dashboard/app/components/TaskPlannerChatTab.tsx | 27 ++-
packages/dashboard/app/components/__tests__/ChatView.autosize.test.tsx | 64 +++++--
packages/dashboard/app/components/__tests__/ChatView.chat-input-autosize.test.tsx | 148 ++++++++++------
packages/dashboard/app/components/__tests__/TaskChatTab.test.tsx | 34 ++++
packages/dashboard/app/components/__tests__/TaskPlannerChatTab.test.tsx | 41 ++++-
packages/dashboard/app/utils/chatInputAutosize.ts | 192 +++++++++++++++++++--
13 files changed, 516 insertions(+), 145 deletions(-)
Fusion-Task-Id: FN-024
Fusion-Task-Lineage: 663b9f18-87ac-467b-b67c-6d2e27f34ba4
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-20 03:55:39 +00:00
Fusion Agent
3ae22c23d1
FN-011: add project chat message width preference
...
Add a project-scoped conversation layout preference and apply full-width rendering consistently across dashboard chat surfaces.
- Add bubbles/full-width project settings with localized Appearance controls.
- Apply the preference to Chat, Activity, Planner Chat, Quick Chat, and docked hosts with responsive safeguards.
- Add regression coverage, documentation, and the published-package changeset.
Files changed:
.changeset/fn-011-chat-message-layout.md | 7 ++++
docs/dashboard-guide.md | 4 ++
.../core/src/__tests__/settings-defaults.test.ts | 14 ++++++-
.../core/src/__tests__/settings-parity.test.ts | 4 ++
packages/core/src/config/settings-schema.ts | 5 +++
packages/core/src/types/settings/settings-scope.ts | 5 +++
packages/dashboard/app/App.tsx | 7 +++-
packages/dashboard/app/components/AppModals.tsx | 5 +++
packages/dashboard/app/components/ChatView.css | 23 +++++++++++
packages/dashboard/app/components/ChatView.tsx | 4 +-
.../dashboard/app/components/SettingsModal.tsx | 14 +++++++
packages/dashboard/app/components/TaskChatTab.css | 42 +++++++++++++++++++++
packages/dashboard/app/components/TaskChatTab.tsx | 4 +-
.../app/components/TaskPlannerChatTab.css | 22 +++++++++++
.../app/components/TaskPlannerChatTab.tsx | 4 +-
.../components/__tests__/ChatView.core.test.tsx | 34 +++++++++++++++++
.../__tests__/SettingsModal.general.test.tsx | 42 +++++++++++++++++++++
.../app/components/__tests__/TaskChatTab.test.tsx | 31 +++++++++++++++
.../__tests__/TaskPlannerChatTab.test.tsx | 32 ++++++++++++++++
.../settings/sections/AppearanceSection.tsx | 24 +++++++++++-
.../sections/__tests__/AppearanceSection.test.tsx | 22 ++++++++++-
.../app/context/ChatMessageLayoutContext.tsx | 16 ++++++++
.../app/hooks/__tests__/useAppSettings.test.ts | 44 ++++++++++++++++++++++
packages/dashboard/app/hooks/useAppSettings.ts | 29 ++++++++++++++
.../app/task-modal-touch-resize-e2e-fixture.tsx | 2 +-
packages/i18n/locales/en/app.json | 6 ++-
packages/i18n/locales/es/app.json | 6 ++-
packages/i18n/locales/fr/app.json | 6 ++-
packages/i18n/locales/ko/app.json | 6 ++-
packages/i18n/locales/pt-BR/app.json | 6 ++-
packages/i18n/locales/zh-CN/app.json | 6 ++-
packages/i18n/locales/zh-TW/app.json | 6 ++-
packages/i18n/src/resources.d.ts | 4 ++
33 files changed, 471 insertions(+), 15 deletions(-)
Fusion-Task-Id: FN-011
Fusion-Task-Lineage: d858d00f-e05b-4dc2-8ddb-cfc5b9973871
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-20 03:55:38 +00:00
gsxdsm
b8f7f9e75c
FN-8701: standardize tool-call detail displays
...
Standardize expandable tool-call payloads across dashboard chat and log surfaces.
- Add a shared formatter and detail renderer that preserves complete browser-available arguments and results.
- Use compact previews with wrapped, scrollable expanded payloads in chat, activity, and agent logs.
- Cover formatting and rendering behavior with dashboard tests and document the display contract.
Files changed:
.changeset/fn-8701-tool-call-display.md | 7 ++
docs/dashboard-guide.md | 4 +-
.../dashboard/app/components/AgentLogViewer.tsx | 12 +++-
packages/dashboard/app/components/ChatView.css | 37 ++---------
.../app/components/StandardChatSurface.tsx | 56 +++++++---------
packages/dashboard/app/components/TaskChatTab.css | 17 -----
packages/dashboard/app/components/TaskChatTab.tsx | 31 +++++----
.../dashboard/app/components/ToolCallDetails.css | 52 +++++++++++++++
.../dashboard/app/components/ToolCallDetails.tsx | 77 ++++++++++++++++++++++
.../__tests__/AgentLogViewer.rendering.test.tsx | 8 +++
.../components/__tests__/ChatView.core.test.tsx | 24 +++++++
.../app/components/__tests__/TaskChatTab.test.tsx | 33 +++++++---
.../__tests__/TaskPlannerChatTab.test.tsx | 19 ++++++
13 files changed, 275 insertions(+), 102 deletions(-)
Fusion-Task-Id: FN-8701
Fusion-Task-Lineage: 86513f9a-31d4-45fb-97fe-1f0c73d0e5b3
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 09:32:37 -07:00
gsxdsm
a03eb0b39c
fix(dashboard-tests): green Full Suite after chat tags, TaskForm meta, remote lifecycle
...
- Replace undefined --space-2xs in ChatView tag menu with calc(--space-xs / 2)
- Stub fetchChatTags/create/rename/delete on streaming-thread api mock for useChat mount
- Expect TaskForm model/tracking callbacks with TaskFormValueChangeMeta source
- Drive remote tunnel lifecycle via one stop then error status (no double Stop race)
2026-07-24 23:02:16 -07:00
gsxdsm
a9d5b06013
FN-8562: add tags to chat conversations
...
Enable project-scoped reusable tags for Direct chat sessions.
- Add tag storage, migrations, and scoped assignment APIs.
- Add chat sidebar tag creation, assignment, and filtering controls.
- Document tag behavior and cover schema and chat interactions.
- Establish the session project/id candidate key before creating scoped tag foreign keys.
Files changed:
.changeset/fn-8562-chat-conversation-tags.md | 7 ++
docs/dashboard-guide.md | 4 +
docs/storage.md | 2 +
.../src/__tests__/postgres/schema-applier.test.ts | 8 +-
packages/core/src/async-chat-store.ts | 117 ++++++++++++++++++++-
packages/core/src/chat-store.ts | 32 ++++++
packages/core/src/chat-types.ts | 14 +++
packages/core/src/index.gate.ts | 3 +
packages/core/src/index.ts | 3 +
.../postgres/migrations/0036_chat_session_tags.sql | 64 +++++++++++
packages/core/src/postgres/schema-applier.ts | 16 ++-
packages/core/src/postgres/schema/project.ts | 34 ++++++
packages/dashboard/app/api.ts | 1 +
packages/dashboard/app/api/chat.ts | 18 ++++
packages/dashboard/app/components/ChatView.css | 17 +++
packages/dashboard/app/components/ChatView.tsx | 70 +++++++++++-
.../__tests__/ChatView.core-interactions.test.tsx | 27 +++++
.../dashboard/app/hooks/__tests__/useChat.test.ts | 1 +
packages/dashboard/app/hooks/useChat.ts | 52 ++++++++-
.../dashboard/src/routes/register-chat-routes.ts | 70 ++++++++++++
20 files changed, 550 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-8562
Fusion-Task-Lineage: 4efe798c-0865-451a-adbd-6b85f9f8b149
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-24 18:09:32 -07:00
gsxdsm
e4fc3d2acb
FN-8558: enlarge Quick Chat tablet drag target
...
Make the floating Quick Chat header easier to drag on tablet viewports.
- Increase only the floating Chat header touch target in the tablet viewport band.
- Cover floating header controls for empty and populated chats and scope the CSS contract.
- Add a patch changeset for the Quick Chat usability fix.
Files changed:
.changeset/quick-chat-tablet-drag-header.md | 7 ++++
packages/dashboard/app/components/ChatView.css | 13 +++++++
packages/dashboard/app/components/__tests__/ChatView.mobile.test.tsx | 41 ++++++++++++++++++++++
packages/dashboard/app/components/__tests__/FloatingWindow.test.tsx | 20 +++++++++++
4 files changed, 81 insertions(+)
Fusion-Task-Id: FN-8558
Fusion-Task-Lineage: 2d2f788b-b417-4fa3-b066-8790858b393a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-24 00:46:44 -07:00
gsxdsm
b67dca4178
fix(dashboard): stop Chat Latest button jumping under the cursor
...
Center the jump-to-latest chip with margin-inline auto instead of
transform:translateX(-50%) so global .btn transform transitions and
:active scale cannot shift it sideways in Quick Chat and full Chat.
2026-07-23 18:15:03 -07:00
gsxdsm
a224c11110
fix(dashboard): keep chat Latest button centered while pressed
...
The jump-to-latest button is centered via transform: translateX(-50%), and
the global .btn:active scale transform replaced it wholesale on mousedown,
shifting the button out from under the cursor mid-click. Compose both
transforms on :active (same fix as the DevServer new-logs button).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-22 23:01:51 -07:00
gsxdsm
e22c65ad11
FN-8397: separate pinned chats and retain failed edits
...
Separate direct-chat session groups and make message edits safely retryable.
- Render explicit Pinned and Recent sections across desktop and mobile chat lists.
- Keep inline message corrections open until edit-and-resend succeeds in Direct and Planner Chat.
- Add localized Recent labels, documentation, release metadata, and regression coverage.
Files changed:
.changeset/fn-8397-chat-pin-separation-and-edit-save.md | 7 +++
docs/dashboard-guide.md | 5 +-
packages/dashboard/app/components/ChatView.css | 10 ++++
packages/dashboard/app/components/ChatView.tsx | 31 ++++++++---
packages/dashboard/app/components/StandardChatSurface.tsx | 35 +++++++++----
packages/dashboard/app/components/TaskPlannerChatTab.tsx | 14 +++--
packages/dashboard/app/components/__tests__/ChatView.core-contracts.test.tsx | 46 +++++++++++++++++
packages/dashboard/app/components/__tests__/ChatView.message-edit.test.tsx | 60 ++++++++++++++++++++--
packages/dashboard/app/components/__tests__/TaskPlannerChatTab.test.tsx | 10 ++--
packages/dashboard/app/hooks/__tests__/useChat.test.ts | 4 +-
packages/dashboard/app/hooks/useChat.ts | 13 +++--
packages/i18n/locales/{en,es,fr,ko,zh-CN,zh-TW}/app.json | 6 +++
17 files changed, 205 insertions(+), 36 deletions(-)
Fusion-Task-Id: FN-8397
Fusion-Task-Lineage: 4dbc664a-56a3-48c7-be9a-febd5f411c9e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-20 00:42:15 -07:00
gsxdsm
f0c32dc1bf
FN-8191: clamp conversation action menus to viewport
...
Keep conversation overflow menus aligned with their triggers and contained in the visible viewport.
- Measure rendered menu dimensions so theme-specific widths remain aligned
- Clamp horizontal and vertical menu positions for trigger and context-menu entry points
- Cover desktop alignment and mobile alternate-theme viewport containment
Files changed:
packages/dashboard/app/components/ChatView.css | 6 ++
packages/dashboard/app/components/ChatView.tsx | 72 +++++++++++++++++++++-
.../__tests__/ChatView.core-interactions.test.tsx | 32 ++++++++++
.../components/__tests__/ChatView.mobile.test.tsx | 41 +++++++++++-
4 files changed, 147 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-8191
Fusion-Task-Lineage: 1a52140b-9450-421d-844b-9fff302d8ea4
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 00:17:59 -07:00
gsxdsm
eab9977a42
FN-8173: consolidate chat session actions into overflow menu
...
Consolidate each chat session row's actions behind a shared three-dot menu.
- Replace inline pin, rename, and delete buttons with an accessible overflow trigger
- Preserve context-menu actions, pin-limit feedback, and desktop/mobile title clearance
- Update chat session interaction, layout, and mobile coverage
Files changed:
packages/dashboard/app/components/ChatView.css | 30 +++-----
packages/dashboard/app/components/ChatView.tsx | 66 +++++++----------
.../__tests__/ChatView.core-contracts.test.tsx | 83 ++++++++++++++--------
.../__tests__/ChatView.core-interactions.test.tsx | 12 ++--
.../components/__tests__/ChatView.mobile.test.tsx | 22 +++---
5 files changed, 107 insertions(+), 106 deletions(-)
Fusion-Task-Id: FN-8173
Fusion-Task-Lineage: 4fee30f2-b8af-470b-bedd-9691680b78fb
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 18:51:15 -07:00
gsxdsm
478f226a54
test: green full-suite CI after main drift ( #2229 )
...
## Summary
Restores green **Full Suite (non-blocking)** runs on `main`. Recent main
merges left i18n key parity, schema baseline bookkeeping (0011→0012),
heartbeat tool inventory (FN-8058 `fn_task_logs_read`), and merger
whitespace-classification mocks (execFile `git diff -p -w :2: :3:`) out
of date, so all four test shards failed.
## Root causes observed on main
- **Shard 4 / `@fusion/i18n`**: missing `skipConfirmationDialogs*` +
`reviewBudgetExhausted` in non-en locales; orphan
`awaitingApprovalPlanReviewReplanCap`
- **Shard 3 / `@fusion/core`**: `SCHEMA_BASELINE_VERSION` advanced to
`0012` while tests still equated it with
`OWNER_PROJECT_ID_SPLIT_VERSION` (`0011`) and omitted `0012` from
applied-migration lists
- **Shards 1–2 / `@fusion/engine`**: tool count/snapshot drift for
`fn_task_logs_read`; merger tests still mocked `git diff-tree` for
trivial classification after the execFile `:2:`/`:3:` cutover; mock
provider `updateTask` arity drift
## Changes
- Locale catalogs: add missing keys, drop orphan key
- Schema applier tests: immutable 0011 identity + baseline 0012 lists
- Heartbeat + gating snapshots: include `fn_task_logs_read`
- Merger unit mocks: recognize `git diff -p -w :2:path :3:path`
- Mock provider: accept optional third `updateTask` arg
## Test plan
- [x] `pnpm --filter @fusion/i18n exec vitest run` — 23/23
- [x] `pnpm --filter @fusion/core exec vitest run
src/__tests__/postgres/schema-applier.test.ts` (immutable + automation
upgrade) — pass
- [x] `pnpm --filter @fusion/core exec vitest run` project-identity +
satellite-fusiondir — pass
- [x] Engine suites from failed CI shards (file-scoped,
hermes/openclaw/paperclip/grok, reliability post-finalize/mission,
heartbeat, gating, merger recovery/prompt, mock-provider, etc.) — pass
- [ ] Full Suite workflow green on merge to main
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Improved project data isolation across backend operations.
- Added safer optional toast handling when UI components render outside
the full application shell.
- Added support for reading task logs during agent heartbeat sessions.
- **Bug Fixes**
- Prevented runtime probes from hanging and avoided scanning large
binary files.
- Improved path handling for workspaces with missing descendants.
- Corrected task retry state resets and GitHub import/issue-close
behavior.
- **Style**
- Improved chat, terminal, and settings spacing.
- Added clearer accessibility labeling for the auto-merge control.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-16 16:01:29 -07:00
gsxdsm
e87b51bd07
FN-8054: add pinned chat conversations
...
Add durable, scoped pinning for Direct chat conversations.
- Add pinned session persistence, migration coverage, and archive-safe row locking.
- Enforce a three-conversation per-project pin limit through the chat API.
- Add desktop and mobile pin controls, sorting, indicators, and regression tests.
Files changed:
.changeset/fn-8054-pin-conversations.md | 7 ++
docs/dashboard-guide.md | 2 +
.../postgres/satellite-db-injected-stores.test.ts | 13 ++++
packages/core/src/async-chat-store.ts | 27 ++++++++
packages/core/src/chat-store.ts | 63 ++++++++++++++++--
packages/core/src/chat-types.ts | 9 +++
.../core/src/postgres/migrations/0000_initial.sql | 1 +
.../postgres/migrations/0012_chat_session_pins.sql | 8 +++
packages/core/src/postgres/postgres-health.ts | 3 +
packages/core/src/postgres/schema-applier.ts | 30 ++++++++-
packages/core/src/postgres/schema/project.ts | 3 +
packages/dashboard/app/api/legacy.ts | 1 +
packages/dashboard/app/components/ChatView.css | 32 +++++++++-
packages/dashboard/app/components/ChatView.tsx | 74 ++++++++++++++++++++--
.../dashboard/app/hooks/__tests__/useChat.test.ts | 21 ++++++
packages/dashboard/app/hooks/useChat.ts | 72 +++++++++++++++++----
.../dashboard/src/routes/register-chat-routes.ts | 25 +++++++-
17 files changed, 366 insertions(+), 25 deletions(-)
Fusion-Task-Id: FN-8054
Fusion-Task-Lineage: 088cb01c-582b-4f56-a222-214da90ff356
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 02:35:29 -07:00
gsxdsm
a821bce236
FN-8030: move room thinking control into composer
...
Move room-level thinking effort from the crowded thread header into the composer Brain popover.
- Reuse the thinking-level control in a room-specific level-only mode.
- Preserve room thinking persistence and add desktop, mobile, and failure coverage.
- Update room-chat documentation and publish a patch changeset.
Files changed:
.changeset/fn-8030-room-thinking-composer.md | 7 +++
docs/dashboard-guide.md | 2 +-
.../app/components/ChatThinkingLevelControl.tsx | 12 +++-
packages/dashboard/app/components/ChatView.css | 16 -----
packages/dashboard/app/components/ChatView.tsx | 54 +++++++---------
.../__tests__/ChatThinkingLevelControl.test.tsx | 20 ++++++
.../components/__tests__/ChatView.rooms.test.tsx | 72 +++++++++++++++++++---
.../__tests__/ChatView.thinking-level.test.tsx | 23 ++++---
8 files changed, 137 insertions(+), 69 deletions(-)
Fusion-Task-Id: FN-8030
Fusion-Task-Lineage: 31054538-e620-412d-98ba-26fba34a6af8
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 01:38:49 -07:00
gsxdsm
d6f94693b2
FN-8028: widen tablet chat message bubbles
...
Increase tablet agent-side chat bubble width while preserving responsive behavior.
- Raise the tablet assistant, streaming, and failure bubble cap to 92%.
- Update the responsive CSS contract and dashboard documentation.
Files changed:
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/ChatView.css | 5 ++++-
packages/dashboard/app/components/__tests__/ChatView.core-contracts.test.tsx | 4 ++--
3 files changed, 7 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-8028
Fusion-Task-Lineage: 2158a4c8-f07b-4e96-bcf2-80ebe6b08515
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-15 23:49:24 -07:00
gsxdsm
5523c19fb4
FN-8023: align ChatView thinking text tokens
...
Align ChatView thinking-section text with the muted token guard.
- Replace legacy secondary text tokens in thinking labels, controls, and empty states
- Document the ChatView token-guard requirement
Files changed:
packages/dashboard/app/components/ChatView.css | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-8023
Fusion-Task-Lineage: 7f0a6da0-f15d-4dc8-a935-308a11ee9f14
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-15 19:21:20 -07:00
gsxdsm
29560021d3
FN-7934: fix chat brain popup clipping in narrow floating windows
...
Fixes the in-chat model/thinking (Brain) popup being cut off inside a narrow floating Chat window or compact dock on a wide desktop viewport.
- Key the popover's viewport-fitting inset layout on ChatView's .chat-view--narrow class (chat surface width) instead of only the @media (max-width: 768px) browser-viewport query, so narrow floating/docked chat surfaces get the fitted layout too.
- Add narrow-surface CSS rules for .chat-thinking-level-root, .chat-thinking-popover, .chat-thinking-agent-list, and .chat-thinking-popover-list to constrain position/width/max-height to the chat surface.
- Add a CSS-contract regression test asserting both the desktop popover sizing and the new narrow-surface rules stay in sync.
- Update docs/dashboard-guide.md to describe the popup staying fitted to the chat surface for narrow floating Chat windows/compact docks, not just mobile/tablet viewports.
- Add a patch changeset for @runfusion/fusion documenting the fix.
Files changed:
.changeset/fn-7934-chat-narrow-model-popup.md | 7 +++++
docs/dashboard-guide.md | 3 +-
packages/dashboard/app/components/ChatView.css | 22 +++++++++++++++
.../__tests__/ChatThinkingLevelControl.test.tsx | 32 ++++++++++++++++++++++
4 files changed, 63 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-7934
Fusion-Task-Lineage: 30c461c5-a153-4005-8a8c-24f02916a934
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-13 00:48:02 -07:00
gsxdsm
e84fda936a
FN-7918: make chat go-to-top contextual and inline edit pencil compact
...
Reworks chat message footer affordances: the scroll-to-top control now only becomes visible once a message's top is actually clipped above the visible thread viewport, and the edit pencil moves from a standalone action row into the timestamp footer beside user messages.
- ChatView measures assistant message tops on scroll/message changes (rAF-scheduled) and tracks which message IDs are currently clipped above the `.chat-messages` container edge
- StandardChatMessageItem accepts a new `isTopClipped` prop; the go-to-top button stays DOM-mounted (for tests/a11y) but is visually hidden via CSS until clipped
- Merged the assistant thinking/copy/scroll-to-top actions into a single collapsible footer row instead of separate action rows
- Moved the user-message edit pencil into an inline `chat-message-time-row` next to the relative timestamp instead of a standalone action row above it
- Updated ChatView.css for the new inline layout, collapsed-row state, and hidden/visible scroll-to-top button states
- Updated message-edit and scroll-to-top tests to cover the new inline placement and clipped-visibility behavior
- Added changeset and docs/dashboard-guide.md note describing the new behavior
Files changed:
.changeset/fn-7918-chat-inline-icons.md | 7 ++
docs/dashboard-guide.md | 6 +-
packages/dashboard/app/components/ChatView.css | 80 +++++++++++++++-------
packages/dashboard/app/components/ChatView.tsx | 52 +++++++++++++-
.../app/components/StandardChatSurface.tsx | 33 +++++++--
.../__tests__/ChatView.message-edit.test.tsx | 34 ++++++++-
.../__tests__/ChatView.scroll-to-top.test.tsx | 75 +++++++++++++++++++-
7 files changed, 253 insertions(+), 34 deletions(-)
Fusion-Task-Id: FN-7918
Fusion-Task-Lineage: 76206cd2-94a8-47be-b282-94943e184d01
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-12 23:24:03 -07:00
gsxdsm
382a4d5d05
FN-7917: center chat composer attach/model icons with input box
...
Centers the Chat composer's attach and model/thinking icon buttons with the single-line message input across desktop, tablet, and mobile, while keeping them bottom-aligned when the textarea grows multi-line.
- Size .chat-attach-btn, .chat-thinking-level-root, and .chat-thinking-btn to --chat-input-control-size (matching the send button/textarea min-height) instead of the old calc(var(--space-lg) * 2) / * 2.25) sizing
- Replace the separate mobile touch-target overrides for .chat-attach-btn and .chat-thinking-btn with a shared rule using the same --chat-input-control-size sizing
- Add a regression test asserting the attach/thinking controls use --chat-input-control-size and align-self: flex-end, and no longer use the old calc()-based sizing
- Add a patch changeset for @runfusion/fusion documenting the composer icon centering fix
Files changed:
.changeset/chat-composer-icon-centering.md | 7 +++++
packages/dashboard/app/components/ChatView.css | 30 ++++++++++++----------
.../ChatView.chat-input-autosize.test.tsx | 28 ++++++++++++++++++++
3 files changed, 52 insertions(+), 13 deletions(-)
Fusion-Task-Id: FN-7917
Fusion-Task-Lineage: aba1d5ea-21ee-4b27-90f2-11aca7c4a5fa
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-12 23:02:46 -07:00
gsxdsm
313956df5a
FN-7916: fix chat model selector dismissing before selection on mobile/tablet
...
Fix the in-chat Brain popup's model picker on touch viewports: pointerdown outside-close was treating the portaled CustomModelDropdown menu as outside the popup, dismissing it before the tap could register a model selection, and the mobile popover was mis-anchored off-screen.
- ChatThinkingLevelControl: treat pointerdown targets inside the portaled `.model-combobox-dropdown--portal` menu as inside the popup so touch taps select the model instead of closing the popup first
- ChatView.css: clamp the popover to the viewport width via max-width/max-inline-size, and on mobile anchor it to the chat input area with tokenized left/right gutters instead of a collapsing left:0 width
- Add a portal-aware regression test covering pointerdown-inside-portal selection, genuine outside-pointerdown close, and the mobile CSS anchoring contract
- Add changeset (patch) and update dashboard guide docs to describe mobile/tablet behavior
Files changed:
.changeset/fn-7916-chat-mobile-model-selector.md | 7 ++
docs/dashboard-guide.md | 3 +-
.../app/components/ChatThinkingLevelControl.tsx | 10 ++-
packages/dashboard/app/components/ChatView.css | 17 +++-
.../ChatThinkingLevelControl.portal.test.tsx | 97 ++++++++++++++++++++++
5 files changed, 130 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-7916
Fusion-Task-Lineage: bcc2d9ad-0be6-4e23-b643-eebf93aae3c6
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-12 22:49:51 -07:00
gsxdsm
daf3f15fd1
FN-7909: add room-level thinking effort override for Chat Rooms
...
Adds a per-room thinking-effort (reasoning level) override for Chat Rooms so all room responders can share a consistent override instead of relying only on per-agent/global defaults.
- Persist `chat_rooms.thinkingLevel` with a new core DB migration and store read/write support
- Extend chat-store and chat-types with thinkingLevel plumbing for room create/update
- Wire the dashboard chat room API/routes and legacy handlers to accept and return thinkingLevel
- Add a ChatView room settings control (with CSS) and useChatRooms hook support for setting/clearing the override
- Resolve room responder defaultThinkingLevel from the room override when present
- Update docs (dashboard-guide, settings-reference) and add a minor changeset for the feature
Files changed:
.changeset/fn-7909-room-thinking-level.md | 7 +++
docs/dashboard-guide.md | 1 +
docs/settings-reference.md | 2 +-
packages/core/src/__tests__/chat-store.test.ts | 21 ++++++++
packages/core/src/__tests__/db-migrate.test.ts | 57 ++++++++++++++++++++++
packages/core/src/chat-store.ts | 12 ++++-
packages/core/src/chat-types.ts | 10 ++++
packages/core/src/db.ts | 28 ++++++++++-
packages/dashboard/app/api/__tests__/chat-rooms-api.test.ts | 8 +--
packages/dashboard/app/api/legacy.ts | 4 +-
packages/dashboard/app/components/ChatView.css | 16 ++++++
packages/dashboard/app/components/ChatView.tsx | 29 ++++++++++-
packages/dashboard/app/components/__tests__/ChatView.rooms.test.tsx | 24 +++++++++
packages/dashboard/app/hooks/__tests__/useChatRooms.test.ts | 22 +++++++++
packages/dashboard/app/hooks/useChatRooms.ts | 16 ++++++
packages/dashboard/src/__tests__/chat-room-routes.test.ts | 26 ++++++++++
packages/dashboard/src/__tests__/chat.rooms.test.ts | 42 ++++++++++++++++
packages/dashboard/src/chat.ts | 8 +++
packages/dashboard/src/routes/register-chat-room-routes.ts | 21 ++++++--
19 files changed, 338 insertions(+), 16 deletions(-)
Fusion-Task-Id: FN-7909
Fusion-Task-Lineage: 2741eca9-5305-4f6c-81bf-ae644a9fe307
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-12 22:12:18 -07:00
gsxdsm
8835c6cb48
FN-7908: add in-chat model/agent switcher to brain-icon popup
...
Extend the chat brain-icon popup and its backing session PATCH route so an
active Direct chat's model or agent can be switched mid-conversation instead
of only being set at creation time.
- Add a Model/Agent section to ChatThinkingLevelControl (the brain-icon
popup) for picking a model provider/model or retargeting to a real agent
without leaving the chat.
- Extend PATCH /api/chat/sessions/:id to accept modelProvider/modelId (as a
validated pair via the existing validateModelPair helper) and agentId,
forwarding only the keys present in the body so omitted fields leave the
session's stored target untouched.
- Add chat-store updateSession support for the agentId clause alongside the
existing model/thinkingLevel fields, and a useChat.setSessionModel hook
for the dashboard to call the new PATCH capability.
- Update i18n locale strings (en/es/fr/ko/zh-CN/zh-TW) and dashboard-guide.md
docs for the new switcher UI.
- Add unit/integration test coverage across chat-store, chat-manager,
chat-routes, useChat, ChatThinkingLevelControl, and ChatView for the new
model/agent switch behavior.
- Add changeset fn-7908-chat-model-agent-switcher.md (minor,
@runfusion/fusion).
Files changed:
.changeset/fn-7908-chat-model-agent-switcher.md | 7 +
docs/dashboard-guide.md | 3 +-
packages/core/src/__tests__/chat-store.test.ts | 21 ++
packages/core/src/chat-store.ts | 8 +
packages/core/src/chat-types.ts | 2 +
packages/dashboard/app/api/legacy.ts | 11 +-
.../app/components/ChatThinkingLevelControl.tsx | 219 ++++++++++++++++++---
packages/dashboard/app/components/ChatView.css | 135 ++++++++++++-
packages/dashboard/app/components/ChatView.tsx | 23 ++-
.../__tests__/ChatThinkingLevelControl.test.tsx | 109 +++++++++-
.../__tests__/ChatView.thinking-level.test.tsx | 67 ++++++-
.../dashboard/app/hooks/__tests__/useChat.test.ts | 166 +++++++++++++++-
packages/dashboard/app/hooks/useChat.ts | 56 ++++++
.../dashboard/src/__tests__/chat-manager.test.ts | 38 ++++
.../dashboard/src/__tests__/chat-routes.test.ts | 117 ++++++++++-
.../dashboard/src/routes/register-chat-routes.ts | 48 ++++-
packages/i18n/locales/en/app.json | 8 +-
packages/i18n/locales/es/app.json | 8 +-
packages/i18n/locales/fr/app.json | 8 +-
packages/i18n/locales/ko/app.json | 8 +-
packages/i18n/locales/zh-CN/app.json | 8 +-
packages/i18n/locales/zh-TW/app.json | 8 +-
22 files changed, 1007 insertions(+), 71 deletions(-)
Fusion-Task-Id: FN-7908
Fusion-Task-Lineage: b1104865-9b0c-4d77-973e-89152fe245e0
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-12 21:33:50 -07:00
gsxdsm
23cb061af2
FN-7898: add in-chat thinking-level control next to the attach button
...
Adds a Brain-icon popover control in the chat composer that lets users change an existing session's reasoning-effort level mid-conversation, extending the existing create-time-only thinking-level picker.
- Add ChatThinkingLevelControl component (Brain-icon trigger + popover) wired into ChatView's direct-session composer, gated to non-CLI model-loop sessions only
- Extend PATCH /api/chat/sessions/:id to accept an optional thinkingLevel field, validated via existing validateThinkingLevel helper; null/empty string explicitly clears back to the inherited default, omitting the key leaves it untouched
- Add useChat().setSessionThinkingLevel hook method to call the new PATCH capability
- Add i18n strings (thinkingLevelButton) across all locales and regenerate packages/i18n/src/resources.d.ts
- Add changeset for @runfusion/fusion (minor) and update docs/dashboard-guide.md
Files changed:
.changeset/fn-7898-chat-thinking-level-control.md | 7 +
docs/dashboard-guide.md | 2 +
packages/dashboard/app/api/legacy.ts | 4 +-
.../app/components/ChatThinkingLevelControl.tsx | 133 +++++++++++
packages/dashboard/app/components/ChatView.css | 73 ++++++
packages/dashboard/app/components/ChatView.tsx | 20 ++
.../__tests__/ChatThinkingLevelControl.test.tsx | 103 ++++++++
.../__tests__/ChatView.message-edit.test.tsx | 1 +
.../components/__tests__/ChatView.test-harness.tsx | 1 +
.../__tests__/ChatView.thinking-level.test.tsx | 262 +++++++++++++++++++++
.../dashboard/app/hooks/__tests__/useChat.test.ts | 108 +++++++++
packages/dashboard/app/hooks/useChat.ts | 59 +++++
.../dashboard/src/__tests__/chat-routes.test.ts | 83 +++++++
.../dashboard/src/routes/register-chat-routes.ts | 35 ++-
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 | 96 ++++++--
21 files changed, 970 insertions(+), 23 deletions(-)
Fusion-Task-Id: FN-7898
Fusion-Task-Lineage: a052a6ef-d2d3-45af-9b92-221996780b1b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-12 20:00:50 -07:00
gsxdsm
70330bcffb
FN-7779: render No message placeholder for empty assistant chat replies
...
Empty final assistant chat messages (e.g. Grok CLI runs that finish with no text) now show a muted "No message" placeholder instead of a blank bubble, in both Chat and Planner Chat via the shared StandardChatSurface component.
- Add isEmptyAssistantMessage check in StandardChatMessageItem: only applies to final persisted assistant messages with no content, tool calls, thinking output, attachments, or failure info
- Render a new .chat-message-content--empty block with the "No message" i18n string when the check matches
- Add shared CSS rule combining --waiting and --empty muted/italic styling, switching to var(--font-size-sm)
- Add "chat.noMessage" translation key to en/app.json and regenerate resources.d.ts
- Document the new behavior in docs/dashboard-guide.md
- Add a patch changeset for @runfusion/fusion
- Add StandardChatSurface.empty-message.test.tsx covering empty/whitespace content, populated content, tool calls, thinking output, attachments, failure info, non-assistant roles, and streaming waiting/thinking states
Files changed:
$(cat /tmp/diffstat_fn7779.txt)
Fusion-Task-Id: FN-7779
Fusion-Task-Lineage: d3ae068e-acba-4b4c-85d6-a788aa24a53b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-10 07:40:22 -07:00
gsxdsm
efabdd6f04
FN-7651: remove chat "Search in title only" toggle
...
Simplifies chat search UX by always matching both title and message content, removing the now-unneeded title-only toggle button and state.
- Removed the "Search in title only" toggle button and its CSS from ChatView
- Dropped searchInTitleOnly/setSearchInTitleOnly state and logic from useChat; content-search query params are now always-on
- Updated ChatView tests to drop title-only toggle interactions and assertions
- Removed the title-only-search i18n string across all locales
- Updated dashboard-guide.md docs to reflect the simplified search behavior
- Added a patch changeset documenting the removal
Files changed:
.../fn-7651-remove-chat-title-only-toggle.md | 7 +++
docs/dashboard-guide.md | 4 +-
packages/dashboard/app/components/ChatView.css | 18 --------
packages/dashboard/app/components/ChatView.tsx | 26 +++--------
.../__tests__/ChatView.autosize.test.tsx | 2 -
.../__tests__/ChatView.content-search.test.tsx | 51 ++++++----------------
.../components/__tests__/ChatView.draft.test.tsx | 2 -
.../__tests__/ChatView.hash-mention.test.tsx | 2 -
.../__tests__/ChatView.mobile-render.test.tsx | 2 -
.../components/__tests__/ChatView.rooms.test.tsx | 2 -
.../__tests__/ChatView.scroll-to-top.test.tsx | 2 -
.../components/__tests__/ChatView.test-harness.tsx | 2 -
packages/dashboard/app/hooks/useChat.ts | 39 ++++++++---------
packages/i18n/locales/en/app.json | 1 -
packages/i18n/locales/es/app.json | 1 -
packages/i18n/locales/zh-CN/app.json | 1 -
packages/i18n/locales/zh-TW/app.json | 1 -
packages/i18n/locales/ko/app.json | 1 -
packages/i18n/locales/fr/app.json | 1 -
19 files changed, 47 insertions(+), 118 deletions(-)
Fusion-Task-Id: FN-7651
Fusion-Task-Lineage: 5a31825c-8e6e-441f-800d-6053f5f844ba
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-07 23:15:53 -07:00
gsxdsm
6777eea5d2
FN-7631: add content search to Chat sidebar with title-only toggle
...
Chat sidebar search now matches message content by default, not just the conversation title/agent, with an opt-out toggle to restore title-only filtering.
- Add ChatStore.searchSessionsByMessageContent (parameterized LIKE ... ESCAPE) for server-side content search across sessions
- GET /chat/sessions route (register-chat-routes.ts, legacy.ts) gains q/titleOnly query params, debounced server-side content lookup merged with local title/agent matches
- useChat hook exposes searchInTitleOnly state and wires debounced content search into session list results
- ChatView renders a "Search in title only" toggle beside the search box (desktop + mobile) and shows a "Matched: ..." preview snippet on content-matched rows
- Task-planner sessions remain excluded from content matches via the same common-feed visibility guard used for the normal session list
- Add unit/integration tests: chat-store content-search, chat-routes API test, ChatView content-search test
- Update docs/dashboard-guide.md to document the new content search behavior and toggle
- Add changeset fn-7631-chat-content-search.md (@runfusion/fusion minor)
Files changed:
.changeset/fn-7631-chat-content-search.md | 7 +
docs/dashboard-guide.md | 2 +
.../__tests__/chat-store.content-search.test.ts | 157 +++++++++++++++++++++
packages/core/src/chat-store.ts | 64 +++++++++
packages/core/src/chat-types.ts | 8 ++
packages/dashboard/app/api/legacy.ts | 23 ++-
packages/dashboard/app/components/ChatView.css | 30 ++++
packages/dashboard/app/components/ChatView.tsx | 26 ++++
.../__tests__/ChatView.autosize.test.tsx | 2 +
.../__tests__/ChatView.content-search.test.tsx | 114 +++++++++++++++
.../components/__tests__/ChatView.draft.test.tsx | 2 +
.../__tests__/ChatView.hash-mention.test.tsx | 2 +
.../__tests__/ChatView.mobile-render.test.tsx | 2 +
.../components/__tests__/ChatView.rooms.test.tsx | 2 +
.../__tests__/ChatView.scroll-to-top.test.tsx | 2 +
.../components/__tests__/ChatView.test-harness.tsx | 2 +
packages/dashboard/app/hooks/useChat.ts | 105 ++++++++++++--
.../dashboard/src/__tests__/chat-routes.test.ts | 78 ++++++++++
.../dashboard/src/routes/register-chat-routes.ts | 39 ++++-
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 +
25 files changed, 667 insertions(+), 12 deletions(-)
Fusion-Task-Id: FN-7631
Fusion-Task-Lineage: bc68b489-26a7-453e-901b-bda816af364e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-07 22:06:17 -07:00
gsxdsm
42009cfdb9
FN-7628: allow editing sent chat messages and rewinding agent responses
...
Adds the ability to edit a previously sent message in an agent chat, which rewinds the session/task room and regenerates the response from the edited message.
- Add chat-store support for locating/replacing a message and truncating subsequent history for a rewind
- Add a chat-manager rewind-session flow and a new register-chat-routes endpoint to rewind a room to an edited message
- Add legacy API route wiring and useChat hook support for issuing an edit request
- Add ChatView/StandardChatSurface/TaskPlannerChatTab UI affordances (edit control, styling) to trigger message edits
- Add a changeset documenting the new chat message-edit capability
- Add unit/integration tests covering chat-store rewind logic, chat-manager rewind-session behavior, chat routes, useChat, and ChatView edit UI
Files changed:
.changeset/fn-7628-chat-message-edit.md | 7 +
docs/dashboard-guide.md | 4 +
packages/core/src/__tests__/chat-store.test.ts | 171 ++++++++++++++
packages/core/src/chat-store.ts | 95 ++++++++
packages/dashboard/app/api/legacy.ts | 22 ++
packages/dashboard/app/components/ChatView.css | 78 ++++++
packages/dashboard/app/components/ChatView.tsx | 14 ++
.../app/components/StandardChatSurface.tsx | 87 ++++++-
.../app/components/TaskPlannerChatTab.tsx | 8 +
.../__tests__/ChatView.autosize.test.tsx | 1 +
.../__tests__/ChatView.default-model-icon.test.tsx | 1 +
.../components/__tests__/ChatView.draft.test.tsx | 1 +
.../__tests__/ChatView.hash-mention.test.tsx | 1 +
.../__tests__/ChatView.message-edit.test.tsx | 262 +++++++++++++++++++++
.../__tests__/ChatView.mobile-render.test.tsx | 1 +
.../components/__tests__/ChatView.rooms.test.tsx | 1 +
.../__tests__/ChatView.scroll-to-top.test.tsx | 1 +
.../components/__tests__/ChatView.test-harness.tsx | 1 +
.../dashboard/app/hooks/__tests__/useChat.test.ts | 98 ++++++++
packages/dashboard/app/hooks/useChat.ts | 60 +++++
.../__tests__/chat-manager-rewind-session.test.ts | 185 +++++++++++++++
.../dashboard/src/__tests__/chat-manager.test.ts | 12 +
.../dashboard/src/__tests__/chat-routes.test.ts | 124 ++++++++++
packages/dashboard/src/chat.ts | 147 +++++++++++-
.../dashboard/src/routes/register-chat-routes.ts | 52 ++++
25 files changed, 1429 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-7628
Fusion-Task-Lineage: 36d98989-1b75-428c-baf1-b2c7e8e78013
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-07 22:06:15 -07:00
gsxdsm
635fca2409
FN-7541: remove chat markdown/plain-text toggle eye icon
...
Remove the chat header markdown/plain-text render toggle so chat messages always render as Markdown.
- Delete the chat-thread-header-render-toggle button (desktop + mobile) and its eye icon from ChatView.tsx
- Remove the associated showAllAsPlain state and related CSS rules from ChatView.css
- Drop the chat.showRenderedMarkdown/chat.showPlainText i18n keys from all locale files and resources.d.ts
- Update ChatView core/core-interactions/mobile tests to match the removed toggle
- Add a changeset documenting the breaking removal
Files changed:
.changeset/FN-7541-remove-chat-eye-icon.md | 7 +++
packages/dashboard/app/components/ChatView.css | 60 +---------------------
packages/dashboard/app/components/ChatView.tsx | 52 +++++--------------
.../__tests__/ChatView.core-interactions.test.tsx | 9 ++--
.../components/__tests__/ChatView.core.test.tsx | 35 ++++---------
.../components/__tests__/ChatView.mobile.test.tsx | 29 ++++-------
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 -
packages/i18n/src/resources.d.ts | 2 -
13 files changed, 46 insertions(+), 160 deletions(-)
Fusion-Task-Id: FN-7541
Fusion-Task-Lineage: 8eac79af-80b0-4ae0-ab86-c3599dd3612c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 21:28:17 -07:00
gsxdsm
a2d6349bb8
FN-7504: keep mobile chat composer above keyboard chrome
...
Keeps the mobile Chat composer visible when iOS keyboard accessory chrome is open.
- Add ChatView-local keyboard accessory clearance for iOS keyboard-active composer padding.
- Reset the clearance when keyboard tracking is suppressed or torn down, without adding persistent thread transforms.
- Cover empty, streaming, room, and Android mobile composer behavior with regression tests.
- Add a patch changeset for the published Fusion package.
Files changed:
.../fn-7504-mobile-chat-composer-keyboard.md | 7 +
packages/dashboard/app/components/ChatView.css | 4 +
packages/dashboard/app/components/ChatView.tsx | 10 ++
.../components/__tests__/ChatView.mobile.test.tsx | 191 +++++++++++++++++++++
4 files changed, 212 insertions(+)
Fusion-Task-Id: FN-7504
Fusion-Task-Lineage: 4e7ed36e-e7d5-4cd1-934b-3b0f19ed6615
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 10:42:21 -07:00
gsxdsm
d9ef51492d
FN-7462: show mobile chat conversation titles
...
Mobile direct-chat dropdowns now identify sessions by conversation title instead of model-name text.
- Render the mobile session trigger with the conversation title or Untitled while preserving the provider logo.
- Remove mobile trigger model-tag styling and assert the model badge stays out of the compact header.
- Document the mobile Chat dropdown behavior and add a patch changeset for the published CLI package.
Files changed:
.changeset/fn-7462-mobile-chat-dropdown-title.md | 7 ++++
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/ChatView.css | 8 -----
packages/dashboard/app/components/ChatView.tsx | 8 +++--
.../__tests__/ChatView.core-contracts.test.tsx | 25 +++++++++++---
.../components/__tests__/ChatView.mobile.test.tsx | 39 +++++++++++++++++++++-
6 files changed, 72 insertions(+), 17 deletions(-)
Fusion-Task-Id: FN-7462
Fusion-Task-Lineage: 6a6e2ac3-ecca-4076-81c5-b4e4a65eb286
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 07:47:03 -07:00
gsxdsm
1430a42dd8
FN-7455: fix mobile direct chat header alignment
...
Keep the mobile direct-chat header on a single left-aligned row without losing accessible context.
- Hide the direct-chat ViewHeader title shell from layout while preserving the accessible Chat heading.
- Keep the back button first and the active session switcher beside it on a non-wrapping mobile row.
- Extend mobile chat coverage for long duplicate session titles, Bot fallback labels, and the CSS layout contract.
- Document the updated mobile Chat header behavior and add a patch changeset.
Files changed:
.changeset/fn-7455-mobile-chat-header-layout.md | 7 ++
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/ChatView.css | 17 +++--
packages/dashboard/app/components/ChatView.tsx | 4 +-
.../components/__tests__/ChatView.mobile.test.tsx | 80 ++++++++++++++++++++--
5 files changed, 98 insertions(+), 12 deletions(-)
Fusion-Task-Id: FN-7455
Fusion-Task-Lineage: fe14b542-ff6a-437b-ad89-8011c2b3c299
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 18:11:49 -07:00
gsxdsm
1d6011c3a6
FN-7450: collapse mobile chat header rows
...
Collapse the mobile direct chat header into the shared top row.
- Move the mobile direct-thread back button and session switcher into ViewHeader actions.
- Hide the redundant mobile thread header while preserving desktop thread identity and context details.
- Update mobile chat styling, docs, changeset, and header contract tests for the single-row layout.
Files changed:
.changeset/fn-7450-mobile-chat-header.md | 7 +
docs/dashboard-guide.md | 3 +-
packages/dashboard/app/components/ChatView.css | 53 +++++-
packages/dashboard/app/components/ChatView.tsx | 197 +++++++++++----------
.../__tests__/ChatView.core-contracts.test.tsx | 48 ++---
.../components/__tests__/ChatView.mobile.test.tsx | 76 ++++++--
6 files changed, 256 insertions(+), 128 deletions(-)
Fusion-Task-Id: FN-7450
Fusion-Task-Lineage: c266a9b8-7fb1-410e-9c35-adad4c6a2d47
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 14:09:35 -07:00
gsxdsm
72adb5231a
FN-7441: add sidebar rename controls for chat conversations
...
Add an explicit sidebar rename affordance for direct Chat conversations while preserving existing rename paths.
- Add edit buttons beside delete controls on direct chat session rows and wire them to the existing rename dialog.
- Keep sidebar action spacing and accessibility labels stable across desktop and mobile layouts.
- Cover sidebar, context-menu, and mobile switcher rename behavior with ChatView tests.
- Document the sidebar rename entry point and add the published package changeset.
Files changed:
.changeset/fn-7441-chat-conversation-rename.md | 7 ++
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/ChatView.css | 51 ++++-----
packages/dashboard/app/components/ChatView.tsx | 54 ++++++---
.../__tests__/ChatView.core-interactions.test.tsx | 122 +++++++++++++++++++++
.../components/__tests__/ChatView.mobile.test.tsx | 72 ++++++++++++
6 files changed, 264 insertions(+), 44 deletions(-)
Fusion-Task-Id: FN-7441
Fusion-Task-Lineage: 39a2c393-dd85-4362-9472-58bb137b906c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 13:23:13 -07:00
gsxdsm
7457f04287
FN-7355: reuse standard chat surface for planner
...
Task planner chat now renders through the shared Chat surface while preserving task-scoped behavior.
- Extract shared standard chat message, streaming, tool-call, and action-button rendering for reuse outside ChatView.
- Update TaskPlannerChatTab to use the shared surface for messages, thinking output, mobile send dedupe, and stop generation.
- Cover planner chat standard-surface rendering and mobile first-tap behavior in tests, docs, and a patch changeset.
Files changed:
.changeset/fn-7355-standard-planner-chat.md | 7 +
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/ChatView.css | 18 +
packages/dashboard/app/components/ChatView.tsx | 795 ++-------------------
.../app/components/StandardChatSurface.tsx | 417 +++++++++++
.../app/components/TaskPlannerChatTab.css | 39 +-
.../app/components/TaskPlannerChatTab.tsx | 246 ++++---
...etailModal.responsive-and-dependencies.test.tsx | 4 +-
.../__tests__/TaskPlannerChatTab.test.tsx | 52 ++
9 files changed, 693 insertions(+), 887 deletions(-)
Fusion-Task-Id: FN-7355
Fusion-Task-Lineage: 608ee0d7-3a1b-4f5f-a295-d3a4e62d759e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 07:33:56 -07:00
gsxdsm
befb49b1e6
FN-7204: make narrow chat messages full width
...
Narrow chat surfaces now let messages span their constrained container width.
- Add a ChatView container query that makes all message variants full-width in narrow hosts such as Quick Chat popups and the right dock.
- Update the mobile bubble cap to full width while preserving tablet assistant widening and desktop caps.
- Cover the responsive CSS contracts in dashboard tests and document the behavior with a patch changeset.
Files changed:
.changeset/fn-7204-full-width-chat-messages.md | 7 +++++++
docs/dashboard-guide.md | 6 +++---
packages/dashboard/app/components/ChatView.css | 12 +++++++++++-
.../__tests__/ChatView.core-contracts.test.tsx | 20 +++++++++++++++++---
.../components/__tests__/ChatView.mobile.test.tsx | 4 ++--
5 files changed, 40 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-7204
Fusion-Task-Lineage: 19da0d46-f0bf-46e7-9f87-900c5184f378
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-28 14:56:52 -07:00
gsxdsm
c468c161c2
FN-7141: add chat context token budget indicator
...
Add a desktop Direct-chat header indicator for estimated tokens used against the active model context window.
- Estimate chat token usage client-side, including streaming text, and format compact counts.
- Render the context-window badge only for non-mobile Direct-chat threads with known model context windows.
- Cover desktop, mobile, floating-narrow, rooms, unknown-context, and streaming surfaces with tests.
- Document the dashboard behavior and add a release changeset.
Files changed:
.changeset/fn-7141-chat-context-window.md | 7 +
docs/dashboard-guide.md | 2 +
packages/dashboard/app/components/ChatView.css | 22 +++
packages/dashboard/app/components/ChatView.tsx | 35 +++-
.../__tests__/ChatView.context-window.test.tsx | 193 +++++++++++++++++++++
.../app/utils/__tests__/estimateChatTokens.test.ts | 34 ++++
packages/dashboard/app/utils/estimateChatTokens.ts | 29 ++++
packages/i18n/locales/en/app.json | 1 +
8 files changed, 322 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-7141
Fusion-Task-Lineage: 3ede9af4-b8d6-4da6-996f-cd9277ef49ac
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-27 17:22:12 -07:00
gsxdsm
5066f90db2
FN-7137: stack queued chat messages
...
Stack queued chat sends above the composer and flush them in order.
- Persist pending chat sends as per-session FIFO arrays with legacy single-message restore fallback.
- Render stacked queued previews above the direct and quick chat composer with per-item dismissal.
- Flush one queued message after each completed or safely verified idle generation, preserving reconnect guards.
- Extend chat hook and composer tests for multi-message queuing, restore, dismissal, and FIFO sends.
- Document the queued stack behavior and add a published package changeset.
Files changed:
.changeset/fn-7137-stack-queued-chat-messages.md | 7 +
docs/dashboard-guide.md | 4 +-
packages/dashboard/app/components/ChatView.css | 15 +-
packages/dashboard/app/components/ChatView.tsx | 38 ++--
.../__tests__/ChatView.autosize.test.tsx | 2 +-
.../__tests__/ChatView.cli-mount.test.tsx | 2 +-
.../__tests__/ChatView.core-interactions.test.tsx | 27 ++-
.../__tests__/ChatView.default-model-icon.test.tsx | 2 +-
.../components/__tests__/ChatView.draft.test.tsx | 2 +-
.../__tests__/ChatView.hash-mention.test.tsx | 2 +-
.../__tests__/ChatView.mobile-render.test.tsx | 2 +-
.../components/__tests__/ChatView.rooms.test.tsx | 2 +-
.../__tests__/ChatView.scroll-to-top.test.tsx | 2 +-
.../__tests__/ChatView.swipe-back.test.tsx | 2 +-
.../components/__tests__/ChatView.test-harness.tsx | 2 +-
.../dashboard/app/hooks/__tests__/useChat.test.ts | 247 +++++++++++++++++----
.../app/hooks/chatPendingMessageStorage.ts | 38 +++-
packages/dashboard/app/hooks/useChat.ts | 125 ++++++++---
18 files changed, 390 insertions(+), 131 deletions(-)
Fusion-Task-Id: FN-7137
Fusion-Task-Lineage: 65dd5ed7-a8db-447b-9a50-ce73ea7b597f
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-27 15:56:42 -07:00
gsxdsm
92436d031b
FN-7120: add mobile New Chat switcher action
...
Adds a mobile direct-chat shortcut for starting a new chat from the session switcher.
- Add a New Chat menuitem to the mobile direct-chat session dropdown using the existing NewChatDialog flow.
- Style the new mobile switcher action with touch-friendly spacing and focus handling.
- Extend mobile ChatView tests and docs, and add a changeset for the published CLI package.
Files changed:
.changeset/fn-7120-mobile-new-chat.md | 7 ++
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/ChatView.css | 31 ++++++
packages/dashboard/app/components/ChatView.tsx | 17 +++
.../components/__tests__/ChatView.mobile.test.tsx | 115 +++++++++++++++++++--
5 files changed, 162 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-7120
Fusion-Task-Lineage: 5d066667-20c1-4015-9b84-a9e558eecd48
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-27 10:45:31 -07:00
gsxdsm
c61217e71a
FN-7121: show queued chat previews above composer
...
Show queued Chat messages above the composer with a clear divider and covered placement behavior.
- Move the queued-message indicator out of the textarea wrapper so it spans above the input row.
- Add divider styling and responsive pending-message alignment for the composer.
- Extend ChatView coverage for placement, dismissal, and divider removal.
- Document the queued-message preview behavior and add a patch changeset.
Files changed:
.changeset/fn-7121-queued-message-above-input.md | 7 ++++
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/ChatView.css | 19 +++++++++--
packages/dashboard/app/components/ChatView.tsx | 35 ++++++++++++--------
.../__tests__/ChatView.core-interactions.test.tsx | 37 +++++++++++++++++++---
5 files changed, 77 insertions(+), 23 deletions(-)
Fusion-Task-Id: FN-7121
Fusion-Task-Lineage: b5cb0577-ca4e-459b-9b9e-5c60efd7bdfd
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-27 10:29:36 -07:00
gsxdsm
29530b5fdb
FN-6967: widen tablet agent chat bubbles
...
Improve tablet Chat readability by widening agent-side response bubbles without expanding user or Quick Chat bubbles.
- Add a ChatView container query that widens assistant, streaming, and failure bubbles on tablet-width containers.
- Cover the targeted bubble classes and CSS width contract in ChatView tests.
- Document the tablet behavior and add a structured patch changeset for the published CLI bundle.
Files changed:
.changeset/fn-6967-tablet-chat-bubble-width.md | 7 +++
docs/dashboard-guide.md | 3 +-
packages/dashboard/app/components/ChatView.css | 12 +++++
.../app/components/__tests__/ChatView.test.tsx | 56 ++++++++++++++++++++++
4 files changed, 77 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-6967
Fusion-Task-Lineage: 74195885-4ec0-4fc9-b628-0b0510129026
2026-06-24 23:32:52 -07:00
gsxdsm
4fd8d444fb
fix(dashboard): polish app chrome and workflow defaults
2026-06-22 18:21:06 -07:00
gsxdsm
45842a3318
fix(dashboard): move header to overview
2026-06-22 16:21:03 -07:00
gsxdsm
ce6c0fb0b0
fix(dashboard): align view headers and toolbars
2026-06-22 16:01:31 -07:00
gsxdsm
a1cac3a6a3
fix(dashboard): replace quick chat with modal chat
2026-06-22 15:23:43 -07:00
gsxdsm
ee9c8ab7d5
fix(dashboard): align view headers and pane spacing
2026-06-22 12:43:32 -07:00
gsxdsm
4850e4309e
fix(dashboard): apply code-review fixes + live UI tweaks
...
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 >
2026-06-22 03:57:10 -07:00
gsxdsm
87e87a8f1a
FN-6693: enforce dashboard CSS token references
...
Extend the dashboard CSS token guard and replace stale custom-property references with defined design tokens.
- Add a dashboard-wide CSS token validity test that scans component/app CSS for undefined custom-property references.
- Include dashboard CSS tests in the dashboard Vitest config and document the guard in testing guidance.
- Remap undefined CSS variables across dashboard components and command-center styles to existing semantic or local tokens.
Files changed:
docs/testing.md | 3 +
.../dashboard-css-token-validity.css.test.ts | 165 +++++++++++++++++++++
.../dashboard/app/components/ActiveAgentsPanel.css | 10 +-
.../dashboard/app/components/AgentLogViewer.css | 2 +-
.../app/components/AgentReflectionsTab.css | 10 +-
packages/dashboard/app/components/AgentsView.css | 6 +-
.../dashboard/app/components/BranchGroupCard.css | 6 +-
packages/dashboard/app/components/ChatView.css | 12 +-
.../app/components/CliBinaryInstallBanner.css | 2 +-
.../dashboard/app/components/CliBinaryPanel.css | 2 +-
.../app/components/ConversationHistory.css | 12 +-
.../dashboard/app/components/DashboardLoader.css | 2 +-
.../dashboard/app/components/DesktopLaunchGate.css | 4 +-
.../dashboard/app/components/DirectoryPicker.css | 2 +-
.../dashboard/app/components/FileMentionPopup.css | 4 +-
.../dashboard/app/components/GitHubImportModal.css | 10 +-
packages/dashboard/app/components/GoalsView.css | 2 +-
.../dashboard/app/components/GroupTaskModal.css | 18 +--
packages/dashboard/app/components/InsightsView.css | 10 +-
packages/dashboard/app/components/Lane.css | 8 +-
.../dashboard/app/components/LanguageSelector.css | 8 +-
packages/dashboard/app/components/MailboxModal.css | 62 ++++----
.../app/components/MergeAdvanceNotice.css | 2 +-
.../dashboard/app/components/MissionManager.css | 10 +-
.../app/components/MobileWorkflowGraphView.css | 2 +-
.../app/components/ModelOnboardingModal.css | 12 +-
.../app/components/OnboardingDisclosure.css | 4 +-
.../dashboard/app/components/PlanningModeModal.css | 2 +-
.../dashboard/app/components/PluginManager.css | 58 ++++----
.../components/PostOnboardingRecommendations.css | 4 +-
.../dashboard/app/components/PullRequestView.css | 32 ++--
packages/dashboard/app/components/QuickChatFAB.css | 4 +-
.../dashboard/app/components/QuickEntryBox.css | 6 +-
.../dashboard/app/components/ReliabilityView.css | 6 +-
packages/dashboard/app/components/ScriptsModal.css | 34 ++---
.../dashboard/app/components/SessionTerminal.css | 28 ++--
.../dashboard/app/components/SettingsModal.css | 6 +-
.../dashboard/app/components/SkillMultiselect.css | 2 +-
packages/dashboard/app/components/TaskCard.css | 24 +--
.../dashboard/app/components/TaskDocumentsTab.css | 8 +-
.../dashboard/app/components/TaskFieldsSection.css | 20 +--
.../dashboard/app/components/TerminalModal.css | 22 +--
.../app/components/WorkflowFieldsPanel.css | 6 +-
.../app/components/WorkflowNodeEditor.css | 30 ++--
.../dashboard/app/components/WorkspaceSelector.css | 2 +-
.../components/command-center/CommandCenter.css | 106 ++++++-------
.../components/command-center/DateRangePicker.css | 18 +--
.../command-center/MissionControlPanel.css | 14 +-
.../app/components/command-center/SdlcFunnel.css | 2 +-
.../command-center/areas/SystemStatsArea.css | 24 +--
.../app/components/command-center/areas/areas.css | 62 ++++----
.../components/command-center/charts/charts.css | 104 ++++++-------
packages/dashboard/vitest.config.ts | 1 +
53 files changed, 592 insertions(+), 423 deletions(-)
Fusion-Task-Id: FN-6693
Fusion-Task-Lineage: e9ccf3e6-fee9-47e0-9474-7b5580adbf31
2026-06-19 04:27:01 -07:00
gsxdsm
def4bd9464
FN-6499: add chat session rename controls
...
Adds regular Chat and Quick Chat rename flows backed by optimistic session title updates.
- Add rename actions to the regular Chat desktop context menu and mobile session switcher.
- Add Quick Chat session-row rename controls and show custom active titles in the panel header.
- Share PATCH title updates through chat hooks with null titles clearing custom names.
- Cover rename success, clearing, and rollback behavior in hook and component tests.
- Document the rename behavior and add a patch changeset for the published CLI bundle.
Files changed:
.changeset/chat-session-rename.md | 5 +
docs/dashboard-guide.md | 2 +
packages/dashboard/app/api/legacy.ts | 2 +-
packages/dashboard/app/components/ChatView.css | 44 ++++++++
packages/dashboard/app/components/ChatView.tsx | 111 +++++++++++++++++--
packages/dashboard/app/components/QuickChatFAB.css | 69 ++++++++++++
packages/dashboard/app/components/QuickChatFAB.tsx | 117 ++++++++++++++++++---
.../app/components/__tests__/ChatView.test.tsx | 108 +++++++++++++++++++
.../app/components/__tests__/QuickChatFAB.test.tsx | 25 +++++
.../dashboard/app/hooks/__tests__/useChat.test.ts | 108 +++++++++++++++++++
.../app/hooks/__tests__/useQuickChat.test.ts | 109 +++++++++++++++++++
packages/dashboard/app/hooks/useChat.ts | 48 +++++++++
packages/dashboard/app/hooks/useQuickChat.ts | 50 +++++++++
13 files changed, 773 insertions(+), 25 deletions(-)
Fusion-Task-Id: FN-6499
Fusion-Task-Lineage: f9f15b02-1590-46f4-b6f5-140a9ade30eb
2026-06-16 22:44:16 -07:00