happy-stacks 0.6.12 → 0.6.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/docs/commit-audits/happy/_tools/generate-plans.mjs +453 -0
  2. package/docs/commit-audits/happy/_tools/generate-pr-assignment.mjs +430 -0
  3. package/docs/commit-audits/happy/_tools/init-pr-assignment-working.mjs +107 -0
  4. package/docs/commit-audits/happy/leeroy-wip.commit-analysis.md +1849 -0
  5. package/docs/commit-audits/happy/leeroy-wip.commit-export.fuller-stat.md +747 -1
  6. package/docs/commit-audits/happy/leeroy-wip.commit-index.json +11740 -0
  7. package/docs/commit-audits/happy/leeroy-wip.commit-index.tsv +252 -0
  8. package/docs/commit-audits/happy/leeroy-wip.commit-inventory.md +18 -11
  9. package/docs/commit-audits/happy/leeroy-wip.commit-manual-review.md +1236 -92
  10. package/docs/commit-audits/happy/leeroy-wip.maintainers-overview.draft.md +448 -0
  11. package/docs/commit-audits/happy/leeroy-wip.pr-assignment.draft.tsv +252 -0
  12. package/docs/commit-audits/happy/leeroy-wip.pr-assignment.working.tsv +288 -0
  13. package/docs/commit-audits/happy/leeroy-wip.pr-catalog.draft.md +245 -0
  14. package/docs/commit-audits/happy/leeroy-wip.pr-stack-plan.draft.md +350 -0
  15. package/docs/commit-audits/happy/leeroy-wip.rewrite-deferred-fragments.tsv +65 -0
  16. package/docs/commit-audits/happy/leeroy-wip.rewrite-ledger.tsv +56 -0
  17. package/docs/commit-audits/happy/leeroy-wip.rewrite-process.md +240 -0
  18. package/docs/commit-audits/happy/leeroy-wip.rewrite-status.tsv +39 -0
  19. package/docs/commit-audits/happy/leeroy-wip.split-plan.draft.md +93 -0
  20. package/docs/commit-audits/happy/leeroy-wip.topic-buckets.md +76 -0
  21. package/docs/commit-audits/happy/pr-desc.extraction-ledger.tsv +279 -0
  22. package/docs/commit-audits/happy/pr-desc.original.md +0 -0
  23. package/docs/commit-audits/happy/pr-desc.post-audit-extraction-ledger.tsv +54 -0
  24. package/docs/commit-audits/happy/pr-desc.working-document.md +536 -0
  25. package/docs/happy-development.md +18 -1
  26. package/docs/isolated-linux-vm.md +23 -1
  27. package/docs/stacks.md +21 -1
  28. package/package.json +1 -1
  29. package/scripts/auth.mjs +46 -8
  30. package/scripts/daemon.mjs +44 -21
  31. package/scripts/doctor.mjs +2 -2
  32. package/scripts/doctor_cmd.test.mjs +67 -0
  33. package/scripts/happy.mjs +18 -5
  34. package/scripts/provision/linux-ubuntu-review-pr.sh +5 -1
  35. package/scripts/provision/macos-lima-happy-vm.sh +34 -2
  36. package/scripts/review.mjs +347 -124
  37. package/scripts/review_pr.mjs +78 -2
  38. package/scripts/run.mjs +2 -1
  39. package/scripts/stack.mjs +265 -19
  40. package/scripts/stack_daemon_cmd.test.mjs +196 -0
  41. package/scripts/stack_happy_cmd.test.mjs +103 -0
  42. package/scripts/utils/cli/prereqs.mjs +12 -1
  43. package/scripts/utils/dev/daemon.mjs +3 -1
  44. package/scripts/utils/proc/pm.mjs +1 -1
  45. package/scripts/utils/review/detached_worktree.mjs +61 -0
  46. package/scripts/utils/review/detached_worktree.test.mjs +62 -0
  47. package/scripts/utils/review/findings.mjs +133 -20
  48. package/scripts/utils/review/findings.test.mjs +88 -1
  49. package/scripts/utils/review/runners/augment.mjs +71 -0
  50. package/scripts/utils/review/runners/augment.test.mjs +42 -0
  51. package/scripts/utils/review/runners/coderabbit.mjs +54 -10
  52. package/scripts/utils/review/runners/coderabbit.test.mjs +15 -48
  53. package/scripts/utils/review/sliced_runner.mjs +39 -0
  54. package/scripts/utils/review/sliced_runner.test.mjs +47 -0
  55. package/scripts/utils/review/tool_home_seed.mjs +99 -0
  56. package/scripts/utils/review/tool_home_seed.test.mjs +113 -0
  57. package/scripts/utils/stack/cli_identities.mjs +29 -0
  58. package/scripts/utils/stack/startup.mjs +45 -7
  59. package/scripts/worktrees.mjs +8 -5
