codeburn/app/electron
iamtoruk b36253d2e2 fix(app): resolve usePolled stale-response race + review nits
Review of T0 (Electron scaffold) approved with one Important finding + cheap
Minors. All fixes scoped to app/.

- usePolled: replace per-call cancel closure with a generation/epoch counter so
  an orphaned in-flight fetch (from refresh() or an interval tick, discarded
  cancel handle) can't resolve after a newer fetch and clobber fresh data. New
  TDD race test (slow deps-A resolves after fast deps-B; keeps B).
- cli: nvm resolution now scans version dirs descending and takes the first
  whose bin actually contains codeburn (was lexicographic max, unverified),
  matching CodeburnCLI.swift. Export nodeManagerDirs + hermetic nvm test.
- index.html: tighten CSP connect-src ws: -> ws://localhost:5173.
- preload: import type { Envelope } from main instead of redeclaring it.
- main.test: table-driven channel->argv assertion over all 9 codeburn:* channels
  plus a keys check and a non-spawning cliStatus case.
2026-07-10 15:40:11 -07:00
..
cli.test.ts fix(app): resolve usePolled stale-response race + review nits 2026-07-10 15:40:11 -07:00
cli.ts fix(app): resolve usePolled stale-response race + review nits 2026-07-10 15:40:11 -07:00
main.test.ts fix(app): resolve usePolled stale-response race + review nits 2026-07-10 15:40:11 -07:00
main.ts feat(app): electron shell, 30s timer, and typed IPC bridge 2026-07-10 15:17:03 -07:00
preload.ts fix(app): resolve usePolled stale-response race + review nits 2026-07-10 15:40:11 -07:00