happy-stacks 0.6.9 → 0.6.10
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.
|
@@ -45,7 +45,7 @@ Progress tracking (update manually while auditing):
|
|
|
45
45
|
- Next unreviewed commit: n/a (complete)
|
|
46
46
|
- Pass 2 full-diff verification markers: `249/249` (each `## NNN` has a `Pass2FullDiff:` line; patch artifacts under `/tmp/leeroy-wip-pass2/NNN.patch`)
|
|
47
47
|
- Pass 2 diff capture: `249/249` (`/tmp/leeroy-wip-pass2/NNN.patch` exists; hash/size recorded in each `Pass2FullDiff:` line)
|
|
48
|
-
- Pass 2 notes verification (manual): `
|
|
48
|
+
- Pass 2 notes verification (manual): `83/249` (this requires reading the patch and confirming/updating `### Manual Review Notes`)
|
|
49
49
|
|
|
50
50
|
Current state (2026-01-24):
|
|
51
51
|
|
|
@@ -2792,7 +2792,7 @@ Pass2FullDiff: CAPTURED at 2026-01-24T17:39:06+0100 sha=cd5771e50881 patchFile=/
|
|
|
2792
2792
|
---
|
|
2793
2793
|
|
|
2794
2794
|
## 079 2026-01-12 456e2ad8e2b8 `resume`
|
|
2795
|
-
Pass2FullDiff: CAPTURED at 2026-01-24T17:39:06+0100 sha=456e2ad8e2b8 patchFile=/tmp/leeroy-wip-pass2/079.patch patchSha256=1038412aa6be537c540443b64b6437f4eb00d0315c79e4e819e2c68d0eb0a234 patchBytes=10666 patchLines=265 notesReviewed=
|
|
2795
|
+
Pass2FullDiff: CAPTURED at 2026-01-24T17:39:06+0100 sha=456e2ad8e2b8 patchFile=/tmp/leeroy-wip-pass2/079.patch patchSha256=1038412aa6be537c540443b64b6437f4eb00d0315c79e4e819e2c68d0eb0a234 patchBytes=10666 patchLines=265 notesReviewed=yes reviewedAt=2026-01-24T20:30:50+0100 notesUpdated=yes
|
|
2796
2796
|
|
|
2797
2797
|
- Subject: refactor(resume): don't require agentSessionId from UI
|
|
2798
2798
|
- Reasons: full manual review coverage (was not in the manual-review queue)
|
|
@@ -2804,11 +2804,13 @@ Pass2FullDiff: CAPTURED at 2026-01-24T17:39:06+0100 sha=456e2ad8e2b8 patchFile=/
|
|
|
2804
2804
|
- `sync/ops.ts` / `SessionView.tsx`:
|
|
2805
2805
|
- Removes `agentSessionId` from the resume request shape; UI resumes by Happy session id and agent type only.
|
|
2806
2806
|
- This pushes “derive vendor resume id” responsibility to the machine/daemon (more secure + less UI coupling to vendor internals).
|
|
2807
|
+
- Likely leaves an unused `getAgentSessionId` import in `SessionView.tsx` (the callsite is removed but the patch does not remove the import); clean up during history rewrite.
|
|
2807
2808
|
- `utils/agentCapabilities.ts`:
|
|
2808
2809
|
- Broadens `canAgentResume(...)` to accept unknown strings safely.
|
|
2809
2810
|
- Adds `SessionMetadata` shape + helpers:
|
|
2810
2811
|
- `getAgentSessionIdField(...)`, `canResumeSession(...)`, and `getAgentSessionId(...)`.
|
|
2811
2812
|
- Adds session-state translation keys (`session.resuming`, `session.resumeFailed`, etc.).
|
|
2813
|
+
- Noted: Spanish `inactiveResumable` uses `reanundable` (likely a typo for `reanudable`).
|
|
2812
2814
|
- Coherence:
|
|
2813
2815
|
- Matches subject and is a solid architectural improvement for the resume feature.
|
|
2814
2816
|
|
|
@@ -2824,7 +2826,7 @@ Pass2FullDiff: CAPTURED at 2026-01-24T17:39:06+0100 sha=456e2ad8e2b8 patchFile=/
|
|
|
2824
2826
|
---
|
|
2825
2827
|
|
|
2826
2828
|
## 080 2026-01-11 9b0069e3d30c `fork`
|
|
2827
|
-
Pass2FullDiff: CAPTURED at 2026-01-24T17:39:06+0100 sha=9b0069e3d30c patchFile=/tmp/leeroy-wip-pass2/080.patch patchSha256=d0775d17447e5f09b0c0043294929d4b05c4f7a900063c95323c37df142a214b patchBytes=13508 patchLines=247 notesReviewed=
|
|
2829
|
+
Pass2FullDiff: CAPTURED at 2026-01-24T17:39:06+0100 sha=9b0069e3d30c patchFile=/tmp/leeroy-wip-pass2/080.patch patchSha256=d0775d17447e5f09b0c0043294929d4b05c4f7a900063c95323c37df142a214b patchBytes=13508 patchLines=247 notesReviewed=yes reviewedAt=2026-01-24T20:32:11+0100 notesUpdated=yes
|
|
2828
2830
|
|
|
2829
2831
|
- Subject: feat(fork): enable Codex resume support
|
|
2830
2832
|
- Reasons: fork-only behavior (should not go upstream as-is)
|
|
@@ -2836,9 +2838,9 @@ Pass2FullDiff: CAPTURED at 2026-01-24T17:39:06+0100 sha=9b0069e3d30c patchFile=/
|
|
|
2836
2838
|
- `utils/agentCapabilities.ts` adds `'codex'` to `RESUMABLE_AGENTS` with an explicit “Fork” note.
|
|
2837
2839
|
- Session Info UX in `app/(app)/session/[id]/info.tsx`:
|
|
2838
2840
|
- Adds a “Codex Session ID” item with copy-to-clipboard behavior (uses translation keys added earlier).
|
|
2839
|
-
- Refactors copy-command handlers (`handleCopyCommand` helper) and unifies “copy resume command”
|
|
2841
|
+
- Refactors copy-command handlers (`handleCopyCommand` helper) and unifies “copy resume command” into `happy resume <happySessionId>` (shown only for inactive sessions that have an agent session ID in metadata).
|
|
2840
2842
|
- `sync/storageTypes.ts` appears to add/validate `codexSessionId` metadata shape (schema alignment).
|
|
2841
|
-
- Adds
|
|
2843
|
+
- Adds i18n key `sessionInfo.copyResumeCommand` across locales (Codex Session ID translation keys were added earlier in 076).
|
|
2842
2844
|
- Coherence:
|
|
2843
2845
|
- This is still within the “resume support” topic, but it’s fork-specific (Codex resume enablement) and should be isolated from any upstream PR stack.
|
|
2844
2846
|
|
|
@@ -2854,7 +2856,7 @@ Pass2FullDiff: CAPTURED at 2026-01-24T17:39:06+0100 sha=9b0069e3d30c patchFile=/
|
|
|
2854
2856
|
---
|
|
2855
2857
|
|
|
2856
2858
|
## 081 2026-01-22 4ddaef02210e `sync`
|
|
2857
|
-
Pass2FullDiff: CAPTURED at 2026-01-24T17:39:06+0100 sha=4ddaef02210e patchFile=/tmp/leeroy-wip-pass2/081.patch patchSha256=4898c477cf549a2bf357661b4ade980ba45511fb0c0b93ad24c80baa3e93323d patchBytes=1566 patchLines=43 notesReviewed=
|
|
2859
|
+
Pass2FullDiff: CAPTURED at 2026-01-24T17:39:06+0100 sha=4ddaef02210e patchFile=/tmp/leeroy-wip-pass2/081.patch patchSha256=4898c477cf549a2bf357661b4ade980ba45511fb0c0b93ad24c80baa3e93323d patchBytes=1566 patchLines=43 notesReviewed=yes reviewedAt=2026-01-24T20:33:19+0100 notesUpdated=yes
|
|
2858
2860
|
|
|
2859
2861
|
- Subject: fix(sync): omit model meta for queued messages
|
|
2860
2862
|
- Reasons: full manual review coverage (was not in the manual-review queue)
|
|
@@ -2864,7 +2866,9 @@ Pass2FullDiff: CAPTURED at 2026-01-24T17:39:06+0100 sha=4ddaef02210e patchFile=/
|
|
|
2864
2866
|
- Diffstat: `1 file changed, 7 insertions(+), 6 deletions(-)`
|
|
2865
2867
|
- What changed:
|
|
2866
2868
|
- `sync/sync.ts`:
|
|
2867
|
-
- Computes `model` from `(session.metadata.flavor, session.modelMode)
|
|
2869
|
+
- Computes `model` from `(session.metadata.flavor, session.modelMode)`:
|
|
2870
|
+
- For Gemini: defaults `modelMode` to `'gemini-2.5-pro'` when unset, and includes `model` in outgoing message meta when `modelMode !== 'default'`.
|
|
2871
|
+
- For non-Gemini: omits `model` (`undefined`) from outgoing meta.
|
|
2868
2872
|
- Switches meta construction to `buildOutgoingMessageMeta({ ... })` and drops `fallbackModel`.
|
|
2869
2873
|
- Coherence:
|
|
2870
2874
|
- Matches subject; this is a small correctness tweak to avoid sending irrelevant/incorrect model metadata in queued/outgoing messages.
|
|
@@ -2881,7 +2885,7 @@ Pass2FullDiff: CAPTURED at 2026-01-24T17:39:06+0100 sha=4ddaef02210e patchFile=/
|
|
|
2881
2885
|
---
|
|
2882
2886
|
|
|
2883
2887
|
## 082 2026-01-12 3fbdc10018fe `tmux`
|
|
2884
|
-
Pass2FullDiff: CAPTURED at 2026-01-24T17:39:06+0100 sha=3fbdc10018fe patchFile=/tmp/leeroy-wip-pass2/082.patch patchSha256=f2cc8568717d548920cea037c3b6e362272f870517c93ed7e2a86d9115651d03 patchBytes=30647 patchLines=723 notesReviewed=
|
|
2888
|
+
Pass2FullDiff: CAPTURED at 2026-01-24T17:39:06+0100 sha=3fbdc10018fe patchFile=/tmp/leeroy-wip-pass2/082.patch patchSha256=f2cc8568717d548920cea037c3b6e362272f870517c93ed7e2a86d9115651d03 patchBytes=30647 patchLines=723 notesReviewed=yes reviewedAt=2026-01-24T20:34:54+0100 notesUpdated=yes
|
|
2885
2889
|
|
|
2886
2890
|
- Subject: fix: tmux parsing/targeting + review feedback
|
|
2887
2891
|
- Reasons: safety/reliability-sensitive area (process control) + non-Conventional-Commits subject
|
|
@@ -2899,8 +2903,10 @@ Pass2FullDiff: CAPTURED at 2026-01-24T17:39:06+0100 sha=3fbdc10018fe patchFile=/
|
|
|
2899
2903
|
- Removes env-derived session/window fields from `TmuxSessionInfo` (only keeps `env_pane` + socket path, and relies on tmux query for session/window).
|
|
2900
2904
|
- Additional review feedback items are included (mixed into the same commit):
|
|
2901
2905
|
- Aligns `Machine.metadata` typing to runtime (nullable).
|
|
2902
|
-
- Tightens
|
|
2903
|
-
-
|
|
2906
|
+
- Tightens script/test behavior (`ripgrep_launcher`, `env-wrapper`, continue-test script) and clarifies failure modes (missing args, signal termination).
|
|
2907
|
+
- Adjusts CLI API sending behavior: introduces `ApiSessionClient.canSend(...)` and now returns early (drops the emit) when the socket is disconnected for multiple message/event types (may change socket.io buffering semantics vs prior behavior).
|
|
2908
|
+
- Improves resume/continue ergonomics and cancellation: supports `-r` as `--resume` alias and wires SIGINT/SIGTERM to abort offline `claudeLocal` runs.
|
|
2909
|
+
- Edits a CLI doc file (`cli/docs/bug-fix-plan-2025-01-15-athundt.md`) rather than deleting it.
|
|
2904
2910
|
- Coherence:
|
|
2905
2911
|
- The tmux portion is cohesive and important for correctness.
|
|
2906
2912
|
- The extra “misc scripts/tests/typing” changes make the commit mixed; during rewrite we should consider splitting to keep tmux fixes isolated and bisectable.
|
|
@@ -2922,7 +2928,7 @@ Pass2FullDiff: CAPTURED at 2026-01-24T17:39:06+0100 sha=3fbdc10018fe patchFile=/
|
|
|
2922
2928
|
---
|
|
2923
2929
|
|
|
2924
2930
|
## 083 2026-01-13 7292a29822bb `daemon`
|
|
2925
|
-
Pass2FullDiff: CAPTURED at 2026-01-24T17:39:06+0100 sha=7292a29822bb patchFile=/tmp/leeroy-wip-pass2/083.patch patchSha256=40cb173cb1aa03a44ac0c18b4e07de6b8872336399fb768bf21f7a60daef97ab patchBytes=5066 patchLines=99 notesReviewed=
|
|
2931
|
+
Pass2FullDiff: CAPTURED at 2026-01-24T17:39:06+0100 sha=7292a29822bb patchFile=/tmp/leeroy-wip-pass2/083.patch patchSha256=40cb173cb1aa03a44ac0c18b4e07de6b8872336399fb768bf21f7a60daef97ab patchBytes=5066 patchLines=99 notesReviewed=yes reviewedAt=2026-01-24T20:36:02+0100 notesUpdated=no
|
|
2926
2932
|
|
|
2927
2933
|
- Subject: fix(daemon): do not apply CLI active profile to GUI-spawned sessions
|
|
2928
2934
|
- Reasons: full manual review coverage (was not in the manual-review queue)
|