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
@@ -17638,3 +17638,1852 @@ M expo-app/tools/postinstall.mjs
17638
17638
 
17639
17639
  ---
17640
17640
 
17641
+ ## 250 2026-01-24 0c3b41030bbc
17642
+
17643
+ - SHA: 0c3b41030bbc4a888e621a6b5787eaac4b581a59
17644
+ - Subject: Add Vitest stubs for Expo and React Native modules
17645
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
17646
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
17647
+ - CommitDate: 2026-01-24
17648
+ - Files changed: 4
17649
+ - Lines: +72 / -0
17650
+ - Touched areas: expo-app(4)
17651
+ - Topic bucket: `test`
17652
+ - Manual review needed: YES
17653
+
17654
+ ### Commit Message Body
17655
+
17656
+ ```text
17657
+ Introduces stub implementations for `expo-localization`, `expo-modules-core`, and `react-native` to enable unit testing in a Node environment with Vitest. Also adds a Vitest setup file that mocks `react-native-mmkv` with an in-memory store for tests. These changes allow tests to run without requiring actual Expo or React Native dependencies.
17658
+ ```
17659
+
17660
+ ### Files (name-status)
17661
+
17662
+ ```text
17663
+ A expo-app/sources/dev/expoLocalizationStub.ts
17664
+ A expo-app/sources/dev/expoModulesCoreStub.ts
17665
+ M expo-app/sources/dev/reactNativeStub.ts
17666
+ A expo-app/sources/dev/vitestSetup.ts
17667
+ ```
17668
+
17669
+ ### Diffstat
17670
+
17671
+ ```text
17672
+ expo-app/sources/dev/expoLocalizationStub.ts | 12 +++++++++++
17673
+ expo-app/sources/dev/expoModulesCoreStub.ts | 12 +++++++++++
17674
+ expo-app/sources/dev/reactNativeStub.ts | 16 ++++++++++++++
17675
+ expo-app/sources/dev/vitestSetup.ts | 32 ++++++++++++++++++++++++++++
17676
+ 4 files changed, 72 insertions(+)
17677
+ ```
17678
+
17679
+ ### Notes / Follow-ups
17680
+
17681
+ - Manual review: required before squashing/reordering.
17682
+
17683
+ ---
17684
+
17685
+ ## 251 2026-01-25 7d60e6fc77f2
17686
+
17687
+ - SHA: 7d60e6fc77f28a0457e306780c44956e8cb4c4c7
17688
+ - Subject: cli(acp): support loadSession + replay capture; normalize tool events
17689
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
17690
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
17691
+ - CommitDate: 2026-01-25
17692
+ - Files changed: 17
17693
+ - Lines: +2249 / -454
17694
+ - Touched areas: cli(17)
17695
+ - Topic bucket: `acp`
17696
+ - Manual review needed: YES
17697
+
17698
+ ### Commit Message Body
17699
+
17700
+ ```text
17701
+ - Adds replay history capture + import helpers and publishSlashCommands
17702
+ - Normalizes ACP tool events and permission request payloads
17703
+ - Adds focused tests for tool normalization + permission mapping
17704
+ ```
17705
+
17706
+ ### Files (name-status)
17707
+
17708
+ ```text
17709
+ M cli/src/agent/acp/AcpBackend.ts
17710
+ A cli/src/agent/acp/bridge/acpCommonHandlers.test.ts
17711
+ A cli/src/agent/acp/bridge/acpCommonHandlers.ts
17712
+ A cli/src/agent/acp/commands/publishSlashCommands.ts
17713
+ A cli/src/agent/acp/history/acpReplayCapture.ts
17714
+ A cli/src/agent/acp/history/importAcpReplayHistory.ts
17715
+ A cli/src/agent/acp/permissions/permissionMapping.test.ts
17716
+ A cli/src/agent/acp/permissions/permissionMapping.ts
17717
+ A cli/src/agent/acp/permissions/permissionRequest.test.ts
17718
+ A cli/src/agent/acp/permissions/permissionRequest.ts
17719
+ A cli/src/agent/acp/sessionUpdateHandlers.test.ts
17720
+ M cli/src/agent/acp/sessionUpdateHandlers.ts
17721
+ A cli/src/agent/acp/toolNormalization.test.ts
17722
+ A cli/src/agent/acp/toolNormalization.ts
17723
+ M cli/src/agent/core/AgentBackend.ts
17724
+ A cli/src/agent/transport/handlers/GeminiTransport.test.ts
17725
+ M cli/src/agent/transport/handlers/GeminiTransport.ts
17726
+ ```
17727
+
17728
+ ### Diffstat
17729
+
17730
+ ```text
17731
+ cli/src/agent/acp/AcpBackend.ts | 915 ++++++++++++---------
17732
+ cli/src/agent/acp/bridge/acpCommonHandlers.test.ts | 107 +++
17733
+ cli/src/agent/acp/bridge/acpCommonHandlers.ts | 121 +++
17734
+ cli/src/agent/acp/commands/publishSlashCommands.ts | 61 ++
17735
+ cli/src/agent/acp/history/acpReplayCapture.ts | 99 +++
17736
+ .../agent/acp/history/importAcpReplayHistory.ts | 289 +++++++
17737
+ .../acp/permissions/permissionMapping.test.ts | 39 +
17738
+ cli/src/agent/acp/permissions/permissionMapping.ts | 115 +++
17739
+ .../acp/permissions/permissionRequest.test.ts | 30 +
17740
+ cli/src/agent/acp/permissions/permissionRequest.ts | 73 ++
17741
+ cli/src/agent/acp/sessionUpdateHandlers.test.ts | 80 ++
17742
+ cli/src/agent/acp/sessionUpdateHandlers.ts | 430 ++++++++--
17743
+ cli/src/agent/acp/toolNormalization.test.ts | 41 +
17744
+ cli/src/agent/acp/toolNormalization.ts | 225 +++++
17745
+ cli/src/agent/core/AgentBackend.ts | 18 +
17746
+ .../transport/handlers/GeminiTransport.test.ts | 24 +
17747
+ .../agent/transport/handlers/GeminiTransport.ts | 36 +-
17748
+ 17 files changed, 2249 insertions(+), 454 deletions(-)
17749
+ ```
17750
+
17751
+ ### Notes / Follow-ups
17752
+
17753
+ - Manual review: required before squashing/reordering.
17754
+
17755
+ ---
17756
+
17757
+ ## 252 2026-01-25 e35328ab19ad
17758
+
17759
+ - SHA: e35328ab19ad2f00fa581e7e85ee75c91cb13f04
17760
+ - Subject: cli(permissions): persist per-session allowlists; harden shell approvals
17761
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
17762
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
17763
+ - CommitDate: 2026-01-25
17764
+ - Files changed: 7
17765
+ - Lines: +576 / -28
17766
+ - Touched areas: cli(7)
17767
+ - Topic bucket: `permission`
17768
+ - Manual review needed: NO
17769
+
17770
+ ### Commit Message Body
17771
+
17772
+ ```text
17773
+ - Introduces BasePermissionHandler allowlist persistence and a shell command allowlist
17774
+ - Adds tool identifier helpers to keep permission decisions consistent across agents
17775
+ - Adds targeted tests for allowlist behavior and tool identifier
17776
+ ```
17777
+
17778
+ ### Files (name-status)
17779
+
17780
+ ```text
17781
+ M cli/src/codex/utils/permissionHandler.ts
17782
+ M cli/src/gemini/utils/permissionHandler.ts
17783
+ A cli/src/utils/BasePermissionHandler.allowlist.test.ts
17784
+ M cli/src/utils/BasePermissionHandler.ts
17785
+ A cli/src/utils/permissionToolIdentifier.test.ts
17786
+ A cli/src/utils/permissionToolIdentifier.ts
17787
+ A cli/src/utils/shellCommandAllowlist.ts
17788
+ ```
17789
+
17790
+ ### Diffstat
17791
+
17792
+ ```text
17793
+ cli/src/codex/utils/permissionHandler.ts | 16 +-
17794
+ cli/src/gemini/utils/permissionHandler.ts | 44 +++---
17795
+ .../utils/BasePermissionHandler.allowlist.test.ts | 83 ++++++++++
17796
+ cli/src/utils/BasePermissionHandler.ts | 108 ++++++++++++-
17797
+ cli/src/utils/permissionToolIdentifier.test.ts | 59 +++++++
17798
+ cli/src/utils/permissionToolIdentifier.ts | 121 ++++++++++++++
17799
+ cli/src/utils/shellCommandAllowlist.ts | 173 +++++++++++++++++++++
17800
+ 7 files changed, 576 insertions(+), 28 deletions(-)
17801
+ ```
17802
+
17803
+ ### Notes / Follow-ups
17804
+
17805
+ - Manual review: required before squashing/reordering.
17806
+
17807
+ ---
17808
+
17809
+ ## 253 2026-01-25 caf5adfe3449
17810
+
17811
+ - SHA: caf5adfe344919984e46a0eabc0fa570601fcd65
17812
+ - Subject: cli(claude): support AskUserQuestion answers + ExitPlanMode negotiation
17813
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
17814
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
17815
+ - CommitDate: 2026-01-25
17816
+ - Files changed: 10
17817
+ - Lines: +242 / -217
17818
+ - Touched areas: cli(10)
17819
+ - Topic bucket: `claude`
17820
+ - Manual review needed: NO
17821
+
17822
+ ### Commit Message Body
17823
+
17824
+ ```text
17825
+ - Routes AskUserQuestion responses through the permission decision path
17826
+ - Implements ExitPlanMode semantics via permission handler, with regression tests
17827
+ - Removes legacy prompt/interaction respond helpers no longer used
17828
+ ```
17829
+
17830
+ ### Files (name-status)
17831
+
17832
+ ```text
17833
+ M cli/src/claude/claudeRemoteLauncher.test.ts
17834
+ M cli/src/claude/claudeRemoteLauncher.ts
17835
+ D cli/src/claude/sdk/prompts.ts
17836
+ M cli/src/claude/sdk/types.ts
17837
+ M cli/src/claude/session.ts
17838
+ D cli/src/claude/utils/interactionRespond.test.ts
17839
+ D cli/src/claude/utils/interactionRespond.ts
17840
+ A cli/src/claude/utils/permissionHandler.exitPlanMode.test.ts
17841
+ M cli/src/claude/utils/permissionHandler.ts
17842
+ M cli/src/claude/utils/systemPrompt.ts
17843
+ ```
17844
+
17845
+ ### Diffstat
17846
+
17847
+ ```text
17848
+ cli/src/claude/claudeRemoteLauncher.test.ts | 2 +-
17849
+ cli/src/claude/claudeRemoteLauncher.ts | 107 +-------------
17850
+ cli/src/claude/sdk/prompts.ts | 2 -
17851
+ cli/src/claude/sdk/types.ts | 11 +-
17852
+ cli/src/claude/session.ts | 4 -
17853
+ cli/src/claude/utils/interactionRespond.test.ts | 29 ----
17854
+ cli/src/claude/utils/interactionRespond.ts | 28 ----
17855
+ .../utils/permissionHandler.exitPlanMode.test.ts | 113 +++++++++++++++
17856
+ cli/src/claude/utils/permissionHandler.ts | 156 +++++++++++++++------
17857
+ cli/src/claude/utils/systemPrompt.ts | 7 +-
17858
+ 10 files changed, 242 insertions(+), 217 deletions(-)
17859
+ ```
17860
+
17861
+ ### Notes / Follow-ups
17862
+
17863
+ - Manual review: required before squashing/reordering.
17864
+
17865
+ ---
17866
+
17867
+ ## 254 2026-01-25 011a3602411f
17868
+
17869
+ - SHA: 011a3602411f2cc0f0f5affff31d2c1226a9dc5e
17870
+ - Subject: cli(api): observe self-broadcasts for pending-queue; add tool tracing
17871
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
17872
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
17873
+ - CommitDate: 2026-01-25
17874
+ - Files changed: 6
17875
+ - Lines: +1299 / -114
17876
+ - Touched areas: cli(6)
17877
+ - Topic bucket: `queue`
17878
+ - Manual review needed: YES
17879
+
17880
+ ### Commit Message Body
17881
+
17882
+ ```text
17883
+ - Treats self-broadcasts as pending-queue signals to improve UI reliability
17884
+ - Adds transcript recovery behavior in apiSession
17885
+ - Introduces JSONL tool tracing (writer + unit tests)
17886
+ ```
17887
+
17888
+ ### Files (name-status)
17889
+
17890
+ ```text
17891
+ M cli/src/api/apiSession.test.ts
17892
+ M cli/src/api/apiSession.ts
17893
+ A cli/src/toolTrace/toolTrace.test.ts
17894
+ A cli/src/toolTrace/toolTrace.ts
17895
+ M cli/src/utils/MessageQueue2.ts
17896
+ M cli/src/utils/waitForMessagesOrPending.ts
17897
+ ```
17898
+
17899
+ ### Diffstat
17900
+
17901
+ ```text
17902
+ cli/src/api/apiSession.test.ts | 592 +++++++++++++++++++++++++---
17903
+ cli/src/api/apiSession.ts | 619 +++++++++++++++++++++++++++---
17904
+ cli/src/toolTrace/toolTrace.test.ts | 76 ++++
17905
+ cli/src/toolTrace/toolTrace.ts | 103 +++++
17906
+ cli/src/utils/MessageQueue2.ts | 21 +-
17907
+ cli/src/utils/waitForMessagesOrPending.ts | 2 +-
17908
+ 6 files changed, 1299 insertions(+), 114 deletions(-)
17909
+ ```
17910
+
17911
+ ### Notes / Follow-ups
17912
+
17913
+ - Manual review: required before squashing/reordering.
17914
+
17915
+ ---
17916
+
17917
+ ## 255 2026-01-25 809d2bb385e0
17918
+
17919
+ - SHA: 809d2bb385e086b568f20171757b83ecffa39635
17920
+ - Subject: cli(tool-trace): add fixture extraction + CLI script
17921
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
17922
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
17923
+ - CommitDate: 2026-01-25
17924
+ - Files changed: 4
17925
+ - Lines: +205 / -0
17926
+ - Touched areas: cli(4)
17927
+ - Topic bucket: `tools`
17928
+ - Manual review needed: NO
17929
+
17930
+ ### Commit Message Body
17931
+
17932
+ ```text
17933
+ - Adds a small JSONL -> fixtures extractor (with truncation/sanitization)
17934
+ - Adds a tsx script and npm script for local fixture generation
17935
+ ```
17936
+
17937
+ ### Files (name-status)
17938
+
17939
+ ```text
17940
+ M cli/package.json
17941
+ A cli/scripts/tool-trace-extract.ts
17942
+ A cli/src/toolTrace/extractToolTraceFixtures.test.ts
17943
+ A cli/src/toolTrace/extractToolTraceFixtures.ts
17944
+ ```
17945
+
17946
+ ### Diffstat
17947
+
17948
+ ```text
17949
+ cli/package.json | 1 +
17950
+ cli/scripts/tool-trace-extract.ts | 53 +++++++++++
17951
+ cli/src/toolTrace/extractToolTraceFixtures.test.ts | 48 ++++++++++
17952
+ cli/src/toolTrace/extractToolTraceFixtures.ts | 103 +++++++++++++++++++++
17953
+ 4 files changed, 205 insertions(+)
17954
+ ```
17955
+
17956
+ ### Notes / Follow-ups
17957
+
17958
+ - Manual review: required before squashing/reordering.
17959
+
17960
+ ---
17961
+
17962
+ ## 256 2026-01-25 553781556305
17963
+
17964
+ - SHA: 5537815563059192774839feca13768250362b79
17965
+ - Subject: cli(auth): add --no-open to skip browser open
17966
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
17967
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
17968
+ - CommitDate: 2026-01-25
17969
+ - Files changed: 4
17970
+ - Lines: +68 / -9
17971
+ - Touched areas: cli(4)
17972
+ - Topic bucket: `auth`
17973
+ - Manual review needed: NO
17974
+
17975
+ ### Commit Message Body
17976
+
17977
+ ```text
17978
+ - Adds --no-open (and compat aliases) to happy auth login
17979
+ - Threads HAPPY_NO_BROWSER_OPEN through auth UI and openBrowser
17980
+ - Adds a unit test to ensure browser open is skipped when the env is set
17981
+ ```
17982
+
17983
+ ### Files (name-status)
17984
+
17985
+ ```text
17986
+ M cli/src/commands/auth.ts
17987
+ M cli/src/ui/auth.ts
17988
+ A cli/src/utils/browser.test.ts
17989
+ M cli/src/utils/browser.ts
17990
+ ```
17991
+
17992
+ ### Diffstat
17993
+
17994
+ ```text
17995
+ cli/src/commands/auth.ts | 9 ++++++++-
17996
+ cli/src/ui/auth.ts | 23 +++++++++++++++--------
17997
+ cli/src/utils/browser.test.ts | 39 +++++++++++++++++++++++++++++++++++++++
17998
+ cli/src/utils/browser.ts | 6 ++++++
17999
+ 4 files changed, 68 insertions(+), 9 deletions(-)
18000
+ ```
18001
+
18002
+ ### Notes / Follow-ups
18003
+
18004
+ - Manual review: required before squashing/reordering.
18005
+
18006
+ ---
18007
+
18008
+ ## 257 2026-01-25 5955ea5c21a3
18009
+
18010
+ - SHA: 5955ea5c21a3da320b37b4dd9557d73bdd295ab8
18011
+ - Subject: cli(daemon): idempotent resume + attach files + shutdown policy
18012
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
18013
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
18014
+ - CommitDate: 2026-01-25
18015
+ - Files changed: 22
18016
+ - Lines: +1333 / -397
18017
+ - Touched areas: cli(22)
18018
+ - Topic bucket: `daemon`
18019
+ - Manual review needed: YES
18020
+
18021
+ ### Commit Message Body
18022
+
18023
+ ```text
18024
+ - Ensures resume requests are idempotent (avoid duplicate processes)
18025
+ - Adds session attach files and startup metadata merge/update helpers
18026
+ - Adds shutdown watchdog policy and a non-interactive auth gating regression test
18027
+ ```
18028
+
18029
+ ### Files (name-status)
18030
+
18031
+ ```text
18032
+ M cli/src/api/apiMachine.spawnSession.test.ts
18033
+ M cli/src/api/apiMachine.ts
18034
+ M cli/src/claude/runClaude.ts
18035
+ A cli/src/daemon/findRunningTrackedSessionById.test.ts
18036
+ A cli/src/daemon/findRunningTrackedSessionById.ts
18037
+ D cli/src/daemon/persistedHappySession.ts
18038
+ A cli/src/daemon/run.noninteractiveAuth.test.ts
18039
+ M cli/src/daemon/run.ts
18040
+ A cli/src/daemon/sessionAttachFile.test.ts
18041
+ A cli/src/daemon/sessionAttachFile.ts
18042
+ A cli/src/daemon/shutdownPolicy.test.ts
18043
+ A cli/src/daemon/shutdownPolicy.ts
18044
+ M cli/src/daemon/types.ts
18045
+ M cli/src/utils/createSessionMetadata.ts
18046
+ A cli/src/utils/sessionAttach.test.ts
18047
+ A cli/src/utils/sessionAttach.ts
18048
+ A cli/src/utils/sessionStartup/createBaseSessionForAttach.ts
18049
+ A cli/src/utils/sessionStartup/mergeSessionMetadataForStartup.test.ts
18050
+ A cli/src/utils/sessionStartup/mergeSessionMetadataForStartup.ts
18051
+ A cli/src/utils/sessionStartup/startupMetadataUpdate.test.ts
18052
+ A cli/src/utils/sessionStartup/startupMetadataUpdate.ts
18053
+ A cli/src/utils/sessionStartup/startupSideEffects.ts
18054
+ ```
18055
+
18056
+ ### Diffstat
18057
+
18058
+ ```text
18059
+ cli/src/api/apiMachine.spawnSession.test.ts | 55 ++
18060
+ cli/src/api/apiMachine.ts | 61 ++-
18061
+ cli/src/claude/runClaude.ts | 120 ++---
18062
+ .../daemon/findRunningTrackedSessionById.test.ts | 53 ++
18063
+ cli/src/daemon/findRunningTrackedSessionById.ts | 30 ++
18064
+ cli/src/daemon/persistedHappySession.ts | 112 ----
18065
+ cli/src/daemon/run.noninteractiveAuth.test.ts | 62 +++
18066
+ cli/src/daemon/run.ts | 598 ++++++++++++++-------
18067
+ cli/src/daemon/sessionAttachFile.test.ts | 71 +++
18068
+ cli/src/daemon/sessionAttachFile.ts | 55 ++
18069
+ cli/src/daemon/shutdownPolicy.test.ts | 20 +
18070
+ cli/src/daemon/shutdownPolicy.ts | 13 +
18071
+ cli/src/daemon/types.ts | 4 +-
18072
+ cli/src/utils/createSessionMetadata.ts | 6 +-
18073
+ cli/src/utils/sessionAttach.test.ts | 38 ++
18074
+ cli/src/utils/sessionAttach.ts | 58 ++
18075
+ .../sessionStartup/createBaseSessionForAttach.ts | 30 ++
18076
+ .../mergeSessionMetadataForStartup.test.ts | 92 ++++
18077
+ .../mergeSessionMetadataForStartup.ts | 106 ++++
18078
+ .../sessionStartup/startupMetadataUpdate.test.ts | 47 ++
18079
+ .../utils/sessionStartup/startupMetadataUpdate.ts | 37 ++
18080
+ cli/src/utils/sessionStartup/startupSideEffects.ts | 62 +++
18081
+ 22 files changed, 1333 insertions(+), 397 deletions(-)
18082
+ ```
18083
+
18084
+ ### Notes / Follow-ups
18085
+
18086
+ - Manual review: required before squashing/reordering.
18087
+
18088
+ ---
18089
+
18090
+ ## 258 2026-01-25 cce05b18a5d7
18091
+
18092
+ - SHA: cce05b18a5d73223cb74899e44c1709301efff2e
18093
+ - Subject: cli(agents): wire ACP agents into factory/transport registry
18094
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
18095
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
18096
+ - CommitDate: 2026-01-25
18097
+ - Files changed: 4
18098
+ - Lines: +18 / -5
18099
+ - Touched areas: cli(4)
18100
+ - Topic bucket: `acp`
18101
+ - Manual review needed: NO
18102
+
18103
+ ### Commit Message Body
18104
+
18105
+ ```text
18106
+ - Exposes Codex ACP + OpenCode factories from the agent factory index
18107
+ - Registers OpenCode agent during initializeAgents
18108
+ - Exports OpenCode transport from the transport handler registry
18109
+ ```
18110
+
18111
+ ### Files (name-status)
18112
+
18113
+ ```text
18114
+ M cli/src/agent/factories/index.ts
18115
+ M cli/src/agent/index.ts
18116
+ M cli/src/agent/transport/handlers/index.ts
18117
+ M cli/src/agent/transport/index.ts
18118
+ ```
18119
+
18120
+ ### Diffstat
18121
+
18122
+ ```text
18123
+ cli/src/agent/factories/index.ts | 15 ++++++++++++++-
18124
+ cli/src/agent/index.ts | 3 ++-
18125
+ cli/src/agent/transport/handlers/index.ts | 2 +-
18126
+ cli/src/agent/transport/index.ts | 3 +--
18127
+ 4 files changed, 18 insertions(+), 5 deletions(-)
18128
+ ```
18129
+
18130
+ ### Notes / Follow-ups
18131
+
18132
+ - Manual review: required before squashing/reordering.
18133
+
18134
+ ---
18135
+
18136
+ ## 259 2026-01-25 27bb2523f690
18137
+
18138
+ - SHA: 27bb2523f690614db4d6a4fbce42cb02ff328b5d
18139
+ - Subject: cli(opencode): add OpenCode ACP agent runtime
18140
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
18141
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
18142
+ - CommitDate: 2026-01-25
18143
+ - Files changed: 11
18144
+ - Lines: +1276 / -0
18145
+ - Touched areas: cli(11)
18146
+ - Topic bucket: `acp`
18147
+ - Manual review needed: YES
18148
+
18149
+ ### Commit Message Body
18150
+
18151
+ ```text
18152
+ - Adds OpenCode ACP runtime and transport handler
18153
+ - Adds permission handler + session id helpers for OpenCode
18154
+ - Includes focused unit tests for transport and OpenCode helpers
18155
+ ```
18156
+
18157
+ ### Files (name-status)
18158
+
18159
+ ```text
18160
+ A cli/src/agent/factories/opencode.ts
18161
+ A cli/src/agent/transport/handlers/OpenCodeTransport.test.ts
18162
+ A cli/src/agent/transport/handlers/OpenCodeTransport.ts
18163
+ A cli/src/opencode/acp/openCodeAcpRuntime.ts
18164
+ A cli/src/opencode/runOpenCode.ts
18165
+ A cli/src/opencode/utils/opencodeSessionIdMetadata.test.ts
18166
+ A cli/src/opencode/utils/opencodeSessionIdMetadata.ts
18167
+ A cli/src/opencode/utils/permissionHandler.test.ts
18168
+ A cli/src/opencode/utils/permissionHandler.ts
18169
+ A cli/src/opencode/utils/waitForNextOpenCodeMessage.test.ts
18170
+ A cli/src/opencode/utils/waitForNextOpenCodeMessage.ts
18171
+ ```
18172
+
18173
+ ### Diffstat
18174
+
18175
+ ```text
18176
+ cli/src/agent/factories/opencode.ts | 55 ++++
18177
+ .../transport/handlers/OpenCodeTransport.test.ts | 64 ++++
18178
+ .../agent/transport/handlers/OpenCodeTransport.ts | 250 ++++++++++++++
18179
+ cli/src/opencode/acp/openCodeAcpRuntime.ts | 272 ++++++++++++++++
18180
+ cli/src/opencode/runOpenCode.ts | 358 +++++++++++++++++++++
18181
+ .../utils/opencodeSessionIdMetadata.test.ts | 56 ++++
18182
+ .../opencode/utils/opencodeSessionIdMetadata.ts | 21 ++
18183
+ cli/src/opencode/utils/permissionHandler.test.ts | 24 ++
18184
+ cli/src/opencode/utils/permissionHandler.ts | 115 +++++++
18185
+ .../utils/waitForNextOpenCodeMessage.test.ts | 42 +++
18186
+ .../opencode/utils/waitForNextOpenCodeMessage.ts | 19 ++
18187
+ 11 files changed, 1276 insertions(+)
18188
+ ```
18189
+
18190
+ ### Notes / Follow-ups
18191
+
18192
+ - Manual review: required before squashing/reordering.
18193
+
18194
+ ---
18195
+
18196
+ ## 260 2026-01-25 abe1cf8ed370
18197
+
18198
+ - SHA: abe1cf8ed37061422ee5db65a004e27deeed379b
18199
+ - Subject: cli(codex-acp): add runtime + capability gating
18200
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
18201
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
18202
+ - CommitDate: 2026-01-25
18203
+ - Files changed: 24
18204
+ - Lines: +1513 / -343
18205
+ - Touched areas: cli(24)
18206
+ - Topic bucket: `acp`
18207
+ - Manual review needed: YES
18208
+
18209
+ ### Commit Message Body
18210
+
18211
+ ```text
18212
+ - Adds Codex ACP runtime + command resolution and session-id helpers
18213
+ - Extends capabilities framework for ACP probing and Codex ACP dependency checks
18214
+ - Updates API/metadata types to cover ACP session ids and capability flags
18215
+ ```
18216
+
18217
+ ### Files (name-status)
18218
+
18219
+ ```text
18220
+ A cli/src/agent/factories/codexAcp.ts
18221
+ M cli/src/api/types.ts
18222
+ A cli/src/codex/acp/codexAcpRuntime.ts
18223
+ A cli/src/codex/acp/resolveCodexAcpCommand.ts
18224
+ M cli/src/codex/codexMcpClient.ts
18225
+ M cli/src/codex/runCodex.ts
18226
+ M cli/src/codex/types.ts
18227
+ A cli/src/codex/utils/codexSessionIdMetadata.test.ts
18228
+ A cli/src/codex/utils/codexSessionIdMetadata.ts
18229
+ M cli/src/gemini/runGemini.ts
18230
+ A cli/src/modules/common/capabilities/caps/acpProbe.ts
18231
+ M cli/src/modules/common/capabilities/caps/cliCodex.ts
18232
+ M cli/src/modules/common/capabilities/caps/cliGemini.ts
18233
+ A cli/src/modules/common/capabilities/caps/cliOpenCode.ts
18234
+ A cli/src/modules/common/capabilities/caps/depCodexAcp.ts
18235
+ M cli/src/modules/common/capabilities/checklists.ts
18236
+ A cli/src/modules/common/capabilities/deps/codexAcp.ts
18237
+ M cli/src/modules/common/capabilities/registerCapabilitiesHandlers.ts
18238
+ M cli/src/modules/common/capabilities/snapshots/cliSnapshot.ts
18239
+ M cli/src/modules/common/capabilities/types.ts
18240
+ M cli/src/modules/common/registerCommonHandlers.capabilities.test.ts
18241
+ M cli/src/modules/common/registerCommonHandlers.ts
18242
+ M cli/src/utils/agentCapabilities.test.ts
18243
+ M cli/src/utils/agentCapabilities.ts
18244
+ ```
18245
+
18246
+ ### Diffstat
18247
+
18248
+ ```text
18249
+ cli/src/agent/factories/codexAcp.ts | 36 +++
18250
+ cli/src/api/types.ts | 27 +-
18251
+ cli/src/codex/acp/codexAcpRuntime.ts | 284 ++++++++++++++++++
18252
+ cli/src/codex/acp/resolveCodexAcpCommand.ts | 26 ++
18253
+ cli/src/codex/codexMcpClient.ts | 112 ++++---
18254
+ cli/src/codex/runCodex.ts | 322 +++++++++++----------
18255
+ cli/src/codex/types.ts | 5 +
18256
+ cli/src/codex/utils/codexSessionIdMetadata.test.ts | 56 ++++
18257
+ cli/src/codex/utils/codexSessionIdMetadata.ts | 21 ++
18258
+ cli/src/gemini/runGemini.ts | 311 ++++++++++++--------
18259
+ .../modules/common/capabilities/caps/acpProbe.ts | 207 +++++++++++++
18260
+ .../modules/common/capabilities/caps/cliCodex.ts | 39 ++-
18261
+ .../modules/common/capabilities/caps/cliGemini.ts | 29 +-
18262
+ .../common/capabilities/caps/cliOpenCode.ts | 37 +++
18263
+ .../common/capabilities/caps/depCodexAcp.ts | 37 +++
18264
+ cli/src/modules/common/capabilities/checklists.ts | 10 +-
18265
+ .../modules/common/capabilities/deps/codexAcp.ts | 180 ++++++++++++
18266
+ .../capabilities/registerCapabilitiesHandlers.ts | 5 +-
18267
+ .../common/capabilities/snapshots/cliSnapshot.ts | 27 +-
18268
+ cli/src/modules/common/capabilities/types.ts | 7 +-
18269
+ .../registerCommonHandlers.capabilities.test.ts | 19 +-
18270
+ cli/src/modules/common/registerCommonHandlers.ts | 27 +-
18271
+ cli/src/utils/agentCapabilities.test.ts | 14 +-
18272
+ cli/src/utils/agentCapabilities.ts | 18 +-
18273
+ 24 files changed, 1513 insertions(+), 343 deletions(-)
18274
+ ```
18275
+
18276
+ ### Notes / Follow-ups
18277
+
18278
+ - Manual review: required before squashing/reordering.
18279
+
18280
+ ---
18281
+
18282
+ ## 261 2026-01-25 d9100a80112b
18283
+
18284
+ - SHA: d9100a80112b304f64a8e1807747f1ac3ecefe79
18285
+ - Subject: cli(entry): refactor agent subcommands and startup flags
18286
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
18287
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
18288
+ - CommitDate: 2026-01-25
18289
+ - Files changed: 0
18290
+ - Lines: +138 / -114
18291
+ - Touched areas: cli(1)
18292
+ - Topic bucket: `acp`
18293
+ - Manual review needed: NO
18294
+
18295
+ ### Commit Message Body
18296
+
18297
+ ```text
18298
+ - Adds --permission-mode-updated-at parsing (for consistent session metadata)
18299
+ - Adds opencode command wiring and aligns codex/gemini argument parsing
18300
+ - Removes the legacy resume subcommand in favor of existing-session/resume flags
18301
+ ```
18302
+
18303
+ ### Files (name-status)
18304
+
18305
+ ```text
18306
+ M cli/src/index.ts
18307
+ ```
18308
+
18309
+ ### Diffstat
18310
+
18311
+ ```text
18312
+ cli/src/index.ts | 252 ++++++++++++++++++++++++++++++-------------------------
18313
+ 1 file changed, 138 insertions(+), 114 deletions(-)
18314
+ ```
18315
+
18316
+ ### Notes / Follow-ups
18317
+
18318
+ - Manual review: required before squashing/reordering.
18319
+
18320
+ ---
18321
+
18322
+ ## 262 2026-01-25 2edc5305ca3f
18323
+
18324
+ - SHA: 2edc5305ca3fa26cd148a5ad9f775fd9d1f4eb41
18325
+ - Subject: expo-app(test): harden vitest stubs + unistyles typing
18326
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
18327
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
18328
+ - CommitDate: 2026-01-25
18329
+ - Files changed: 6
18330
+ - Lines: +60 / -47
18331
+ - Touched areas: expo-app(5), root(1)
18332
+ - Topic bucket: `test`
18333
+ - Manual review needed: NO
18334
+
18335
+ ### Commit Message Body
18336
+
18337
+ ```text
18338
+ - Updates vitest config aliases/setup to improve node-test reliability
18339
+ - Improves unistyles typing/bootstrap and normalizes formatting
18340
+ - Adds RootLayout hook-order regression test and removes the old layout test location
18341
+ ```
18342
+
18343
+ ### Files (name-status)
18344
+
18345
+ ```text
18346
+ M expo-app/index.ts
18347
+ R097 expo-app/sources/app/(app)/_layout.test.ts expo-app/sources/__tests__/app/_layout.test.ts
18348
+ M expo-app/sources/dev/expoModulesCoreStub.ts
18349
+ M expo-app/sources/dev/reactNativeStub.ts
18350
+ M expo-app/sources/unistyles.ts
18351
+ M expo-app/vitest.config.ts
18352
+ ```
18353
+
18354
+ ### Diffstat
18355
+
18356
+ ```text
18357
+ expo-app/index.ts | 2 +-
18358
+ .../{app/(app) => __tests__/app}/_layout.test.ts | 3 +-
18359
+ expo-app/sources/dev/expoModulesCoreStub.ts | 10 ++++
18360
+ expo-app/sources/dev/reactNativeStub.ts | 4 ++
18361
+ expo-app/sources/unistyles.ts | 62 ++++++++++------------
18362
+ expo-app/vitest.config.ts | 26 +++++----
18363
+ 6 files changed, 60 insertions(+), 47 deletions(-)
18364
+ ```
18365
+
18366
+ ### Notes / Follow-ups
18367
+
18368
+ - Manual review: required before squashing/reordering.
18369
+
18370
+ ---
18371
+
18372
+ ## 263 2026-01-25 5575d7267cd0
18373
+
18374
+ - SHA: 5575d7267cd0dbd92d690b847bcf9e37fc9acd11
18375
+ - Subject: expo-app(tools): normalize tool inference + rendering inputs
18376
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
18377
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
18378
+ - CommitDate: 2026-01-25
18379
+ - Files changed: 10
18380
+ - Lines: +572 / -82
18381
+ - Touched areas: expo-app(10)
18382
+ - Topic bucket: `tools`
18383
+ - Manual review needed: NO
18384
+
18385
+ ### Commit Message Body
18386
+
18387
+ ```text
18388
+ - Adds shared tool-call normalization and parsing helpers
18389
+ - Improves tool name inference and permission summaries
18390
+ - Updates ToolView/ToolFullView to rely on normalized shapes
18391
+ ```
18392
+
18393
+ ### Files (name-status)
18394
+
18395
+ ```text
18396
+ M expo-app/sources/components/tools/ToolFullView.tsx
18397
+ M expo-app/sources/components/tools/ToolView.tsx
18398
+ M expo-app/sources/components/tools/knownTools.tsx
18399
+ A expo-app/sources/components/tools/utils/normalizeToolCallForRendering.ts
18400
+ A expo-app/sources/components/tools/utils/parseJson.ts
18401
+ A expo-app/sources/components/tools/utils/parseParenIdentifier.ts
18402
+ A expo-app/sources/components/tools/utils/permissionSummary.ts
18403
+ A expo-app/sources/components/tools/utils/shellCommand.ts
18404
+ A expo-app/sources/components/tools/utils/stdStreams.ts
18405
+ A expo-app/sources/components/tools/utils/toolNameInference.ts
18406
+ ```
18407
+
18408
+ ### Diffstat
18409
+
18410
+ ```text
18411
+ expo-app/sources/components/tools/ToolFullView.tsx | 92 ++++++++++++-----
18412
+ expo-app/sources/components/tools/ToolView.tsx | 110 ++++++++++++++-------
18413
+ expo-app/sources/components/tools/knownTools.tsx | 94 +++++++++++++-----
18414
+ .../tools/utils/normalizeToolCallForRendering.ts | 73 ++++++++++++++
18415
+ .../sources/components/tools/utils/parseJson.ts | 13 +++
18416
+ .../components/tools/utils/parseParenIdentifier.ts | 8 ++
18417
+ .../components/tools/utils/permissionSummary.ts | 81 +++++++++++++++
18418
+ .../sources/components/tools/utils/shellCommand.ts | 76 ++++++++++++++
18419
+ .../sources/components/tools/utils/stdStreams.ts | 27 +++++
18420
+ .../components/tools/utils/toolNameInference.ts | 80 +++++++++++++++
18421
+ 10 files changed, 572 insertions(+), 82 deletions(-)
18422
+ ```
18423
+
18424
+ ### Notes / Follow-ups
18425
+
18426
+ - Manual review: required before squashing/reordering.
18427
+
18428
+ ---
18429
+
18430
+ ## 264 2026-01-25 d115797fcdde
18431
+
18432
+ - SHA: d115797fcdde2decf50800d887f383d6024dde47
18433
+ - Subject: expo-app(tools): add specialized tool views + tests
18434
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
18435
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
18436
+ - CommitDate: 2026-01-25
18437
+ - Files changed: 40
18438
+ - Lines: +3566 / -185
18439
+ - Touched areas: expo-app(40)
18440
+ - Topic bucket: `tools`
18441
+ - Manual review needed: YES
18442
+
18443
+ ### Commit Message Body
18444
+
18445
+ ```text
18446
+ - Adds dedicated views for common tools (bash/read/grep/glob/web) and structured results
18447
+ - Improves permission UI flows (pending/abort/decision) and adds regression tests
18448
+ - Expands tool rendering test coverage for inference and fallback behavior
18449
+ ```
18450
+
18451
+ ### Files (name-status)
18452
+
18453
+ ```text
18454
+ A expo-app/sources/components/tools/PermissionFooter.codexDecision.test.tsx
18455
+ A expo-app/sources/components/tools/PermissionFooter.stopAbortsRun.test.tsx
18456
+ M expo-app/sources/components/tools/PermissionFooter.tsx
18457
+ A expo-app/sources/components/tools/ToolFullView.inference.test.ts
18458
+ A expo-app/sources/components/tools/ToolFullView.permissionPending.test.tsx
18459
+ A expo-app/sources/components/tools/ToolView.acpKindFallback.test.tsx
18460
+ A expo-app/sources/components/tools/ToolView.exitPlanMode.test.ts
18461
+ A expo-app/sources/components/tools/ToolView.minimalSpecificView.test.ts
18462
+ A expo-app/sources/components/tools/ToolView.minimalStructuredFallback.test.ts
18463
+ A expo-app/sources/components/tools/ToolView.permissionPending.test.tsx
18464
+ A expo-app/sources/components/tools/ToolView.runningStructuredFallback.test.ts
18465
+ A expo-app/sources/components/tools/utils/normalizeToolCallForRendering.test.ts
18466
+ A expo-app/sources/components/tools/utils/parseParenIdentifier.test.ts
18467
+ A expo-app/sources/components/tools/utils/permissionSummary.test.ts
18468
+ A expo-app/sources/components/tools/utils/shellCommand.test.ts
18469
+ A expo-app/sources/components/tools/utils/toolNameInference.test.ts
18470
+ A expo-app/sources/components/tools/views/AcpHistoryImportView.tsx
18471
+ M expo-app/sources/components/tools/views/AskUserQuestionView.test.ts
18472
+ M expo-app/sources/components/tools/views/AskUserQuestionView.tsx
18473
+ A expo-app/sources/components/tools/views/BashView.test.tsx
18474
+ M expo-app/sources/components/tools/views/BashView.tsx
18475
+ A expo-app/sources/components/tools/views/BashViewFull.test.ts
18476
+ M expo-app/sources/components/tools/views/BashViewFull.tsx
18477
+ A expo-app/sources/components/tools/views/CodeSearchView.tsx
18478
+ M expo-app/sources/components/tools/views/CodexBashView.tsx
18479
+ M expo-app/sources/components/tools/views/ExitPlanToolView.test.ts
18480
+ M expo-app/sources/components/tools/views/ExitPlanToolView.tsx
18481
+ A expo-app/sources/components/tools/views/GeminiExecuteView.test.ts
18482
+ M expo-app/sources/components/tools/views/GeminiExecuteView.tsx
18483
+ A expo-app/sources/components/tools/views/GlobView.tsx
18484
+ A expo-app/sources/components/tools/views/GrepView.tsx
18485
+ A expo-app/sources/components/tools/views/ReadView.tsx
18486
+ A expo-app/sources/components/tools/views/ReasoningView.test.tsx
18487
+ A expo-app/sources/components/tools/views/ReasoningView.tsx
18488
+ A expo-app/sources/components/tools/views/StructuredResultView.tsx
18489
+ A expo-app/sources/components/tools/views/TodoView.test.tsx
18490
+ M expo-app/sources/components/tools/views/TodoView.tsx
18491
+ A expo-app/sources/components/tools/views/WebFetchView.tsx
18492
+ A expo-app/sources/components/tools/views/WebSearchView.tsx
18493
+ M expo-app/sources/components/tools/views/_all.tsx
18494
+ ```
18495
+
18496
+ ### Diffstat
18497
+
18498
+ ```text
18499
+ .../tools/PermissionFooter.codexDecision.test.tsx | 117 ++++++++
18500
+ .../tools/PermissionFooter.stopAbortsRun.test.tsx | 96 ++++++
18501
+ .../sources/components/tools/PermissionFooter.tsx | 324 ++++++++++++++++++---
18502
+ .../tools/ToolFullView.inference.test.ts | 134 +++++++++
18503
+ .../tools/ToolFullView.permissionPending.test.tsx | 81 ++++++
18504
+ .../tools/ToolView.acpKindFallback.test.tsx | 114 ++++++++
18505
+ .../components/tools/ToolView.exitPlanMode.test.ts | 137 +++++++++
18506
+ .../tools/ToolView.minimalSpecificView.test.ts | 111 +++++++
18507
+ .../ToolView.minimalStructuredFallback.test.ts | 144 +++++++++
18508
+ .../tools/ToolView.permissionPending.test.tsx | 169 +++++++++++
18509
+ .../ToolView.runningStructuredFallback.test.ts | 113 +++++++
18510
+ .../utils/normalizeToolCallForRendering.test.ts | 62 ++++
18511
+ .../tools/utils/parseParenIdentifier.test.ts | 14 +
18512
+ .../tools/utils/permissionSummary.test.ts | 29 ++
18513
+ .../components/tools/utils/shellCommand.test.ts | 19 ++
18514
+ .../tools/utils/toolNameInference.test.ts | 56 ++++
18515
+ .../tools/views/AcpHistoryImportView.tsx | 213 ++++++++++++++
18516
+ .../tools/views/AskUserQuestionView.test.ts | 30 +-
18517
+ .../components/tools/views/AskUserQuestionView.tsx | 64 ++--
18518
+ .../components/tools/views/BashView.test.tsx | 98 +++++++
18519
+ .../sources/components/tools/views/BashView.tsx | 42 +--
18520
+ .../components/tools/views/BashViewFull.test.ts | 80 +++++
18521
+ .../components/tools/views/BashViewFull.tsx | 48 +--
18522
+ .../components/tools/views/CodeSearchView.tsx | 117 ++++++++
18523
+ .../components/tools/views/CodexBashView.tsx | 30 +-
18524
+ .../tools/views/ExitPlanToolView.test.ts | 95 +++++-
18525
+ .../components/tools/views/ExitPlanToolView.tsx | 228 ++++++++++++---
18526
+ .../tools/views/GeminiExecuteView.test.ts | 105 +++++++
18527
+ .../components/tools/views/GeminiExecuteView.tsx | 46 ++-
18528
+ .../sources/components/tools/views/GlobView.tsx | 78 +++++
18529
+ .../sources/components/tools/views/GrepView.tsx | 114 ++++++++
18530
+ .../sources/components/tools/views/ReadView.tsx | 67 +++++
18531
+ .../components/tools/views/ReasoningView.test.tsx | 56 ++++
18532
+ .../components/tools/views/ReasoningView.tsx | 31 ++
18533
+ .../tools/views/StructuredResultView.tsx | 223 ++++++++++++++
18534
+ .../components/tools/views/TodoView.test.tsx | 47 +++
18535
+ .../sources/components/tools/views/TodoView.tsx | 25 +-
18536
+ .../components/tools/views/WebFetchView.tsx | 60 ++++
18537
+ .../components/tools/views/WebSearchView.tsx | 103 +++++++
18538
+ expo-app/sources/components/tools/views/_all.tsx | 31 +-
18539
+ 40 files changed, 3566 insertions(+), 185 deletions(-)
18540
+ ```
18541
+
18542
+ ### Notes / Follow-ups
18543
+
18544
+ - Manual review: required before squashing/reordering.
18545
+
18546
+ ---
18547
+
18548
+ ## 265 2026-01-25 23014814ea50
18549
+
18550
+ - SHA: 23014814ea50c8799864ed14572078719504ccf0
18551
+ - Subject: expo-app(agents): introduce agent registry + UI behavior helpers
18552
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
18553
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
18554
+ - CommitDate: 2026-01-25
18555
+ - Files changed: 17
18556
+ - Lines: +1526 / -0
18557
+ - Touched areas: expo-app(17)
18558
+ - Topic bucket: `agents`
18559
+ - Manual review needed: YES
18560
+
18561
+ ### Commit Message Body
18562
+
18563
+ ```text
18564
+ - Adds a typed agent registry (core + UI helpers)
18565
+ - Centralizes enabled-agent logic, CLI warnings, and resume capability option derivation
18566
+ - Includes tests for registry behavior and picker options
18567
+ ```
18568
+
18569
+ ### Files (name-status)
18570
+
18571
+ ```text
18572
+ A expo-app/sources/agents/acpRuntimeResume.ts
18573
+ A expo-app/sources/agents/agentPickerOptions.test.ts
18574
+ A expo-app/sources/agents/agentPickerOptions.ts
18575
+ A expo-app/sources/agents/cliWarnings.test.ts
18576
+ A expo-app/sources/agents/cliWarnings.ts
18577
+ A expo-app/sources/agents/enabled.test.ts
18578
+ A expo-app/sources/agents/enabled.ts
18579
+ A expo-app/sources/agents/permissionUiCopy.ts
18580
+ A expo-app/sources/agents/registryCore.test.ts
18581
+ A expo-app/sources/agents/registryCore.ts
18582
+ A expo-app/sources/agents/registryUi.ts
18583
+ A expo-app/sources/agents/registryUiBehavior.test.ts
18584
+ A expo-app/sources/agents/registryUiBehavior.ts
18585
+ A expo-app/sources/agents/resolve.test.ts
18586
+ A expo-app/sources/agents/resolve.ts
18587
+ A expo-app/sources/agents/useEnabledAgentIds.ts
18588
+ A expo-app/sources/agents/useResumeCapabilityOptions.ts
18589
+ ```
18590
+
18591
+ ### Diffstat
18592
+
18593
+ ```text
18594
+ expo-app/sources/agents/acpRuntimeResume.ts | 34 ++
18595
+ expo-app/sources/agents/agentPickerOptions.test.ts | 15 +
18596
+ expo-app/sources/agents/agentPickerOptions.ts | 22 ++
18597
+ expo-app/sources/agents/cliWarnings.test.ts | 36 ++
18598
+ expo-app/sources/agents/cliWarnings.ts | 54 +++
18599
+ expo-app/sources/agents/enabled.test.ts | 22 ++
18600
+ expo-app/sources/agents/enabled.ts | 22 ++
18601
+ expo-app/sources/agents/permissionUiCopy.ts | 36 ++
18602
+ expo-app/sources/agents/registryCore.test.ts | 34 ++
18603
+ expo-app/sources/agents/registryCore.ts | 382 ++++++++++++++++++++
18604
+ expo-app/sources/agents/registryUi.ts | 89 +++++
18605
+ expo-app/sources/agents/registryUiBehavior.test.ts | 281 +++++++++++++++
18606
+ expo-app/sources/agents/registryUiBehavior.ts | 388 +++++++++++++++++++++
18607
+ expo-app/sources/agents/resolve.test.ts | 17 +
18608
+ expo-app/sources/agents/resolve.ts | 27 ++
18609
+ expo-app/sources/agents/useEnabledAgentIds.ts | 16 +
18610
+ .../sources/agents/useResumeCapabilityOptions.ts | 51 +++
18611
+ 17 files changed, 1526 insertions(+)
18612
+ ```
18613
+
18614
+ ### Notes / Follow-ups
18615
+
18616
+ - Manual review: required before squashing/reordering.
18617
+
18618
+ ---
18619
+
18620
+ ## 266 2026-01-25 b142327f5e32
18621
+
18622
+ - SHA: b142327f5e328c3e8719f8c9a435cb4df93564b9
18623
+ - Subject: expo-app(sync): capabilities protocol + resume/pending-queue plumbing
18624
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
18625
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
18626
+ - CommitDate: 2026-01-25
18627
+ - Files changed: 59
18628
+ - Lines: +3568 / -481
18629
+ - Touched areas: expo-app(59)
18630
+ - Topic bucket: `capabilities`
18631
+ - Manual review needed: YES
18632
+
18633
+ ### Commit Message Body
18634
+
18635
+ ```text
18636
+ - Adds installable dependency registry and machine capability request protocol
18637
+ - Extends sync reducer/storage/types to support pending-queue + resume flows
18638
+ - Adds tests for capabilities parsing, permission defaults, and resume/pending logic
18639
+ ```
18640
+
18641
+ ### Files (name-status)
18642
+
18643
+ ```text
18644
+ A expo-app/sources/capabilities/codexAcpDep.test.ts
18645
+ A expo-app/sources/capabilities/codexAcpDep.ts
18646
+ A expo-app/sources/capabilities/codexMcpResume.test.ts
18647
+ A expo-app/sources/capabilities/codexMcpResume.ts
18648
+ A expo-app/sources/capabilities/installableDepsRegistry.test.ts
18649
+ A expo-app/sources/capabilities/installableDepsRegistry.ts
18650
+ A expo-app/sources/capabilities/requests.ts
18651
+ M expo-app/sources/hooks/useMachineCapabilitiesCache.hook.test.ts
18652
+ M expo-app/sources/hooks/useMachineCapabilitiesCache.ts
18653
+ M expo-app/sources/sync/apiGithub.test.ts
18654
+ M expo-app/sources/sync/apiServices.test.ts
18655
+ M expo-app/sources/sync/capabilitiesProtocol.ts
18656
+ A expo-app/sources/sync/messageQueueV1Pending.test.ts
18657
+ A expo-app/sources/sync/messageQueueV1Pending.ts
18658
+ A expo-app/sources/sync/modelOptions.test.ts
18659
+ M expo-app/sources/sync/modelOptions.ts
18660
+ A expo-app/sources/sync/ops.sessionAbort.test.ts
18661
+ M expo-app/sources/sync/ops.ts
18662
+ A expo-app/sources/sync/pendingQueueWake.test.ts
18663
+ A expo-app/sources/sync/pendingQueueWake.ts
18664
+ A expo-app/sources/sync/permissionDefaults.test.ts
18665
+ A expo-app/sources/sync/permissionDefaults.ts
18666
+ M expo-app/sources/sync/permissionMapping.test.ts
18667
+ M expo-app/sources/sync/permissionMapping.ts
18668
+ A expo-app/sources/sync/permissionModeOptions.test.ts
18669
+ M expo-app/sources/sync/permissionModeOptions.ts
18670
+ A expo-app/sources/sync/permissionModeOverride.test.ts
18671
+ A expo-app/sources/sync/permissionModeOverride.ts
18672
+ M expo-app/sources/sync/permissionTypes.test.ts
18673
+ M expo-app/sources/sync/permissionTypes.ts
18674
+ M expo-app/sources/sync/persistence.test.ts
18675
+ M expo-app/sources/sync/persistence.ts
18676
+ M expo-app/sources/sync/profileGrouping.test.ts
18677
+ M expo-app/sources/sync/profileGrouping.ts
18678
+ M expo-app/sources/sync/profileMutations.ts
18679
+ M expo-app/sources/sync/profileUtils.test.ts
18680
+ M expo-app/sources/sync/profileUtils.ts
18681
+ A expo-app/sources/sync/readStateV1.test.ts
18682
+ A expo-app/sources/sync/readStateV1.ts
18683
+ A expo-app/sources/sync/realtimeSessionSeq.test.ts
18684
+ A expo-app/sources/sync/realtimeSessionSeq.ts
18685
+ M expo-app/sources/sync/reducer/phase0-skipping.spec.ts
18686
+ M expo-app/sources/sync/reducer/reducer.spec.ts
18687
+ M expo-app/sources/sync/reducer/reducer.ts
18688
+ A expo-app/sources/sync/resumeSessionBase.test.ts
18689
+ A expo-app/sources/sync/resumeSessionBase.ts
18690
+ A expo-app/sources/sync/resumeSessionPayload.test.ts
18691
+ A expo-app/sources/sync/resumeSessionPayload.ts
18692
+ M expo-app/sources/sync/settings.spec.ts
18693
+ M expo-app/sources/sync/settings.ts
18694
+ M expo-app/sources/sync/spawnSessionPayload.ts
18695
+ M expo-app/sources/sync/storage.ts
18696
+ M expo-app/sources/sync/storageTypes.ts
18697
+ M expo-app/sources/sync/suggestionCommands.ts
18698
+ M expo-app/sources/sync/sync.ts
18699
+ M expo-app/sources/sync/typesRaw.spec.ts
18700
+ M expo-app/sources/sync/typesRaw.ts
18701
+ A expo-app/sources/sync/updateSessionMetadataWithRetry.test.ts
18702
+ A expo-app/sources/sync/updateSessionMetadataWithRetry.ts
18703
+ ```
18704
+
18705
+ ### Diffstat
18706
+
18707
+ ```text
18708
+ expo-app/sources/capabilities/codexAcpDep.test.ts | 155 ++++++++++++
18709
+ expo-app/sources/capabilities/codexAcpDep.ts | 88 +++++++
18710
+ .../sources/capabilities/codexMcpResume.test.ts | 155 ++++++++++++
18711
+ expo-app/sources/capabilities/codexMcpResume.ts | 88 +++++++
18712
+ .../capabilities/installableDepsRegistry.test.ts | 14 ++
18713
+ .../capabilities/installableDepsRegistry.ts | 130 ++++++++++
18714
+ expo-app/sources/capabilities/requests.ts | 32 +++
18715
+ .../hooks/useMachineCapabilitiesCache.hook.test.ts | 155 +++++++++++-
18716
+ .../sources/hooks/useMachineCapabilitiesCache.ts | 34 ++-
18717
+ expo-app/sources/sync/apiGithub.test.ts | 9 -
18718
+ expo-app/sources/sync/apiServices.test.ts | 10 -
18719
+ expo-app/sources/sync/capabilitiesProtocol.ts | 26 +-
18720
+ .../sources/sync/messageQueueV1Pending.test.ts | 113 +++++++++
18721
+ expo-app/sources/sync/messageQueueV1Pending.ts | 150 ++++++++++++
18722
+ expo-app/sources/sync/modelOptions.test.ts | 26 ++
18723
+ expo-app/sources/sync/modelOptions.ts | 60 +++--
18724
+ expo-app/sources/sync/ops.sessionAbort.test.ts | 51 ++++
18725
+ expo-app/sources/sync/ops.ts | 122 ++++++----
18726
+ expo-app/sources/sync/pendingQueueWake.test.ts | 193 +++++++++++++++
18727
+ expo-app/sources/sync/pendingQueueWake.ts | 52 ++++
18728
+ expo-app/sources/sync/permissionDefaults.test.ts | 35 +++
18729
+ expo-app/sources/sync/permissionDefaults.ts | 60 +++++
18730
+ expo-app/sources/sync/permissionMapping.test.ts | 5 +-
18731
+ expo-app/sources/sync/permissionMapping.ts | 6 +-
18732
+ .../sources/sync/permissionModeOptions.test.ts | 28 +++
18733
+ expo-app/sources/sync/permissionModeOptions.ts | 94 ++++---
18734
+ .../sources/sync/permissionModeOverride.test.ts | 48 ++++
18735
+ expo-app/sources/sync/permissionModeOverride.ts | 22 ++
18736
+ expo-app/sources/sync/permissionTypes.test.ts | 50 ++--
18737
+ expo-app/sources/sync/permissionTypes.ts | 20 +-
18738
+ expo-app/sources/sync/persistence.test.ts | 2 +-
18739
+ expo-app/sources/sync/persistence.ts | 32 +--
18740
+ expo-app/sources/sync/profileGrouping.test.ts | 30 +++
18741
+ expo-app/sources/sync/profileGrouping.ts | 19 +-
18742
+ expo-app/sources/sync/profileMutations.ts | 1 +
18743
+ expo-app/sources/sync/profileUtils.test.ts | 41 +++-
18744
+ expo-app/sources/sync/profileUtils.ts | 251 ++++++++++++++++---
18745
+ expo-app/sources/sync/readStateV1.test.ts | 42 ++++
18746
+ expo-app/sources/sync/readStateV1.ts | 46 ++++
18747
+ expo-app/sources/sync/realtimeSessionSeq.test.ts | 33 +++
18748
+ expo-app/sources/sync/realtimeSessionSeq.ts | 21 ++
18749
+ .../sources/sync/reducer/phase0-skipping.spec.ts | 61 +++++
18750
+ expo-app/sources/sync/reducer/reducer.spec.ts | 111 ++++++++-
18751
+ expo-app/sources/sync/reducer/reducer.ts | 270 +++++++++++++++++++--
18752
+ expo-app/sources/sync/resumeSessionBase.test.ts | 52 ++++
18753
+ expo-app/sources/sync/resumeSessionBase.ts | 43 ++++
18754
+ expo-app/sources/sync/resumeSessionPayload.test.ts | 23 ++
18755
+ expo-app/sources/sync/resumeSessionPayload.ts | 41 ++++
18756
+ expo-app/sources/sync/settings.spec.ts | 134 +++++-----
18757
+ expo-app/sources/sync/settings.ts | 100 ++++++--
18758
+ expo-app/sources/sync/spawnSessionPayload.ts | 21 +-
18759
+ expo-app/sources/sync/storage.ts | 4 +-
18760
+ expo-app/sources/sync/storageTypes.ts | 27 ++-
18761
+ expo-app/sources/sync/suggestionCommands.ts | 36 ++-
18762
+ expo-app/sources/sync/sync.ts | 242 ++++++++++--------
18763
+ expo-app/sources/sync/typesRaw.spec.ts | 99 +++++++-
18764
+ expo-app/sources/sync/typesRaw.ts | 58 ++++-
18765
+ .../sync/updateSessionMetadataWithRetry.test.ts | 81 +++++++
18766
+ .../sources/sync/updateSessionMetadataWithRetry.ts | 97 ++++++++
18767
+ 59 files changed, 3568 insertions(+), 481 deletions(-)
18768
+ ```
18769
+
18770
+ ### Notes / Follow-ups
18771
+
18772
+ - Manual review: required before squashing/reordering.
18773
+
18774
+ ---
18775
+
18776
+ ## 267 2026-01-25 552f517e9823
18777
+
18778
+ - SHA: 552f517e9823b56b4bbadbceb3acabb1c1d098ae
18779
+ - Subject: expo-app(ui): add InlineAddExpander; inline add for secrets/env vars
18780
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
18781
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
18782
+ - CommitDate: 2026-01-25
18783
+ - Files changed: 5
18784
+ - Lines: +504 / -121
18785
+ - Touched areas: expo-app(5)
18786
+ - Topic bucket: `secrets`
18787
+ - Manual review needed: NO
18788
+
18789
+ ### Commit Message Body
18790
+
18791
+ ```text
18792
+ - Introduces a reusable inline expander with Cancel/Save actions
18793
+ - Refactors EnvironmentVariablesList and SecretsList to add items inline (no modal)
18794
+ - Adds tests covering the new inline add flows
18795
+ ```
18796
+
18797
+ ### Files (name-status)
18798
+
18799
+ ```text
18800
+ M expo-app/sources/components/EnvironmentVariablesList.test.ts
18801
+ M expo-app/sources/components/EnvironmentVariablesList.tsx
18802
+ A expo-app/sources/components/InlineAddExpander.tsx
18803
+ A expo-app/sources/components/secrets/SecretsList.test.ts
18804
+ M expo-app/sources/components/secrets/SecretsList.tsx
18805
+ ```
18806
+
18807
+ ### Diffstat
18808
+
18809
+ ```text
18810
+ .../components/EnvironmentVariablesList.test.ts | 53 ++++++-
18811
+ .../components/EnvironmentVariablesList.tsx | 138 ++++++++----------
18812
+ expo-app/sources/components/InlineAddExpander.tsx | 143 +++++++++++++++++++
18813
+ .../sources/components/secrets/SecretsList.test.ts | 137 ++++++++++++++++++
18814
+ .../sources/components/secrets/SecretsList.tsx | 154 +++++++++++++++------
18815
+ 5 files changed, 504 insertions(+), 121 deletions(-)
18816
+ ```
18817
+
18818
+ ### Notes / Follow-ups
18819
+
18820
+ - Manual review: required before squashing/reordering.
18821
+
18822
+ ---
18823
+
18824
+ ## 268 2026-01-25 cbaf39a63c60
18825
+
18826
+ - SHA: cbaf39a63c60a674e2b13f71c63a92d43d29ffe2
18827
+ - Subject: expo-app(secret-requirement): add picker route + modularized modal
18828
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
18829
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
18830
+ - CommitDate: 2026-01-25
18831
+ - Files changed: 10
18832
+ - Lines: +1214 / -808
18833
+ - Touched areas: expo-app(10)
18834
+ - Topic bucket: `new-session`
18835
+ - Manual review needed: YES
18836
+
18837
+ ### Commit Message Body
18838
+
18839
+ ```text
18840
+ - Extracts SecretRequirementModal into a focused module and adds a full-screen picker route
18841
+ - Adds pure helpers for applying results and gating auto-prompt behavior (with tests)
18842
+ - Adjusts /new modal presentation + web CSS sizing to avoid hidden/stacked screens
18843
+ ```
18844
+
18845
+ ### Files (name-status)
18846
+
18847
+ ```text
18848
+ M expo-app/sources/app/(app)/_layout.tsx
18849
+ A expo-app/sources/app/(app)/new/pick/secret-requirement.tsx
18850
+ M expo-app/sources/components/SecretRequirementModal.tsx
18851
+ A expo-app/sources/components/secretRequirement/SecretRequirementModal.tsx
18852
+ A expo-app/sources/components/secretRequirement/SecretRequirementScreen.tsx
18853
+ M expo-app/sources/theme.css
18854
+ A expo-app/sources/utils/secretRequirementApply.test.ts
18855
+ A expo-app/sources/utils/secretRequirementApply.ts
18856
+ A expo-app/sources/utils/secretRequirementPromptEligibility.test.ts
18857
+ A expo-app/sources/utils/secretRequirementPromptEligibility.ts
18858
+ ```
18859
+
18860
+ ### Diffstat
18861
+
18862
+ ```text
18863
+ expo-app/sources/app/(app)/_layout.tsx | 22 +-
18864
+ .../app/(app)/new/pick/secret-requirement.tsx | 175 +++++
18865
+ .../sources/components/SecretRequirementModal.tsx | 804 +-------------------
18866
+ .../secretRequirement/SecretRequirementModal.tsx | 828 +++++++++++++++++++++
18867
+ .../secretRequirement/SecretRequirementScreen.tsx | 10 +
18868
+ expo-app/sources/theme.css | 5 +
18869
+ .../sources/utils/secretRequirementApply.test.ts | 59 ++
18870
+ expo-app/sources/utils/secretRequirementApply.ts | 70 ++
18871
+ .../secretRequirementPromptEligibility.test.ts | 18 +
18872
+ .../utils/secretRequirementPromptEligibility.ts | 31 +
18873
+ 10 files changed, 1214 insertions(+), 808 deletions(-)
18874
+ ```
18875
+
18876
+ ### Notes / Follow-ups
18877
+
18878
+ - Manual review: required before squashing/reordering.
18879
+
18880
+ ---
18881
+
18882
+ ## 269 2026-01-25 36641d906490
18883
+
18884
+ - SHA: 36641d90649053864c09916bcfbf383669f479c4
18885
+ - Subject: expo-app(session): capability-gated resume flows + pending queue UX
18886
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
18887
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
18888
+ - CommitDate: 2026-01-25
18889
+ - Files changed: 33
18890
+ - Lines: +2535 / -1307
18891
+ - Touched areas: expo-app(33)
18892
+ - Topic bucket: `resume`
18893
+ - Manual review needed: YES
18894
+
18895
+ ### Commit Message Body
18896
+
18897
+ ```text
18898
+ - Wires agent registry + machine capabilities into new-session and session resume flows
18899
+ - Adds pending message rendering and session notices for inactive/offline states
18900
+ - Adds supporting UI components/tests for CLI detection and capability preflight
18901
+ ```
18902
+
18903
+ ### Files (name-status)
18904
+
18905
+ ```text
18906
+ M expo-app/sources/-session/SessionView.tsx
18907
+ A expo-app/sources/-session/sessionResumeUi.test.ts
18908
+ A expo-app/sources/-session/sessionResumeUi.ts
18909
+ A expo-app/sources/__tests__/app/machine/machineDetails.capabilitiesRequestStability.test.ts
18910
+ M expo-app/sources/app/(app)/machine/[id].tsx
18911
+ M expo-app/sources/app/(app)/new/NewSessionWizard.tsx
18912
+ M expo-app/sources/app/(app)/new/index.tsx
18913
+ M expo-app/sources/app/(app)/new/pick/machine.tsx
18914
+ M expo-app/sources/app/(app)/new/pick/resume.tsx
18915
+ M expo-app/sources/app/(app)/session/[id]/info.tsx
18916
+ M expo-app/sources/app/(app)/session/[id]/message/[messageId].tsx
18917
+ M expo-app/sources/components/ChatFooter.tsx
18918
+ M expo-app/sources/components/ChatList.tsx
18919
+ A expo-app/sources/components/PendingUserTextMessageView.test.tsx
18920
+ A expo-app/sources/components/PendingUserTextMessageView.tsx
18921
+ A expo-app/sources/components/SessionNoticeBanner.tsx
18922
+ A expo-app/sources/components/agentInput/PathAndResumeRow.test.ts
18923
+ A expo-app/sources/components/agentInput/PathAndResumeRow.tsx
18924
+ A expo-app/sources/components/agentInput/ResumeChip.tsx
18925
+ A expo-app/sources/components/agentInput/actionBarLogic.test.ts
18926
+ A expo-app/sources/components/agentInput/actionBarLogic.ts
18927
+ A expo-app/sources/components/chatListItems.test.ts
18928
+ A expo-app/sources/components/chatListItems.ts
18929
+ A expo-app/sources/components/machine/DetectedClisList.errorSnapshot.test.ts
18930
+ M expo-app/sources/components/machine/DetectedClisList.tsx
18931
+ M expo-app/sources/components/machine/DetectedClisModal.tsx
18932
+ A expo-app/sources/components/machine/InstallableDepInstaller.tsx
18933
+ A expo-app/sources/components/navigation/HeaderTitleWithAction.tsx
18934
+ A expo-app/sources/components/newSession/CliNotDetectedBanner.tsx
18935
+ M expo-app/sources/components/newSession/MachineCliGlyphs.tsx
18936
+ M expo-app/sources/components/newSession/ProfileCompatibilityIcon.tsx
18937
+ A expo-app/sources/components/newSession/WizardSectionHeaderRow.test.ts
18938
+ M expo-app/sources/hooks/useCLIDetection.ts
18939
+ ```
18940
+
18941
+ ### Diffstat
18942
+
18943
+ ```text
18944
+ expo-app/sources/-session/SessionView.tsx | 234 ++++-
18945
+ expo-app/sources/-session/sessionResumeUi.test.ts | 54 ++
18946
+ expo-app/sources/-session/sessionResumeUi.ts | 40 +
18947
+ ...ineDetails.capabilitiesRequestStability.test.ts | 214 +++++
18948
+ expo-app/sources/app/(app)/machine/[id].tsx | 297 ++----
18949
+ .../sources/app/(app)/new/NewSessionWizard.tsx | 406 +-------
18950
+ expo-app/sources/app/(app)/new/index.tsx | 1004 ++++++++++----------
18951
+ expo-app/sources/app/(app)/new/pick/machine.tsx | 127 ++-
18952
+ expo-app/sources/app/(app)/new/pick/resume.tsx | 75 +-
18953
+ expo-app/sources/app/(app)/session/[id]/info.tsx | 63 +-
18954
+ .../app/(app)/session/[id]/message/[messageId].tsx | 8 +-
18955
+ expo-app/sources/components/ChatFooter.tsx | 20 +-
18956
+ expo-app/sources/components/ChatList.tsx | 52 +-
18957
+ .../components/PendingUserTextMessageView.test.tsx | 81 ++
18958
+ .../components/PendingUserTextMessageView.tsx | 102 ++
18959
+ .../sources/components/SessionNoticeBanner.tsx | 35 +
18960
+ .../components/agentInput/PathAndResumeRow.test.ts | 62 ++
18961
+ .../components/agentInput/PathAndResumeRow.tsx | 81 ++
18962
+ .../sources/components/agentInput/ResumeChip.tsx | 61 ++
18963
+ .../components/agentInput/actionBarLogic.test.ts | 39 +
18964
+ .../components/agentInput/actionBarLogic.ts | 34 +
18965
+ expo-app/sources/components/chatListItems.test.ts | 55 ++
18966
+ expo-app/sources/components/chatListItems.ts | 54 ++
18967
+ .../machine/DetectedClisList.errorSnapshot.test.ts | 65 ++
18968
+ .../components/machine/DetectedClisList.tsx | 35 +-
18969
+ .../components/machine/DetectedClisModal.tsx | 3 +-
18970
+ .../components/machine/InstallableDepInstaller.tsx | 203 ++++
18971
+ .../navigation/HeaderTitleWithAction.tsx | 65 ++
18972
+ .../components/newSession/CliNotDetectedBanner.tsx | 103 ++
18973
+ .../components/newSession/MachineCliGlyphs.tsx | 38 +-
18974
+ .../newSession/ProfileCompatibilityIcon.tsx | 32 +-
18975
+ .../newSession/WizardSectionHeaderRow.test.ts | 32 +
18976
+ expo-app/sources/hooks/useCLIDetection.ts | 68 +-
18977
+ 33 files changed, 2535 insertions(+), 1307 deletions(-)
18978
+ ```
18979
+
18980
+ ### Notes / Follow-ups
18981
+
18982
+ - Manual review: required before squashing/reordering.
18983
+
18984
+ ---
18985
+
18986
+ ## 270 2026-01-25 9a9d439e5499
18987
+
18988
+ - SHA: 9a9d439e54998316e64ab28bafc93f06025ff88b
18989
+ - Subject: expo-app(settings): wire agent registry into settings
18990
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
18991
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
18992
+ - CommitDate: 2026-01-25
18993
+ - Files changed: 2
18994
+ - Lines: +98 / -20
18995
+ - Touched areas: expo-app(2)
18996
+ - Topic bucket: `settings`
18997
+ - Manual review needed: NO
18998
+
18999
+ ### Commit Message Body
19000
+
19001
+ ```text
19002
+ - Updates settings screens to reflect agent registry defaults and available agents
19003
+ - Keeps session/account settings aligned with new permission/default behavior
19004
+ ```
19005
+
19006
+ ### Files (name-status)
19007
+
19008
+ ```text
19009
+ M expo-app/sources/app/(app)/settings/account.tsx
19010
+ M expo-app/sources/app/(app)/settings/session.tsx
19011
+ ```
19012
+
19013
+ ### Diffstat
19014
+
19015
+ ```text
19016
+ expo-app/sources/app/(app)/settings/account.tsx | 42 +++++++-------
19017
+ expo-app/sources/app/(app)/settings/session.tsx | 76 ++++++++++++++++++++++++-
19018
+ 2 files changed, 98 insertions(+), 20 deletions(-)
19019
+ ```
19020
+
19021
+ ### Notes / Follow-ups
19022
+
19023
+ - Manual review: required before squashing/reordering.
19024
+
19025
+ ---
19026
+
19027
+ ## 271 2026-01-25 67ceab362d6b
19028
+
19029
+ - SHA: 67ceab362d6bacce54ed360b59eda35404c2c570
19030
+ - Subject: expo-app(experiments): add inbox friends experiment gate
19031
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
19032
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
19033
+ - CommitDate: 2026-01-25
19034
+ - Files changed: 7
19035
+ - Lines: +62 / -2
19036
+ - Touched areas: expo-app(7)
19037
+ - Topic bucket: `inbox`
19038
+ - Manual review needed: NO
19039
+
19040
+ ### Commit Message Body
19041
+
19042
+ ```text
19043
+ - Adds an experiment flag and hooks for inbox/friends enablement
19044
+ - Updates inbox/friends routes to gate access and routing based on the experiment
19045
+ ```
19046
+
19047
+ ### Files (name-status)
19048
+
19049
+ ```text
19050
+ M expo-app/sources/app/(app)/friends/index.tsx
19051
+ M expo-app/sources/app/(app)/friends/search.tsx
19052
+ M expo-app/sources/app/(app)/inbox/index.tsx
19053
+ A expo-app/sources/experiments/inboxFriends.test.ts
19054
+ A expo-app/sources/experiments/inboxFriends.ts
19055
+ A expo-app/sources/hooks/useInboxFriendsEnabled.ts
19056
+ A expo-app/sources/hooks/useRequireInboxFriendsEnabled.ts
19057
+ ```
19058
+
19059
+ ### Diffstat
19060
+
19061
+ ```text
19062
+ expo-app/sources/app/(app)/friends/index.tsx | 6 +++++-
19063
+ expo-app/sources/app/(app)/friends/search.tsx | 4 ++++
19064
+ expo-app/sources/app/(app)/inbox/index.tsx | 6 +++++-
19065
+ expo-app/sources/experiments/inboxFriends.test.ts | 18 ++++++++++++++++++
19066
+ expo-app/sources/experiments/inboxFriends.ts | 4 ++++
19067
+ expo-app/sources/hooks/useInboxFriendsEnabled.ts | 10 ++++++++++
19068
+ .../sources/hooks/useRequireInboxFriendsEnabled.ts | 16 ++++++++++++++++
19069
+ 7 files changed, 62 insertions(+), 2 deletions(-)
19070
+ ```
19071
+
19072
+ ### Notes / Follow-ups
19073
+
19074
+ - Manual review: required before squashing/reordering.
19075
+
19076
+ ---
19077
+
19078
+ ## 272 2026-01-25 05b45b4f505d
19079
+
19080
+ - SHA: 05b45b4f505dd9da88501ea728c6c3897019ab5b
19081
+ - Subject: expo-app(settings): update features toggles for agents/inbox/codex
19082
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
19083
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
19084
+ - CommitDate: 2026-01-25
19085
+ - Files changed: 0
19086
+ - Lines: +76 / -12
19087
+ - Touched areas: expo-app(1)
19088
+ - Topic bucket: `settings`
19089
+ - Manual review needed: NO
19090
+
19091
+ ### Commit Message Body
19092
+
19093
+ ```text
19094
+ - Replaces expGemini toggle with agent-registry-backed experimental agent toggles
19095
+ - Adds inbox friends experiment toggle
19096
+ - Adds Codex ACP toggle and keeps Codex resume/acp mutually exclusive
19097
+ ```
19098
+
19099
+ ### Files (name-status)
19100
+
19101
+ ```text
19102
+ M expo-app/sources/app/(app)/settings/features.tsx
19103
+ ```
19104
+
19105
+ ### Diffstat
19106
+
19107
+ ```text
19108
+ expo-app/sources/app/(app)/settings/features.tsx | 88 ++++++++++++++++++++----
19109
+ 1 file changed, 76 insertions(+), 12 deletions(-)
19110
+ ```
19111
+
19112
+ ### Notes / Follow-ups
19113
+
19114
+ - Manual review: required before squashing/reordering.
19115
+
19116
+ ---
19117
+
19118
+ ## 273 2026-01-25 ec9225a8f935
19119
+
19120
+ - SHA: ec9225a8f93564a418e6e446cecf8d0f383fc510
19121
+ - Subject: expo-app(i18n): add device locale helpers + update translations
19122
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
19123
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
19124
+ - CommitDate: 2026-01-25
19125
+ - Files changed: 12
19126
+ - Lines: +553 / -119
19127
+ - Touched areas: expo-app(12)
19128
+ - Topic bucket: `i18n`
19129
+ - Manual review needed: NO
19130
+
19131
+ ### Commit Message Body
19132
+
19133
+ ```text
19134
+ - Adds device locale helpers for native and shared runtime
19135
+ - Updates translation dictionaries and text index wiring
19136
+ ```
19137
+
19138
+ ### Files (name-status)
19139
+
19140
+ ```text
19141
+ A expo-app/sources/text/deviceLocales.native.ts
19142
+ A expo-app/sources/text/deviceLocales.ts
19143
+ M expo-app/sources/text/index.ts
19144
+ M expo-app/sources/text/translations/ca.ts
19145
+ M expo-app/sources/text/translations/en.ts
19146
+ M expo-app/sources/text/translations/es.ts
19147
+ M expo-app/sources/text/translations/it.ts
19148
+ M expo-app/sources/text/translations/ja.ts
19149
+ M expo-app/sources/text/translations/pl.ts
19150
+ M expo-app/sources/text/translations/pt.ts
19151
+ M expo-app/sources/text/translations/ru.ts
19152
+ M expo-app/sources/text/translations/zh-Hans.ts
19153
+ ```
19154
+
19155
+ ### Diffstat
19156
+
19157
+ ```text
19158
+ expo-app/sources/text/deviceLocales.native.ts | 7 +++
19159
+ expo-app/sources/text/deviceLocales.ts | 49 ++++++++++++++++
19160
+ expo-app/sources/text/index.ts | 4 +-
19161
+ expo-app/sources/text/translations/ca.ts | 68 +++++++++++++++++-----
19162
+ expo-app/sources/text/translations/en.ts | 68 +++++++++++++++++-----
19163
+ expo-app/sources/text/translations/es.ts | 60 +++++++++++++++++---
19164
+ expo-app/sources/text/translations/it.ts | 48 +++++++++++++++-
19165
+ expo-app/sources/text/translations/ja.ts | 68 +++++++++++++++++-----
19166
+ expo-app/sources/text/translations/pl.ts | 68 +++++++++++++++++-----
19167
+ expo-app/sources/text/translations/pt.ts | 82 ++++++++++++++++++++-------
19168
+ expo-app/sources/text/translations/ru.ts | 68 +++++++++++++++++-----
19169
+ expo-app/sources/text/translations/zh-Hans.ts | 82 ++++++++++++++++++++-------
19170
+ 12 files changed, 553 insertions(+), 119 deletions(-)
19171
+ ```
19172
+
19173
+ ### Notes / Follow-ups
19174
+
19175
+ - Manual review: required before squashing/reordering.
19176
+
19177
+ ---
19178
+
19179
+ ## 274 2026-01-25 98b7138360ff
19180
+
19181
+ - SHA: 98b7138360ff2bade61c2a2f78e1ef1b11b3e320
19182
+ - Subject: expo-app(agents): align resume helpers + temp session data typing
19183
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
19184
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
19185
+ - CommitDate: 2026-01-25
19186
+ - Files changed: 3
19187
+ - Lines: +81 / -27
19188
+ - Touched areas: expo-app(3)
19189
+ - Topic bucket: `agents`
19190
+ - Manual review needed: NO
19191
+
19192
+ ### Commit Message Body
19193
+
19194
+ ```text
19195
+ - Refactors agent resume capability helpers to use the agent registry
19196
+ - Adds getAgentVendorResumeId for vendor resume id lookup
19197
+ - Types temp session data agentType as AgentId and adds regression tests
19198
+ ```
19199
+
19200
+ ### Files (name-status)
19201
+
19202
+ ```text
19203
+ A expo-app/sources/utils/agentCapabilities.test.ts
19204
+ M expo-app/sources/utils/agentCapabilities.ts
19205
+ M expo-app/sources/utils/tempDataStore.ts
19206
+ ```
19207
+
19208
+ ### Diffstat
19209
+
19210
+ ```text
19211
+ expo-app/sources/utils/agentCapabilities.test.ts | 38 ++++++++++++++
19212
+ expo-app/sources/utils/agentCapabilities.ts | 65 +++++++++++++++---------
19213
+ expo-app/sources/utils/tempDataStore.ts | 5 +-
19214
+ 3 files changed, 81 insertions(+), 27 deletions(-)
19215
+ ```
19216
+
19217
+ ### Notes / Follow-ups
19218
+
19219
+ - Manual review: required before squashing/reordering.
19220
+
19221
+ ---
19222
+
19223
+ ## 275 2026-01-25 63cda8b20882
19224
+
19225
+ - SHA: 63cda8b20882dde5746e9f007b0866a0e39c3134
19226
+ - Subject: expo-app(ui): add list/pending primitives and polish
19227
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
19228
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
19229
+ - CommitDate: 2026-01-25
19230
+ - Files changed: 31
19231
+ - Lines: +1610 / -670
19232
+ - Touched areas: expo-app(31)
19233
+ - Topic bucket: `list`
19234
+ - Manual review needed: YES
19235
+
19236
+ ### Commit Message Body
19237
+
19238
+ ```text
19239
+ - Adds reusable item-group row helpers and pending queue UI coverage
19240
+ - Refines list and settings components for more consistent layout/behavior
19241
+ - Updates profile list model helpers and adds targeted tests
19242
+ ```
19243
+
19244
+ ### Files (name-status)
19245
+
19246
+ ```text
19247
+ M expo-app/sources/components/AgentInput.tsx
19248
+ M expo-app/sources/components/Avatar.tsx
19249
+ M expo-app/sources/components/EnvironmentVariableCard.tsx
19250
+ M expo-app/sources/components/Item.tsx
19251
+ M expo-app/sources/components/ItemGroup.dividers.test.ts
19252
+ M expo-app/sources/components/ItemGroup.dividers.ts
19253
+ A expo-app/sources/components/ItemGroupRowPosition.tsx
19254
+ A expo-app/sources/components/ItemGroupTitleWithAction.test.ts
19255
+ A expo-app/sources/components/ItemGroupTitleWithAction.tsx
19256
+ M expo-app/sources/components/ItemList.tsx
19257
+ M expo-app/sources/components/MainView.tsx
19258
+ M expo-app/sources/components/MultiTextInput.tsx
19259
+ M expo-app/sources/components/PendingMessagesModal.test.ts
19260
+ M expo-app/sources/components/PendingMessagesModal.tsx
19261
+ A expo-app/sources/components/PendingQueueIndicator.test.ts
19262
+ M expo-app/sources/components/PendingQueueIndicator.tsx
19263
+ M expo-app/sources/components/Popover.test.ts
19264
+ M expo-app/sources/components/Popover.tsx
19265
+ M expo-app/sources/components/ProfileEditForm.tsx
19266
+ M expo-app/sources/components/SettingsView.tsx
19267
+ M expo-app/sources/components/SidebarView.tsx
19268
+ M expo-app/sources/components/TabBar.tsx
19269
+ M expo-app/sources/components/dropdown/DropdownMenu.tsx
19270
+ M expo-app/sources/components/dropdown/SelectableMenuResults.tsx
19271
+ A expo-app/sources/components/itemGroupRowCorners.test.ts
19272
+ A expo-app/sources/components/itemGroupRowCorners.ts
19273
+ M expo-app/sources/components/profiles/ProfilesList.tsx
19274
+ M expo-app/sources/components/profiles/profileListModel.test.ts
19275
+ M expo-app/sources/components/profiles/profileListModel.ts
19276
+ A expo-app/sources/utils/profileConfigRequirements.test.ts
19277
+ A expo-app/sources/utils/profileConfigRequirements.ts
19278
+ ```
19279
+
19280
+ ### Diffstat
19281
+
19282
+ ```text
19283
+ expo-app/sources/components/AgentInput.tsx | 372 +++++++++------------
19284
+ expo-app/sources/components/Avatar.tsx | 47 +--
19285
+ .../sources/components/EnvironmentVariableCard.tsx | 256 +++++++-------
19286
+ expo-app/sources/components/Item.tsx | 38 ++-
19287
+ .../sources/components/ItemGroup.dividers.test.ts | 6 +
19288
+ expo-app/sources/components/ItemGroup.dividers.ts | 9 +-
19289
+ .../sources/components/ItemGroupRowPosition.tsx | 36 ++
19290
+ .../components/ItemGroupTitleWithAction.test.ts | 42 +++
19291
+ .../components/ItemGroupTitleWithAction.tsx | 44 +++
19292
+ expo-app/sources/components/ItemList.tsx | 19 +-
19293
+ expo-app/sources/components/MainView.tsx | 24 +-
19294
+ expo-app/sources/components/MultiTextInput.tsx | 4 +-
19295
+ .../components/PendingMessagesModal.test.ts | 47 ++-
19296
+ .../sources/components/PendingMessagesModal.tsx | 24 +-
19297
+ .../components/PendingQueueIndicator.test.ts | 142 ++++++++
19298
+ .../sources/components/PendingQueueIndicator.tsx | 117 +++++--
19299
+ expo-app/sources/components/Popover.test.ts | 220 +++++++++++-
19300
+ expo-app/sources/components/Popover.tsx | 175 ++++++++--
19301
+ expo-app/sources/components/ProfileEditForm.tsx | 343 ++++++++++++-------
19302
+ expo-app/sources/components/SettingsView.tsx | 12 +-
19303
+ expo-app/sources/components/SidebarView.tsx | 70 ++--
19304
+ expo-app/sources/components/TabBar.tsx | 13 +-
19305
+ .../sources/components/dropdown/DropdownMenu.tsx | 8 +-
19306
+ .../components/dropdown/SelectableMenuResults.tsx | 13 +-
19307
+ .../sources/components/itemGroupRowCorners.test.ts | 33 ++
19308
+ expo-app/sources/components/itemGroupRowCorners.ts | 20 ++
19309
+ .../sources/components/profiles/ProfilesList.tsx | 23 +-
19310
+ .../components/profiles/profileListModel.test.ts | 29 +-
19311
+ .../components/profiles/profileListModel.ts | 36 +-
19312
+ .../utils/profileConfigRequirements.test.ts | 43 +++
19313
+ .../sources/utils/profileConfigRequirements.ts | 15 +
19314
+ 31 files changed, 1610 insertions(+), 670 deletions(-)
19315
+ ```
19316
+
19317
+ ### Notes / Follow-ups
19318
+
19319
+ - Manual review: required before squashing/reordering.
19320
+
19321
+ ---
19322
+
19323
+ ## 276 2026-01-25 10dca4ca7057
19324
+
19325
+ - SHA: 10dca4ca7057ad04c6d121110f7fd2f006a411bc
19326
+ - Subject: chore(expo): pin libsodium-wrappers and align patch-package dirs
19327
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
19328
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
19329
+ - CommitDate: 2026-01-25
19330
+ - Files changed: 5
19331
+ - Lines: +11 / -11
19332
+ - Touched areas: expo-app(3), root(1), yarn.lock(1)
19333
+ - Topic bucket: `expo`
19334
+ - Manual review needed: NO
19335
+
19336
+ ### Commit Message Body
19337
+
19338
+ ```text
19339
+ - Pins libsodium-wrappers to 0.7.15 to avoid patching 0.7.16
19340
+ - Moves expo-router patch to expo-app/patches and updates postinstall patch-package invocation
19341
+ - Updates yarn.lock to match dependency pin
19342
+ ```
19343
+
19344
+ ### Files (name-status)
19345
+
19346
+ ```text
19347
+ M expo-app/package.json
19348
+ R100 expo-app/patches-expo-app/expo-router+6.0.22.patch expo-app/patches/expo-router+6.0.22.patch
19349
+ D expo-app/patches/libsodium-wrappers+0.7.16.patch
19350
+ M expo-app/tools/postinstall.mjs
19351
+ M yarn.lock
19352
+ ```
19353
+
19354
+ ### Diffstat
19355
+
19356
+ ```text
19357
+ expo-app/package.json | 2 +-
19358
+ .../{patches-expo-app => patches}/expo-router+6.0.22.patch | 0
19359
+ expo-app/patches/libsodium-wrappers+0.7.16.patch | 7 -------
19360
+ expo-app/tools/postinstall.mjs | 2 +-
19361
+ yarn.lock | 11 +++++++++--
19362
+ 5 files changed, 11 insertions(+), 11 deletions(-)
19363
+ ```
19364
+
19365
+ ### Notes / Follow-ups
19366
+
19367
+ - Manual review: required before squashing/reordering.
19368
+
19369
+ ---
19370
+
19371
+ ## 277 2026-01-25 cfe2ecd3e626
19372
+
19373
+ - SHA: cfe2ecd3e626030ecf3f63b159fbba34d7a6ff8e
19374
+ - Subject: refactor: migrate StyleSheet imports to react-native-unistyles
19375
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
19376
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
19377
+ - CommitDate: 2026-01-25
19378
+ - Files changed: 23
19379
+ - Lines: +156 / -38
19380
+ - Touched areas: expo-app(23)
19381
+ - Topic bucket: `format`
19382
+ - Manual review needed: NO
19383
+
19384
+ ### Commit Message Body
19385
+
19386
+ ```text
19387
+ Replaces all StyleSheet imports from 'react-native' with imports from 'react-native-unistyles' across sources/. Adds a test to enforce the invariant. This improves consistency and leverages unistyles for styling.
19388
+ ```
19389
+
19390
+ ### Files (name-status)
19391
+
19392
+ ```text
19393
+ M expo-app/sources/app/(app)/dev/colors.tsx
19394
+ M expo-app/sources/app/(app)/dev/inverted-list.tsx
19395
+ M expo-app/sources/app/(app)/dev/modal-demo.tsx
19396
+ M expo-app/sources/app/(app)/dev/shimmer-demo.tsx
19397
+ M expo-app/sources/app/(app)/dev/tools2.tsx
19398
+ M expo-app/sources/app/(app)/dev/typography.tsx
19399
+ M expo-app/sources/components/ChatHeaderView.tsx
19400
+ M expo-app/sources/components/CommandPalette/CommandPalette.tsx
19401
+ M expo-app/sources/components/CommandPalette/CommandPaletteResults.tsx
19402
+ M expo-app/sources/components/CommandView.tsx
19403
+ M expo-app/sources/components/OverlayPortal.tsx
19404
+ M expo-app/sources/components/Popover.tsx
19405
+ M expo-app/sources/components/ShimmerView.tsx
19406
+ M expo-app/sources/components/VoiceAssistantStatusBar.tsx
19407
+ M expo-app/sources/components/tools/PermissionFooter.tsx
19408
+ M expo-app/sources/components/tools/ToolStatusIndicator.tsx
19409
+ M expo-app/sources/components/tools/views/BashViewFull.test.ts
19410
+ M expo-app/sources/components/tools/views/BashViewFull.tsx
19411
+ M expo-app/sources/components/tools/views/MultiEditView.tsx
19412
+ M expo-app/sources/components/tools/views/MultiEditViewFull.tsx
19413
+ M expo-app/sources/components/tools/views/TaskView.tsx
19414
+ A expo-app/sources/dev/unistylesStyleSheetImports.test.ts
19415
+ M expo-app/sources/modal/components/WebPromptModal.tsx
19416
+ ```
19417
+
19418
+ ### Diffstat
19419
+
19420
+ ```text
19421
+ expo-app/sources/app/(app)/dev/colors.tsx | 5 +-
19422
+ expo-app/sources/app/(app)/dev/inverted-list.tsx | 5 +-
19423
+ expo-app/sources/app/(app)/dev/modal-demo.tsx | 5 +-
19424
+ expo-app/sources/app/(app)/dev/shimmer-demo.tsx | 5 +-
19425
+ expo-app/sources/app/(app)/dev/tools2.tsx | 5 +-
19426
+ expo-app/sources/app/(app)/dev/typography.tsx | 5 +-
19427
+ expo-app/sources/components/ChatHeaderView.tsx | 6 +-
19428
+ .../components/CommandPalette/CommandPalette.tsx | 5 +-
19429
+ .../CommandPalette/CommandPaletteResults.tsx | 3 +-
19430
+ expo-app/sources/components/CommandView.tsx | 4 +-
19431
+ expo-app/sources/components/OverlayPortal.tsx | 3 +-
19432
+ expo-app/sources/components/Popover.tsx | 3 +-
19433
+ expo-app/sources/components/ShimmerView.tsx | 5 +-
19434
+ .../sources/components/VoiceAssistantStatusBar.tsx | 4 +-
19435
+ .../sources/components/tools/PermissionFooter.tsx | 4 +-
19436
+ .../components/tools/ToolStatusIndicator.tsx | 5 +-
19437
+ .../components/tools/views/BashViewFull.test.ts | 4 +
19438
+ .../components/tools/views/BashViewFull.tsx | 3 +-
19439
+ .../components/tools/views/MultiEditView.tsx | 5 +-
19440
+ .../components/tools/views/MultiEditViewFull.tsx | 3 +-
19441
+ .../sources/components/tools/views/TaskView.tsx | 4 +-
19442
+ .../sources/dev/unistylesStyleSheetImports.test.ts | 99 ++++++++++++++++++++++
19443
+ .../sources/modal/components/WebPromptModal.tsx | 4 +-
19444
+ 23 files changed, 156 insertions(+), 38 deletions(-)
19445
+ ```
19446
+
19447
+ ### Notes / Follow-ups
19448
+
19449
+ - Manual review: required before squashing/reordering.
19450
+
19451
+ ---
19452
+
19453
+ ## 278 2026-01-25 8aaacbfaac7a
19454
+
19455
+ - SHA: 8aaacbfaac7acb3b946c9e7bdd99ee6af5be3a62
19456
+ - Subject: docs: add Conventional Commits instructions
19457
+ - Author: Leeroy Brun <leeroy.brun@gmail.com>
19458
+ - Committer: Leeroy Brun <leeroy.brun@gmail.com>
19459
+ - CommitDate: 2026-01-25
19460
+ - Files changed: 1
19461
+ - Lines: +30 / -0
19462
+ - Touched areas: root(1)
19463
+ - Topic bucket: `dev`
19464
+ - Manual review needed: NO
19465
+
19466
+ ### Commit Message Body
19467
+
19468
+ ```text
19469
+ Introduce .github/copilot-commit-instructions.md to document the Conventional Commits specification and provide commit message guidelines for the repository.
19470
+ ```
19471
+
19472
+ ### Files (name-status)
19473
+
19474
+ ```text
19475
+ A .github/copilot-commit-instructions.md
19476
+ ```
19477
+
19478
+ ### Diffstat
19479
+
19480
+ ```text
19481
+ .github/copilot-commit-instructions.md | 30 ++++++++++++++++++++++++++++++
19482
+ 1 file changed, 30 insertions(+)
19483
+ ```
19484
+
19485
+ ### Notes / Follow-ups
19486
+
19487
+ - Manual review: required before squashing/reordering.
19488
+
19489
+ ---