Commit Graph

3316 Commits

Author SHA1 Message Date
gsxdsm
8809bc9ea5 revert(dashboard): keep MissionManager dual mobile/desktop title spans
The previous commit collapsed both header spans into a single isMobile-
conditional render, but that broke 3 desktop-header tests that
intentionally assert on both spans being present (the CSS handles
visibility). The real fix for the "Found multiple elements" failures
was the localStorage.clear() in beforeEach; the structural change was
unnecessary. Restore the original dual-render markup.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 18:04:08 -07:00
gsxdsm
acfc55b804 fix(dashboard): stop MissionManager rendering mobile+desktop title together
The header rendered both a "Missions" desktop span AND a mobile span
containing the selected mission title simultaneously, relying on CSS to
hide the inactive variant. jsdom doesn't apply media queries, so
testing-library's getByText found the mission title in both the body
cards and the otherwise-hidden mobile header — failing 49 tests with
"Found multiple elements with the text: <title>". Render only the
active variant based on isMobile.

Also clear localStorage in beforeEach so the SWR mission cache from
prior tests doesn't pre-hydrate into the next render and surface its
own fixtures as duplicates.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 18:03:12 -07:00
gsxdsm
f55b051163 test(dashboard): clear localStorage in MailboxModal beforeEach
The skeleton-loading test failed because earlier tests in the file
populated the SWR cache, so MailboxModal hydrated inbox from
localStorage and skipped the loading skeleton. Reset localStorage in
beforeEach so each test starts with a clean cache.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 17:57:10 -07:00
gsxdsm
24c15bc660 test(dashboard): extract .data from SWR cache envelope in cache tests
MissionManager.cache and MailboxModal.cache tests parsed the raw
localStorage entry as the payload, but writeCache wraps values in
{ savedAt, data }. Pull .data out before asserting on length or
nested fields. Fixes 3 failing tests.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 17:54:43 -07:00
gsxdsm
e47c5e4507 test(dashboard): extract .data from SWR cache envelope in hook tests
swrCache.writeCache wraps values in a { savedAt, data } envelope, but
useChatRooms/useEvals/useInsights/useResearch tests still parsed
localStorage entries as bare arrays. Pull the .data field out before
indexing so the cache assertions hit the actual payload. Fixes 6
failing tests across the four hook test files.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 17:53:59 -07:00
gsxdsm
d9f105baf2 fix(dashboard): defend MissionManager.loadMissions against non-array fetch results
When fetchMissions returns a non-array (envelope shape, error path, or
mocked detail object) setMissions(data) leaks the bad shape into render,
where missions.filter() throws "is not a function" and crashes the
entire MissionManager test file. Coerce to [] before storing, matching
the existing defenses on the useState init and cache-hydration paths.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 17:48:23 -07:00
gsxdsm
2a8e6574de test(dashboard): add fetchProjects to settings test ../../api mocks
SettingsModalNodeRouting and settings-mobile both mock ../../api but
omit fetchProjects, which the SettingsModal now calls during mount.
Add a stub returning an empty list. Drops SettingsModalNodeRouting
failures from 14 → 0 and settings-mobile from 9 → 1 (residual failure
is unrelated and tracked separately).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 17:45:36 -07:00
Fusion (runfusion.ai)
d475c355e5 test(FN-5189): clean lint warning during verification
Fusion-Task-Id: FN-5189
Fusion-Task-Lineage: 4caa3f0a-af81-4c60-88e8-de229ed72e08
2026-05-19 17:19:03 -07:00
Fusion (runfusion.ai)
87c266d497 test(FN-5160): complete Step 3 — add mobile layout contracts
Fusion-Task-Id: FN-5160
Fusion-Task-Lineage: 4817bb14-178e-4914-aa60-d0184fba653b
2026-05-19 15:53:11 -07:00
Fusion (runfusion.ai)
16c87c0722 feat(FN-5160): complete Step 2 — add modal body hooks
Fusion-Task-Id: FN-5160
Fusion-Task-Lineage: 4817bb14-178e-4914-aa60-d0184fba653b
2026-05-19 15:53:11 -07:00
Fusion (runfusion.ai)
0f29c0d1bb feat(FN-5160): complete Step 1 — polish SecretsView CSS
Fusion-Task-Id: FN-5160
Fusion-Task-Lineage: 4817bb14-178e-4914-aa60-d0184fba653b
2026-05-19 15:53:10 -07:00
Fusion (runfusion.ai)
587e9b416c feat(FN-5155): stabilize mobile keyboard viewport metrics
Stabilizes mobile keyboard viewport metrics in the `useMobileKeyboard` hook, with tests covering the hook and `ChatView` integration; a minor dashboard command adjustment is included.

