CodeNomad/dev-docs
Pascal André ac7129d295
fix(startup): keep Git panels from blocking conversation restoration (#747)
## Summary

Restore saved conversations promptly with the Git panel open. Preserve
Solid project-shell identity during metadata and sibling-project
restoration, defer inactive Git readers, and keep foreground message
requests independent of secondary HTTP fan-out.

Publish the visible project's recent worktree conversations from its
first verified page, before historical pagination completes. Promote
project/location and worktree membership dependencies on selection; keep
historical cursors and hidden projects within the secondary budget.
Partial rows join their request's reconciliation baseline so removed
worktrees cannot leave ghost conversations.

Run status/diff process creation in the existing Windows Git worker.
Bound untracked-file stat submission and prioritize worktree authority
commands over pending display work. Preserve UTF-8 content, final
newlines and large blobs.

## Lifecycle and refresh semantics

- Cancel queued and dispatched optional SDK reads with a dispatch-time
deadline.
- Fence passive and explicit refresh/mutation continuations on worktree
changes, deactivation and disposal.
- Preserve commit drafts and the last successful status snapshot on
failures.
- Keep native ownership validation and 200-message windows; no new
persistent transcript cache.

## Gatekeeper

Independent review round 1 reported three findings: dispatched SDK
cancellation, late explicit/mutation continuations, and worker admission
behind untracked-file batches. All corrected.

Round 2: **ZERO FINDINGS**, with nine independent isolated source-level
checks.

The visible-list extension received additional independent reviews. One
finding about partial rows being mistaken for concurrent creations
during worktree removal was fixed and regression-tested. Final review:
**ZERO FINDINGS**, including isolated checks for membership removal,
concurrent rename/local creation and deletion without resurrection.

## Validation

- 23 browser scenarios: restored selection and 200 messages with Git
open on Electron/Tauri adapters, stable shell/draft lifetime,
cancellation/deadlines and late commit handling. Both desktop adapters
additionally verify partial cross-worktree publication under a blocked
secondary budget, exclusion of foreign roots, selection promotion, and
final removal of a no-longer-owned partial row.
- Server Git status/content and common-directory/worker admission
regressions.
- 10 SDK/background/prioritized-read queue tests; 9 startup/reconnect
store tests.
- UI typecheck and production build; server TypeScript compilation.
- Installed native verification with the usual profile: the final
first-switch capture makes PR726 available in **2.04s** after renderer
navigation, then completes its first **200-message read 6.08s after
selection**, with no HTTP or renderer errors. Normal native restoration
of PR726 earlier measured **5.064s**, with variability up to **11.233s**
during concurrent activity. These are renderer timings, not
executable-launch timings.
- Restored the complete published e68ac524 server after a parallel
installation had left older inventory modules. Installed server
JavaScript artifacts match the compiled source; the shared daemon and
user profile were preserved.

## CI qualification

Compatibility migration CI fails on the unchanged historical credential
assertion at `scripts/test-opencode-history-migration.mjs:191`: the
latest upstream response adds `method: "key"`. Runtime-contract
qualification passes at minimum/latest; this failure is separate from
the changed session/Git behavior and is not represented as a green
check.

Existing large source files touched:
`packages/ui/src/components/instance/instance-shell2.tsx` (~1308 lines),
`packages/ui/src/lib/api-client.ts` (~597 lines), `useGitChanges.ts`
(~519 lines), `packages/ui/src/stores/instances.ts` (~2197 lines), and
`packages/ui/src/stores/session-api.ts` (~1898 lines).
2026-09-22 15:31:18 +02:00
..
ui-harmonization-demo V2(ui): progressively harmonize the CodeNomad interface (#667) 2026-09-15 14:17:30 +01:00
architecture.md feat(browser): add autonomous native previews (#666) 2026-09-18 17:46:14 +02:00
BROWSER_AUTOMATION.md fix(automation): remove the active-conversation targeting requirement (#746) 2026-09-22 10:15:37 +02:00
CACHE_REFRESH_CONVENTIONS.md fix(startup): keep Git panels from blocking conversation restoration (#747) 2026-09-22 15:31:18 +02:00
DEV_V2_CODE_REDUCTION.md feat(opencode): migrate CodeNomad to native V2 (#647) 2026-09-04 11:36:11 +01:00
DEVELOPER_MODE.md feat(browser): add autonomous native previews (#666) 2026-09-18 17:46:14 +02:00
INDEX.md docs(opencode): define stable runtime setup and update plan 2026-09-20 14:31:45 +02:00
MVP-PRINCIPLES.md feat(opencode): migrate CodeNomad to native V2 (#647) 2026-09-04 11:36:11 +01:00
OPENCODE_V2_COMPATIBILITY.md feat(chat): add native /btw side questions 2026-09-21 17:23:11 +02:00
OPENCODE_V2_POST_BETA.md merge(dev): qualify history integration before PR 696 merge 2026-09-21 00:30:53 +02:00
PALETTE_REVIEW_2026-09-08.md V2(ui): progressively harmonize the CodeNomad interface (#667) 2026-09-15 14:17:30 +01:00
PALETTE_SOURCES.md V2(ui): progressively harmonize the CodeNomad interface (#667) 2026-09-15 14:17:30 +01:00
SAVED_PALETTE_CALIBRATION_2026-09-11.md V2(ui): progressively harmonize the CodeNomad interface (#667) 2026-09-15 14:17:30 +01:00
SESSION_ENVIRONMENT.md fix(environment): refresh profile variables before each prompt (#714) 2026-09-19 18:18:56 +02:00
SESSION_HISTORY_NAVIGATION.md fix(ui): preserve semantic icons for historical timeline tools (#738) 2026-09-21 23:46:51 +02:00
SESSION_HISTORY_QUERIES.md feat(history): add global timeline and direct message-window navigation 2026-09-20 12:04:30 +02:00
SESSION_HISTORY_STRESS_REVIEW.md feat(history): persist timeline indexes and reconcile changed checkpoints 2026-09-20 23:21:03 +02:00
SESSION_PRUNING_DEPLOYMENT.md feat(pruning): restore opt-in selective deletion through native plugin RPC (#686) 2026-09-10 13:31:40 +02:00
SESSION_PRUNING_RPC.md feat(history): query full sessions and clean technical content through native RPC 2026-09-20 11:02:31 +02:00
SESSION_PRUNING_SAFETY.md feat(pruning): restore opt-in selective deletion through native plugin RPC (#686) 2026-09-10 13:31:40 +02:00
solidjs-llms.txt update blank session cleanup code for now session store logic 2025-11-27 20:18:22 -05:00
SUMMARY.md feat(v2): manage session families across worktrees (#649) 2026-09-17 22:57:37 +02:00
TAB_CHROME_REVIEW_2026-09-10.md V2(ui): progressively harmonize the CodeNomad interface (#667) 2026-09-15 14:17:30 +01:00
technical-implementation.md fix(opencode): support earlier and modern V2 runtime contracts (#695) 2026-09-16 23:48:08 +02:00
TOOL_CALL_IMPLEMENTATION.md Split workspace into electron and ui packages 2025-11-17 12:06:58 +00:00
user-interface.md Puff-up README 2025-11-14 23:26:13 +00:00
WORKTREE_SESSION_PLACEMENT.md fix(worktrees): unblock existing-worktree selection on large repositories (#740) 2026-09-21 17:33:11 +02:00