@@ -0,0 +1,288 @@
1
+ # WORKING FILE - safe to edit by hand.
2
+ # Seeded from: leeroy-wip.pr-assignment.draft.tsv
3
+ # Regenerate seed (overwrites): node docs/commit-audits/happy/_tools/init-pr-assignment-working.mjs --force
4
+ # Guidance:
5
+ # - Set finalPr/finalTitle per commit after reading its full manual-review section.
6
+ # - Set manualReviewedForPrPlan=yes only after you have read the entire section for that commit in leeroy-wip.commit-manual-review.md.
7
+ # - Keep translationHandling=in-feature-pr unless you explicitly decide otherwise for a specific commit.
8
+
9
+ n shaShort topicBucket scopeTag subject verdict filesChanged proposedPr proposedPrTitle confidence reason notes finalPr finalTitle needsSplit translationHandling manualReviewedForPrPlan plannedAt plannerNotes
10
+ 001 58528a7c37d3 crypto crypto chore(crypto): patch react-native-libsodium keep 1 PR01 Foundations / DevX high bucket=crypto PR01 Foundations / DevX in-feature-pr yes 2026-01-25T12:16:53+0100 Foundations/DevX (build/patch infra); consider squashing with other patch-package plumbing.
11
+ 002 552b8da0f621 deps deps test(deps): add @types/react-test-renderer keep 2 PR01 Foundations / DevX high bucket=deps PR01 Foundations / DevX in-feature-pr yes 2026-01-25T12:16:53+0100 Foundations/DevX (test types dep).
12
+ 003 017b15c07ad7 config config chore(config): harden app variant defaults keep 1 PR01 Foundations / DevX high bucket=config PR01 Foundations / DevX in-feature-pr yes 2026-01-25T12:16:53+0100 Foundations/DevX (app config reliability).
13
+ 004 4890a471df31 auth auth fix(auth): harden tokenStorage web persistence keep 2 PR04 Auth + storage scoping high auth bucket PR04 Auth + storage scoping in-feature-pr yes 2026-01-25T12:16:53+0100 Auth + storage scoping (web persistence hardening + scoped native keys).
14
+ 005 4adc41d92af0 sync sync feat(sync): add permission mode types and mapping keep 4 PR10 Permission framework (Claude/cloud baseline) medium sync permission mode PR10 Permission framework (Claude/cloud baseline) in-feature-pr yes 2026-01-25T12:16:53+0100 Permission framework baseline (types/mapping/normalization); model-mode allowlist may later be separated if needed.
15
+ 006 a5fbc3e8ba00 persistence persistence feat(persistence): scope storage and validate draft modes keep 4 PR05 Persistence / drafts high persistence bucket PR04 Auth + storage scoping yes in-feature-pr yes 2026-01-25T12:16:53+0100 Primarily storage scoping + persistence hardening; during rewrite likely split into (a) storage scoping core and (b) model-mode persistence helpers.
16
+ 007 18e77c46f38a session session fix(session): clamp configurable model modes keep 1 PR19 Resume end-to-end high resume/session bucket PR28 Model modes (per-session selection + persistence) in-feature-pr yes 2026-01-25T12:16:53+0100 Model modes final feature (UI clamping correctness).
17
+ 008 f7bb8a28fff7 tools tools fix(tools): harden ACP tool parsing and titles keep 4 PR39 Tool UX: normalization + specialized views + tracing medium tools keyword/bucket PR39 Tool UX: normalization + specialized views + tracing in-feature-pr yes 2026-01-25T12:16:53+0100 Tool UX: ACP parsing hardening + safe tool_result normalization; includes required i18n keys.
18
+ 009 292424245277 sync sync refactor(sync): centralize outgoing message metadata keep 3 PR27 Sync robustness (transport/error parsing + backoff semantics) low sync bucket fallback PR27 Sync robustness (transport/error parsing + backoff semantics) in-feature-pr yes 2026-01-25T12:16:53+0100 Sync robustness; outgoing message metadata builder is a foundational correctness improvement.
19
+ 010 39cc25154cdd storage storage feat(storage): persist session model modes keep 2 PR24 Storage S3 validation high storage bucket/file PR28 Model modes (per-session selection + persistence) yes in-feature-pr yes 2026-01-25T12:16:53+0100 Mixed: (a) server-config scoping + (b) per-session model-mode persistence + (c) replaceSettings for convergence; split during rewrite.
20
+ 011 c2d3507357dc settings settings fix(settings): make parsing tolerant for profiles keep 3 PR06 Settings: API keys + experiments + settings screens medium settings bucket PR06 Settings: API keys + experiments + settings screens in-feature-pr yes 2026-01-25T12:24:17+0100 Settings core reliability: tolerant parsing + legacy profile normalization + settings sync convergence (relies on split of 010 for replaceSettings).
21
+ 012 207ef1b2f572 dev dev fix(dev): gate CLI detection logging keep 3 PR01 Foundations / DevX high bucket=dev PR01 Foundations / DevX in-feature-pr yes 2026-01-25T12:24:17+0100 Dev-only debug-log gating; optionally squash into the feature that introduces the logs (capabilities/voice) during rewrite.
22
+ 013 58a892d413d1 command-palette command-palette fix(command-palette): include navigate dependency keep 1 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=command-palette PR02 UI modal/overlay/popover + Expo web modal behavior in-feature-pr yes 2026-01-25T12:26:06+0100 UI primitives: command-palette stale-closure fix (memo deps).
23
+ 014 41479b35415f env env feat(env): add env var template parsing keep 3 PR07 Env var templates + preview/resolution end-to-end high env bucket PR07 Env var templates + preview/resolution end-to-end in-feature-pr yes 2026-01-25T12:26:06+0100 Env var templates: parser/formatter + tests (shared primitive).
24
+ 015 695bcd09eb9e env env fix(env): improve remote env resolution and previews keep 4 PR07 Env var templates + preview/resolution end-to-end high env bucket PR07 Env var templates + preview/resolution end-to-end in-feature-pr yes 2026-01-25T12:26:06+0100 Env preview correctness/safety + preview-env integration (fallback avoids secrets); may fold preview-env backend into PR07 for a true end-to-end feature.
25
+ 016 6cdb90a49aad env env feat(env): update env var list, cards, and preview modal keep 6 PR07 Env var templates + preview/resolution end-to-end high env bucket PR07 Env var templates + preview/resolution end-to-end yes in-feature-pr yes 2026-01-25T12:26:06+0100 Env vars UX overhaul (card/list/preview modal) + tests; optional split for reviewability.
26
+ 017 65bae55a0b61 i18n i18n refactor(i18n): separate translation types and content keep 14 PR03 i18n foundation sweep (optional) medium i18n bucket/keyword PR03 i18n foundation sweep (optional) yes move-to-feature-pr yes 2026-01-25T12:26:06+0100 i18n foundation: structural refactor (types from en.ts) + key expansion; split arch vs per-feature keys if feasible, otherwise land early to reduce conflicts.
27
+ 018 2993b5c860ff new-session new-session fix(new-session): restore standard modal flow keep 17 PR26 New session wizard end-to-end high new-session/new/machine bucket PR26 New session wizard end-to-end yes in-feature-pr yes 2026-01-25T12:26:06+0100 New-session wizard/pickers refactor; must split (components extraction, picker wiring, wizard behavior) and reorder prerequisites.
28
+ 019 9e08047d2478 profiles profiles fix(profiles): harden routing, grouping, and editing keep 13 PR08 Profiles feature high profiles/api-keys bucket PR08 Profiles feature yes in-feature-pr yes 2026-01-25T12:26:06+0100 Profiles core helpers (route params/grouping/actions/mutations/utils) + profiles settings UI wiring; consider split core helpers vs UI.
29
+ 020 8d9f56e85e5a ui ui refactor(ui): unify list selectors and modal primitives keep 28 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=ui PR02 UI modal/overlay/popover + Expo web modal behavior yes in-feature-pr yes 2026-01-25T12:26:06+0100 UI primitives mega-commit: modal/list primitives + AgentInput + row actions + unsaved-changes prompt + cleanup; must split into focused commits within PR02 (some cleanup may move to PR26/PR08).
30
+ 021 2ab560bb0535 cli-detection cli-detection feat(cli-detection): add daemon detect-cli RPC support keep 2 PR14 Capabilities end-to-end (protocol + wiring + reliability) high capabilities bucket/keyword PR14 Capabilities end-to-end (protocol + wiring + reliability) in-feature-pr yes 2026-01-25T12:28:26+0100 Capabilities/CLI detection: add detect-cli RPC path + safe fallback/timeout behavior (may be superseded by capabilities protocol later, but keep as the first reliable detection primitive).
31
+ 022 2d4675a5d051 agent-input agent-input fix(agent-input): use compact permission badges keep 1 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=agent-input PR02 UI modal/overlay/popover + Expo web modal behavior in-feature-pr yes 2026-01-25T12:28:26+0100 AgentInput/UI: compact permission badges; fold required i18n badge keys into PR02 and ensure accessibility labels remain meaningful.
32
+ 023 d97924f3ef39 test test chore(test): define __DEV__ for vitest keep 1 PR01 Foundations / DevX high bucket=test PR01 Foundations / DevX in-feature-pr yes 2026-01-25T12:28:26+0100 Test/DevX: define __DEV__ in vitest for deterministic dev-guarded code paths.
33
+ 024 9c19baa833b9 settings settings feat(settings): add api keys and experiment toggles keep 4 PR06 Settings: API keys + experiments + settings screens medium settings bucket PR06 Settings: API keys + experiments + settings screens in-feature-pr yes 2026-01-25T12:28:26+0100 Settings feature: add experiments + saved API keys schema + new-session apiKey route param consumption/persistence (foundation for API keys UI).
34
+ 025 21cc6df79f50 api-keys api-keys feat(api-keys): add saved API keys UI keep 5 PR08 Profiles feature high profiles/api-keys bucket PR06 Settings: API keys + experiments + settings screens yes in-feature-pr yes 2026-01-25T12:28:26+0100 API keys UI + pick flow; split out unrelated SettingsView/machine CLI glyph wiring into PR14 (capabilities/machines) during rewrite.
35
+ 026 ce9cd74d408a machine machine feat(machine): surface detected CLI status keep 9 PR26 New session wizard end-to-end high new-session/new/machine bucket PR14 Capabilities end-to-end (protocol + wiring + reliability) in-feature-pr yes 2026-01-25T12:28:26+0100 Machines/capabilities UX: detected CLI status surfaces + cache/timeout + modal/list UI; fold i18n for these strings into PR14.
36
+ 027 7899bbd8433e profiles profiles feat(profiles): add API key requirements flow keep 11 PR08 Profiles feature high profiles/api-keys bucket PR08 Profiles feature yes in-feature-pr yes 2026-01-25T12:28:26+0100 Profiles requirements: preflight required env vars (preview-env) + resolver modal + badges; split (metadata/schema vs hook vs modal/list wiring) and fold missing i18n.
37
+ 028 0023ba1ea5aa i18n i18n refactor(i18n): update translations and tooling keep 11 PR03 i18n foundation sweep (optional) medium i18n bucket/keyword PR03 i18n foundation sweep (optional) yes move-to-feature-pr yes 2026-01-25T12:28:26+0100 i18n batch: huge locale-key expansion + tooling (compare script + literal scanner). During rewrite, split tooling to PR01 and distribute keys into the owning feature PRs where feasible.
38
+ 029 12e75a3b36fa autocomplete autocomplete fix(autocomplete): remove debug suggestion logs keep 1 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=autocomplete PR02 UI modal/overlay/popover + Expo web modal behavior in-feature-pr yes 2026-01-25T12:28:26+0100 UI polish: remove debug suggestion logs (autocomplete).
39
+ 030 679877c26ea9 settings settings feat(settings): expose per-experiment toggles keep 1 PR06 Settings: API keys + experiments + settings screens medium settings bucket PR06 Settings: API keys + experiments + settings screens in-feature-pr yes 2026-01-25T12:28:26+0100 Settings feature: expose per-experiment toggles (likely squash with 024 in rewritten history).
40
+ 031 4dc9c7f8759c agent-input agent-input feat(agent-input): add configurable action bar layout keep 2 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=agent-input PR02 UI modal/overlay/popover + Expo web modal behavior in-feature-pr yes 2026-01-25T12:37:23+0100 AgentInput UI feature: configurable action bar layout + chip density; keep adjacent to other AgentInput UX refactors (depends on settings keys from PR06).
41
+ 032 e8e42a6087ad modal modal fix(modal): prevent stacked modal touch-blocking on iOS keep 5 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=modal PR02 UI modal/overlay/popover + Expo web modal behavior in-feature-pr yes 2026-01-25T12:37:23+0100 Modal/overlay reliability: iOS stacked-modal touch-blocking fix; keep early in PR02 before other modal/picker flows.
42
+ 033 daa0b4527d7f new-session new-session feat(new-session): add api key selection and wizard extraction keep 4 PR26 New session wizard end-to-end high new-session/new/machine bucket PR26 New session wizard end-to-end in-feature-pr yes 2026-01-25T12:37:23+0100 New-session wizard: extracted NewSessionWizard + API key selection/preflight/route plumbing; keep after profiles requirements + preview-env semantics (PR08/PR07) and settings keys (PR06).
43
+ 034 94814465bf81 sync sync perf(sync): debounce pending settings writes keep 1 PR27 Sync robustness (transport/error parsing + backoff semantics) low sync bucket fallback PR27 Sync robustness (transport/error parsing + backoff semantics) in-feature-pr yes 2026-01-25T12:37:23+0100 Sync robustness/perf: debounce pending settings writes + safe flush-on-background + refreshMachinesThrottled de-dupe.
44
+ 035 7ffd0c3428cb ui ui fix(ui): localize error alerts keep 1 PR03 i18n foundation sweep (optional) medium i18n bucket/keyword PR02 UI modal/overlay/popover + Expo web modal behavior in-feature-pr yes 2026-01-25T12:37:23+0100 UI/i18n hygiene for alerts: localize default error alert title/button/unknown fallback; fold required keys into PR02 (don’t keep in a separate i18n PR).
45
+ 036 97ca69e0a735 i18n i18n refactor(i18n): replace remaining UI literals keep 19 PR03 i18n foundation sweep (optional) medium i18n bucket/keyword PR03 i18n foundation sweep (optional) yes move-to-feature-pr yes 2026-01-25T12:37:23+0100 Mixed i18n sweep + behavior: most changes are translation-key wiring; BUT includes expShowThinkingMessages gating in MessageView (move that behavior into PR06). Split during rewrite.
46
+ 037 5f5b57df5181 ui ui refactor(ui): improve item rendering and action menu timing keep 5 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=ui PR02 UI modal/overlay/popover + Expo web modal behavior in-feature-pr yes 2026-01-25T12:37:23+0100 UI primitives polish: Item subtitle node support + action-menu timing via InteractionManager + selectable count perf knob; keep near other item/menu refactors in PR02.
47
+ 038 7976b877259c experiments experiments feat(experiments): gate Zen, file viewer, and voice auth flow keep 7 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=experiments PR06 Settings: API keys + experiments + settings screens yes in-feature-pr yes 2026-01-25T12:37:23+0100 Experiments feature: gate Zen/file-viewer/voice-auth behind per-experiment toggles; split Zen i18n string replacements into the appropriate feature PR/i18n distribution.
48
+ 039 6ed379f82c34 ui ui refactor(ui): add modal + popover overlay primitives **keep 43 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=ui PR02 UI modal/overlay/popover + Expo web modal behavior yes in-feature-pr yes 2026-01-25T12:37:23+0100 UI overlay foundation: modal stacking + overlay portal + Popover primitives + consumer migrations; must split into ordered commits inside PR02 (test stubs → portal host → modal stack → Popover → migrations).
49
+ 040 f0787de5308e sync sync feat(sync): add secrets + terminal settings primitives **keep 60 PR09 Secrets / vault feature medium secrets keyword/bucket PR09 Secrets / vault feature yes in-feature-pr yes 2026-01-25T12:37:23+0100 Massive mixed commit centered on secrets/vault: SecretString sealing + saved secrets + requirement resolver UI; split out terminal settings primitives to PR18 and sync/backoff + HappyError retry-policy work to PR27; crypto shims may belong in PR01/PR09. Also reconcile legacy profile normalization (011) vs removal noted here during rewrite.
50
+ 041 66ee1eaf88a6 secrets secrets feat(secrets): add secrets management + requirement resolver **keep 29 PR09 Secrets / vault feature medium secrets keyword/bucket PR09 Secrets / vault feature yes in-feature-pr yes 2026-01-25T12:42:28+0100 Secrets/vault UX: replace API keys UI with secrets + SecretRequirementModal + env presence hook; split out features/settings reorder bits to PR06, and fold translations into PR09/PR08/PR26 as appropriate during rewrite.
51
+ 042 bdaf6913141f terminal terminal feat(terminal): add Terminal settings + tmux metadata keep 8 PR18 TMUX/Terminal end-to-end high terminal/tmux/ink bucket PR18 TMUX end-to-end (headless sessions + attach + settings) in-feature-pr yes 2026-01-25T12:42:28+0100 Terminal/tmux end-to-end: Terminal settings screen + tmux detection + metadata/attach info; keep adjacent to later tmux plumbing.
52
+ 043 bc779e4f7909 new-session new-session refactor(new-session): integrate secrets + terminal spawn options **keep 17 PR26 New session wizard end-to-end high new-session/new/machine bucket PR26 New session wizard end-to-end yes in-feature-pr yes 2026-01-25T12:42:28+0100 New-session: integrate secrets requirement resolution + terminal spawn options + popover boundary; split out search/auth/ui refactors into PR27/PR01/PR02 during rewrite.
53
+ 044 cb11d4bdb25a claude docs docs: add AGENTS.md symlink + update CLAUDE.md keep 2 PR19 Resume end-to-end low claude fallback to resume PR01 Foundations / DevX in-feature-pr yes 2026-01-25T12:42:28+0100 Docs-only: AGENTS/CLAUDE guidance and invariants; keep in Foundations/DevX.
54
+ 045 1bc3b9715776 sync sync fix(sync): handle non-JSON 400 responses keep 2 PR27 Sync robustness (transport/error parsing + backoff semantics) medium sync robustness keyword PR27 Sync robustness (transport/error parsing + backoff semantics) in-feature-pr yes 2026-01-25T12:42:28+0100 Sync robustness: guard JSON parsing for non-JSON 400 (GitHub OAuth), with test.
55
+ 046 ea2e4d19d633 deps deps chore(deps): align react-test-renderer with react keep 2 PR01 Foundations / DevX high bucket=deps PR01 Foundations / DevX in-feature-pr yes 2026-01-25T12:42:28+0100 Foundations/DevX: react-test-renderer version alignment (test infra maintenance).
56
+ 047 dd041d21ecfc sync sync fix(sync): guard JSON parsing on disconnect errors keep 4 PR27 Sync robustness (transport/error parsing + backoff semantics) medium sync robustness keyword PR27 Sync robustness (transport/error parsing + backoff semantics) in-feature-pr yes 2026-01-25T12:42:28+0100 Sync robustness: guard JSON parsing on disconnect 404 paths (GitHub/services), with tests; keep adjacent to 045.
57
+ 048 395da4ff3167 zen zen refactor(zen): avoid todo variable shadowing keep 1 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=zen PR06 Settings: API keys + experiments + settings screens in-feature-pr yes 2026-01-25T12:42:28+0100 Zen tiny refactor; keep with Zen/experiments feature PR (PR06) for coherence.
58
+ 049 2e956f32f220 new new fix(new): keep pick screens above iOS modal keep 13 PR26 New session wizard end-to-end high new-session/new/machine bucket PR26 New session wizard end-to-end in-feature-pr yes 2026-01-25T12:42:28+0100 New-session iOS navigation reliability: ensure pick screens/profile-edit present above containedModal; includes regression tests.
59
+ 050 2da2f9349ec5 popover popover fix(popover): allow web fixed positioning types keep 1 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=popover PR02 UI modal/overlay/popover + Expo web modal behavior in-feature-pr yes 2026-01-25T12:42:28+0100 Popover web typings fix ('fixed' positioning); squash into PR02 Popover/web portal hardening.
60
+ 051 43f23f2f082e format format chore(format): replace stray tabs with spaces keep 2 PR01 Foundations / DevX high bucket=format PR01 Foundations / DevX in-feature-pr yes 2026-01-25T12:46:37+0100 Format-only whitespace normalization; squash into adjacent commits that touch the same files to avoid format-noise.
61
+ 052 e1d55fdbd9ee i18n i18n fix(i18n): improve untranslated literal scan parsing keep 1 PR03 i18n foundation sweep (optional) medium i18n bucket/keyword PR01 Foundations / DevX in-feature-pr yes 2026-01-25T12:46:37+0100 Dev tooling correctness: untranslated-literals scanner parsing fixes; keep with tooling (PR01) and not inside feature PRs.
62
+ 053 c210c1115598 sync sync test(sync): restore stubbed fetch between tests keep 1 PR27 Sync robustness (transport/error parsing + backoff semantics) low sync bucket fallback PR27 Sync robustness (transport/error parsing + backoff semantics) in-feature-pr yes 2026-01-25T12:46:37+0100 Test robustness for sync API tests: un-stub globals between tests to avoid leakage/order dependence.
63
+ 054 66c678451335 ui ui fix(ui): apply small review fixes split 8 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=ui PR02 UI modal/overlay/popover + Expo web modal behavior yes in-feature-pr yes 2026-01-25T12:46:37+0100 Mixed small fixes across UI/new/terminal/dropdown/sync; keep but split into topic commits during rewrite (model-mode, picker params, dropdown chevron opacity, etc).
64
+ 055 2472b376775c modal modal test(modal): make backdrop z-index assertion safer keep 1 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=modal PR02 UI modal/overlay/popover + Expo web modal behavior in-feature-pr yes 2026-01-25T12:46:37+0100 Modal test robustness: safer z-index assertion; squash into modal test series.
65
+ 056 02450d179aaf profiles profiles fix(profiles): align experimentsEnabled for built-in profiles keep 1 PR08 Profiles feature high profiles/api-keys bucket PR08 Profiles feature in-feature-pr yes 2026-01-25T12:46:37+0100 Profiles correctness: align experiments/Gemini gating for built-in profiles.
66
+ 057 ff7bec72358f secrets secrets fix(secrets): tighten callback deps and fix indentation keep 1 PR09 Secrets / vault feature medium secrets keyword/bucket PR09 Secrets / vault feature in-feature-pr yes 2026-01-25T12:46:37+0100 Secrets list reliability: tighten callback deps/indentation; small follow-up to secrets UI.
67
+ 058 1bb65f5dd494 new-session new-session fix(new-session): avoid stuck secret requirement modal guard keep 1 PR26 New session wizard end-to-end high new-session/new/machine bucket PR26 New session wizard end-to-end in-feature-pr yes 2026-01-25T12:46:37+0100 New-session reliability: fix stuck “secret requirement modal open” guard ref.
68
+ 059 f7f81497444d modal modal fix(modal): prevent non-dismissible WebAlertModal split 6 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=modal PR02 UI modal/overlay/popover + Expo web modal behavior yes in-feature-pr yes 2026-01-25T12:46:37+0100 Mixed: WebAlertModal default OK button + big Popover hardening + ConnectionStatusControl portal; must split into modal vs popover vs connection commits within PR02 and reorder to satisfy helper deps.
69
+ 060 bb09f91de715 settings settings fix(settings): keep valid secrets when one entry is invalid keep 2 PR06 Settings: API keys + experiments + settings screens medium settings bucket PR09 Secrets / vault feature in-feature-pr yes 2026-01-25T12:46:37+0100 Secrets settings robustness: tolerant parsing keeps valid secrets when one entry invalid; keep with secrets feature PR (PR09).
70
+ 061 765423af52b4 agent-input agent-input fix(agent-input): cycle permission mode from normalized state keep 3 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=agent-input PR10 Permission framework (Claude/cloud baseline) in-feature-pr yes 2026-01-25T12:50:14+0100 Permissions safety: canonical next-mode cycling helper + tests; later reconcile with 064 (reverted cycling) into one final implementation.
71
+ 062 e533db1813a5 popover popover fix(popover): add screens cjs helper and fix fixed positioning types keep 2 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=popover PR02 UI modal/overlay/popover + Expo web modal behavior in-feature-pr yes 2026-01-25T12:50:14+0100 Popover infra: add requireReactNativeScreens() CJS helper and centralize web 'fixed' typing cast; must land before 059 for bisectability.
72
+ 063 2ed3100311c7 secrets secrets fix(secrets): hide values when using secret vault keep 10 PR09 Secrets / vault feature medium secrets keyword/bucket PR09 Secrets / vault feature in-feature-pr yes 2026-01-25T12:50:14+0100 Secrets/vault privacy: enforce UI hiding when using vault; keep with secrets feature PR and fold i18n key into PR09.
73
+ 064 e5848c480522 ui ui fix(ui): harden overlays and permission cycling keep 6 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=ui PR02 UI modal/overlay/popover + Expo web modal behavior yes in-feature-pr yes 2026-01-25T12:50:14+0100 Mixed overlay + permission cycling hardening: keep in PR02 but split; move final permission cycling logic into PR10, and keep NewSessionWizard onPermissionModeChange propagation with PR26; tests stay with overlay primitives.
74
+ 065 69fdcff96a4c sync sync fix(sync): restore session permission mode from last message keep 2 PR10 Permission framework (Claude/cloud baseline) medium sync permission mode PR10 Permission framework (Claude/cloud baseline) in-feature-pr yes 2026-01-25T12:50:14+0100 Permissions persistence: infer session permission mode from last user message + local updatedAt arbitration; safety-critical, keep with PR10.
75
+ 066 9b499c5dccce sync sync fix(sync): persist permission mode timestamp for restart-safe arbitration keep 2 PR10 Permission framework (Claude/cloud baseline) medium sync permission mode PR10 Permission framework (Claude/cloud baseline) in-feature-pr yes 2026-01-25T12:50:14+0100 Permissions persistence: persist permissionModeUpdatedAt map for restart-safe arbitration; keep adjacent to 065.
76
+ 067 def8852509d0 sync sync fix(sync): persist permission mode reliably across devices keep 11 PR10 Permission framework (Claude/cloud baseline) medium sync permission mode PR10 Permission framework (Claude/cloud baseline) in-feature-pr yes 2026-01-25T12:50:14+0100 Permissions cross-device reliability: canonical PERMISSION_MODES + best-effort server time calibration + metadata fallback; keep with PR10.
77
+ 068 b1c8a6fecd01 session session fix(session): archive when kill RPC unavailable keep 4 PR19 Resume end-to-end high resume/session bucket PR29 Sessions & message list UX in-feature-pr yes 2026-01-25T12:50:14+0100 Sessions reliability: archive fallback when kill RPC unavailable; group with sessions/message UX PR.
78
+ 069 c06b6202b5d4 expo-app expo-app Add copy-to-clipboard button to message blocks keep 1 PR02 UI modal/overlay/popover + Expo web modal behavior medium expo bucket PR29 Sessions & message list UX in-feature-pr yes 2026-01-25T12:50:14+0100 MessageView UX: copy-to-clipboard button for message blocks; keep with sessions/message list UX PR.
79
+ 070 9fc7d3d412b9 sessions sessions feat(sessions): group inactive sessions by project keep 16 PR19 Resume end-to-end high resume/session bucket PR29 Sessions & message list UX in-feature-pr yes 2026-01-25T12:50:14+0100 Sessions UX: group inactive sessions by project (setting + view-data builder + tests); keep with sessions/message UX PR and fold i18n keys into it.
80
+ 071 62a8b1b07c3e sessions sessions feat(sessions): add unread badge keep 9 PR19 Resume end-to-end high resume/session bucket PR29 Sessions & message list UX in-feature-pr yes 2026-01-25T12:53:37+0100 Sessions UX: unread badge (persist last-viewed + helper + tests + avatar badge wiring); keep with sessions/message list UX PR.
81
+ 072 82d74454c3c4 typecheck typecheck fix(typecheck): restore permission imports and Popover web styles keep 3 PR01 Foundations / DevX high bucket=typecheck PR10 Permission framework (Claude/cloud baseline) in-feature-pr yes 2026-01-25T12:53:37+0100 Typecheck cleanup for permission-mode work (imports/exports); squash into the owning permission commits in PR10 during rewrite (subject mentions Popover but diff is permission typing).
82
+ 073 4f2b533f99c2 tools tools feat(tools): add approve/reject buttons to ExitPlanMode keep 10 PR12 AskUserQuestion + ExitPlan native handling medium tools keyword/bucket PR12 AskUserQuestion + ExitPlan native handling in-feature-pr yes 2026-01-25T12:53:37+0100 Tool UX: ExitPlanMode approve/reject buttons + i18n; keep in AskUserQuestion/ExitPlan end-to-end PR.
83
+ 074 c86cbd26b040 queue queue feat(queue): add pending message queue UI and send modes keep 12 PR13 MessageQueueV1 + Pending messages end-to-end high queue bucket/keyword PR13 MessageQueueV1 + Pending messages end-to-end yes in-feature-pr yes 2026-01-25T12:53:37+0100 Pending queue feature: message send modes + pending messages modal/indicator + protocol/storage; keep in MessageQueueV1/Pending end-to-end PR (clean up theme/i18n during rewrite).
84
+ 075 42da6dae8fe4 session session feat(session): add session rename support keep 11 PR19 Resume end-to-end high resume/session bucket PR29 Sessions & message list UX in-feature-pr yes 2026-01-25T12:53:37+0100 Sessions UX: session rename via update-metadata + i18n; keep with sessions/message list UX PR.
85
+ 076 057102f67904 resume resume feat(resume): add resume session option for new sessions keep 17 PR19 Resume end-to-end high resume/session bucket PR19 Resume end-to-end in-feature-pr yes 2026-01-25T12:53:37+0100 Resume feature: new-session resume picker + resume payload + capability gating + draft persistence; fold any unrelated Codex-session-id translations into the commit that uses them.
86
+ 077 05532bd65c6b resume resume feat(resume): show resume chip under path in new session keep 3 PR19 Resume end-to-end high resume/session bucket PR19 Resume end-to-end in-feature-pr yes 2026-01-25T12:53:37+0100 Resume UX: show resume chip under path in AgentInput/new-session; keep adjacent to 076.
87
+ 078 cd5771e50881 resume resume feat: resume inactive Claude sessions from UI keep 3 PR19 Resume end-to-end high resume/session bucket PR19 Resume end-to-end yes in-feature-pr yes 2026-01-25T12:53:37+0100 Resume feature: initial UI support for resuming inactive Claude sessions (SessionView) + ops wiring + design doc; squash/reorder with 079 so intermediate commits are typecheck-safe and avoid hardcoded strings.
88
+ 079 456e2ad8e2b8 resume resume refactor(resume): don't require agentSessionId from UI keep 12 PR19 Resume end-to-end high resume/session bucket PR19 Resume end-to-end in-feature-pr yes 2026-01-25T12:53:37+0100 Resume architecture: remove agentSessionId requirement from UI; add agentCapabilities helpers + translations; keep with resume end-to-end PR.
89
+ 080 9b0069e3d30c fork fork feat(fork): enable Codex resume support keep 12 PR19 Resume end-to-end medium fork-tagged commit routed to resume for upstreaming PR19 Resume end-to-end yes in-feature-pr yes 2026-01-25T12:53:37+0100 Resume (Codex): enable Codex as resumable agent + show/copy Codex session id/commands. Treat as upstreamable by removing “fork-only” gating/notes during rewrite and ensuring semantics are correct for upstream.
90
+ 081 4ddaef02210e sync sync fix(sync): omit model meta for queued messages keep 1 PR27 Sync robustness (transport/error parsing + backoff semantics) low sync bucket fallback PR13 MessageQueueV1 + Pending messages end-to-end in-feature-pr yes 2026-01-25T12:56:53+0100 Queue/send-mode correctness: omit irrelevant model meta for queued/outgoing messages; keep adjacent to pending queue feature PR.
91
+ 082 3fbdc10018fe terminal tmux fix: tmux parsing/targeting + review feedback split 15 PR18 TMUX/Terminal end-to-end high terminal/tmux/ink bucket PR18 TMUX end-to-end (headless sessions + attach + settings) yes in-feature-pr yes 2026-01-25T12:56:53+0100 TMUX feature correctness: env parsing + command targeting + tests; commit is mixed (scripts/tests/etc) so split during rewrite to keep tmux fixes isolated.
92
+ 083 7292a29822bb daemon daemon fix(daemon): do not apply CLI active profile to GUI-spawned sessions keep 1 PR16 Daemon reliability (ownership + reattach/restart safety) medium daemon bucket PR16 Daemon reliability (ownership + reattach/restart safety) in-feature-pr yes 2026-01-25T12:56:53+0100 Daemon safety boundary: do not apply CLI active profile to GUI-spawned sessions (prevents env leakage).
93
+ 084 ce94cfa512ac session session feat(session): persist profileId in session metadata via daemon spawn keep 6 PR19 Resume end-to-end high resume/session bucket PR16 Daemon reliability (ownership + reattach/restart safety) in-feature-pr yes 2026-01-25T12:56:53+0100 Daemon spawn metadata: thread profileId through spawn pipeline into session metadata; keep near other spawn/profile daemon changes and ensure log redaction (086) lands together.
94
+ 085 e58e97fd7ff4 pr107 pr107 fix(pr107): harden daemon spawn + align profile schema keep 3 PR16 Daemon reliability (ownership + reattach/restart safety) medium daemon bucket PR16 Daemon reliability (ownership + reattach/restart safety) yes in-feature-pr yes 2026-01-25T12:56:53+0100 Daemon spawn hardening + profile schema alignment + env template expansion; reconcile with 090 (startupBashScript removal) during rewrite to avoid schema oscillation.
95
+ 086 86330e263595 security security fix(security): redact spawn secrets from daemon logs keep 2 PR09 Secrets / vault feature medium secrets keyword/bucket PR16 Daemon reliability (ownership + reattach/restart safety) yes in-feature-pr yes 2026-01-25T12:56:53+0100 Security: redact spawn secrets from daemon logs; split off/undo fs.writeFile await removal if unintended (keep spawn sequencing safe).
96
+ 087 a25acab22b64 socket socket fix(socket): restore offline buffering for sends keep 3 PR17 CLI reliability (waiters + reconnection + backoff semantics) low fallback cli/rpc/app bucket=socket PR17 CLI reliability (waiters + reconnection + backoff semantics) yes in-feature-pr yes 2026-01-25T12:56:53+0100 CLI reliability: restore offline buffering for socket sends + tests; fix canSend/logSendWhileDisconnected inconsistency for bisectability during rewrite.
97
+ 088 a7d23148c311 logging logging fix(logging): gate debug output and redact templates keep 6 PR01 Foundations / DevX high bucket=logging PR17 CLI reliability (waiters + reconnection + backoff semantics) in-feature-pr yes 2026-01-25T12:56:53+0100 CLI logging/privacy: gate debug output, redact templates/defaults, expandEnvVars tests; keep in CLI reliability PR.
98
+ 089 ef418bc4dda3 pr107 pr107 fix(pr107): redact profile secrets in doctor + align tmux tmpDir keep 2 PR09 Secrets / vault feature medium secrets keyword/bucket PR17 CLI reliability (waiters + reconnection + backoff semantics) in-feature-pr yes 2026-01-25T12:56:53+0100 CLI: doctor redaction coverage + preserve TMUX_TMPDIR empty-string semantics; keep with CLI reliability/logging hardening.
99
+ 090 1f90659694be profiles profiles refactor(profiles): remove unwired startup script and local env cache keep 1 PR08 Profiles feature high profiles/api-keys bucket PR16 Daemon reliability (ownership + reattach/restart safety) yes in-feature-pr yes 2026-01-25T12:56:53+0100 Profiles/daemon schema cleanup: remove unwired startupBashScript + local env cache; squash with 085 to present final stable schema (no oscillation).
100
+ 091 7aed8aaee02f profiles profiles refactor(profiles): drop provider config objects keep 2 PR08 Profiles feature high profiles/api-keys bucket PR16 Daemon reliability (ownership + reattach/restart safety) yes in-feature-pr yes 2026-01-25T12:59:52+0100 CLI profile schema alignment: drop provider config objects and migrate to env vars (with tests); keep with daemon/CLI schema-spawn work to present one coherent schema story.
101
+ 092 6b0bfe546d9e runtime runtime feat(runtime): support bun for daemon-spawned subprocesses keep 3 PR01 Foundations / DevX high bucket=runtime PR16 Daemon reliability (ownership + reattach/restart safety) in-feature-pr yes 2026-01-25T12:59:52+0100 Runtime feature for daemon subprocesses: support bun vs node with tests; keep adjacent to daemon spawn refactors.
102
+ 093 4071466545ab rpc rpc refactor(rpc): accept arbitrary env var maps for spawn keep 1 PR17 CLI reliability (waiters + reconnection + backoff semantics) low fallback cli/rpc/app bucket=rpc PR16 Daemon reliability (ownership + reattach/restart safety) in-feature-pr yes 2026-01-25T12:59:52+0100 RPC spawn shape: accept arbitrary env var maps for spawn; keep with daemon spawn schema work.
103
+ 094 809be82b53e7 env env fix(env): implement default assignment semantics keep 2 PR07 Env var templates + preview/resolution end-to-end high env bucket PR17 CLI reliability (waiters + reconnection + backoff semantics) in-feature-pr yes 2026-01-25T12:59:52+0100 CLI env expansion correctness: implement := assignment semantics; keep adjacent to other expandEnvVars/logging hardening commits.
104
+ 095 4c2a671dc3f4 rpc rpc feat(rpc): add preview-env handler keep 2 PR15 preview-env end-to-end high preview-env keyword/file PR15 preview-env end-to-end in-feature-pr yes 2026-01-25T12:59:52+0100 preview-env daemon handler: security-sensitive env preview with policies/heuristics and thorough tests; keep in preview-env end-to-end PR.
105
+ 096 2973f7fe6861 codex codex fix(codex): harden MCP command detection keep 2 PR19 Resume end-to-end low codex/gemini fallback to resume PR21 Codex MCP tool-call result correctness in-feature-pr yes 2026-01-25T12:59:52+0100 Codex MCP safety: harden codex/mcp-server detection and avoid stdout payload leaks; keep with codex tool-call/permission correctness PR.
106
+ 097 c863db3d5bbc offline offline refactor(offline): make offline session stub safer keep 2 PR19 Resume end-to-end high resume/session bucket PR19 Resume end-to-end in-feature-pr yes 2026-01-25T12:59:52+0100 Resume/offline reliability: safer offline session stub (EventEmitter + aligned surface) with test; keep with resume/offline tooling PR.
107
+ 098 0a1a91a631e7 tmux tmux feat(tmux): support per-instance socket path keep 2 PR18 TMUX/Terminal end-to-end high terminal/tmux/ink bucket PR18 TMUX end-to-end (headless sessions + attach + settings) in-feature-pr yes 2026-01-25T12:59:52+0100 TMUX feature: per-instance socket path support + quoting/validation hardening + tests; keep in terminal/tmux end-to-end PR.
108
+ 099 c52227082c2b tmux tmux fix(tmux): correct env, tmpdir, and session selection keep 21 PR18 TMUX/Terminal end-to-end high terminal/tmux/ink bucket PR18 TMUX end-to-end (headless sessions + attach + settings) yes in-feature-pr yes 2026-01-25T12:59:52+0100 Large mixed tmux+daemon spawn reliability: TMUX_TMPDIR/env correctness + deterministic session selection + tests; split into tmux vs daemon vs codex/logging pieces during rewrite; keep core tmux/daemon parts under PR18/PR16 as appropriate.
109
+ 100 7a01a8e42629 claude claude test(claude): align sessionScanner path mapping keep 1 PR20 Claude session reliability (switching + transcript/scanner + local runner) medium claude scanner/transcript keyword PR20 Claude session reliability (switching + transcript/scanner + local runner) in-feature-pr yes 2026-01-25T13:02:08+0100 Claude scanner test reliability: align transcript path mapping and reduce flakiness (waitFor); keep with Claude transcript/session scanning PR.
110
+ 101 1075a768e551 rpc rpc feat(rpc): add detect-cli handler keep 2 PR17 CLI reliability (waiters + reconnection + backoff semantics) low fallback cli/rpc/app bucket=rpc PR14 Capabilities end-to-end (protocol + wiring + reliability) in-feature-pr yes 2026-01-25T13:02:08+0100 detect-cli daemon handler (PATH scan + tests): foundational for capabilities/diagnostics; keep with capabilities end-to-end PR.
111
+ 102 c988f68ca4d0 ui ui feat(ui): surface Codex/Gemini errors in session UI keep 9 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=ui PR30 Agent error surfaces (Codex/Gemini) in-feature-pr yes 2026-01-25T13:40:00+0100 Agent error surfaces: surface Codex/Gemini errors in session UI + add shared CLI formatting helpers/tests; keep separate from modal/overlay primitives PR.
112
+ 103 b2269ee11252 claude claude fix(claude): use hook transcript path across switching keep 18 PR20 Claude session reliability (switching + transcript/scanner + local runner) medium claude scanner/transcript keyword PR20 Claude session reliability (switching + transcript/scanner + local runner) yes in-feature-pr yes 2026-01-25T13:02:08+0100 Claude hook switching/transcript correctness: prefer hook transcript_path, idempotent switch, waitForSessionFound, and tests; large but cohesive, may split into hook-path vs switch-RPC vs tests during rewrite.
113
+ 104 f53cf71d416c persistence persistence refactor(persistence): remove deprecated tmuxConfig keep 1 PR05 Persistence / drafts high persistence bucket PR16 Daemon reliability (ownership + reattach/restart safety) in-feature-pr yes 2026-01-25T13:02:08+0100 CLI schema cleanup: remove deprecated tmuxConfig + env injection; keep with daemon/CLI spawn/schema alignment PR.
114
+ 105 8dae65f6c585 rpc rpc feat(rpc): include tmux in detect-cli keep 2 PR17 CLI reliability (waiters + reconnection + backoff semantics) low fallback cli/rpc/app bucket=rpc PR14 Capabilities end-to-end (protocol + wiring + reliability) in-feature-pr yes 2026-01-25T13:02:08+0100 detect-cli enrichment: include tmux + version parsing + optional login status + tests; keep with capabilities/diagnostics PR and order after 101.
115
+ 106 ad66c6aaa3ae terminal terminal feat(terminal): add tmux metadata + attach tooling keep 23 PR18 TMUX/Terminal end-to-end high terminal/tmux/ink bucket PR18 TMUX end-to-end (headless sessions + attach + settings) yes in-feature-pr yes 2026-01-25T13:02:08+0100 Terminal feature: add metadata + attach tooling + headless tmux launcher + runtime flags and strong tests; large, consider splitting into metadata vs attach command vs runtime flags during rewrite.
116
+ 107 c13d51ee4638 daemon daemon feat(daemon): support tmux spawn + harden runtime keep 8 PR16 Daemon reliability (ownership + reattach/restart safety) medium daemon bucket PR16 Daemon reliability (ownership + reattach/restart safety) in-feature-pr yes 2026-01-25T13:02:08+0100 Daemon: tmux spawn support + runtime/backoff hardening; keep adjacent to terminal/tmux series and ensure terminal options forwarding stays consistent.
117
+ 108 f7db44dea458 cli docs docs: add AGENTS.md symlink keep 1 PR17 CLI reliability (waiters + reconnection + backoff semantics) low fallback cli/rpc/app bucket=cli PR01 Foundations / DevX in-feature-pr yes 2026-01-25T13:02:08+0100 Docs-only: add cli AGENTS.md symlink; keep in Foundations/DevX.
118
+ 109 af5000ea6318 ui ui fix(ui): polish Codex and Gemini error messages keep 4 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=ui PR30 Agent error surfaces (Codex/Gemini) in-feature-pr yes 2026-01-25T13:40:00+0100 Agent error surfaces follow-up: polish Codex/Gemini error message formatting + tests; keep adjacent to 102.
119
+ 110 f68552d03ab9 tmux tmux fix(tmux): print attach instructions in correct order keep 2 PR18 TMUX/Terminal end-to-end high terminal/tmux/ink bucket PR18 TMUX end-to-end (headless sessions + attach + settings) in-feature-pr yes 2026-01-25T13:40:00+0100 TMUX UX: print attach instructions in correct order (inside vs outside tmux) + tests; keep with terminal/tmux end-to-end PR.
120
+ 111 4e4bb65ff3f0 tmux tmux test(tmux): avoid brittle assertions keep 1 PR18 TMUX/Terminal end-to-end high terminal/tmux/ink bucket PR18 TMUX end-to-end (headless sessions + attach + settings) in-feature-pr yes 2026-01-25T13:40:00+0100 TMUX test robustness: avoid brittle assertions for attach instructions; keep adjacent to 110.
121
+ 112 45f4eb5d145c detect-cli detect-cli test(detect-cli): avoid process.env reassignment keep 1 PR14 Capabilities end-to-end (protocol + wiring + reliability) high capabilities bucket/keyword PR14 Capabilities end-to-end (protocol + wiring + reliability) in-feature-pr yes 2026-01-25T13:40:00+0100 detect-cli test hygiene: avoid process.env reassignment; keep with capabilities/detect-cli PR.
122
+ 113 51782fdbfbcd codex codex test(codex): reset transport instances between tests keep 1 PR19 Resume end-to-end low codex/gemini fallback to resume PR21 Codex MCP tool-call result correctness in-feature-pr yes 2026-01-25T13:40:00+0100 Codex MCP client test isolation: reset shared transport instances deterministically; keep with Codex MCP tool-call correctness PR.
123
+ 114 0ad76f4877ae cli cli chore(cli): fix gemini daemon block indentation keep 1 PR17 CLI reliability (waiters + reconnection + backoff semantics) low fallback cli/rpc/app bucket=cli PR17 CLI reliability (waiters + reconnection + backoff semantics) in-feature-pr yes 2026-01-25T13:40:00+0100 CLI code style: whitespace/indentation fix in Gemini daemon start block (no behavior); squash into nearby CLI changes if desired.
124
+ 115 a8093e3e4ddb persistence persistence docs(persistence): update profile schema version comment keep 1 PR05 Persistence / drafts high persistence bucket PR05 Persistence / drafts in-feature-pr yes 2026-01-25T13:40:00+0100 Docs-only: update profile schema version comment in persistence module; keep with persistence PR (or squash into adjacent persistence changes).
125
+ 116 b16c3658b944 gemini gemini fix(gemini): normalize error details for UI keep 1 PR19 Resume end-to-end low codex/gemini fallback to resume PR30 Agent error surfaces (Codex/Gemini) in-feature-pr yes 2026-01-25T13:40:00+0100 Agent error formatting robustness: normalize Gemini errorDetails shape for consistent UI checks; keep with Codex/Gemini error surface PR.
126
+ 117 d9591372655f common common fix(common): handle execFileAsync exit codes keep 1 PR17 CLI reliability (waiters + reconnection + backoff semantics) medium cli reliability bucket=common PR14 Capabilities end-to-end (protocol + wiring + reliability) in-feature-pr yes 2026-01-25T13:40:00+0100 detect-cli robustness: handle execFileAsync non-zero exit codes across node/platform shapes; keep adjacent to detect-cli handler series.
127
+ 118 ab95e8cf920c sync sync fix(sync): avoid hanging invalidateAndAwait on errors keep 3 PR27 Sync robustness (transport/error parsing + backoff semantics) medium sync robustness keyword PR27 Sync robustness (transport/error parsing + backoff semantics) in-feature-pr yes 2026-01-25T13:40:00+0100 Sync reliability: ensure invalidateAndAwait resolves on command errors (no hangs) + add tests; keep in sync robustness PR.
128
+ 119 6f98c95fb5d8 claude claude fix(claude): support -c/-r and avoid session loss on switch keep 13 PR18 TMUX/Terminal end-to-end medium claude remote/local switching PR20 Claude session reliability (switching + transcript/scanner + local runner) in-feature-pr yes 2026-01-25T13:40:00+0100 Claude session continuity: support -c/-r flags, CLAUDE_CONFIG_DIR consistency, and avoid session loss on remote/local switch with strong tests; keep with Claude transcript/session handling PR (after 103).
129
+ 120 9489d70848f3 claude claude test(claude): align sessionScanner path mapping squash 1 PR20 Claude session reliability (switching + transcript/scanner + local runner) medium claude scanner/transcript keyword PR20 Claude session reliability (switching + transcript/scanner + local runner) in-feature-pr yes 2026-01-25T13:40:00+0100 Trivial test cleanup (blank line) with misleading subject; squash into nearby Claude tests during rewrite.
130
+ 121 9c4cb44b7d86 daemon daemon fix(daemon): reattach sessions after daemon restart keep 7 PR16 Daemon reliability (ownership + reattach/restart safety) medium daemon bucket PR16 Daemon reliability (ownership + reattach/restart safety) in-feature-pr yes 2026-01-25T13:17:11+0100 Daemon reliability: session marker registry + restart reattach semantics + atomic daemon state persistence; keep with ownership-gated process safety.
131
+ 122 dbde6d871670 daemon daemon test(daemon): add PID classification + session marker tests keep 3 PR16 Daemon reliability (ownership + reattach/restart safety) medium daemon bucket PR16 Daemon reliability (ownership + reattach/restart safety) in-feature-pr yes 2026-01-25T13:17:11+0100 Daemon reliability tests: PID classification strictness + session marker semantics; keep adjacent to 121.
132
+ 123 7cffdd5ce614 daemon daemon fix(daemon): verify PID via command hash for reattach/stop keep 4 PR16 Daemon reliability (ownership + reattach/restart safety) medium daemon bucket PR16 Daemon reliability (ownership + reattach/restart safety) in-feature-pr yes 2026-01-25T13:17:11+0100 Daemon safety hardening: PID reuse mitigation via process command hashing for reattach/stop; keep adjacent to 121/122.
133
+ 124 8b88dcd73d40 claude claude fix(claude): carry permission mode across remote/local switches keep 5 PR18 TMUX/Terminal end-to-end medium claude remote/local switching PR10 Permission framework (Claude/cloud baseline) in-feature-pr yes 2026-01-25T13:17:11+0100 Permission framework (Claude baseline): carry selected permission mode across remote/local switches by persisting lastPermissionMode and updating Claude args before spawn; safety-critical.
134
+ 125 8f0e10c9428b claude claude fix(claude): publish permission mode in session metadata keep 7 PR19 Resume end-to-end low claude fallback to resume PR10 Permission framework (Claude/cloud baseline) in-feature-pr yes 2026-01-25T13:17:11+0100 Permission framework (metadata publish): publish permissionMode(+updatedAt) into session metadata for Claude so app can seed UI state before first app-originated message; keep adjacent to 124 and app-side consumption.
135
+ 126 ffad20faa406 cli cli fix(cli): publish permission mode for codex/gemini sessions keep 5 PR11 Agent permissions (Codex/Gemini): permission modes + allowlists medium agent-specific permission keyword PR11 Agent permissions (Codex/Gemini): permission modes + allowlists in-feature-pr yes 2026-01-25T13:17:11+0100 Agent permissions (Codex/Gemini): seed/update permissionMode in metadata + CLI arg parsing + canonical permission constants; keep with agent-specific permissions PR (adjacent to 125 for shared metadata shape).
136
+ 127 eb72c6e69434 codex codex fix(codex): disable model override and remove experimental resume keep 1 PR19 Resume end-to-end low codex/gemini fallback to resume PR19 Resume end-to-end in-feature-pr yes 2026-01-25T13:17:11+0100 Codex session lifecycle: remove brittle experimental resume + disable model overrides (restart drops context explicitly); squash into the earlier Codex “model override/experimental resume” intro commits during rewrite.
137
+ 128 d317f6bfa282 typecheck typecheck fix(typecheck): resolve duplicate terminalRuntime and RPC handler types keep 3 PR01 Foundations / DevX high bucket=typecheck PR11 Agent permissions (Codex/Gemini): permission modes + allowlists in-feature-pr yes 2026-01-25T13:17:11+0100 Follow-up compile fix: remove duplicated terminalRuntime keys introduced in Codex/Gemini metadata plumbing + align async stopSession test stub; squash into 126 during rewrite.
138
+ 129 a8682d427794 detect-cli cli fix(detect-cli): relax tmux version probe timeout keep 1 PR14 Capabilities end-to-end (protocol + wiring + reliability) high capabilities bucket/keyword PR14 Capabilities end-to-end (protocol + wiring + reliability) in-feature-pr yes 2026-01-25T13:17:11+0100 detect-cli reliability: relax tmux version probe timeout to reduce false negatives on slow machines; keep with capabilities/detect-cli PR.
139
+ 130 e2824dbc858b queue queue feat(queue): add server-side pending message pull support keep 5 PR13 MessageQueueV1 + Pending messages end-to-end high queue bucket/keyword PR13 MessageQueueV1 + Pending messages end-to-end yes in-feature-pr yes 2026-01-25T13:17:11+0100 Mixed: (a) queue feature: add pending-pop/pull API + agent-side drain semantics; (b) resume: add codexSessionId metadata. Keep PR13 but needsSplit=yes: move codexSessionId metadata to PR19 during rewrite.
140
+ 131 37a2c55a6c2f session session fix(session): prime agent state for readiness keep 2 PR19 Resume end-to-end high resume/session bucket PR19 Resume end-to-end in-feature-pr yes 2026-01-25T13:23:41+0100 Agent lifecycle correctness: prime Codex/Gemini agentStateVersion so UI readiness flips true; keep with resume/session lifecycle PR since resume/attach relies on readiness.
141
+ 132 88494b122194 tools tools fix(tools): support Windows arm64 tool unpacking likely 6 PR12 AskUserQuestion + ExitPlan native handling medium tools keyword/bucket PR12 AskUserQuestion + ExitPlan native handling yes in-feature-pr yes 2026-01-25T13:23:41+0100 Mixed + later reverted by 140: Windows arm64 tools mapping + rg.exe launcher + test-runner env fallbacks. Keep in tools PR as a pair with its revert; likely drop 132+140 in rewrite unless we intentionally reintroduce parts.
142
+ 133 d71587eda2db resume resume feat: resume Claude sessions from UI keep 4 PR19 Resume end-to-end high resume/session bucket PR19 Resume end-to-end in-feature-pr yes 2026-01-25T13:23:41+0100 Resume plumbing (Claude): plumb vendor resume id through daemon spawn with strict allowlist; keep adjacent to resume UI/RPC callers so it lands end-to-end.
143
+ 134 a80868aff50d resume resume feat: resume inactive Claude sessions from UI keep 7 PR19 Resume end-to-end high resume/session bucket PR19 Resume end-to-end yes in-feature-pr yes 2026-01-25T13:23:41+0100 Inactive resume core (Claude): resume-session RPC + persisted session file + --existing-session + initial message injection. Large mixed commit; keep in resume PR but split during rewrite into persistence format + RPC plumbing + Claude attach + types.
144
+ 135 bcaa530b12d7 resume resume feat(resume): add happy resume and persist vendor resume id keep 3 PR19 Resume end-to-end high resume/session bucket PR19 Resume end-to-end in-feature-pr yes 2026-01-25T13:23:41+0100 Resume UX/tooling: add `happy resume` command and persist vendorResumeId into local session file; keep with inactive resume end-to-end PR.
145
+ 136 e085e75c5d36 resume resume feat(resume): allow resume-session without agentSessionId keep 3 PR19 Resume end-to-end high resume/session bucket PR19 Resume end-to-end in-feature-pr yes 2026-01-25T13:23:41+0100 Resume robustness: allow resume-session without agentSessionId and derive effective vendor resume id from persisted local session state; must squash/follow immediately with compile-fix for duplicate import.
146
+ 137 68a6ba4bc244 fork fork feat(fork): enable Codex inactive-session resume via codex-reply keep 6 PR19 Resume end-to-end medium fork-tagged commit routed to resume for upstreaming PR19 Resume end-to-end yes in-feature-pr yes 2026-01-25T13:23:41+0100 Codex inactive resume: attach to existing session + vendor resume id via codex-reply MCP tool. Treat as upstream-targeted per decision: remove “fork-only” framing/gating during rewrite. Big mixed; split into MCP resume seeding + attach plumbing + persistence updates.
147
+ 138 d3aefaa9b598 daemon daemon refactor(daemon): extract reattach and pid safety helpers keep 3 PR16 Daemon reliability (ownership + reattach/restart safety) medium daemon bucket PR16 Daemon reliability (ownership + reattach/restart safety) in-feature-pr yes 2026-01-25T13:23:41+0100 Daemon refactor: extract pidSafety + marker adoption helpers to keep reattach/kill ownership gates strict and testable; keep with daemon reattach series.
148
+ 139 72397b7e8c94 daemon test test(daemon): add opt-in reattach integration tests keep 2 PR16 Daemon reliability (ownership + reattach/restart safety) medium daemon bucket PR16 Daemon reliability (ownership + reattach/restart safety) in-feature-pr yes 2026-01-25T13:23:41+0100 Daemon opt-in real integration tests for reattach/command hashing; keep with daemon reliability PR (gated by env var, safe for CI).
149
+ 140 9c40c54018c2 cli cli Revert \"fix(tools): support Windows arm64 tool unpacking\" keep 6 PR17 CLI reliability (waiters + reconnection + backoff semantics) low fallback cli/rpc/app bucket=cli PR12 AskUserQuestion + ExitPlan native handling in-feature-pr yes 2026-01-25T13:23:41+0100 Revert of 132 (Windows arm64 tools + scripts tests + test env fallback). Keep paired with 132 in tools PR; likely drop both (net no-op) unless reintroducing pieces intentionally.
150
+ 141 ab35b47ff699 resume resume fix(resume): make inactive resume reliable; gate Codex resume keep 17 PR19 Resume end-to-end high resume/session bucket PR19 Resume end-to-end yes in-feature-pr yes 2026-01-25T13:27:40+0100 Inactive resume finalization: remove HAPPY_INITIAL_MESSAGE flow in favor of pending-queue + spawn-only; add experimental Codex resume gating (app+daemon) + resume-server install/status surfaces. Large mixed; keep in resume PR but split during rewrite.
151
+ 142 aa9b11684389 codex codex fix(codex): increase installer output buffer keep 1 PR19 Resume end-to-end low codex/gemini fallback to resume PR19 Resume end-to-end in-feature-pr yes 2026-01-25T13:27:40+0100 Resume-server installer reliability: increase npm install execFile buffer to avoid maxBuffer failures; keep adjacent to 141/144/146.
152
+ 143 c4beebbfa375 ui app feat(ui): add Codex resume experiment toggle keep 10 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=ui PR19 Resume end-to-end in-feature-pr yes 2026-01-25T13:27:40+0100 Resume UX gating: add expCodexResume experiment toggle + translations; keep with inactive resume/Codex resume gating PR.
153
+ 144 0140ae276869 codex codex refactor(codex): install mcp resume server via install-dep keep 5 PR19 Resume end-to-end low codex/gemini fallback to resume PR19 Resume end-to-end in-feature-pr yes 2026-01-25T13:27:40+0100 Resume-server installer refactor: switch to install-dep + mcp-server wrapper binary (codex-mcp-resume) and update app ops/settings accordingly; keep with 141/146.
154
+ 145 2ec41b621b54 codex codex fix(codex): detect resume binary on Windows keep 1 PR19 Resume end-to-end low codex/gemini fallback to resume PR19 Resume end-to-end in-feature-pr yes 2026-01-25T13:27:40+0100 Resume-server Windows fix: detect installed binary with F_OK on win32 (X_OK unreliable); keep adjacent to 144/146.
155
+ 146 e1deb6db8ddb codex codex refactor(codex): add dep-status and drop codex-resume RPCs keep 3 PR19 Resume end-to-end low codex/gemini fallback to resume PR19 Resume end-to-end in-feature-pr yes 2026-01-25T13:27:40+0100 Resume-server API consolidation: add dep-status + install-dep and drop codex-resume-specific RPCs; update machine UI + ops to use generic dep APIs.
156
+ 147 231d7ad9bdd9 ui app fix(ui): clarify Codex resume server label keep 1 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=ui PR19 Resume end-to-end in-feature-pr yes 2026-01-25T13:27:40+0100 Resume-server UX copy: clarify machine screen section label (“Codex resume server”); keep adjacent to 146.
157
+ 148 8bebf04aca92 cli cli refactor(cli): modularize capabilities and env preview keep 18 PR14 Capabilities end-to-end (protocol + wiring + reliability) high capabilities bucket/keyword PR14 Capabilities end-to-end (protocol + wiring + reliability) yes in-feature-pr yes 2026-01-25T13:27:40+0100 Capabilities protocol final feature: add checklist-based capabilities.* RPC (detect/describe/invoke) and migrate detect-cli/dep-status/install-dep; also extracts preview-env handler module. Keep under capabilities PR but split: move preview-env extraction to PR15 during rewrite.
158
+ 149 bcf10af94626 ui test test(ui): update useCLIDetection hook tests for capabilities keep 1 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=ui PR14 Capabilities end-to-end (protocol + wiring + reliability) in-feature-pr yes 2026-01-25T13:27:40+0100 Capabilities UI test alignment: update useCLIDetection hook tests for capabilities snapshot model; keep adjacent to app-side capabilities migration commits.
159
+ 150 a5cac698f15b cli cli feat(cli): harden session queue, switching, and lifecycle keep 24 PR13 MessageQueueV1 + Pending messages end-to-end medium queue files PR13 MessageQueueV1 + Pending messages end-to-end yes in-feature-pr yes 2026-01-25T13:27:40+0100 MessageQueueV1 core (CLI): metadata-backed pending queue w/ inFlight acking via localId, plus discard-on-switch policy + ACP lifecycle edges. Very mixed; keep in queue PR but split into coherent commits during rewrite.
160
+ 151 3fc704424e8d app app feat(app): add pending queue, discard markers, and capabilities keep 44 PR14 Capabilities end-to-end (protocol + wiring + reliability) high capabilities bucket/keyword PR13 MessageQueueV1 + Pending messages end-to-end yes in-feature-pr yes 2026-01-25T13:31:51+0100 Mixed mega-commit spanning MessageQueueV1 (app metadata-backed queue + CAS updater + submit-mode policy + discard markers) and Capabilities protocol migration + NewSession wizard extraction. Keep finalPr=PR13 but split: move capabilities migration + new-session wizard pieces to PR14/PR26 during rewrite; keep queue+submit-mode+discard-markers in PR13.
161
+ 152 49893dd7d16a terminal terminal fix(terminal): harden remote→local switching input keep 4 PR18 TMUX/Terminal end-to-end high terminal/tmux/ink bucket PR31 Terminal switching reliability (remote↔local) in-feature-pr yes 2026-01-25T13:40:30+0100 Terminal switching reliability: deterministic remote→local input handling + stdin drain helper with tests; not tmux-specific, keep in terminal-switching PR.
162
+ 153 0126667539b6 claude claude fix(claude): forward signals to binary child process keep 2 PR19 Resume end-to-end low claude fallback to resume PR31 Terminal switching reliability (remote↔local) in-feature-pr yes 2026-01-25T13:40:30+0100 Terminal mode-switch reliability: forward SIGINT/SIGTERM(/SIGHUP) to Claude binary child to avoid orphaned stdin owners; not tmux-specific, keep with terminal switching PR.
163
+ 154 39c7b8a56b32 app app refactor(app): rename tmux/message-send settings under session keep 11 PR18 TMUX/Terminal end-to-end medium terminal/tmux files PR18 TMUX end-to-end (headless sessions + attach + settings) yes in-feature-pr yes 2026-01-25T13:40:30+0100 Mixed settings rename: tmux keys belong in TMUX PR; message-send key rename belongs with queue/submit-mode work. Keep finalPr=PR18 but needsSplit=yes and move message-send rename to PR13 during rewrite.
164
+ 155 fcec6c311b6b sync sync feat(sync): add cross-device unread markers keep 6 PR27 Sync robustness (transport/error parsing + backoff semantics) low sync bucket fallback PR29 Sessions & message list UX in-feature-pr yes 2026-01-25T13:31:51+0100 Sessions UX (cross-device unread): move unread markers from local MMKV to encrypted metadata readStateV1 + focus/blur marking; keep with sessions/message UX PR (unread consistency story).
165
+ 156 8c16ee8f9cef auth auth fix(auth): surface auth failures and gate unauth routes keep 6 PR04 Auth + storage scoping high auth bucket PR04 Auth + storage scoping in-feature-pr yes 2026-01-25T13:31:51+0100 Auth hardening: tolerate null service_tier in raw usage payload + add unauth route guard (layout-level) with tests; keep in Auth+storage scoping PR.
166
+ 157 320a89e19ca0 happy test test(happy): run cli and server checks from root scripts keep 1 PR01 Foundations / DevX low happy bucket fallback PR01 Foundations / DevX in-feature-pr yes 2026-01-25T13:31:51+0100 DevX/validation: root scripts run expo-app+cli+server test/typecheck/build via happys wrappers; keep in Foundations PR.
167
+ 158 3b3609fed434 rpc rpc fix(rpc): add structured code for missing RPC methods keep 7 PR17 CLI reliability (waiters + reconnection + backoff semantics) low fallback cli/rpc/app bucket=rpc PR17 CLI reliability (waiters + reconnection + backoff semantics) in-feature-pr yes 2026-01-25T13:31:51+0100 RPC robustness: add structured errorCode=RPC_METHOD_NOT_AVAILABLE while preserving legacy error string; update app ops fallback logic + add tests server/app side; keep with CLI/app reliability PR.
168
+ 159 0e2c7928f24c scanner scanner fix(scanner): tolerate onMessage exceptions keep 3 PR19 Resume end-to-end high resume/session bucket PR20 Claude session reliability (switching + transcript/scanner + local runner) in-feature-pr yes 2026-01-25T13:31:51+0100 Claude scanner robustness: tolerate onMessage callback exceptions + regression test; keep with Claude transcript/scanner correctness PR.
169
+ 160 7fbe1f1cc727 permission permission fix(permission): avoid no-op permissionModeUpdatedAt bumps keep 6 PR10 Permission framework (Claude/cloud baseline) medium permission bucket PR10 Permission framework (Claude/cloud baseline) in-feature-pr yes 2026-01-25T13:31:51+0100 Permission arbitration correctness: avoid bumping permissionModeUpdatedAt on no-op updates (Claude/Codex/Gemini) via shared helper + tests; keep with permission framework PR.
170
+ 161 2026fbab5cb3 claude claude fix(claude): accept -c as continue flag keep 1 PR19 Resume end-to-end low claude fallback to resume PR20 Claude session reliability (switching + transcript/scanner + local runner) in-feature-pr yes 2026-01-25T13:46:10+0100 Claude local-runner correctness: treat -c as --continue for session control detection; keep with Claude session handling/transcript correctness PR (adjacent to other -c/-r fixes).
171
+ 162 ee0bec2a0b90 resume resume Delete INACTIVE_SESSION_RESUME.md likely 1 PR19 Resume end-to-end high resume/session bucket PR19 Resume end-to-end in-feature-pr yes 2026-01-25T13:46:10+0100 Docs cleanup for resume: delete inactive resume design doc; likely squash into broader resume docs reorg or drop only if doc is intentionally superseded elsewhere.
172
+ 163 84df0d260513 expo-app expo-app fix(expo-app): stabilize postinstall and libsodium patches keep 6 PR02 UI modal/overlay/popover + Expo web modal behavior medium expo bucket PR02 UI modal/overlay/popover + Expo web modal behavior in-feature-pr yes 2026-01-25T13:46:10+0100 Expo install stability: deterministic postinstall (hoisted patch-package support) + libsodium-wrappers ESM patch + related typing fix; keep with Expo web/build stability PR.
173
+ 164 544f9711b6cf ui app fix(ui): respond to plan/question tools via session RPC keep 5 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=ui PR12 AskUserQuestion + ExitPlan native handling in-feature-pr yes 2026-01-25T13:46:10+0100 Tool UX: respond to AskUserQuestion via interaction.respond with back-compat fallback; ExitPlanMode uses allow/deny without extra chat message; keep with AskUserQuestion/ExitPlan native handling PR (requires 158 errorCode support).
174
+ 165 8b3f39f22664 cli cli feat(cli): add interaction.respond for AskUserQuestion keep 5 PR12 AskUserQuestion + ExitPlan native handling medium tools keyword/bucket PR12 AskUserQuestion + ExitPlan native handling in-feature-pr yes 2026-01-25T13:46:10+0100 Tool plumbing (CLI): add interaction.respond RPC for AskUserQuestion by injecting tool_result into active Claude remote prompt; keep adjacent to 164 so UI+CLI land end-to-end.
175
+ 166 ed4bc007308a codex codex feat: add execpolicy approval option for Codex keep 13 PR19 Resume end-to-end low codex/gemini fallback to resume PR32 Codex approvals + MCP tool interactions (execpolicy + elicitation) in-feature-pr yes 2026-01-25T13:46:10+0100 Codex approvals (app): add execpolicy approval decision + button + payload plumbing + reducer refresh of tool input; keep with Codex approvals/MCP interactions PR and squash with follow-ups (167/168/169) in rewrite.
176
+ 167 78adc9c58811 codex codex feat(codex): support execpolicy approvals and MCP tool calls keep 5 PR21 Codex MCP tool-call result correctness medium codex mcp keyword PR32 Codex approvals + MCP tool interactions (execpolicy + elicitation) yes in-feature-pr yes 2026-01-25T13:46:10+0100 Codex approvals (CLI): support approved_execpolicy_amendment end-to-end + version-aware elicitation handling + MCP tool-call begin/end surfacing. Large mixed; keep in Codex approvals/MCP PR (split protocol vs tool-call UX during rewrite).
177
+ 168 9dfa09bef8d8 i18n i18n fix(i18n): add Codex execpolicy button text keep 2 PR03 i18n foundation sweep (optional) medium i18n bucket/keyword PR32 Codex approvals + MCP tool interactions (execpolicy + elicitation) in-feature-pr yes 2026-01-25T13:46:10+0100 Codex approvals i18n completion: add missing execpolicy approval button label translations (it/ja); squash into 166 during rewrite.
178
+ 169 559d39da116d reducer reducer fix(reducer): keep permission messages idempotent keep 1 PR17 CLI reliability (waiters + reconnection + backoff semantics) low fallback cli/rpc/app bucket=reducer PR32 Codex approvals + MCP tool interactions (execpolicy + elicitation) in-feature-pr yes 2026-01-25T13:46:10+0100 Codex approvals UI stability: keep permission/tool messages idempotent by only updating tool input when arguments changed; keep adjacent to 166 to avoid re-render churn.
179
+ 170 cc3c711ae28e claude claude fix: move claudeArgs to end of args array for slash command support keep 1 PR19 Resume end-to-end low claude fallback to resume PR20 Claude session reliability (switching + transcript/scanner + local runner) in-feature-pr yes 2026-01-25T13:46:10+0100 Claude local-runner correctness: append claudeArgs last so prompt/slash commands are positioned correctly; keep with Claude session handling PR.
180
+ 171 d06d5a833f8e claude claude Add signal forwarding to claudeLocal.ts keep 1 PR18 TMUX/Terminal end-to-end medium claude remote/local switching PR31 Terminal switching reliability (remote↔local) in-feature-pr yes 2026-01-25T14:04:18+0100 Forward OS signals from CLI to Claude local child; terminal switching/signal handling reliability (non-tmux).
181
+ 172 1b7cb3bfea86 codex codex feat: handle /clear command as session reset in codex keep 3 PR19 Resume end-to-end low codex/gemini fallback to resume PR33 Codex special commands (/clear session reset) in-feature-pr yes 2026-01-25T14:04:18+0100 Codex /clear: isolate+clear queue boundary + reset session state; includes tiny Claude /clear log-label fix.
182
+ 173 332ab2b0cd93 cli cli fix(cli): improve abort error handling to reduce spurious error messages keep 1 PR17 CLI reliability (waiters + reconnection + backoff semantics) low fallback cli/rpc/app bucket=cli PR20 Claude session reliability (switching + transcript/scanner + local runner) in-feature-pr yes 2026-01-25T14:04:18+0100 ClaudeRemoteLauncher: classify abort errors as expected and reduce spurious “process error” noise.
183
+ 174 e956463db3e2 codex codex fix: use runtime execPath for MCP bridge keep 3 PR19 Resume end-to-end low codex/gemini fallback to resume PR32 Codex approvals + MCP tool interactions (execpolicy + elicitation) in-feature-pr yes 2026-01-25T14:04:18+0100 MCP bridge runner compatibility: spawn happy-mcp via process.execPath (bun or node) for Codex+Gemini instead of relying on executable .mjs.
184
+ 175 f0a7d8d0b40c codex codex fix(codex): use mcp tool call id for approvals keep 2 PR21 Codex MCP tool-call result correctness medium codex mcp keyword PR32 Codex approvals + MCP tool interactions (execpolicy + elicitation) in-feature-pr yes 2026-01-25T14:04:18+0100 Approvals correctness: key approvals + proposed execpolicy amendment caching by MCP tool call id; includes focused unit tests.
185
+ 176 da620b6865ad server server feat(server): add full/light flavors with sqlite migrations keep 38 PR22 Server-light flavor (variant + schema/prisma sync) medium server light/schema/prisma keyword PR22 Server-light flavor (variant + schema/prisma sync) yes in-feature-pr yes 2026-01-25T14:04:18+0100 Server-light final feature; needsSplit=yes to move optional UI serving + /files route hardening into PR23 during rewrite.
186
+ 177 893ce7af5df0 expo-app expo-app fix(expo-app): avoid hooks order violation on redirect keep 2 PR02 UI modal/overlay/popover + Expo web modal behavior medium expo bucket PR04 Auth + storage scoping in-feature-pr yes 2026-01-25T14:04:18+0100 Auth redirect correctness: avoid hooks-order violations in RootLayout redirect path; includes regression test.
187
+ 178 7afbc9a2decd expo-app expo-app fix(expo-app): persist resumeSessionId and harden clipboard paste keep 5 PR02 UI modal/overlay/popover + Expo web modal behavior medium expo bucket PR26 New session wizard end-to-end in-feature-pr yes 2026-01-25T14:04:18+0100 New-session wizard/resume pick reliability: persist resumeSessionId + safe clipboard paste helper (tests).
188
+ 179 9a13879b753a expo-app expo-app fix(expo-app): avoid false homeDir prefix matches keep 2 PR02 UI modal/overlay/popover + Expo web modal behavior medium expo bucket PR29 Sessions & message list UX in-feature-pr yes 2026-01-25T14:04:18+0100 Sessions list correctness: avoid false homeDir prefix matches in display formatting; includes regression test.
189
+ 180 c107a779e07d expo-app expo-app fix(expo-app): avoid stuck loading in capabilities cache keep 2 PR02 UI modal/overlay/popover + Expo web modal behavior medium expo bucket PR14 Capabilities end-to-end (protocol + wiring + reliability) in-feature-pr yes 2026-01-25T14:04:18+0100 Capabilities UI reliability: set cache state to error on detect throw (avoid stuck loading) with hook regression test.
190
+ 181 35c0974eff1f expo-app expo-app refactor(expo-app): remove dead code and dedupe types keep 3 PR02 UI modal/overlay/popover + Expo web modal behavior medium expo bucket PR13 MessageQueueV1 + Pending messages end-to-end yes in-feature-pr yes 2026-01-25T14:22:18+0100 Mostly pending/messages UI + message-send mode type dedupe; needsSplit=yes to move useCLIDetection error-shape tweak into PR14 during rewrite.
191
+ 182 b319d85e72c3 i18n i18n fix(i18n): correct Spanish resumable label keep 1 PR03 i18n foundation sweep (optional) medium i18n bucket/keyword PR19 Resume end-to-end in-feature-pr yes 2026-01-25T14:22:18+0100 Resume i18n fix: es inactiveResumable label typo; fold into PR19 (translationHandling=in-feature-pr).
192
+ 183 46186162ae14 happy-cli happy-cli test(happy-cli): fix timer cleanup and MCP schema mocks keep 3 PR17 CLI reliability (waiters + reconnection + backoff semantics) medium cli reliability bucket=happy-cli PR32 Codex approvals + MCP tool interactions (execpolicy + elicitation) yes in-feature-pr yes 2026-01-25T14:22:18+0100 Test stability: MCP schema mocks fix (PR32). needsSplit=yes: terminal timer cleanup -> PR31; logger test tweak can fold into PR01/PR17 during rewrite.
193
+ 184 ac5bf2f3abfa happy-cli happy-cli test(happy-cli): reset modules for runtime override keep 1 PR17 CLI reliability (waiters + reconnection + backoff semantics) medium cli reliability bucket=happy-cli PR01 Foundations / DevX in-feature-pr yes 2026-01-25T14:22:18+0100 Test reliability for runtime override selection (module caching). Ok to fold into Foundations/DevX or squash into owning CLI invocation change during rewrite.
194
+ 185 947b8d1814fb expo-app expo-app refactor(expo-app): remove unused optimistic flag keep 1 PR02 UI modal/overlay/popover + Expo web modal behavior medium expo bucket PR29 Sessions & message list UX in-feature-pr yes 2026-01-25T14:22:18+0100 Small sessions-related cleanup (remove unused optimistic-only flag); squash into adjacent sessions list UX work.
195
+ 186 8cc823d1ba2d server-light server-light fix(server-light): validate PORT and normalize paths keep 4 PR22 Server-light flavor (variant + schema/prisma sync) high server-light bucket/keyword PR22 Server-light flavor (variant + schema/prisma sync) in-feature-pr yes 2026-01-25T14:22:18+0100 Server-light hardening: validate PORT fallback + normalize public paths (Windows slashes) with tests.
196
+ 187 8cb995a1abe1 server server test(server): fix schema generation sort regex keep 1 PR22 Server-light flavor (variant + schema/prisma sync) medium server light/schema/prisma keyword PR22 Server-light flavor (variant + schema/prisma sync) in-feature-pr yes 2026-01-25T14:22:18+0100 Server-light schema-gen test fix (regex correctness); keep with PR22.
197
+ 188 04d9c60ef8e7 happy-cli happy-cli refactor(happy-cli): remove unreachable gemini error branch keep 1 PR17 CLI reliability (waiters + reconnection + backoff semantics) medium cli reliability bucket=happy-cli PR30 Agent error surfaces (Codex/Gemini) in-feature-pr yes 2026-01-25T14:22:18+0100 Gemini error formatting cleanup (dead branch); keep with agent error surfaces PR.
198
+ 189 2616e5e19253 server server fix(server): handle missing UI index.html keep 2 PR23 Server serves UI + public files safely medium server serves UI/public files PR23 Server serves UI + public files safely in-feature-pr yes 2026-01-25T14:22:18+0100 Serve-UI reliability: 404 (not crash) when index.html missing; includes focused test.
199
+ 190 911365366024 server server fix(server): make build typecheck tests keep 3 PR23 Server serves UI + public files safely medium server serves UI/public files PR22 Server-light flavor (variant + schema/prisma sync) in-feature-pr yes 2026-01-25T14:22:18+0100 Server-light tooling/test reliability: add server typecheck alias + ensure vitest imports in light specs; keep with PR22.
200
+ 191 0dd19e7fb257 expo-app expo-app fix(expo-app): default codex resume spec to empty keep 3 PR02 UI modal/overlay/popover + Expo web modal behavior medium expo bucket PR19 Resume end-to-end yes in-feature-pr yes 2026-01-25T14:29:07+0100 Codex resume installer default safety: set codexResumeInstallSpec default to empty; needsSplit=yes to move unrelated sessionRename cleanup in sync/ops into PR29 during rewrite.
201
+ 192 229e5fc36570 server-light server-light fix(server-light): use file URLs for sqlite db keep 2 PR22 Server-light flavor (variant + schema/prisma sync) high server-light bucket/keyword PR22 Server-light flavor (variant + schema/prisma sync) in-feature-pr yes 2026-01-25T14:29:07+0100 Server-light correctness: form sqlite DB URL via pathToFileURL (proper file:/// + escaping) with test expectation update.
202
+ 193 e6f597e436c5 server server fix(server): fix server-light typecheck keep 2 PR22 Server-light flavor (variant + schema/prisma sync) high server-light bucket/keyword PR22 Server-light flavor (variant + schema/prisma sync) yes in-feature-pr yes 2026-01-25T14:29:07+0100 Server-light integration/typecheck: Buffer.from on S3 putObject + tsconfig module settings; needsSplit=yes (keep Buffer.from fix + final tsconfig end-state in PR22; squash tsconfig churn with 194).
203
+ 194 1564e800e355 server server fix(server): relax module settings for typecheck squash 1 PR01 Foundations / DevX low server infra/test keyword PR22 Server-light flavor (variant + schema/prisma sync) in-feature-pr yes 2026-01-25T14:29:07+0100 TS config churn follow-up: squash into 193 and keep only final server tsconfig module settings that make typecheck pass.
204
+ 195 8ab11f2788c1 happy-cli happy-cli fix(happy-cli): parse CLI versions from full output keep 1 PR17 CLI reliability (waiters + reconnection + backoff semantics) medium cli reliability bucket=happy-cli PR14 Capabilities end-to-end (protocol + wiring + reliability) in-feature-pr yes 2026-01-25T14:29:07+0100 Capabilities robustness: parse CLI version semver from full combined stdout+stderr, not only first line.
205
+ 196 21e096e9454e i18n i18n fix(i18n): localize session settings item keep 10 PR03 i18n foundation sweep (optional) medium i18n bucket/keyword PR06 Settings: API keys + experiments + settings screens in-feature-pr yes 2026-01-25T14:29:07+0100 Settings UI i18n: localize Session settings item title/subtitle in SettingsView with new keys across locales; fold into settings screens PR.
206
+ 197 7ca9e93196d6 i18n i18n fix(i18n): translate ExitPlanMode strings keep 8 PR03 i18n foundation sweep (optional) medium i18n bucket/keyword PR12 AskUserQuestion + ExitPlan native handling in-feature-pr yes 2026-01-25T14:29:07+0100 Tools UX i18n: translate ExitPlanMode tool view strings across locales; fold into AskUserQuestion/ExitPlan handling PR.
207
+ 198 c4a81947f002 i18n expo-app fix(i18n): localize search error keep 3 PR03 i18n foundation sweep (optional) medium i18n bucket/keyword PR35 Friends: UX + reliability (search errors + follow-ups) in-feature-pr yes 2026-01-25T14:29:07+0100 Friends search UX: useSearch returns stable error code + UI localizes via errors.searchFailed; includes debounce/retry hook test.
208
+ 199 208f0222a997 i18n expo-app fix(i18n): localize Codex resume dialog keep 10 PR03 i18n foundation sweep (optional) medium i18n bucket/keyword PR26 New session wizard end-to-end yes in-feature-pr yes 2026-01-25T14:29:07+0100 Mixed new-session web UX + resume-gating i18n; needsSplit=yes: keep BaseModal web wizard presentation in PR26 and move Codex resume dialog localization keys into PR19 during rewrite (or keep together if review prefers).
209
+ 200 02ad6b4a8352 i18n i18n fix(i18n): move openMachine to connect scope keep 9 PR03 i18n foundation sweep (optional) medium i18n bucket/keyword PR26 New session wizard end-to-end in-feature-pr yes 2026-01-25T14:29:07+0100 Follow-up taxonomy for new-session dialog: move openMachine key from common.* to connect.* across locales; keep adjacent to 199 in new-session PR.
210
+ 201 ce42bf56d7b6 web web fix(web): correct libsodium wrapper typing keep 1 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=web PR01 Foundations / DevX in-feature-pr yes 2026-01-25T14:34:52+0100 Web runtime fix: force CJS libsodium-wrappers build to avoid top-level await parse failures; keep with foundations/crypto web stability.
211
+ 202 f0417ca11ac5 web web fix(web): keep libsodium wrapper namespace typing keep 1 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=web PR01 Foundations / DevX in-feature-pr yes 2026-01-25T14:34:52+0100 Direct follow-up to 201; squash into 201 and keep 201’s message.
212
+ 203 b6d3874bf175 settings settings fix(settings): include Codex resume in master experiment toggle keep 1 PR06 Settings: API keys + experiments + settings screens medium settings bucket PR06 Settings: API keys + experiments + settings screens in-feature-pr yes 2026-01-25T14:34:52+0100 Settings/experiments UX correctness: master experiments toggle also controls expCodexResume.
213
+ 204 a4d7faba961f i18n expo-app fix(i18n): localize session error fallbacks keep 10 PR03 i18n foundation sweep (optional) medium i18n bucket/keyword PR29 Sessions & message list UX yes in-feature-pr yes 2026-01-25T14:34:52+0100 Session UI i18n/copy: localize error fallbacks and profile info modal in SessionView; needsSplit=yes to move expInboxFriends translations into PR06 during rewrite.
214
+ 205 1ea2bddb8bbd server server test(server): validate processImage resize output keep 1 PR01 Foundations / DevX low server infra/test keyword PR23 Server serves UI + public files safely in-feature-pr yes 2026-01-25T14:34:52+0100 Server public-files/image pipeline test correctness: validate processImage contract (original dimensions, resized pixel buffer length).
215
+ 206 1e7d7f8a4747 server server fix(server): keep light server running keep 1 PR22 Server-light flavor (variant + schema/prisma sync) medium server light/schema/prisma keyword PR22 Server-light flavor (variant + schema/prisma sync) in-feature-pr yes 2026-01-25T14:34:52+0100 Server-light correctness: keep light server process alive (remove process.exit(0) after startServer resolves).
216
+ 207 61bf70183ebf cli cli test(cli): set DEBUG before importing logger keep 1 PR17 CLI reliability (waiters + reconnection + backoff semantics) low fallback cli/rpc/app bucket=cli PR01 Foundations / DevX in-feature-pr yes 2026-01-25T14:34:52+0100 Test correctness: set DEBUG before importing logger (env read at import time); can fold into foundations/test stability.
217
+ 208 61a18ac95e17 tools tools fix(tools): require permission id for ExitPlanMode actions keep 11 PR12 AskUserQuestion + ExitPlan native handling medium tools keyword/bucket PR12 AskUserQuestion + ExitPlan native handling in-feature-pr yes 2026-01-25T14:34:52+0100 Tools safety: require permission id for ExitPlanMode approve/reject actions; adds i18n key + focused tests.
218
+ 209 5b36c9bf91c1 tools tools test(tools): avoid null permission in ExitPlanToolView tests squash 1 PR12 AskUserQuestion + ExitPlan native handling medium tools keyword/bucket PR12 AskUserQuestion + ExitPlan native handling in-feature-pr yes 2026-01-25T14:34:52+0100 Test follow-up to 208: avoid null permission shape in ExitPlanToolView tests; squash into 208.
219
+ 210 b7f63e928e4f persistence persistence fix(persistence): retry daemon state read when file appears keep 2 PR05 Persistence / drafts high persistence bucket PR16 Daemon reliability (ownership + reattach/restart safety) in-feature-pr yes 2026-01-25T14:34:52+0100 Daemon/CLI race reliability: retry readDaemonState on ENOENT when state file appears shortly after start; includes regression test.
220
+ 211 55428fb0253c tools tools fix(tools): alert when AskUserQuestion permission id is missing keep 2 PR12 AskUserQuestion + ExitPlan native handling medium tools keyword/bucket PR12 AskUserQuestion + ExitPlan native handling in-feature-pr yes 2026-01-25T14:39:11+0100 Tools safety: AskUserQuestionView shows modal error + no-ops when permission id missing (align with ExitPlanMode hardening); includes targeted test.
221
+ 212 dc6955f88abd terminal terminal fix(terminal): prevent sessionId path traversal in attachment info keep 2 PR18 TMUX/Terminal end-to-end high terminal/tmux/ink bucket PR18 TMUX end-to-end (headless sessions + attach + settings) in-feature-pr yes 2026-01-25T14:39:11+0100 Terminal attachment security: encode sessionId -> filename for attachment info storage w/ legacy fallback; keep adjacent to 237/238 which fully close legacy traversal hole.
222
+ 213 bb685fbeff7b terminal terminal fix(terminal): clarify missing --happy-starting-mode value keep 2 PR18 TMUX/Terminal end-to-end high terminal/tmux/ink bucket PR18 TMUX end-to-end (headless sessions + attach + settings) in-feature-pr yes 2026-01-25T14:39:11+0100 TMUX/terminal CLI argv correctness: validate --happy-starting-mode has a real value (not missing / not another flag); includes targeted test.
223
+ 214 5bcc7d20cd6b utils utils test(utils): stabilize serverConnectionErrors retry count test keep 1 PR17 CLI reliability (waiters + reconnection + backoff semantics) medium cli reliability bucket=utils PR17 CLI reliability (waiters + reconnection + backoff semantics) in-feature-pr yes 2026-01-25T14:39:11+0100 Test stability: make serverConnectionErrors retry/jitter deterministic by stubbing Math.random and ensuring cleanup; keep with CLI backoff/reconnect reliability.
224
+ 215 82968aa8fe6c ui ui fix(ui): send pending messages before closing modal keep 2 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=ui PR13 MessageQueueV1 + Pending messages end-to-end in-feature-pr yes 2026-01-25T14:39:11+0100 Pending messages integrity: enforce abort→send→delete→close ordering in PendingMessagesModal; adds testIDs + regression tests incl send-failure behavior.
225
+ 216 b7219c8bfe2b ink ink fix(ink): avoid async useInput handler keep 1 PR18 TMUX/Terminal end-to-end high terminal/tmux/ink bucket PR31 Terminal switching reliability (remote↔local) in-feature-pr yes 2026-01-25T14:39:11+0100 Ink lifecycle reliability: avoid async useInput handler; use cancellable timeouts and clear on unmount/messageBuffer changes (prevents callbacks after teardown).
226
+ 217 d70a6f6669fe claude claude fix(claude): trim CLAUDE_CONFIG_DIR overrides keep 2 PR19 Resume end-to-end low claude fallback to resume PR20 Claude session reliability (switching + transcript/scanner + local runner) in-feature-pr yes 2026-01-25T14:39:11+0100 Claude robustness: trim CLAUDE_CONFIG_DIR overrides (treat as user input) + regression test; keep with Claude session reliability.
227
+ 218 47f638b73fca utils utils test(utils): cover failuresCount with custom backoff keep 1 PR17 CLI reliability (waiters + reconnection + backoff semantics) medium cli reliability bucket=utils PR17 CLI reliability (waiters + reconnection + backoff semantics) in-feature-pr yes 2026-01-25T14:39:11+0100 Backoff semantics test: failuresCount increments per attempt under custom backoff; keep adjacent to 219 (or squash into 219).
228
+ 219 2abc70fef03c utils utils fix(utils): track failuresCount for custom backoff keep 1 PR17 CLI reliability (waiters + reconnection + backoff semantics) medium cli reliability bucket=utils PR17 CLI reliability (waiters + reconnection + backoff semantics) in-feature-pr yes 2026-01-25T14:39:11+0100 Backoff semantics fix: move failuresCount tracking into InvalidateSync so it works with custom backoff implementations; optionally squash 218 into this.
229
+ 220 dc8016f01c56 server server fix(server): validate HAPPY_SERVER_LIGHT_DATA_DIR for light migrations keep 3 PR22 Server-light flavor (variant + schema/prisma sync) medium server light/schema/prisma keyword PR22 Server-light flavor (variant + schema/prisma sync) in-feature-pr yes 2026-01-25T14:39:11+0100 Server-light migration reliability: validate HAPPY_SERVER_LIGHT_DATA_DIR (trim/require) + centralize deploy plan args; includes unit tests.
230
+ 221 b0085827322c server server fix(server): handle missing UI index in error handlers keep 2 PR23 Server serves UI + public files safely medium server serves UI/public files PR23 Server serves UI + public files safely in-feature-pr yes 2026-01-25T14:42:48+0100 Serve-UI reliability: return 404 (not 500) when UI index missing in error handlers; includes regression test.
231
+ 222 abf288056636 cli cli fix(cli): reject invalid messageQueueV1 inFlight keep 2 PR13 MessageQueueV1 + Pending messages end-to-end medium pending/queue keyword PR13 MessageQueueV1 + Pending messages end-to-end in-feature-pr yes 2026-01-25T14:42:48+0100 Queue state parsing hardening: reject invalid messageQueueV1 inFlight shapes (null out overall) + test.
232
+ 223 73ce32d242a0 i18n i18n fix(i18n): translate Spanish experiment subtitles keep 1 PR03 i18n foundation sweep (optional) medium i18n bucket/keyword PR06 Settings: API keys + experiments + settings screens in-feature-pr yes 2026-01-25T14:42:48+0100 Settings/experiments i18n polish: translate Spanish experiment subtitles (pure translations).
233
+ 224 98bc00096e86 i18n new-session fix(i18n): localize Codex resume banner split 10 PR03 i18n foundation sweep (optional) medium i18n bucket/keyword PR19 Resume end-to-end yes in-feature-pr yes 2026-01-25T14:42:48+0100 Mixed: localize Codex resume banner (resume UX) + new-session refactors that depend on 225/226; keep finalPr=PR19 but needsSplit=yes (move WizardSectionHeaderRow refactor to PR26 and permissionModeOptions refactor to PR10 during rewrite).
234
+ 225 4fabec9b69b3 new-session new-session feat(new-session): add WizardSectionHeaderRow keep 1 PR26 New session wizard end-to-end high new-session/new/machine bucket PR26 New session wizard end-to-end in-feature-pr yes 2026-01-25T14:42:48+0100 New-session wizard UI primitive: add WizardSectionHeaderRow component; reorder before 224 in rewritten history.
235
+ 226 c461ed1cb4ef permission permission feat(permission): add permission mode option helpers keep 1 PR10 Permission framework (Claude/cloud baseline) medium permission bucket PR10 Permission framework (Claude/cloud baseline) in-feature-pr yes 2026-01-25T14:42:48+0100 Permission UX helpers: centralize permission mode option lists/labels per agent type; consider i18n-izing description strings if user-visible.
236
+ 227 23b595edd0fe sync sync refactor(sync): simplify path formatting keep 1 PR27 Sync robustness (transport/error parsing + backoff semantics) low sync bucket fallback PR29 Sessions & message list UX in-feature-pr yes 2026-01-25T14:42:48+0100 Sessions list display cleanup: simplify home-relative path formatting (~ prefix) without behavior change.
237
+ 228 523989b4de8e server-light server-light fix(server-light): avoid master secret race keep 1 PR09 Secrets / vault feature medium secrets keyword/bucket PR22 Server-light flavor (variant + schema/prisma sync) in-feature-pr yes 2026-01-25T14:42:48+0100 Server-light safety: avoid handy master secret file race via atomic write (wx) + EEXIST read-back; keep adjacent to light-flavor init work.
238
+ 229 d89a9427e765 cli cli fix(cli): clean up metadata waiters on disconnect keep 2 PR17 CLI reliability (waiters + reconnection + backoff semantics) low fallback cli/rpc/app bucket=cli PR17 CLI reliability (waiters + reconnection + backoff semantics) in-feature-pr yes 2026-01-25T14:42:48+0100 CLI socket reliability: clean up metadata waiters on disconnect (resolve false; remove listeners) + test.
239
+ 230 fedb8a66160a cli cli test(cli): accept lowercase preview-env keys keep 1 PR15 preview-env end-to-end high preview-env keyword/file PR15 preview-env end-to-end in-feature-pr yes 2026-01-25T14:42:48+0100 Preview-env contract test: accept lowercase env keys (adjacent to 231 impl; keep together in preview-env PR).
240
+ 231 fc0ce89b13b7 cli cli fix(cli): allow lowercase preview-env keys keep 2 PR15 preview-env end-to-end high preview-env keyword/file PR15 preview-env end-to-end in-feature-pr yes 2026-01-25T14:47:03+0100 preview-env safety: accept lowercase keys while blocking prototype pollution keys; keep adjacent to 230 test in preview-env PR.
241
+ 232 ad95c5b01c25 happy hooks test(happy): keep useCLIDetection timestamp stable keep 1 PR14 Capabilities end-to-end (protocol + wiring + reliability) medium happy capabilities/hook keyword PR14 Capabilities end-to-end (protocol + wiring + reliability) in-feature-pr yes 2026-01-25T14:47:03+0100 Capabilities hook contract: test stable useCLIDetection timestamp when loaded snapshot lacks checkedAt; squash into 234 series.
242
+ 233 c251edf3c307 happy hooks test(happy): fix useCLIDetection timestamp test squash 1 PR14 Capabilities end-to-end (protocol + wiring + reliability) medium happy capabilities/hook keyword PR14 Capabilities end-to-end (protocol + wiring + reliability) in-feature-pr yes 2026-01-25T14:47:03+0100 Test hygiene follow-up for 232 (act()+timer cleanup); squash into 232/234.
243
+ 234 34fa4091d3cc happy hooks fix(happy): stabilize useCLIDetection timestamp keep 1 PR14 Capabilities end-to-end (protocol + wiring + reliability) medium happy capabilities/hook keyword PR14 Capabilities end-to-end (protocol + wiring + reliability) in-feature-pr yes 2026-01-25T14:47:03+0100 Capabilities hook reliability: stabilize useCLIDetection timestamp fallback when checkedAt missing; squash 232/233/235 into this in rewrite.
244
+ 235 31340e53294c happy hooks fix(happy): inline CLI detection request squash 1 PR14 Capabilities end-to-end (protocol + wiring + reliability) medium happy capabilities/hook keyword PR14 Capabilities end-to-end (protocol + wiring + reliability) in-feature-pr yes 2026-01-25T14:47:03+0100 Back-and-forth cleanup: inline CLI detection request (undo part of 234); squash into 234.
245
+ 236 054250f408e2 i18n i18n fix(i18n): localize codex resume install modals keep 11 PR03 i18n foundation sweep (optional) medium i18n bucket/keyword PR19 Resume end-to-end in-feature-pr yes 2026-01-25T14:47:03+0100 Resume UX i18n: localize Codex resume install/update modals (machine + new-session) + deps.* status strings; unify key scopes with 224 during rewrite.
246
+ 237 241f0ae24b1d cli cli test(cli): prevent legacy sessionId path traversal keep 1 PR18 TMUX/Terminal end-to-end medium terminal/tmux files PR18 TMUX end-to-end (headless sessions + attach + settings) in-feature-pr yes 2026-01-25T14:47:03+0100 Terminal attachment security series: add regression test preventing legacy sessionId path traversal; keep adjacent to 212 and 238.
247
+ 238 a1e4a6dd3fbd cli cli fix(cli): block legacy sessionId path traversal keep 1 PR18 TMUX/Terminal end-to-end medium terminal/tmux files PR18 TMUX end-to-end (headless sessions + attach + settings) in-feature-pr yes 2026-01-25T14:47:03+0100 Terminal attachment security fix: block legacy fallback when sessionId contains path separators (/, \\); completes 212+237 series.
248
+ 239 e2618e04a26b a11y a11y fix(a11y): add labels to codex resume actions keep 1 PR02 UI modal/overlay/popover + Expo web modal behavior medium ui-system bucket=a11y PR19 Resume end-to-end in-feature-pr yes 2026-01-25T14:47:03+0100 Resume banner a11y: add accessibilityRole/Label to Codex resume banner actions (install/update/reinstall/check updates); depends on 224 banner UI.
249
+ 240 d0f9ad5e8310 claude claude test(claude): remove stale transcriptPath red-test scaffolding squash 1 PR20 Claude session reliability (switching + transcript/scanner + local runner) medium claude scanner/transcript keyword PR20 Claude session reliability (switching + transcript/scanner + local runner) in-feature-pr yes 2026-01-25T14:47:03+0100 Claude scanner test cleanup: remove stale red-test scaffolding for transcriptPath now that feature exists; squash into transcriptPath feature commit during rewrite.
250
+ 241 1464402758bf codex codex fix(codex): preserve falsy MCP tool results keep 2 PR21 Codex MCP tool-call result correctness medium codex mcp keyword PR21 Codex MCP tool-call result correctness in-feature-pr yes 2026-01-25T14:52:20+0100 Codex MCP correctness: preserve falsy Ok/Err tool results via hasOwnProperty checks + unit tests.
251
+ 242 57f84f0691c6 server-light server-light fix(server-light): harden public file path encoding keep 2 PR22 Server-light flavor (variant + schema/prisma sync) high server-light bucket/keyword PR22 Server-light flavor (variant + schema/prisma sync) in-feature-pr yes 2026-01-25T14:52:20+0100 Server-light security: strict public file path normalization + segment-wise encodeURIComponent URL building (encode #/?); expanded tests.
252
+ 243 0b7db6945325 storage storage fix(storage): validate S3_PORT and bucket existence keep 2 PR24 Storage S3 validation high storage bucket/file PR24 Storage S3 validation in-feature-pr yes 2026-01-25T14:52:20+0100 Storage config safety: validate S3_PORT range and fail-fast when bucket missing; adds focused tests.
253
+ 244 74fc860b07b5 queue queue refactor(queue): simplify stale in-flight reclaim keep 1 PR13 MessageQueueV1 + Pending messages end-to-end high queue bucket/keyword PR13 MessageQueueV1 + Pending messages end-to-end in-feature-pr yes 2026-01-25T14:52:20+0100 MessageQueueV1 refactor: simplify stale inFlight reclaim logic (no behavior change); squash into queue series if desired.
254
+ 245 82bf82cb6715 hooks hooks fix(hooks): prevent stale capabilities cache overwrite keep 2 PR14 Capabilities end-to-end (protocol + wiring + reliability) high capabilities bucket/keyword PR14 Capabilities end-to-end (protocol + wiring + reliability) in-feature-pr yes 2026-01-25T14:52:20+0100 Capabilities cache race fix: guard updates with inFlightToken match so stale requests can’t clobber newer loaded state; includes race test.
255
+ 246 384b15252026 expo expo fix(expo): harden tool submit and pending send keep 8 PR02 UI modal/overlay/popover + Expo web modal behavior medium expo bucket PR13 MessageQueueV1 + Pending messages end-to-end yes in-feature-pr yes 2026-01-25T14:52:20+0100 Mixed user-action hardening; needsSplit=yes: pending send delete→discard fallback + messageQueueV1 discard support goes to PR13; AskUserQuestion submit error alert+test goes to PR12 during rewrite.
256
+ 247 24b607abfa07 server server Refactor schema sync and centralize Prisma types keep 29 PR22 Server-light flavor (variant + schema/prisma sync) medium server light/schema/prisma keyword PR22 Server-light flavor (variant + schema/prisma sync) yes in-feature-pr yes 2026-01-25T14:52:20+0100 Server-light maintenance: schemaSync replaces schema:sqlite, adds enum generation + drift tests, centralizes Prisma types/client with init-guarded db proxy; needsSplit=yes and move unrelated yarn.lock expo-router bump to PR02.
257
+ 248 bf3027799623 expo-app expo-app Set EXPO_UNSTABLE_WEB_MODAL env var in Expo scripts keep 4 PR02 UI modal/overlay/popover + Expo web modal behavior medium expo bucket PR02 UI modal/overlay/popover + Expo web modal behavior yes in-feature-pr yes 2026-01-25T14:52:20+0100 Expo web modal reliability: set EXPO_UNSTABLE_WEB_MODAL=1 in scripts, pin+patch expo-router 6.0.22; needsSplit=yes to move session-info gating tweak (expCodexAcp) into PR19 during rewrite.
258
+ 249 c803115dcbdc expo-app expo-app Improve postinstall script for symlinked paths and patching keep 1 PR02 UI modal/overlay/popover + Expo web modal behavior medium expo bucket PR02 UI modal/overlay/popover + Expo web modal behavior in-feature-pr yes 2026-01-25T14:52:20+0100 Expo postinstall reliability: resolve symlinked paths and run patch-package for both hoisted and non-hoisted deps; keep adjacent to 248.
259
+
260
+ 250 0c3b41030bbc test expo-app Add Vitest stubs for Expo and React Native modules keep 4 PR01 Foundations / DevX high vitest stubs/test infra PR01 Foundations / DevX in-feature-pr yes 2026-01-25T15:59:10+0100 Foundations / DevX: vitest stubs/test infra
261
+ 251 7d60e6fc77f2 acp cli cli(acp): support loadSession + replay capture; normalize tool events keep 17 PR36 ACP agents end-to-end (runtimes + replay + tool normalization) high ACP replay/import + tool normalization PR36 ACP agents end-to-end (runtimes + replay + tool normalization) in-feature-pr yes 2026-01-25T15:59:10+0100 ACP agents end-to-end (runtimes + replay + tool normalization): ACP replay/import + tool normalization
262
+ 252 e35328ab19ad permission cli cli(permissions): persist per-session allowlists; harden shell approvals keep 7 PR11 Agent permissions (Codex/Gemini): permission modes + allowlists high permission allowlists + shell approvals PR11 Agent permissions (Codex/Gemini): permission modes + allowlists in-feature-pr yes 2026-01-25T15:59:11+0100 Agent permissions (Codex/Gemini): allowlist persistence + shell approvals hardening (extends base permission behavior beyond Claude).
263
+ 253 caf5adfe3449 claude cli cli(claude): support AskUserQuestion answers + ExitPlanMode negotiation keep 10 PR12 AskUserQuestion + ExitPlan native handling high AskUserQuestion/ExitPlan support (Claude) PR12 AskUserQuestion + ExitPlan native handling in-feature-pr yes 2026-01-25T15:59:11+0100 AskUserQuestion + ExitPlan native handling: AskUserQuestion/ExitPlan support (Claude)
264
+ 254 011a3602411f queue cli cli(api): observe self-broadcasts for pending-queue; add tool tracing keep 6 PR13 MessageQueueV1 + Pending messages end-to-end medium pending-queue wake + tool tracing PR13 MessageQueueV1 + Pending messages end-to-end yes in-feature-pr yes 2026-01-25T15:59:12+0100 Split toolTrace into PR39; keep pending-queue wake + apiSession recovery in PR13.
265
+ 255 809d2bb385e0 tools cli cli(tool-trace): add fixture extraction + CLI script keep 4 PR39 Tool UX: normalization + specialized views + tracing high tool-trace fixtures extractor PR39 Tool UX: normalization + specialized views + tracing in-feature-pr yes 2026-01-25T15:59:12+0100 Tool UX: tool-trace fixture extraction + sanitizer/truncation helpers (debugging + regression fixtures).
266
+ 256 553781556305 auth cli cli(auth): add --no-open to skip browser open keep 4 PR04 Auth + storage scoping high CLI auth --no-open PR04 Auth + storage scoping in-feature-pr yes 2026-01-25T15:59:13+0100 Auth + storage scoping: CLI auth --no-open
267
+ 257 5955ea5c21a3 daemon cli cli(daemon): idempotent resume + attach files + shutdown policy keep 22 PR16 Daemon reliability (ownership + reattach/restart safety) high daemon resume idempotency + shutdown policy PR16 Daemon reliability (ownership + reattach/restart safety) in-feature-pr yes 2026-01-25T15:59:13+0100 Daemon reliability (ownership + reattach/restart safety): daemon resume idempotency + shutdown policy
268
+ 258 cce05b18a5d7 acp cli cli(agents): wire ACP agents into factory/transport registry keep 4 PR36 ACP agents end-to-end (runtimes + replay + tool normalization) high ACP agent registry wiring PR36 ACP agents end-to-end (runtimes + replay + tool normalization) in-feature-pr yes 2026-01-25T15:59:13+0100 ACP agents end-to-end (runtimes + replay + tool normalization): ACP agent registry wiring
269
+ 259 27bb2523f690 acp cli cli(opencode): add OpenCode ACP agent runtime keep 11 PR36 ACP agents end-to-end (runtimes + replay + tool normalization) high OpenCode ACP runtime PR36 ACP agents end-to-end (runtimes + replay + tool normalization) in-feature-pr yes 2026-01-25T15:59:14+0100 ACP agents end-to-end (runtimes + replay + tool normalization): OpenCode ACP runtime
270
+ 260 abe1cf8ed370 acp cli cli(codex-acp): add runtime + capability gating keep 24 PR36 ACP agents end-to-end (runtimes + replay + tool normalization) medium Codex ACP runtime + capabilities gating PR36 ACP agents end-to-end (runtimes + replay + tool normalization) yes in-feature-pr yes 2026-01-25T15:59:14+0100 May split generic capabilities checklist wiring into PR14; keep Codex ACP runtime in PR36.
271
+ 261 d9100a80112b acp cli cli(entry): refactor agent subcommands and startup flags keep 1 PR36 ACP agents end-to-end (runtimes + replay + tool normalization) high agent subcommand wiring/refactor PR36 ACP agents end-to-end (runtimes + replay + tool normalization) in-feature-pr yes 2026-01-25T15:59:14+0100 ACP agents end-to-end (runtimes + replay + tool normalization): agent subcommand wiring/refactor
272
+ 262 2edc5305ca3f test expo-app expo-app(test): harden vitest stubs + unistyles typing keep 6 PR01 Foundations / DevX high expo-app test stubs/unistyles typing PR01 Foundations / DevX in-feature-pr yes 2026-01-25T15:59:15+0100 Foundations / DevX: expo-app test stubs/unistyles typing
273
+ 263 5575d7267cd0 tools expo-app expo-app(tools): normalize tool inference + rendering inputs keep 10 PR39 Tool UX: normalization + specialized views + tracing high tool rendering normalization helpers PR39 Tool UX: normalization + specialized views + tracing in-feature-pr yes 2026-01-25T15:59:15+0100 Tool UX: normalization + name inference + permission summaries for consistent tool rendering.
274
+ 264 d115797fcdde tools expo-app expo-app(tools): add specialized tool views + tests keep 40 PR39 Tool UX: normalization + specialized views + tracing high specialized tool views + tests PR39 Tool UX: normalization + specialized views + tracing in-feature-pr yes 2026-01-25T15:59:15+0100 Tool UX: specialized views for common tools + structured results + focused regression tests.
275
+ 265 23014814ea50 agents expo-app expo-app(agents): introduce agent registry + UI behavior helpers keep 17 PR37 Agent registry end-to-end (selection + settings + UX helpers) high agent registry + UX helpers PR37 Agent registry end-to-end (selection + settings + UX helpers) in-feature-pr yes 2026-01-25T15:59:16+0100 Agent registry end-to-end (selection + settings + UX helpers): agent registry + UX helpers
276
+ 266 b142327f5e32 capabilities expo-app expo-app(sync): capabilities protocol + resume/pending-queue plumbing keep 59 PR14 Capabilities end-to-end (protocol + wiring + reliability) low capabilities protocol + mixed plumbing PR14 Capabilities end-to-end (protocol + wiring + reliability) yes in-feature-pr yes 2026-01-25T15:59:16+0100 Split by feature PR: PR14 core protocol + installable deps; PR13 pending queue; PR19 resume; PR28 model options; PR10/11 permissions; PR08 profiles.
277
+ 267 552f517e9823 secrets expo-app expo-app(ui): add InlineAddExpander; inline add for secrets/env vars keep 5 PR09 Secrets / vault feature medium inline add for secrets/env vars PR09 Secrets / vault feature yes in-feature-pr yes 2026-01-25T15:59:16+0100 Split env-vars inline add into PR07; keep secrets inline add in PR09.
278
+ 268 cbaf39a63c60 new-session expo-app expo-app(secret-requirement): add picker route + modularized modal keep 10 PR26 New session wizard end-to-end high secret requirement picker route/modal PR26 New session wizard end-to-end in-feature-pr yes 2026-01-25T15:59:16+0100 New session wizard end-to-end: secret requirement picker route/modal
279
+ 269 36641d906490 resume expo-app expo-app(session): capability-gated resume flows + pending queue UX keep 33 PR19 Resume end-to-end low capability-gated resume + pending UX PR19 Resume end-to-end yes in-feature-pr yes 2026-01-25T15:59:17+0100 Split resume UX into PR19, pending UI into PR13, capabilities gating into PR14, new-session changes into PR26.
280
+ 270 9a9d439e5499 settings expo-app expo-app(settings): wire agent registry into settings keep 2 PR37 Agent registry end-to-end (selection + settings + UX helpers) high wire agent registry into settings PR37 Agent registry end-to-end (selection + settings + UX helpers) in-feature-pr yes 2026-01-25T15:59:17+0100 Agent registry end-to-end (selection + settings + UX helpers): wire agent registry into settings
281
+ 271 67ceab362d6b inbox expo-app expo-app(experiments): add inbox friends experiment gate keep 7 PR35 Friends: UX + reliability (search errors + follow-ups) high inbox/friends experiment gate PR35 Friends: UX + reliability (search errors + follow-ups) in-feature-pr yes 2026-01-25T15:59:17+0100 Friends: UX + reliability (search errors + follow-ups): inbox/friends experiment gate
282
+ 272 05b45b4f505d settings expo-app expo-app(settings): update features toggles for agents/inbox/codex keep 1 PR37 Agent registry end-to-end (selection + settings + UX helpers) medium settings toggles for agents/inbox/codex PR37 Agent registry end-to-end (selection + settings + UX helpers) yes in-feature-pr yes 2026-01-25T15:59:18+0100 Split inboxFriends toggle into PR35; keep agent toggles in PR37 (codex ACP toggle may live with PR36/PR37).
283
+ 273 ec9225a8f935 i18n expo-app expo-app(i18n): add device locale helpers + update translations keep 12 PR03 i18n foundation sweep (optional) medium device locale helpers + translations sweep PR03 i18n foundation sweep (optional) yes in-feature-pr yes 2026-01-25T15:59:18+0100 Distribute translations into owning feature PRs; keep deviceLocales helpers in PR03 or PR01.
284
+ 274 98b7138360ff resume expo-app expo-app(agents): align resume helpers + temp session data typing keep 3 PR19 Resume end-to-end high resume helpers + temp data typing PR19 Resume end-to-end in-feature-pr yes 2026-01-25T15:59:18+0100 Resume end-to-end: resume helpers + temp data typing
285
+ 275 63cda8b20882 list expo-app expo-app(ui): add list/pending primitives and polish keep 31 PR38 UI list primitives + pending UI polish medium list/pending primitives + polish PR38 UI list primitives + pending UI polish yes in-feature-pr yes 2026-01-25T15:59:19+0100 Consider splitting profile list model changes into PR08; keep list/pending primitives in PR38.
286
+ 276 10dca4ca7057 expo expo-app chore(expo): pin libsodium-wrappers and align patch-package dirs keep 5 PR02 UI modal/overlay/popover + Expo web modal behavior high expo libsodium pin + patch dirs/postinstall PR02 UI modal/overlay/popover + Expo web modal behavior in-feature-pr yes 2026-01-25T15:59:19+0100 UI modal/overlay/popover + Expo web modal behavior: expo libsodium pin + patch dirs/postinstall
287
+ 277 cfe2ecd3e626 format expo-app refactor: migrate StyleSheet imports to react-native-unistyles keep 23 PR01 Foundations / DevX high bucket=format PR01 Foundations / DevX in-feature-pr yes 2026-01-25T19:06:49+0100 Mechanical StyleSheet→unistyles import migration across expo-app + add invariant test.
288
+ 278 8aaacbfaac7a dev dev docs: add Conventional Commits instructions keep 1 PR01 Foundations / DevX high bucket=dev PR01 Foundations / DevX in-feature-pr yes 2026-01-25T19:06:49+0100 Add `.github/copilot-commit-instructions.md` documenting Conventional Commits guidelines.