Skip to content

GJC 0.18.12

Choose a tag to compare

@github-actions github-actions released this 16 Oct 15:58

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

Full Changelog: v0.18.11...v0.18.12