Repository navigation
GJC 0.18.12
What's Changed
- feat(config): reload interactive sessions safely by @sskys18 in #6162
- fix(sdk): ignore project .gjc for the deadline autosave opt-in by @Oreochococukie in c917dbf145
- fix(sdk): advance the daemon generation for the deadline opt-in by @Oreochococukie in 9680d2a7d2
- fix(sdk): lease the promoted follow-up after the deadline is restored by @Oreochococukie in e15b8447c0
- fix(sdk): publish a drained deadline after its renewed lease is already due by @Oreochococukie in 4fd793d4bf
- fix(debug): redact crash stderr before the preview is trimmed by @Oreochococukie in #6585
- fix(broker): prevent Windows SDK broker from being terminated with client process by @Yeachan-Heo in #6012
- fix(session): redact secrets before the pre-admission spill cut by @Oreochococukie in #6587
- fix(debug): start the debugpy adapter in Python isolated mode by @Oreochococukie in #6588
- fix(types): publish docs index before workspace checks by @probepark in #6583
- fix(commit): redact credentials in generated changelog entries by @Oreochococukie in #6590
- fix(lsp): check rename_file targets before writing by @Oreochococukie in #6586
- fix(debug): refuse a session-workspace adapter when cwd is another project by @Oreochococukie in #6591
- fix(debug): show -I in the debugpy adapter tool prompt by @Oreochococukie in #6592
- fix(session): obfuscate registered secrets in summary requests by @Oreochococukie in #6595
- fix(mcp): mark server tool results as untrusted content by @Oreochococukie in #6594
- test(mcp): expect untrusted-content wrapping in pool and cross-convention tests by clawdbot in 02d6b94f64
- test(mcp): expect untrusted-content wrapping in pool and cross-convention tests by @Yeachan-Heo in #6601
- fix(commit): redact credentials in generated task commit messages by @Oreochococukie in #6602
- fix(utils): mask AWS secret keys and percent-encoded session cookies in crash text by @Oreochococukie in c946353d48
- fix(debug): scrub credentials in debug report bundles by @Oreochococukie in #6606
- fix(mcp): omit Codex env references when the import destination is the project by @Oreochococukie in #6608
- fix(oauth): pin authorization-code, registration, and metadata fetches by @Oreochococukie in #6609
- fix(write): bound atomic writes to an explicit local root by @Oreochococukie in #6610
- fix(web): isolate SearXNG env credentials in the settings resolver by @Oreochococukie in #6612
- fix(mcp): omit Codex env references when the import destination is the project by @Oreochococukie in e4ce4d38fa
- fix(plan): refuse editor writes that leave the local root by @Oreochococukie in #6613
- fix(write): refuse SQLite opens that leave the workspace by @Oreochococukie in #6616
- fix(shell): ignore a project shellPath by @Oreochococukie in #6619
- fix(tui): replay frame on shrink when clearOnShrink by @sskys18 in #6617
- revert(mcp): keep #6565 on dev across the v0.18.9 backmerge by Yeachan-Heo in 15096c13e6
- fix(natives): cap SIXEL encode dimensions by @Oreochococukie in #6620
- fix(lock): never rewrite an owner record through an empty state by @Yeachan-Heo in #6621
- fix(tui): reset hardwareCursorRow on stop to prevent blank screen by @Yeachan-Heo in #6615
- fix(python): recover retained sessions after confirmed process exit by @probepark in #6571
- fix(session-state-lock): propagate pre-rewrite fstat failure instead of silently treating as zero-length record by GJC Multisession in 509264ee1a
- fix(worktree): refuse a launch bucket symlink that leaves the repo by @Oreochococukie in #6627
- fix(session): ignore a future activity timestamp when auto-detecting by @Oreochococukie in #6625
- fix(edit): refuse patch deletes that follow a directory symlink out of the root by @Oreochococukie in f7c25aab7a
- fix(stats): flatten control characters in console summary labels by @Oreochococukie in #6626
- fix(edit): keep root and session-local deletes when refusing symlink escapes by @Oreochococukie in 5c71331c77
- fix(tui): keep render debug dumps private by @Oreochococukie in #6630
- fix(commit): redact credentials in formatted commit messages by @Oreochococukie in #6631
- fix(models): refuse symlink writes of models.yml by @Oreochococukie in #6632
- fix(discovery): compare contained-root identity at plain-stat precision (Windows #4834 flake) by @Yeachan-Heo in #6634
- fix(local): refuse a replaced managed temp root by @Oreochococukie in #6629
- fix(tui): replay a contraction that would leave a blank viewport by @Yeachan-Heo in #6639
- fix(acp): ignore a project dotenv ACP permission mode that matches the live value by @Oreochococukie in #6644
- chore(release): consume the stranded-contraction fragment released in v0.18.11 by Yeachan-Heo in 0b151d3c66
- fix(state): refuse execution handoff while the approval journal is pending by @Oreochococukie in #6640
- fix(share): ignore project dotenv for the gh host and config directory by @Oreochococukie in #6645
- fix(coordinator): ignore project dotenv for managed worktree roots by @Oreochococukie in #6642
- fix(ci): restore agent-session-btw and job-manager tests by @Yeachan-Heo in #6646
- fix(utils): flatten a redacted crash-log stack header by @Oreochococukie in #6638
- fix(agent): ignore project dotenv for GenAI content capture by @Oreochococukie in #6647
- feat(tools): local report_issue auto-QA tool (continues #6636) by @Yeachan-Heo in #6637
- test(web): cover proxy refusal and public redirect results by @Oreochococukie in #6651
- fix(worktree): do not unlink a cleanup path whose parent leaves the repo by @Oreochococukie in #6652
- fix(utils): load the development env layer when NODE_ENV is unset by @Oreochococukie in #6659
- fix(export): scrub credential-shaped text in session HTML by @Oreochococukie in #6653
- fix(logging): scrub credentials in title and marketplace debug logs by @Oreochococukie in #6654
- test(ultragoal): cover a dynamic project session-file declaration by @Oreochococukie in #6655
- fix(gc): ignore a project dotenv agent directory by @Oreochococukie in #6656
- fix(edit): refuse patch mkdir that follows a directory symlink out of the root by @Oreochococukie in 28852d78a6
- fix(edit): check a move source before the path lock mkdirs by @Oreochococukie in #6657
- fix(runtime): ignore project dotenv for managed-owner recovery transcripts by @Oreochococukie in f1ce678ed5
- test(runtime): cover completion after a project transcript appears by @Oreochococukie in #6658
- fix(utils): ignore project dotenv for harness directories by @Oreochococukie in #6660
- fix(ai): fully release a model cache database when switching paths by @Yeachan-Heo in #6649
- fix(plan): ignore project dotenv TMPDIR as a planning temp root by @Oreochococukie in #6648
- fix(utils): match Bun when a quoted dotenv value has a suffix by @Oreochococukie in #6664
- fix(test): restore SDK agent_end publication in message pipeline by @Yeachan-Heo in #6668
- fix(test): address CI shard 8 read and web-search test failures by @Yeachan-Heo in #6670
- fix(session): restore continuation-decision guard before SDK publication (PR #6668 P1) by GJC Multisession in f7ab7e04c9
- fix(web-search): match wire request's Host header + pathname in insane mock by GJC Multisession in 8ec1313690
- fix: exclude configured model bindings from profile baselines and treat queued fenced subagents as terminal by GJC Multisession in ed5ef1246b
- test(agent-session): fix SDK terminal publication regression test to exercise the decision guard by GJC Multisession in 2ec50e8d5b
- fix(async): restore identity checks in job-manager and handle queued fenced subagents by GJC Multisession in bf84fbb7ce
- fix(coding-agent): restore plugin-bundle MCP ownership filtering by @probepark in #6673
- test(coding-agent): keep tmpdir probe outside harness temp root by @probepark in #6674
- fix(sdk): unblock fresh creates after uncertain legacy rows by @Yeachan-Heo in #6675
- fix: profile switching and fenced subagent shutdown by @Yeachan-Heo in #6671
- fix(coding-agent): resolve v0.18.8 CI lifecycle regressions by @Yeachan-Heo in #6512
- test(async): add regression for owned registration retirement on stale queued replacement by @clawdbot in 695dd8f442
- fix(async): preserve admission endpoint and retire stale queue entries on purge by @clawdbot in e73d7e3578
- fix(sdk): separate terminal persistence chain to prevent head-of-line blocking by @clawdbot in b9912d0dc4
- fix(sdk): revert separate terminal persistence chain that regressed streaming test by @clawdbot in 5c2978200f
- test(async): add regression test for stale queued generation cancellation by @clawdbot in da06b51699
- fix(async,sdk): preserve admission-endpoint ownership on valid queued resumes by @clawdbot in 4e99ffc36a
- fix(sdk): move persist instrumentation inside promise chain to prevent timing deadlock by GJC Agent in 1329f39b25
- fix(format,test): format instrumentation calls and use safeRm in HOME-seam test by @clawdbot in 7c0f2a8906
- fix: migrate queued resume registrations during manager rekey from E1 to E2 by GJC Lint Agent in 82f222074c
- fix: preserve admission endpoint during manager rekey for resumed job registration by GJC Lint Agent in 80aff5eb1e
- test(sdk): log every reconciliation store chain op in the captured-cancelled-end hang test by @gaebal-gajae in c98aa8bbd5
- fix(tools): drop a shorter open secret prefix at the column cap by @Oreochococukie in #6650
- fix(tools): apply secret-aware clipping to ReadTool and preserve multiline secret candidates by clawdbot in 57f435f856
- fix(file-lock): retry releases blocked by a live remover's owner record by @chlee1001 in #6678
- test(sdk): isolate runtime extension broker discovery by @probepark in #6596
- fix(sdk): preserve completion delivery when output storage refuses by @snowykr in #6680
- fix(python): isolate owner cleanup from surviving shared startup by @snowykr in ab213e78aa
- fix(sessions): tolerate overlong legacy cwd directories by @Yeachan-Heo in #6679
- fix(coding-agent): preserve shutdown proof identity and resume queued work by clawdbot in a55941cf0f
- test(python): make unconfirmed shutdown retry deterministic by clawdbot in 6f3c96dae3
- fix(mcp): forward tool-result images to image-capable models by @pbzweihander in #6676
- docs(mcp): add free Parallel Search MCP setup example by @georgeatparallel in #6580
- fix(storage): reuse admitted count in readonly receipt verification by @snowykr in #6682
- fix(auth): keep one Anthropic credential per organization by @najy97 in #6686
- fix(test): handle in-process broker retirement without RPC success by @Yeachan-Heo in #6667
- feat: add /re-review GitHub workflow for re-requesting reviews by @Yeachan-Heo in #6599
- fix(ai): accept reasoning-only API key probe responses by @Yeachan-Heo in #6692
- fix(ci): avoid self-referential workflow test types by @Yeachan-Heo in #6703
- fix(agent): report cancelled terminal after abort by @Yeachan-Heo in #6693
- fix(kiro): reapply #6151 content-filter fixes with all code review corrections by @Yeachan-Heo in #6451
- fix(file-lock): handle Windows publication contention by @Yeachan-Heo in #6698
- fix(auth): attribute usage and resolve org selectors only on proof by @najy97 in #6704
- fix(shell): read stdin unbuffered so unread bytes stay on fd 0 by @cynkai in #6707
- fix(task): refresh committed move authority and retain admitted scope by @snowykr in #6688
- fix(ai): finalize SQLite statements before disposal by @Yeachan-Heo in #6696
- fix(sdk): admit non-create lifecycle requests past unrelated final legacy rows by @nahyeongjin1 in 36ecd2be52
- test(sdk): cover multi-session and uncertain legacy rows on the non-create fence by @nahyeongjin1 in 78bf9a6753
- fix(sdk): admit non-create lifecycle requests past unrelated final legacy rows by @nahyeongjin1 in #6709
- perf(output): restore large command throughput after column clipping by @Yeachan-Heo in #6687
- fix(sdk): bound startup heartbeat process probes by @Yeachan-Heo in #6705
- fix(utils): drop project-dotenv shell and git hook variables from the bash spawn env by @10kH in a6ce211a5d
- fix: keep project-dotenv hook variables out of the bash worker chain and PTY by @10kH in 9920ce46d0
- docs(changelog): note the fail-closed ambiguity for project hook variables by @10kH in 5c70325ea7
- fix: cover ZDOTDIR and HOME, and keep the shared shell env intact for Python by @10kH in 062b256bd0
- fix: cover GIT_ASKPASS/GIT_SEQUENCE_EDITOR and the in-process native shell; install zsh in CI by @10kH in ede97ad498
- fix: keep project-dotenv shell and git hook variables out of the bash tool by @10kH in #6559
- Regenerate tool-catalog.generated.ts by clawdbot in fa5fb551b1
- test(agent-session-message-pipeline): reset integrationAborted when disabling neverSettle by clawdbot in 5cf049525b
- Revert "test(agent-session-message-pipeline): reset integrationAborted when disabling neverSettle" by clawdbot in 441ed041f1
- fix(agent): only abort recovery integration on timeout, not on early settlement by clawdbot in 3f8511a10a
- test(sdk-broker): cover legacy lifecycle admission shapes by @Yeachan-Heo in #6721
- fix(agent): preserve accepted completion after subscriber abort by @Yeachan-Heo in #6715
- test(coding-agent): fix dev regressions from #6451 and #6698 by @Yeachan-Heo in #6725
- fix(fetch): read the YouTube scraper's settings from its caller by @Heyaaz in #6726
- fix(todo_write): survive a non-string note instead of throwing by @Heyaaz in #6727
- Fixes #6717 by @Yeachan-Heo in #6722
- feat(provider): show active credential sources by @Yeachan-Heo in #6697
- fix(agent): stop reporting every incomplete tool call as a length truncation by @Heyaaz in #6728
- feat(auth): add persisted soft credential preferences with a usage threshold by @meilleur-art in a756b219c8
- fix(auth): match preferred OAuth rows by row id and bound the threshold schema by @meilleur-art in 73601109a3
- fix: reclaim orphan removal transitions promptly and handle broker lock timeouts gracefully by @Yeachan-Heo in #6472
- fix(natives): keep local builds out of tracked diagnostic manifest by @Yeachan-Heo in #6694
- Add OpenAI ultrafast service tier support by @Yeachan-Heo in #6538
- feat(tui): add SVG figure rendering in fenced code blocks by @Yeachan-Heo in #6498
- fix(ai): configure OpenAI-compatible proxy idle timeouts by @Yeachan-Heo in #6702
- fix(agent): reclaim broker locks after PID reuse by @yazzang-homelab in #6720
- feat(auth): add persisted soft credential preferences with a usage threshold by @meilleur-art in #6733
- fix(config): skip hot reload warning on unsupported platforms by @Yeachan-Heo in #6736
- fix(session): refuse a breadcrumb session file outside the sessions root by @Oreochococukie in #6741
- feat(ai): add Gemini 4 Argon model support by @Yeachan-Heo in #6731
- fix(task): refresh autorouting on resume by @Yeachan-Heo in #6730
- fix(session): require permission for the computer tool by @Oreochococukie in #6743
- feat(ai): reuse the prompt cache on loopback Responses relays by default by @Heyaaz in #6744
- fix(task): relocate live transcript storage after same-owner session moves by @snowykr in 8dfcfa75f0
- feat(auth): ordered credential preferences with per-account usage caps by @meilleur-art in #6749
- fix(auth): keep written credential preferences startup-valid and reject aliased duplicates by @meilleur-art in 74373c38ae
- fix(auth): write preference emails only in a form that reads back as the same selector by @meilleur-art in d40c38a94e
- fix(edit): refuse auto-generated files in replace mode by @Oreochococukie in #6752
- fix(edit): recognize generated TypeScript names and script stamps by @Oreochococukie in #6751
- fix(migrate): refuse a symlinked project directory before writing MCP config by @Oreochococukie in 10a7b26350
- fix(shell): decode UTF-8 in the read builtin (Fixes #6543) by @DS-argus in #6572
- fix(catalog): refresh generated task metadata by @Yeachan-Heo in #6755
- perf(session): read retired tombstones once per managed listing by @meilleur-art in 77cb8dc81d
- fix(coding-agent): bind planning bash artifact paths to the current session by @Oreochococukie in 60ca724079
- fix(session): require permission for the python tool by @Oreochococukie in #6764
- fix(workflow): bind execution approval to transcript content, not inode by @najy97 in #6763
- fix(session): skip an unsafe session directory during auto-detect by @Oreochococukie in #6761
- fix(mcp): do not spawn unapproved project stdio servers by @Oreochococukie in #6765
- test(session): isolate retirement phase admission regressions by clawdbot in f84340a846
- feat(migrate): import Claude Code and Codex instructions by @Yeachan-Heo in #6770
- fix(update): classify access denied during Windows replacement by @Yeachan-Heo in #6773
- fix(coding-agent): bind restricted gjc bash to the current session by @Oreochococukie in #6767
- fix(python): keep kernel control frames off stdout by @Oreochococukie in #6766
- fix(autorouting): account for new catalog keys by @Yeachan-Heo in #6756
- fix(session): ask before the recipe tool runs by @Oreochococukie in #6782
- fix(coding-agent): reject rg --hostname-bin in read-only bash by @Oreochococukie in #6780
- test(coding-agent): separate read-only rg search from hostname-bin refusal by @Oreochococukie in 84f1d7f135
- fix(ultragoal): ignore a project dotenv session id by @Oreochococukie in #6769
- fix(coding-agent): refuse planning writes from eval and python by @Oreochococukie in #6786
- fix(task): copy parent approval mode into task subagents by @Oreochococukie in #6785
- fix(bash): gate a repository shell minimizer path on a user hash by @Oreochococukie in #6775
- fix(coding-agent): fail closed on dynamic open modes and multi-part Path writes by @Oreochococukie in 0498e73831
- test: approve project MCP stdio in canonical fixture by @Yeachan-Heo in #6783
- fix(hooks): ignore a project dotenv session transcript path by @Oreochococukie in #6781
- fix(sdk): keep lifecycle input refusals visible in the public error envelope by @Heyaaz in #6777
- fix(sdk): let a broker-authorized operator abort address another connection's turn by @Heyaaz in #6776
- fix(sdk): ignore a project dotenv in-memory session flag by @Oreochococukie in #6788
- fix(eval): ignore forged JavaScript worker frames by @Oreochococukie in #6789
- fix(coding-agent): ignore a project Hindsight API URL by @Oreochococukie in #6790
- fix(natives): load the addon on Windows ARM64 by @Rami9112 in #6787
- fix(coding-agent): keep project skill trust on the user config by @Oreochococukie in #6796
- fix(coding-agent): refuse an ast_edit write outside a single-file real path by @Oreochococukie in #6795
- fix(task): copy parent plan mode into task subagents by @Oreochococukie in #6794
- fix(extensions): do not import repository extension modules by @Oreochococukie in #6792
- fix(file-mentions): require segment-prefix match for fuzzy @mention fallback by @cheong-yi in 86153e474a
- feat(tui): add opt-in compact subagent await panel (#6774) by @yazzang-homelab in #6799
- fix(tui): keep final receipts and degradation warnings out of the compact summary by @yazzang-homelab in 91dc9167f8
- fix(autoresearch): refuse writes through a symlinked harness by @Oreochococukie in #6802
- fix(bench): load characterization extension from isolated agent scope by @probepark in #6800
- fix(coding-agent): reject GNU abbreviations of read-only bash denylist options by @Oreochococukie in a50a5b11b0
- fix(coding-agent): reject file magic compilation in read-only bash by @Oreochococukie in #6804
- fix(tui): wrap subagent receipt guidance to the terminal width by @yazzang-homelab in #6803
- fix(utils): keep project-dotenv interpreter and loader injection variables out of the bash tool by @10kH in #6746
- fix(update): classify a denied exact-replace open as access_denied by @cynkai in #6806
- fix(anthropic): omit an image the API cannot process instead of failing every later request by @meilleur-art in #6811
- fix(session): send the unchanged context when mid-run compaction has nothing to summarize by @meilleur-art in 3c141c22dd
- feat(ai): diagnostic log for Antigravity model discovery filtering by @Yeachan-Heo in #6737
- fix(session): restart on the pruned history when a skipped compaction follows a committed prune by @meilleur-art in 9818c8ca4f
New Contributors
- @DS-argus made their first contribution in #6572
- @georgeatparallel made their first contribution in #6580
- @pbzweihander made their first contribution in #6676
- @meilleur-art made their first contribution in #6733
- @Rami9112 made their first contribution in #6787
Full Changelog: v0.18.11...v0.18.12