Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
9cfb376
fix(worktree): stop sharing node_modules that links back into the sou…
Aug 17, 2026
83e850d
fix(worktree): fail closed on unreadable scan dirs and remediate hois…
Aug 17, 2026
4d4a0d4
fix(worktree): fail closed on identity-resolution errors; determinist…
Aug 17, 2026
d0acab7
fix(worktree): worktree-local workspace boundary and positive-proof r…
Aug 17, 2026
115773d
fix(worktree): marker-owned boundary, reconciliation, and manifest va…
Aug 17, 2026
534be8e
fix(worktree): per-link ownership, realpath containment, strict decla…
Aug 17, 2026
2ae562e
fix(worktree): parse package workspace declarations
Aug 17, 2026
7fe0082
docs(changelog): describe worktree isolation boundary
Aug 17, 2026
21be38f
fix(worktree): prove boundary completeness, manifest identity, and pn…
Aug 18, 2026
9abff2a
fix(worktree): ordered patterns, metadata containment, non-dir and li…
Aug 18, 2026
0fb4414
fix(worktree): atomic boundary link install and post-reconcile comple…
Aug 18, 2026
aec6f4c
fix(worktree): per-declaration union, strict manifests, volume-probed…
Aug 18, 2026
5d2f44c
fix(worktree): harden boundary probe, lock, and ownership reconciliation
Aug 19, 2026
96b6983
fix(worktree): exclude intra-node_modules links from workspace self-l…
Aug 20, 2026
a6f0343
fix(worktree): owner-bound lease, crash-recoverable boundary, errno-e…
Aug 20, 2026
4a645dc
fix(worktree): fail closed on boundary ownership races
Aug 21, 2026
fc395b7
fix(worktree): bind boundary publication to canonical paths
Aug 22, 2026
57744f3
fix(worktree): canonicalize link publication parents
Aug 22, 2026
9f5a9d2
test(worktree): pin canonical link parent failures
Aug 22, 2026
10f5ba6
fix(worktree): bind boundary races to identities
Aug 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion packages/coding-agent/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
### Fixed

- Fixed long skill-HUD entries corrupting bottom-pinned TUI row accounting by emitting at most two independent width-bounded rows and preserving severity glyphs through narrow truncation.

- Worktree dependency-boundary scans now traverse canonical directory identities, and stale-lock recovery removes only an empty observed lock directory; concurrent retargets or successor locks fail closed instead of redirecting scans or deleting another launcher's lock.
- SDK `goal.list/get` no longer reports `resource_gone` when an in-flight session's live goal projection is temporarily unavailable. It recovers the latest authoritative goal mode state from the current session branch after runtime recreation or session replacement, while goal-less sessions return an explicit `no_active_goal` diagnostic instead of being confused with snapshot-store loss (#4824).

- `/logout` (and `gjc accounts logout`) now remove stored API-key credentials, not just OAuth rows. The interactive logout and the CLI only enumerated `oauth` inventory, so API-key logins (OpenCode Go/Zen, Cursor, Venice, DeepSeek, …) were rejected with `API-key credentials are not managed here`; both paths now remove stored credentials of either kind.
Expand Down Expand Up @@ -139,6 +139,7 @@
- Discovered oMLX models now keep thinking metadata (`reasoning: true`, `supportsReasoningEffort`, `thinkingFormat: qwen-chat-template`) so `macos-omlx-*` role suffixes (`:low`/`:medium`/`:high`) survive clamp and reach oMLX as `chat_template_kwargs.reasoning_effort`.
- Added built-in `MACOS LOCAL (OMLX)` model profiles (`macos-omlx-fast`, `macos-omlx-balanced`, `macos-omlx-quality`, `macos-omlx-abliterated-fast`, `macos-omlx-abliterated-balanced`) for oMLX local inference on Apple Silicon Macs with native full context support and single-LLM thinking effort role mappings to eliminate model swap latency.
- Fixed an HTTP 400 that killed every deep-interview session on the `google-antigravity` provider before the first assistant turn. The Round-0 topology `ask` schema pinned `round` with `z.literal(0)`, which zod serializes as `const: 0` and the Cloud Code Assist normalizer rewrites to a numeric `enum: [0]` — a shape CCA rejects (`TYPE_STRING`). `round` is now pinned with an integer range `[0, 0]` instead, so the wire schema carries `type: integer` with the bounds spilled into the description (the same treatment `ambiguity` already gets) and no numeric enum remains. Runtime contract unchanged: only `0` validates (#4606).
- `gjc --worktree` launch no longer symlinks the source checkout's `node_modules` into a workspace-repo worktree (#4620). Workspace worktrees receive a validated local boundary for their declared members, while ordinary non-workspace repositories may still share a proven-safe dependency tree. The self-link scan is bounded, follows only canonical in-tree dependency directories, and fails closed on unreadable or ambiguous filesystem state. Boundary metadata and lock ownership are atomic and owner-bound; unowned, stale, replaced, or undeclared member links are preserved and the launch refuses rather than deleting through a path whose parent or target may have changed. Concurrent or crash-damaged boundary state therefore requires explicit cleanup/relaunch instead of silently falling through to an ancestor checkout or mutating user-owned dependencies.
- The terminal-app integration docs now cite the upstream work that backs each support rating: Gajae Code is proposed for Paseo's in-app ACP provider catalog ([getpaseo/paseo#3471](https://github.com/getpaseo/paseo/pull/3471)) and for Orca's built-in agent registry ([stablyai/orca#15025](https://github.com/stablyai/orca/pull/15025)), while T3 Code has no GJC harness and the integration shape is under discussion upstream ([pingdotgg/t3code#7290](https://github.com/pingdotgg/t3code/discussions/7290)).
- The README controller section is now generic and SDK-first: it is titled for OpenClaw / Hermes / Grokbot / your own bot, and the copy-paste bootstrap prompt drives GJC through the broker-bound `gjc sdk session` CLI and the bundled [`sdk-skills/`](https://github.com/Yeachan-Heo/gajae-code/tree/main/sdk-skills) procedures instead of the Coordinator MCP setup. The prompt now names the real surface: `list`/`inspect`/`raw query` discovery, `session.create|fork|resume|close` lifecycle with an idempotency key, `send --op-ref` plus `status` reconciliation (one fresh op-ref per logical prompt; `unknown` is uncertainty, not proof of non-execution), `tail --until-idle`, and the `ask.answer` / `workflow.gate_answer` control allowlist. Coordinator MCP is kept as the pointer for event-driven fan-out across worktrees.
- Every session start under a non-writable cwd (e.g. a Windows console defaulting to `C:\Windows\System32`) no longer dies with an uncaught `EPERM` before any output: `FileGateStore.beginRuntimeInstance` no longer flushes at construction when the store holds no gates and no counters (the runtime instance id rides along with the first real mutation, preserving the documented lazy first-write contract), and `flushState` now runs `mkdirSync` inside the typed write boundary so a genuinely unwritable directory surfaces as `GateStoreWriteError` instead of a raw `ErrnoException` escaping the store abstraction (#4568).
Expand Down
Loading
Loading