Fusion-Task-Id: FN-5155
2026-05-19 13:38:31 -07:00
Fusion (runfusion.ai)
356411ef06 test(FN-5150): complete Step 2 — cover review-tab create PR path
Fusion-Task-Id: FN-5150
Fusion-Task-Lineage: 09bf24f1-5d23-4049-bd5e-7afbea0a59ae
2026-05-19 12:13:46 -07:00
Fusion (runfusion.ai)
7be22cc07e fix(FN-5150): complete Step 1 — mount PrCreateModal tab-agnostically
Fusion-Task-Id: FN-5150
Fusion-Task-Lineage: 09bf24f1-5d23-4049-bd5e-7afbea0a59ae
2026-05-19 12:13:46 -07:00
Fusion (runfusion.ai)
d8309d2920 feat(FN-5152): complete Step 2 — add near-duplicate activity event type
Fusion-Task-Id: FN-5152
Fusion-Task-Lineage: 954570d8-82e1-4519-a739-c52ee790d2db
2026-05-19 11:30:54 -07:00
gsxdsm
71a2ea1954 feat(FN-5162): merge fusion/fn-5162 2026-05-19 11:14:49 -07:00
Fusion (runfusion.ai)
e0b82fda6b test(FN-5151): complete Step 5 — add autosize regression coverage
Fusion-Task-Id: FN-5151
Fusion-Task-Lineage: 17ebfc3f-6b6d-44a6-8243-7e8b8b140057
2026-05-19 10:39:56 -07:00
Fusion (runfusion.ai)
a34914ede6 feat(FN-5151): complete Step 4 — raise composer CSS caps
Fusion-Task-Id: FN-5151
Fusion-Task-Lineage: 17ebfc3f-6b6d-44a6-8243-7e8b8b140057
2026-05-19 10:39:56 -07:00
Fusion (runfusion.ai)
2ee6b6c145 feat(FN-5151): complete Step 3 — align AgentOnboardingModal caps
Fusion-Task-Id: FN-5151
Fusion-Task-Lineage: 17ebfc3f-6b6d-44a6-8243-7e8b8b140057
2026-05-19 10:39:56 -07:00
Fusion (runfusion.ai)
0b7195699b feat(FN-5151): complete Step 2 — align PlanningModeModal caps
Fusion-Task-Id: FN-5151
Fusion-Task-Lineage: 17ebfc3f-6b6d-44a6-8243-7e8b8b140057
2026-05-19 10:39:56 -07:00
Fusion (runfusion.ai)
07ed4ca8e5 feat(FN-5151): complete Step 1 — align MessageComposer cap
Fusion-Task-Id: FN-5151
Fusion-Task-Lineage: 17ebfc3f-6b6d-44a6-8243-7e8b8b140057
2026-05-19 10:39:55 -07:00
Fusion (runfusion.ai)
817cbfb260 test(FN-5154): complete Step 4 — cover TaskCard restricted clamp
Fusion-Task-Id: FN-5154
Fusion-Task-Lineage: 1ca8d162-343b-4d55-bcba-c34efa331ac4
2026-05-19 09:24:51 -07:00
Fusion (runfusion.ai)
78e9227b82 fix(FN-5154): complete Step 2 — clamp done card diff count
Fusion-Task-Id: FN-5154
Fusion-Task-Lineage: 1ca8d162-343b-4d55-bcba-c34efa331ac4
2026-05-19 09:24:50 -07:00
Fusion (runfusion.ai)
20ce7829c7 feat(FN-5141): complete Step 4 — document soft-delete API semantics
Fusion-Task-Id: FN-5141
Fusion-Task-Lineage: 2f90daca-c147-4807-b780-09f8f54580ae
2026-05-19 08:38:25 -07:00
Fusion (runfusion.ai)
5996787cb1 test(FN-5148): extend stale guard coverage to all tracking handlers
Fusion-Task-Id: FN-5148
Fusion-Task-Lineage: af70f85f-ec90-4040-bbf3-9e1bce3a49b9
2026-05-19 08:20:23 -07:00
Fusion (runfusion.ai)
ab5158e680 test(FN-5148): complete Step 4 — add stale github tracking modal coverage
Fusion-Task-Id: FN-5148
Fusion-Task-Lineage: af70f85f-ec90-4040-bbf3-9e1bce3a49b9
2026-05-19 08:20:23 -07:00
Fusion (runfusion.ai)
e474e51d70 test(FN-5148): complete Step 3 — cover detail task id guard
Fusion-Task-Id: FN-5148
Fusion-Task-Lineage: af70f85f-ec90-4040-bbf3-9e1bce3a49b9
2026-05-19 08:20:23 -07:00
Fusion (runfusion.ai)
c4b378880c feat(FN-5148): complete Step 2 — guard stale github tracking updates
Fusion-Task-Id: FN-5148
Fusion-Task-Lineage: af70f85f-ec90-4040-bbf3-9e1bce3a49b9
2026-05-19 08:20:23 -07:00
Fusion (runfusion.ai)
7d94cc367b feat(FN-5148): complete Step 1 — guard updateDetailTask id drift
Fusion-Task-Id: FN-5148
Fusion-Task-Lineage: af70f85f-ec90-4040-bbf3-9e1bce3a49b9
2026-05-19 08:20:23 -07:00
Fusion (runfusion.ai)
b6b1af240a docs(FN-5135): document dashboard soft-delete handling invariant
Fusion-Task-Id: FN-5135
Fusion-Task-Lineage: 182c496e-4e3a-4353-be53-86dd4cc5ba19
2026-05-19 08:13:07 -07:00
Fusion (runfusion.ai)
00518179eb test(FN-5135): cover search-refresh deletedAt edge path
Fusion-Task-Id: FN-5135
Fusion-Task-Lineage: 182c496e-4e3a-4353-be53-86dd4cc5ba19
2026-05-19 08:13:07 -07:00
Fusion (runfusion.ai)
a17179b6b3 fix(FN-5135): suppress soft-deleted tasks across useTasks feeds
Fusion-Task-Id: FN-5135
Fusion-Task-Lineage: 182c496e-4e3a-4353-be53-86dd4cc5ba19
2026-05-19 08:13:07 -07:00
Fusion (runfusion.ai)
ee92b71533 test(FN-5135): lock deletedAt SSE payload contract
Fusion-Task-Id: FN-5135
Fusion-Task-Lineage: 182c496e-4e3a-4353-be53-86dd4cc5ba19
2026-05-19 08:13:06 -07:00
Fusion (runfusion.ai)
95d5c08c23 test(FN-5135): add deletedAt SSE regression coverage
Fusion-Task-Id: FN-5135
Fusion-Task-Lineage: 182c496e-4e3a-4353-be53-86dd4cc5ba19
2026-05-19 08:13:06 -07:00
Fusion (runfusion.ai)
6db8c60bef test(FN-5146): complete Step 4 — update autosize caps and growth regression coverage
Fusion-Task-Id: FN-5146
Fusion-Task-Lineage: 55a9837f-d0e1-475b-9f7f-45262141352e
2026-05-19 07:57:38 -07:00
Fusion (runfusion.ai)
5a1f20f864 feat(FN-5146): complete Step 2 — raise composer height caps
Fusion-Task-Id: FN-5146
Fusion-Task-Lineage: 55a9837f-d0e1-475b-9f7f-45262141352e
2026-05-19 07:57:38 -07:00
Fusion (runfusion.ai)
ad35a1ccfc test(FN-5134): complete Step 2 — cover no-worktree badge suppression
Fusion-Task-Id: FN-5134
Fusion-Task-Lineage: 1d7fd2a5-de42-4977-a4b9-583c04124c5d
2026-05-19 07:36:11 -07:00
Fusion (runfusion.ai)
d646bfb4b2 feat(FN-5134): complete Step 1 — suppress no-worktree in-review badge
Fusion-Task-Id: FN-5134
Fusion-Task-Lineage: 1d7fd2a5-de42-4977-a4b9-583c04124c5d
2026-05-19 07:36:11 -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
b6623c6001 feat(FN-5123): merge fusion/fn-5123 2026-05-19 06:16:06 -07:00
Fusion (runfusion.ai)
4915e80fc8 feat(FN-5091): complete Step 5 — extend backlog health allowlist
Fusion-Task-Id: FN-5091
Fusion-Task-Lineage: f59dc7dd-abc2-4d1d-a755-1fe446314131
2026-05-19 03:21:17 -07:00
Fusion (runfusion.ai)
6dc67204da test(FN-5098): complete Step 6 — update lazy-view inventory docs
Fusion-Task-Id: FN-5098
Fusion-Task-Lineage: 67ff982f-f0fa-453a-9b73-32ddc3ae5b3a
2026-05-19 01:59:22 -07:00
Fusion (runfusion.ai)
da2d3632ab feat(FN-5098): complete Step 5 — add settings link to secrets view
Fusion-Task-Id: FN-5098
Fusion-Task-Lineage: 67ff982f-f0fa-453a-9b73-32ddc3ae5b3a
2026-05-19 01:59:21 -07:00
Fusion (runfusion.ai)
71619bf5e6 feat(FN-5098): complete Step 4 — add secrets mobile more entry
Fusion-Task-Id: FN-5098
Fusion-Task-Lineage: 67ff982f-f0fa-453a-9b73-32ddc3ae5b3a
2026-05-19 01:59:21 -07:00
Fusion (runfusion.ai)
32b44917eb feat(FN-5098): complete Step 3 — add secrets header overflow entry
Fusion-Task-Id: FN-5098
Fusion-Task-Lineage: 67ff982f-f0fa-453a-9b73-32ddc3ae5b3a
2026-05-19 01:59:21 -07:00
Fusion (runfusion.ai)
d9a6ffd2f5 feat(FN-5098): complete Step 2 — lazy register secrets view
Fusion-Task-Id: FN-5098
Fusion-Task-Lineage: 67ff982f-f0fa-453a-9b73-32ddc3ae5b3a
2026-05-19 01:59:21 -07:00
Fusion (runfusion.ai)
033b3e7148 feat(FN-5098): complete Step 1 — add secrets view-state routing
Fusion-Task-Id: FN-5098
Fusion-Task-Lineage: 67ff982f-f0fa-453a-9b73-32ddc3ae5b3a
2026-05-19 01:59:20 -07:00
Fusion (runfusion.ai)
71928aeda3 feat(FN-5103): surface landed-files attribution flags in task changes UI
Fusion-Task-Id: FN-5103
Fusion-Task-Lineage: e4e4d9ba-4884-4feb-b18b-a30e799c3fb1
2026-05-19 01:24:55 -07:00
Fusion (runfusion.ai)
91cb316b37 test(FN-5113): complete Step 3 — align rebind banner assertions
Fusion-Task-Id: FN-5113
Fusion-Task-Lineage: f29c2128-79a3-4958-8039-3765b84757f5
2026-05-19 01:17:46 -07:00
Fusion (runfusion.ai)
034a361d94 fix(FN-5113): complete Step 2 — narrow rebind banner trigger and copy
Fusion-Task-Id: FN-5113
Fusion-Task-Lineage: f29c2128-79a3-4958-8039-3765b84757f5
2026-05-19 01:17:46 -07:00