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
Fusion (runfusion.ai)
3fdd7775a1
fix(FN-5104): stabilize quickchat selectSession refresh and lint
...
Fusion-Task-Id: FN-5104
Fusion-Task-Lineage: e92a26cb-a930-442a-98be-6ace9f376e73
2026-05-19 01:09:30 -07:00
Fusion (runfusion.ai)
0e30f85de7
test(FN-5104): complete Step 5 — add reattach regression coverage
...
Fusion-Task-Id: FN-5104
Fusion-Task-Lineage: e92a26cb-a930-442a-98be-6ace9f376e73
2026-05-19 01:09:30 -07:00