Release v0.9.0
Release v0.9.0
Installation
Install or upgrade LLxprt Code using npm:
npm install -g @vybestack/llxprt-codeOr use directly with npx:
npx @vybestack/llxprt-codeWhat's New
This is an action packed feature release. The headlines:
- complete overhaul of security keys and auth tokens now stored in the os keystore.
- sandboxing now allows you to control everything from memory to processors with docker and podman. It delegates to the proxy to get pats or oauth tokens. The llm can't leak your pats! Claude can't open 10 instances of vitest and brick your system.
- asynchronous subagents (in process)
- Ast edit and grep and more.
- experimental lsp server support!
- better and pluggable compression strategies
- hooks support
- greatly improved session continuation and a /continue menu
- Persistsnt todos and editable todos
- Image and PDF support across the major models and providers (not just gemini)
- /stats quota display across both oauth accounts and providers along with pat based providers
- Deepseek reasoner support
- Thinking blocks in codex /openai models
- better anthropic thinking support
- support for all the February models
- core memory (save to system instructions)
- Sync to Gemini-cli 0.23.0
What the model that usually writes our release notes thought was mentionable:
- Add PDF support and image/media files to all AI providers
- Add Windows clipboard image support with Alt+V paste workaround
- Auto-detect terminal background color for automatic theme selection
- Interactive session browser with /continue command to browse and replay past sessions
- Add file tab completion in shell mode
- Support /copy command in remote sessions using OSC52
- Add AST-aware code analysis tools (ast_grep, structural_analysis)
- Add JIT context memory loading via ContextManager for project-specific AI memory
- Add hooks commands panel with enable/disable functionality
- Add /setup slash command to re-run welcome onboarding
- Add fuzzy search and improved settings UX
- Add per-extension settings commands
- Add checkpoint creation and workspace validation for workspace preservation
- Add session recording with error/warning logging to JSON files
- Add Kimi and Z.ai API-key provider quota support
- Add OAuth usage quota display in /status command
- Add configurable file-read-max-lines setting
- Add configurable depth for downward LLXPRT.md search
- Add "auth.noBrowser" setting to disable OAuth browser auto-launch
- Add auto-execute command on Enter for slash completions
- Restore bracketed paste mode after external editor exit
- Stop showing line numbers in output by default
- Fix memory display using actual V8 heap limit instead of incorrect values
- Fix context window overflow by accounting for completion budget in compression
- Fix OAuth multi-instance browser storm and token contamination
- Fix infinite loop in prompt completion on error
- Fix accepting-edits continuing after being turned off
- Fix policy where accepting-edits continued after it was turned off
- Fix 2>&1 redirection being misinterpreted in command instrumentation
- Fix broken command instrumentation that corrupted shell operators
- Fix commandPrefix word boundary and compound command validation
- Fix bucket failover handler leaking across provider switches
- Fix duplicate/unmasked key commands in history
- Fix Anthropic 400 errors for thinking models on --continue
- Fix shell operators being corrupted during command instrumentation
- Fix loop detection now configurable with unlimited default
- Fix Anthropic merge of 3+ consecutive AI messages to enforce role alternation
- Fix Anthropic cache_control blocks causing invalid payloads
- Fix OpenAI responses preserving block order in user messages
- Fix parallel tool batches against context window overflow
- Fix session recording resume-path edge cases
- Fix resource exhaustion from MCP client and PTY cleanup issues
- Fix Mac Docker sandbox support
- Fix right border overflow in trust dialogs
- Fix word navigation for CJK characters
- Improve keyboard code parsing
- Improve pty resize error handling for Windows
Thanks
Huge thanks to the following contributors for their pull requests in this release:
Known Issues
- Docker ssh proxy forwarding is not working on Mac. Use podman. (will be fixed in 0.9.1)
All Changes
- chore(release): v0.9.0 (022d554)
- Merge pull request #1664 from vybestack/issue1661 fixed #1661 (a3e3f31)
- docs: clarify memory semantics and use MiB units for podman inspect output (b106ec9)
- docs: use machine name placeholder instead of hardcoded podman-machine-default (244aae4)
- docs(sandbox): document Podman VM memory vs container --memory on macOS (53c2de8)
- Merge pull request #1662 from vybestack/issue1657redeux (3d008b0)
- test: add entry existence assertions to sandbox validation tests (cc5e712)
- style: remove extra blank line between describe blocks (898ceb2)
- style: fix prettier formatting in test file (bef0820)
- fix(sandbox): validate sandbox-base-url and requires-auth at alias parse time (833bd1b)
- fix(sandbox): propagate sandbox-base-url and requires-auth from alias configs to settings service (Fixes #1657) (60cd435)
- Merge pull request #1656 from vybestack/issue1652 (766915a)
- Merge pull request #1659 from vybestack/issue1657 (ac97270)
- fix(auth): re-read disk after refresh-lock timeout before browser auth (0bf89de)
- fix: save/restore SANDBOX env in containerSandbox test cleanup (0df8e43)
- fix(auth): add refresh-lock coordination and address CodeRabbit feedback (8d3fa7e)
- fix: address CodeRabbit review feedback (8c67dd4)
- fix: remove unused vi import in containerSandbox test (3cecfeb)
- fix(auth): refresh expired tokens before opening browser in authenticate() (39a3ec6)
- style: fix prettier formatting (90dc3c3)
- feat(sandbox): add sandbox-base-url and requires-auth settings for local providers (Fixes #1657) (b2832c7)
- Merge pull request #1655 from vybestack/issue1654-subagent-tool-governance (4d1cb32)
- fix(task): treat explicit empty whitelist as fail-closed (bcbd533)
- fix(task): canonicalize excluded tool matching for whitelist policy (d61cf8d)
- Address CodeRabbit review comments on PR #1656 (6c19352)
- fix(auth): prevent multi-instance OAuth browser storm and token contamination (fixes #1652) (67c5db2)
- fix(subagents): tighten whitelist fallback and preserve explicit disabled tools (0954fd6)
- fix(subagents): enforce task whitelist governance and default disabled web fetch (Fixes #1654) (01d5915)
- Merge pull request #1642 from vybestack/gmerge/0.23.0 (0a84968)
- fix: implement useAlternateBuffer hook, correct shades-of-purple bg, add mock field (e115c35)
- fix: update test mocks after await-thenable rule changes (5c596e8)
- Merge pull request #1640 from vybestack/issue1615 closes #1640 (4a2fbb7)
- fix(openai-responses): preserve block order in user message assembly (cb90f36)
- fix: address CodeRabbit review issues from 322232e5 parity (4096c05)
- style: fix formatting issues caught by CI (9f305d6)
- fix(openai-responses): add PDF input_file support in inline message building (25d594e)
- refactor(ui): delete kittyProtocolDetector, migrate to terminalCapabilityManager (9f35a08)
- test: add mixed-case MIME regression tests for classifyMediaBlock (9740459)
- feat(cli): add terminal diagnostics to /bug command output (f67e47e)
- feat(ui): wire terminalCapabilityManager into app startup (c9e2f01)
- feat(ui): add theme compatibility labels and sorting to ThemeDialog (01eeca3)
- feat(core): add config terminalBackground + setupTerminalAndTheme utility (00f1856)
- chore: remove accidentally committed diff file (e62af22)
- feat(ui): add terminalCapabilityManager for unified terminal detection (ef00d12)
- fix(openai-responses): add MediaBlock support for images in user messages and tool responses (c775a9f)
- fix(ui): avoid showing editor option before IDE diff capability is known (abac663)
- fix(history): preserve MediaBlocks through ensureToolResponseAdjacency pipeline (b35bde1)
- refactor: add await-thenable eslint rule and fix all violations (reimplements 7f2d3345) (3ae2ffe)
- fix(providers): add PDF support, media classification, and no-silent-drop policy across all providers (8fd9fea)
- fix(ui): restore original raw mode state in terminal background detection (72649ef)
- fix: address CodeRabbit review issues (#4, #10, #11) (1b81560)
- Merge pull request #1644 from 5i2urom/feat/edit-replace-line-number fixes #1643 (2b67b55)
- chore: remove dead tokenCalculation module (filed as separate issue) (c4ed384)
- fix(providers): add MediaBlock support to Anthropic, Gemini, OpenAI, and OpenAI Responses (Fixes #1615) (f5b0a0e)
- Merge branch 'main' into feat/edit-replace-line-number (00e617b)
- Add new contributor '5i2urom' to trusted contributors (0607cf4)
- Merge pull request #1646 from vybestack/issue1645 (13367ba)
- docs: regenerate settings docs after removing ui.jitContextEnabled (09ae028)
- Fix LSP entry path resolution for npm installs (Fixes #1645) (2353d52)
- style: fix formatting in test files (9256791)
- chore(core): validate replaceBeginLineNumber bounds (cfec33c)
- fix: address audit findings and CodeRabbit review issues (03ff669)
- feat(core): replace old_string only on a specified line (708da7f)
- fix(test): add retry to LSP nav tool registration test for CI process race (4094a29)
- fix(test): increase downloadFile cleanup settle delay for CI (50ms→200ms) (09283b1)
- fix(test): use spyOn for coreEvents.emit mock to preserve EventEmitter prototype (635865c)
- fix(test): add CI timer jitter tolerance to LSP deadline test (b0c1596)
- chore: regenerate settings schema, settings docs, and keybindings docs (611b28d)
- fix(test): use flat folderTrust setting in trustedFolders test (LLxprt settings structure) (ba65025)
- fix: restore eslint-plugin-license-header in package.json (B22 incorrectly swapped) (b45bea5)
- docs: update PROGRESS.md, NOTES.md, AUDIT.md for gmerge/0.23.0 completion (d8c13ff)
- fix(patch): cherry-pick c31f053 to release/v0.23.0-preview.4-pr-16004 to patch version v0.23.0-preview.4 and create version 0.23.0-preview.5 (#16027) (7bab0fd)
- feat(quota): make retryDelayMs optional with exponential backoff (8c46071)
- fix(patch): cherry-pick 37be162 to release/v0.23.0-preview.2-pr-15601 to patch version v0.23.0-preview.2 and create version 0.23.0-preview.3 (#15603) (f1b751b)
- Add .llxprtignore support to SearchText tool (467570b)
- fix(tools): pass toolName and displayName to tool invocations (0defba2)
- fix(policy): fix bug where accepting-edits continued after it was turned off (#15351) (968e512)
- fix(cli): fix right border overflow in trust dialogs (#15350) (555ef61)
- fix(folder trust): add validation for trusted folder level (#12215) (ff48019)
- fix(core): sanitize hook command expansion to prevent injection (reimplements 41a1a3ee) (0a323ce)
- fix: update test mocks for ContextManager and B16 security features (2345505)
- Merge pull request #1639 from vybestack/issue1637-schema-fix (0223eb6)
- fix: resolve type errors and add missing useAlternateBuffer hook (433ad17)
- more robust command parsing logs (#15339) (fc8fa44)
- Validate OAuth resource parameter matches MCP server URL (#15289) (2f77c99)
- fix(cli):change the placeholder of input during the shell mode (#15135) (f2f217e)
- feat(ui): Put "Allow for all future sessions" behind a setting off by default. (#15322) (d9348ed)
- feat(core): implement JIT context memory loading via ContextManager (reimplements 2e229d3b) (7c47188)
- fix(core): Update ContextManager test to match actual loadJitSubdirectoryMemory signature (99008b4)
- Regenerate settings schema after LSP validation fix (401be9a)
- feat(core): Implement JIT context memory loading with ContextManager (53fad8c)
- Update test to expect lsp: true as valid (868ff49)
- feat: simplify tool confirmation labels for better UX (#15296) (831786d)
- Fix LSP settings validation rejecting lsp: true (6ec1080)
- feat(hooks): emit UI feedback on hook failures (reimplements 402148db) (ca8967a)
- fix(ui): show slash suggestions on perfect match and sort (reimplements 70696e36) (d7eafe8)
- fix: prevent infinite loop in prompt completion on error (#14548) (58a0ce0)
- Remove unnecessary dependencies (#15291) (30fe4af)
- feat: Add CI environment variables to shell sanitization allowlist (Batch 10) (b0ea194)
- WIP: Previous batch changes (fcda845)
- feat: Auto-detect terminal background color for theme selection (3da1b20)
- feat(hooks): add name and description fields to hook config (6645697)
- Change detailed model stats to use a new shared Table class to resolve robustness issues. (#15208) (d615030)
- fix(cli): replace magic number 2 with INITIAL_HISTORY_LENGTH constant (9c2883a)
- fix(ui): prevent eager slash completion hiding siblings (reimplements 6ddd5abd) (1a385d9)
- Merge pull request #1638 from vybestack/issue1637 (508ffcd)
- fix: apply lint fixes and LLxprt branding to cherry-picked Windows clipboard changes (387b5b0)
- feat(ui): add Windows clipboard image support and Alt+V paste workaround (#15218) (2f8095a)
- chore: update a2a-js to 0.3.7 (#15197) (15a3bb6)
- refactor: migrate console.error to debugLogger in ripGrep (reimplements bb8f181e) (dce02e2)
- Add one to the padding in settings dialog to avoid flicker. (#15173) (d0e03ea)
- chore: remove user query from footer in debug mode (#15169) (ecbaca0)
- Remove foreground for themes other than shades of purple and holiday. (#14606) (24a7453)
- docs: update hook docs to use snake_case tool names (reimplements cc52839f) (f40b100)
- docs: update cherrypicking runbook and guide (085faa6)
- docs: spell out B18 smart-edit.ts conflict resolution (1540941)
- Add LSP package to release pipeline (fixes #1637) (2dfea2e)
- Update model versions in README.md (e10660f)
- docs: add zero-failures test baseline to all plans (076c0b3)
- Merge pull request #1636 from vybestack/issue1494reduex (fixes #1494) (70cd23d)
- docs: exempt docs-only batches from unit test requirement (62e3c91)
- test: strengthen redaction fallback assertion per CodeRabbit review (6f4dac0)
- docs: review/remediate gmerge/0.23.0 playbooks (2 rounds) (e18f105)
- fix(anthropic): preserve unsigned thinking blocks to prevent loopbreaking (Fixes #1494) (a2ce0ce)
- Merge pull request #1633 from vybestack/issue1632 (fixes #1632) (752f2ac)
- fix: handle bare -- arg and validate version against null (e51c982)
- fix: close bridge resources in tests, harden shell script pipelines (609309a)
- fix: brace all shell variable references (shellcheck SC2250) (7ac0358)
- Fix Docker sandbox support on macOS (Fixes #1632) (32518c8)
- Update model versions in README.md (948d5ec)
- docs: add gmerge/0.23.0 execution plan and cherry-pick decisions (8e2062a)
- Merge pull request #1627 from vybestack/issue_1625_1626 (29f0e27)
- Merge pull request #1628 from vybestack/20260226security (98fd80d)
- chore: retrigger CI (macOS runner was stuck in queue) (2d0d78b)
- chore: use caret range for qs override per CodeRabbit review (7c90bae)
- fix: resolve all open security vulnerabilities (a1cc518)
- fix: remove extra blank line caught by formatter (8050b18)
- fix: convert flaky LLM-dependent integration tests to fake provider (Fixes #1625, Fixes #1626) (391335e)
- Merge pull request #1619 from vybestack/gmerge/0.22.0 (a2bb42d)
- merge: resolve conflict with main in compression/utils.ts (49c825b)
- Merge pull request #1623 from vybestack/issue1622 (Fixes #1622) (8186b95)
- fix: widen performance guard budgets for shared CI runners (f2b96a0)
- chore: format utils.ts after removing unnecessary casts (5b9b6b6)
- fix: merge main, remove eslint-disables, type safety cleanup (9b2a22d)
- fix: cap max-old-space-size at 8GB to keep memory display meaningful (c37a189)
- test: tighten memory percentage assertion to exact value (5af8f14)
- fix: use actual V8 heap limit for footer memory display (Fixes #1622) (ab582ff)
- fix: address remaining CodeRabbit issues — auth, autoExecute, nitpicks (5624bff)
- Merge pull request #1621 from vybestack/issue1566 (286de64)
- Delete keychain.png (3ee18d5)
- Delete .llxprt-clipboard directory (2bae253)
- fix: use compact JSON in sanitizeHistoryForCompression to reduce prompt bloat (2579ab6)
- fix: stabilize flaky downloadFile cleanup test with async settle delay (757aa3c)
- fix: account for completion budget in compression threshold and sanitize tool blocks (Fixes #1566) (899f879)
- chore: format after CodeRabbit fixes (1ce496d)
- fix: address CodeRabbit review — bugs, safety, and cleanup (0683d9c)
- Merge pull request #1617 from vybestack/issue1616 (20dfc30)
- fix(oauth): add ensureBucketsAuthenticated at turn boundary, make multi-bucket getToken pure lookup (cf700a4)
- fix: restore CI skip guard for google_web_search E2E test (6086ae8)
- chore: regenerate settings schema and docs after sandbox type fix (bef771b)
- fix: remove invalid --fake-responses CLI arg and debug logging from test-helper (f02900b)
- fix: E2E test signature mismatches and vestigial Gemini auth test (4b9ac66)
- fix: settings Zod schema rejects sandbox=false — use BooleanOrString ref (407283a)
- debug: add TestRig spawn logging to diagnose CI exit code 52 (b71ec85)
- fix: E2E test regressions — restore --prompt flag, CI skip guards, env filtering (d9375c2)
- fix: E2E test failures — hooks mock config, json-output filename, test-helper HOME env (742b566)
- fix: re-sync BucketFailoverHandler cursor from session state at tryFailover start (734184f)
- chore: regenerate package-lock.json (ae5742f)
- chore: regenerate vscode-ide-companion NOTICES.txt for updated dependencies (7e5c81e)
- fix: address CodeRabbit feedback — correct ProfileManager mock, skip tried bucket, update comments (58b7fe3)
- fix(oauth): replace tryFailover in getToken with keyring peek loop (Fixes #1616) (3fa25ec)
- chore: apply formatting to gmerge/0.22.0 post-remediation files (91b7e47)
- refactor: move multimodal tool response nesting from scheduler to GeminiProvider (2b700bd)
- fix: resolve all test failures from gmerge batches B2, B15, B16, B1B (2a799af)
- fix: restore ui/components/*.test.tsx exclusion in vitest config (ebf5ef7)
- fix: Gemini quota uses OAuthManager token store, not CodeAssistServer (32391ba)
- feat: add Gemini quota display via CodeAssist API + remove orphaned snapshot (c00d70b)
- fix: resolve remaining build failures in a2a-server and vscode-ide-companion (46f0053)
- fix: resolve build-blocking type errors in CLI package (0a3d3d1)
- chore: update PROGRESS.md and NOTES.md with post-audit remediation details (d60cefe)
- fix: remediate post-audit regressions across B7, B8, B11, B14, B16 + pre-existing issues (2076a26)
- chore: post-hoc audit report for gmerge/0.22.0 (17 batches reviewed) (43ccf2e)
- chore: finalize gmerge/0.22.0 AUDIT.md with all 74 commit outcomes (fceaa99)
- chore: update gmerge/0.22.0 PROGRESS.md and NOTES.md for all batches (1A-18) (d681793)
- reimplement: mark A2A requests as interactive (upstream 0c3eb826) (7254da2)
- reimplement: fix tool output fragmentation — provider-agnostic multimodal encapsulation (upstream d236df5b) (739a86c)
- reimplement: non-interactive tool confirmation error (upstream 217e2b0e) (20d74e4)
- fix: B14 remediation — branding fixes, lint errors, syntax fixes in cherry-picked tests (8db1741)
- chore: apply formatting after batch 14 cherry-picks (14c57ce)
- fix(patch): cherry-pick 9e6914d to release/v0.22.0-preview.2-pr-15288 to patch version v0.22.0-preview.2 and create version 0.22.0-preview.3 (#15294) (aa78bff)
- Show raw input token counts in json output. (#15021) (85862e9)
- Simplify method signature. (#15114) (59cf333)
- Clean up processes in integration tests (#15102) (0902e6f)
- reimplement: disallow redundant typecasts (upstream 942bcfc6) (3bc229f)
- fix: remove obsolete exports and fix lint issues (126c32ac) (19549a0)
- test: remove obsolete initialization guard tests (126c32ac) [GREEN] (214a811)
- feat: refresh hooks when extensions change (126c32ac) [GREEN] (96b1bd1)
- refactor: remove initialization guards and add disposal (126c32ac) [GREEN] (271b72b)
- refactor: remove initialization guards from HookRegistry (126c32ac) [GREEN] (2fe23f0)
- test: add failing tests for hook re-initialization (126c32ac) [RED] (b3e72bc)
- test: add rm vs rmdir prefix confusion regression test (B11 remediation) (af9fe6e)
- fix(security): commandPrefix word boundary and compound command validation (673a4f5)
- test: add security tests for commandPrefix word boundary and compound command validation (RED) (37046ba)
- feat(policy): add persistent always-allow policies with granular shell & MCP support (42ee44f)
- chore: update gmerge/0.22.0 progress for batch 9 (a7be71f)
- reimplement: remove flex from stats display (upstream 6dea66f1) (552a7e7)
- Add clarity to error messages (#14879) (777736d)
- Add license field into package.json (#14473) (04b201c)
- test: update ide detection tests to make them more robust when run in an ide (#15008) (bff0d1c)
- fix: temp fix for subagent invocation until subagent delegation is merged to stable (#15007) (a2dfa48)
- fix(vscode-ide-companion): correct license generation for workspace dependencies (#15004) (2f2a008)
- fix: B7 remediation — lint fixes + port file reader backward compat (upstream 3b2a4ba2) (ebbdb64)
- refactor(ide): consolidate port file, 1-based chars, silent truncation (b50c3ac)
- chore: update gmerge/0.22.0 progress for batch 6 (6043d9e)
- reimplement: multi-file image drag/drop (upstream 1e734d7e) (faa2af9)
- chore: update gmerge/0.22.0 progress for batch 5 (25bfc7c)
- reimplement: A2A /init command (upstream 299cc9be) (95e0a73)
- chore: update gmerge/0.22.0 progress for batches 2-4 (6fa98cf)
- reimplement: add settings validation with Zod (upstream 86134e99) (4ec5634)
- reimplement: polish stats display (upstream 54de6753) (31cc66f)
- reimplement: add transcript_path to hook events (upstream d4506e0f) (01d0258)
- chore: update gmerge/0.22.0 progress notes for batches 1A and 1B (dc588d0)
- fix(policy): allow codebase_investigator by default in read-only policy (#15000) (1824063)
- fix(ide): Update IDE extension to write auth token in env var (#14999) (6d00155)
- feat: attempt more error parsing (#14899) (0d359bd)
- Fix: Correctly detect MCP tool errors (#14937) (6ff6ae6)
- Fix: Correct typo in code comment (#14671) (fabaa78)
- chore: protect copyright headers from branding substitutions in PLAN.md (af4741f)
- chore: enhance PLAN.md with full per-batch subagent prompts (d4298c4)
- chore: enhance all 14 REIMPLEMENT plans with test-first TDD approach (a71d265)
- chore: gmerge/0.22.0 audit and execution plan (v0.21.3 → v0.22.0) (89d2853)
- Merge pull request #1601 from vybestack/gmerge/0.21.3 (6ee8c0e)
- fix(bucket-failover): three-pass failover with classification, reauth, and enhanced error reporting (Fixes #1598) (#1602) (9f2cb07)
- chore: regenerate settings docs and schema (27378d0)
- fix: add getDisabledHooks to E2E hooks test config mock (e24a2ab)
- merge: resolve conflicts with main (ACP SDK migration + batch flush) (11ad1ec)
- fix: address CodeRabbit review findings + sync lockfile (491ec67)
- Fix Zed ACP integration: tools, approval modes, streaming, and lifecycle (Fixes #1558) (#1561) (8f2e742)
- chore: remove stray subagent files from repo root (5f25305)
- merge: resolve conflicts with main (ab97f7b)
- chore: remove stray audit files from repo root (e05f612)
- fix: gmerge 0.21.3 post-audit remediation — 8 TDD fixes (#1600) (a98dd3d)
- fix(ci): use merge-base for PR review diffs to exclude unrelated main changes (#1599) (47781d2)
- fix: gmerge 0.21.3 remediation — R13/R7/R3/R4/R15 TDD fixes, test suite green, interactive input restored (ee45fe2)
- docs: big fat doc updates (closes #1499) (#1563) (d58d390)
- fix(bucket-failover): reset to primary bucket at start of each user turn (Fixes #1550) (#1559) (10ccd86)
- fix(zed): await message processing and handle errors in ACP receive loop (Fixes #1552) (#1557) (266c0a1)
- fix(sandbox): remove credential proxy provider allowlist scoping (Fixes #1554) (#1556) (b483ad1)
- fix(anthropic): prevent prefill 400 for thinking models on --continue (Fixes #1545) (#1555) (3dfdf6e)
- docs(gmerge): harden R20 execution plan for deepthinker (7cba0f7)
- perf(runtime): remove blocking getModels() network call from switchActiveProvider (Fixes #1544) (#1551) (983043c)
- fix(cli): gate sandbox debug behavior on explicit debug flags (cc1e889)
- docs(gmerge): finalize B6 strategy for 171103aed and 560550f5 (cd3024f)
- docs(gmerge): mark d591140f62ff as policy no-op (45f5e87)
- feat(cli): auto-execute eligible slash completions on Enter (7685277)
- cherry-pick: 674494e80 restore final:true on edit confirmations (8de00b6)
- cherry-pick: 6e51bbc21 propagate prompt_id through a2a task (eebc9db)
- cherry-pick: 389cadb06 fix debug mode freeze check (abf4b75)
- fix: handle --version and --help before patchStdio() (Fixes #1498) (#1548) (5e9e99b)
- fix(compression): mark empty summary and provider errors as transient for retry (Fixes #1497) (#1549) (bc9667b)
- docs(gmerge): mark 616d6f666 out-of-range for v0.20.2..v0.21.3 (8e7a798)
- cherry-pick: 364b12e2f bump express to 5.2.0 (d1115e3)
- cherry-pick: afd4829f1 use supported image formats for clipboard (ecee7ba)
- cherry-pick: 84c07c8fa fix(audio) improve reading of audio files (029512f)
- fix(shell): remove broken command instrumentation that corrupted shell operators (Fixes #1495) (#1546) (908ff81)
- docs: update NOTES.md with all completed R-batch work (e92a7cd)
- docs(hooks): add hook system documentation (R6) (d8ba4be)
- feat(settings): add fuzzy search and TextInput-based search UX (R2+R11) (70ecfdd)
- feat(hooks): add hooks commands panel, enable/disable, migrate (R5) (3fd8a8c)
- feat(cli): user-scoped settings, missing config handling, hooks security (R15+R16+R7) (32b5395)
- feat(cli): add per-extension settings commands (R10) (f669991)
- feat(core): complete MCP URL consolidation with HTTP→SSE fallback (R3) (66ff601)
- feat(a2a): add checkpoint creation, workspace validation, test mocks (B8 Phases 4-6) (6535f7b)
- feat(a2a): add RestoreCommand with security validation (B8 Phase 3) (50858bd)
- refactor(a2a): migrate Command.execute to CommandContext (B8 Phase 2) (7c9edd0)
- feat(core): add checkpoint utilities for A2A restore command (B8 Phase 1) (4277b0e)
- fix(lint): enable no-floating-promises rule and fix 160 violations (B5) (3027a28)
- fix: remove unused variables from cherry-picked test files (220b286)
- Revert "feat(a2a): Introduce restore command for a2a server (cherry-pick from B8)" (2a52106)
- feat(a2a): Introduce restore command for a2a server (cherry-pick from B8) (5831f18)
- Cherry-pick upstream bug fixes from gemini-cli (5f4e575)
- feat: B4 cherry-picks — MCP dynamic tools, privacy screen fix, API error fix, shell truncation fix (421ef94)
- fix: remediate R3/R14/R12 gaps and fix pre-existing test failures (4a16d35)
- docs: update NOTES.md with all completed and deferred items (cf5a6b2)
- chore: format, fix zedIntegration test type, remove broken R14 Accept tests (fdbfc60)
- feat(core): add session lifecycle hooks to MessageBus (R4) (f607b93)
- fix(ext): use correct Accept header for GitHub source tarballs (R14) (d41348f)
- feat(core): add MCP transport type config + isAuthenticationError (R3 partial) (9f4aa62)
- fix(core): improve API response error handling in retry logic (R13) (8632a17)
- fix(core): add ENOTFOUND to transient error codes (R12) (c6f2ef0)
- refactor(ext): remove bundled example extension (R9) (83f5004)
- fix(acp): skip credential cache clear on same-profile re-auth (R8) (42ef7f6)
- feat(cli): add session_id to JSON output (R18) (557fbb2)
- feat(core): move command action types to core (R17) (f44a02e)
- docs: add B4-B8 evaluation to NOTES.md - cherry-picks have conflicts (fe9d88f)
- docs: update PLAN.md with B3 reclassification (R17, R18) (ea95062)
- docs: add critiques for b27cf0b0a8dd and 8b0a8f47c1b2 plans (73d8262)
- docs: add REIMPLEMENT plans for b27cf0b0a8dd and 8b0a8f47c1b2 (616a291)
- docs: fix B3 analysis - b27cf0b0a8dd is REIMPLEMENT not SKIP (72df8aa)
- feat: add auto-execute on Enter behavior to argumentless MCP prompts (#14510) (bd3bbe8)
- docs: add B3 analysis and compression/restore notes to cherrypicking docs (6b9d924)
- chore: cleanup (9a23b70)
- refactor(core): MessageBus always enabled + B2 type fixes (3bab7ae)
- feat(mcp): add
--typealias for--transportflag in gemini mcp add (#14503) (d19f6d6) - do not toggle the setting item when entering space (#14489) (7ca51cc)
- fix(cli): Fix word navigation for CJK characters (#14475) (2dd23e0)
- feat(cli): support /copy in remote sessions using OSC52 (#13471) (c893586)
- fix: post-B1 cherry-pick type fixes (6494221)
- Add new enterprise instructions (#8641) (99f6abf)
- fix(security): Fix npm audit vulnerabilities in glob and body-parser (#14090) (5cfd694)
- refactor(editor): use const assertion for editor types with single source of truth (#8604) (19d68e6)
- Restrict integration tests tools (#14403) (528584f)
- test: replace mock-theater tests with behavioral tests in profileManager (Fixes #1492) (#1493) (f364185)
- fix: standardize on base-url, remove baseUrl/baseURL variants (Fixes #1490) (#1491) (1acbc3a)
- fix(security): prevent duplicate/unmasked key commands in history (Fixes #1476) (#1489) (9c03ae6)
- docs(sandbox): align runtime docs and tutorial with credential proxy behavior (Fixes #1457) (#1488) (219fde6)
- fix(compression): raise default compressionThreshold from 0.5 to 0.85 (Fixes #1483) (#1486) (03cc040)
- docs(sandbox): comprehensive sandbox documentation and tutorial (Fixes #1457) (#1478) (1f0e1ac)
- docs(hooks): add comprehensive hook system documentation (Fixes #1484) (#1485) (ce31a68)
- fix(streaming): combine ThinkingBlock and ToolCallBlocks into single IContent to fix DeepSeek-reasoner (Fixes #1142) (#1479) (f549674)
- fix: prevent bucket failover handler leaking across provider switches (Fixes #1477) (#1480) (22f71f9)
- fix(shell): treat pipelines as atomic commands for instrumentation (Fixes #1481) (#1482) (78ad1b5)
- Upstream sync: cherry-pick/reimplement gemini-cli v0.19.4 → v0.20.2 (Fixes #1408) (#1407) (d860795)
- fix: clear stale session bucket on profile reload (Fixes #1467) (#1474) (d17eb4a)
- fix(test): add LSP client mocks to config-lsp-integration test to fix CI flakiness (Fixes #1437) (#1475) (d79c723)
- fix(oauth): validate provider in getProfileBuckets to prevent cross-provider token storage (Fixes #1468) (#1471) (a8b70f2)
- feat(anthropic): add Claude Sonnet 4.6 to OAuth static menu (Fixes #1472) (#1473) (71addcf)
- feat(ui): display active profile name on assistant messages (Fixes #1329) (#1464) (7bbadbf)
- feat(storage): move secure-store fallback to platform-standard paths (Fixes #1357) (#1466) (04a6930)
- feat(compression): add retry logic and fallback for compression operations (Fixes #1210) (#1462) (9e0f1c4)
- fix(shell): prevent 2>&1 redirection from being misinterpreted in command instrumentation (Fixes #1460) (#1463) (1d14018)
- fix(compression): sync token count from actual LLM usage after compression (Fixes #1211) (#1461) (bd70bca)
- feat: Credential Proxy Unix Socket System for Sandbox Mode (Fixes #1358, Fixes #1359, Fixes #1360) (#1441) (584f007)
- feat(loadbalancer): add sticky failover with immediate failover for 429/401/402/403 (Fixes #902) (#1459) (9f5d2c0)
- feat(session-browser): Interactive session browser with /continue command (Fixes #1385) (#1451) (1c55c04)
- refactor(providers): remove provider-specific retry/backoff logic (Fixes #1453) (#1458) (a86f74b)
- fix(lsp): mock LSP client start/isAlive in e2e tests to fix intermittent failures (Fixes #1437) (#1455) (426d66a)
- fix(profiles): preserve explicit auth/base-url clears during apply and snapshot (Fixes #208) (#1454) (1b2aa00)
- fix(task): backfill sessionId context for subagent tasks (Fixes #1447) (#1452) (f6ee8f9)
- fix(todos): persist TODO lists across --continue sessions (Fixes #1336) (#1450) (81c282c)
- feat(subagents): add async subagent settings and conditional prompt guidance (Fixes #1418) (#1446) (0d07875)
- fix(compression): tune HD compression to preserve more context (Fixes #1448) (#1449) (fb3b806)
- fix(gemini): enable strictToolAdjacency for Gemini provider (Fixes #1427) (#1445) (a551106)
- Fix Codex OAuth reauth loop and email bucket validation (Fixes #1442, Fixes #1439) (#1443) (e874aec)
- fix(subagent): forward user-agent ephemeral setting to subagents (Fixes #1435) (#1444) (f1b0115)
- feat(codex): add gpt-5.3-codex-spark to Codex provider models (Fixes #1433) (#1440) (bf05b8d)
- fix(core): unify scheduler path for subagent and non-interactive tool execution (Fixes #1426) (#1436) (bd32ddc)
- Add LSP Integration to File Edit Tools (Fixes #1432) (#1434) (6f7416d)
- fix(ci): use --type instead of --label for bug issue creation (Fixes #1429) (9c5175d)
- Merge pull request #1431 from vybestack/issue1404 (8cf63e0)
- fix: use polling for global flag check in OAuth auto-dismiss (CodeRabbit fix) (6c8ae7d)
- chore: format (a34fb12)
- fix: address CodeRabbit review - use distinct flag for browser auth completion (9e090b9)
- Merge pull request #1405 from vybestack/issue438 (f5488d6)
- fix: remove unused variable in test file (2de522c)
- test: add behavioral tests for OAuth dialog auto-dismiss (Fixes #1404) (ee671f0)
- fix: auto-dismiss OAuth dialog when browser auth completes (Fixes #1404) (10773fb)
- docs: regenerate settings schema and configuration docs (8312828)
- test: fix orchestrator property test for case-insensitive extension routing (0b4a815)
- test: deflake LSP lifecycle + render options assertions (3b422c0)
- Merge pull request #1425 from vybestack/issue1400 (eed7458)
- fix(core): continue after thinking-only turns (4d7b9b4)
- fix: remove unused loadCoreMemoryContent import (tsc --build noUnusedLocals) (049ef9a)
- Merge pull request #1421 from vybestack/issue1414 (6bc9557)
- fix: address CodeRabbit review — idle state, lsp passthrough, Windows bun (9f22b5c)
- fix: restore session-recording CLI options and fix LSP absent-key test (aab05b1)
- fix(anthropic): sanitize cache_control blocks to prevent invalid Anthropic payloads (795f770)
- style: format orchestrator bumpEpoch condition (2b43b6d)
- fix: CI build errors + CodeRabbit remediations (87c3851)
- Merge pull request #1413 from vybestack/issue594 (3d56cac)
- fix(ui): re-export modal approval outcome alias (7392a75)
- fix(ui): keep approval key labels and option types in sync (caf78c4)
- chore: regenerate package-lock.json for CI compatibility (4607d94)
- fix: complete branch alignment with main and fix LSP default behavior (ef549e1)
- fix(cli): preserve TextInput cursor position on controlled updates (cc8c481)
- fix: align branch with main — restore diverged non-LSP files (9517a71)
- fix: resolve pre-existing TS errors from main (HighDensityStrategy, stdio) (ea99314)
- chore: sync package-lock.json with vscode-jsonrpc dependency (1f4fdf5)
- fix: address CodeRabbit review — robustness and correctness improvements (229107a)
- merge: resolve conflict with origin/main (keep both ConfigParameters and loadCoreMemoryContent imports) (fb37828)
- fix(ui): close suggest-edit gaps in approval surfaces (ccec9a3)
- feat: expose LSP as 'Experimental LSP Servers' toggle in /settings (Fixes #438) (1f8b710)
- fix: clear stale diagnostics cache on file re-touch (Fixes #438) (2df60bc)
- fix(ui): align suggest-edit keyboard selection guards (2053a9c)
- fix(ui): resolve suggest-edit lint edge cases (ee1f361)
- feat(approval): support suggest-edit command rewrites across tool confirmations (05f3b3d)
- fix: LSP diagnostics pipeline — capabilities, languageId, normalization, first-touch timeout (Fixes #438) (dd92d07)
- Merge pull request #1410 from e2720pjk/issue1409 (ae240c3)
- Merge branch 'main' into issue1409 (5f9c97d)
- fix: resilient shutdown + process exit on fatal errors in LSP subprocess (af38641)
- fix: LSP runtime bugs — entry path, built-in server merge, rootUri, status IDs (Fixes #438) (65fd12c)
- fix: address CodeRabbit review — robustness and correctness fixes (904758b)
- Merge pull request #1394 from vybestack/issue1361 (4988d74)
- fix(recording): align orphan cleanup stale checks and lock-handle test cleanup (7f46047)
- fix(recording,auth): close resume lock gaps and stabilize fallback property tests (9d02218)
- feat: LSP integration — full feature implementation (Fixes #438) (29e38cd)
- fix(recording,cli): close resume lock lifecycle and discovery edge races (12b3c93)
- fix(cli,recording): harden continue parsing and EPERM lock checks (ad4da4b)
- fix(cli): harden terminal protocol restoration on exit paths (567d2e4)
- fix(recording): harden resume-path edge cases from review (9569cde)
- Merge pull request #1403 from vybestack/issue1401 fixes #1401 (6b4a3b1)
- Merge branch 'main' into issue1361 (6531e88)
- merge: resolve conflicts with origin/main (a5dc809)
- Merge pull request #1402 from vybestack/issue1351_1352 (9e02ee8)
- refactor: dedupe PTY cleanup paths and tighten leak regression coverage (c31d52e)
- fix: replace SHA-256 with FNV-1a for log identifiers to resolve CodeQL alert (433139b)
- feat(session): restore conversation history to model and UI on --continue (3316e3a)
- fix: harden PTY teardown and exit cleanup for leak safety (2a42433)
- Merge branch 'main' into issue1351_1352 (e768f34)
- Merge pull request #1399 from vybestack/issue828 resolves #828 (4fc0562)
- test: strengthen invalid-name error assertion in keyring token store test (42deca5)
- fix: use tempDir for stale-lock and corrupt-lock tests (CodeRabbit follow-up) (0dd59e6)
- fix: inject lockDir in tests to avoid writing to real home directory (7fbfb75)
- fix: suppress unhandled rejection in catch path of Promise.race (d114872)
- ci: P11 add secure-store-mode matrix for dual-mode testing (R15.2) (7bf5b3f)
- refactor: P10 delete MultiProviderTokenStore — zero legacy references (8aeecbe)
- fix: suppress unhandled promise rejection from abandoned auth race branch (9f33ddb)
- refactor: P09 replace all MultiProviderTokenStore usage with KeyringTokenStore (916605d)
- fix: address CodeRabbit review feedback (1c4791d)
- test: P08 KeyringTokenStore integration tests — 19 tests, 6 property-based (0a6ef42)
- feat: P07 export KeyringTokenStore from core and CLI (c9571d6)
- feat: P06 KeyringTokenStore implementation — 58/58 tests pass (0cad079)
- test: P05 KeyringTokenStore TDD — 60 behavioral tests, 19 property-based (5e534cb)
- fix: improve OAuth failure modes with device-code fallback and dialog management (Fixes #828) (306bfa9)
- feat: P04 KeyringTokenStore stub with real constructor and validation (207aee5)
- docs: P01 preflight verification — all assumptions confirmed (112ef9d)
- docs: clarify R15.2/R17.8 traceability matrix wording (857811e)
- docs: add full 11-phase plan for KeyringTokenStore (#1351, #1352) (6eea52b)
- docs: add EARS requirements, strip sandbox scope, align with updated issue #1351 (216a360)
- docs: add functional and technical specs for KeyringTokenStore (#1351, #1352) (cf54d3a)
- Merge pull request #1397 from vybestack/issue1191 (5620cba)
- Merge pull request #1396 from vybestack/gmerge/0.19.4 (0721e61)
- fix: bucket failover handles 403 errors and wraps around all buckets (Fixes #1191) (b8514ae)
- fix: update test assertion to match corrected SSH->HTTPS error message (49ef424)
- fix(recording): wire recordProviderSwitch, recordDirectoriesChanged, recordSessionEvent (2be8432)
- fix: regenerate settings schema and docs after autogen formatting change (51e8b7f)
- fix(recording): make dispose() async so it flushes before stopping (ebdff62)
- fix: correct error message to say HTTPS instead of SSH (2ecfc1e)
- Merge pull request #1392 from vybestack/feature/1247-core-system-memory (5799280)
- fix(recording): emit contentAdded/compression events from HistoryService (60773c7)
- fix: address CodeRabbit review comments (0b4ab2d)
- Address CodeRabbit feedback: cache sync, path dedup, test coverage (1f53531)
- Cache core memory alongside user memory for consistency (08ad3a0)
- chore: add phase completion markers (P09-P28) and remove old session persistence files (8c0d4e8)
- feat(recording): wire recording into CLI and remove old persistence system (#1364, #1368) (2af525e)
- feat(recording): implement session listing and deletion (#1366) (2cb0b1f)
- feat(recording): implement resume flow with SessionDiscovery (#1365) (eb61602)
- feat(recording): implement session cleanup and lock manager updates (#1367, #1369) (1b1273d)
- feat(recording): implement recording integration with HistoryService (#1364) (e5cb79a)
- docs: gmerge-0.19.4 tracking documentation (f2645d5)
- fix: post-batch 7 formatting (c584f3b)
- reimplement: /stats session subcommand (upstream c21b6899) (5af676a)
- reimplement: extension documentation parity (upstream 19d4384f) (f6e25f4)
- fix: Replace remaining URL.parse() for Node.js < v22 compatibility (a1634dd)
- Fix TypeError: "URL.parse is not a function" for Node.js < v22 (#13698) (85437fa)
- fix(cli): allow non-GitHub SCP-styled URLs for extension installation (#13800) (371cb8b)
- fix: Add $schema property to settings.schema.json (#12763) (e2bfc2c)
- fix(test): Mock retryWithBackoff in baseLlmClient tests (689a39b)
- reimplement: BaseLlmClient.generateContent (upstream 8c36b106) (892416f)
- Fix prettier formatting (811703f)
- Add core (system) memory with .LLXPRT_SYSTEM files (Fixes #1247) (c85e9c5)
- fix(test): Mock exitCli in tests affected by extension stdout/stderr fix (cd22cd8)
- test(cli): Fix extensionsCommand tests for new no-extensions check (38b4c96)
- Merge pull request #1381 from vybestack/issue1349 (802a18e)
- feat(core): Add chatty system prompt for preview models (upstream d14779b2) (b6050f0)
- fix(config): Minor config improvements (upstream d53a5c4f) (d82fff1)
- feat(cli): Improve extension command messaging (upstream 569c6f1d) (ef325ff)
- fix(core): Fix context window overflow warning for PDF files (upstream 7350399a) (74966b2)
- Merge pull request #1390 from vybestack/issue1387-1388 (c74de80)
- fix: pre-existing lint fix in shell.test.ts (5a86626)
- fix(ci): stabilize mac vitest workers with fork pool limits (0181451)
- fix(cli): Prevent stdout/stderr patching for extension commands (upstream bdf80ea7) (c855983)
- feat(cli): Turn off alternate buffer mode by default (upstream 5e218a56) (caaa9da)
- feat(cli): Restore bracketed paste mode after external editor exit (upstream 1e715d1e) (362ad29)
- Harden continuation directive parsing and align integration imports (7f01906)
- Address CodeRabbit feedback for compression-todo integration test (d1d4e40)
- chore: checkpoint local test edits before batch 3 cherry-pick (1139976)
- Apply formatter output for lint CI consistency (7c2382d)
- fix: align local dependency resolution and restore main finish-reason handling (0b8371e)
- Wire activeTodos into compression context and add context-aware continuation directive (Fixes #1387, Fixes #1388) (ff6efcd)
- fix: reconcile merge artifacts and finalize keyring auth behavior (10e78f6)
- fix: post-batch 2 adjustments (59e8ea0)
- feat(recording): implement session lock manager (#1367) (53920e5)
- feat(docs): Ensure multiline JS objects are rendered properly. (#13535) (db52609)
- Improved code coverage for cli/src/zed-integration (#13570) (01aeef3)
- docs: fix typos in source code and documentation (#13577) (b3ba5ba)
- fix: post-batch 1 typecheck fixes (a479430)
- fix(core): correct bash @p prompt transformation detection (#13544) (9b276b6)
- fix(ui): Correct mouse click cursor positioning for wide characters (#13537) (95cd028)
- Skip pre-commit hooks for shadow repo (#13331) (#13488) (0f3bd9f)
- Use lenient MCP output schema validator (#13521) (4549450)
- merge: resolve conflict with main in slashCommandProcessor.ts (57c43cb)
- Merge pull request #1386 from vybestack/issue1384 fixes #1386 (4b66990)
- feat(recording): implement replay engine (#1363) (1abefc1)
- feat(recording): implement core types + JSONL async writer (#1362) (bf52702)
- docs: gmerge-0.19.4 planning artifacts (23d7f8f)
- fix: address CodeRabbit review findings — probe cache, error handling, test quality (7cc72a2)
- fix: create tilde test dir under home so test is not vacuous (8e7a911)
- feat: add implementation plan for session recording service (#1361) (7a3389f)
- fix: escape shell special characters in path autocomplete suggestions (89da589)
- Merge pull request #1383 from vybestack/issue1380 fixed #1380 (7448ee7)
- Merge pull request #1375 from vybestack/gmerge/0.18.4 (0cfedc1)
- fix: keyring rename, live input masking, profile snapshot guards, auth-key-name settings registry (af40a3f)
- Merge pull request #1382 from vybestack/issue236 (ebcc649)
- fix(sandbox): compute correct --max-old-space-size for sandbox processes (777f518)
- fix: address CodeRabbit review comments across 27 files (64042c1)
- Reduce geminiChat-density property test iterations to 5 (3355bda)
- Reduce property-based numRuns to 5 to prevent vitest onTaskUpdate timeout (0d3e44e)
- Reduce property-based test iterations to prevent CI worker timeout (76b5b27)
- Reduce property-based test numRuns from 50 to 20 (0bb47d7)
- Fix CI timeouts + CodeRabbit nits in density tests (45801f0)
- feat: unified credential management — SecureStore, ProviderKeyStorage, /key commands, auth-key-name (4099b5e)
- Restore densityCompressHeadroom setting lost during merge from main (15d5722)
- Address CodeRabbit nits: remove splice loop, simplify types, merge duplicate filter (294b4fb)
- Merge remote-tracking branch 'origin/main' into issue236 (13df86c)
- fix: revert incorrect copyright changes from Google LLC to Vybestack LLC (933ebcc)
- fix: subcommand handlers exit cleanly, regenerate settings docs (408a27f)
- Fix dead tailHasResponses logic — exclude orphaned AI tool_call entries from tail (c79bd51)
- Fix cross-file offset corruption in dedup stripping (CodeRabbit review) (a251ba3)
- Address CodeRabbit review feedback (5aa88f8)
- fix: use writeToStderr for early fatal errors, fix branding and CI test stability (e4b118f)
- P24-P28: Integration, migration, deprecation + lint fixes (68a5948)
- Merge pull request #1379 from vybestack/issue1378 (e4cd3ce)
- P21-P23: Enriched prompts + todo-aware summarization (0abc228)
- P18-P20: Orchestration — ensureDensityOptimized wired into geminiChat (c376d02)
- fix(oauth): eliminate dual-refresh race in Anthropic token handling (754a1a5)
- P15-P17: Settings registration — density config, accessors, tests (4312970)
- fix: make ToolShared and ToolResultDisplay tests platform-robust (4192322)
- P14: HD Compress impl — deterministic no-LLM compression (3a76e09)
- P13: HD Compress TDD — 25 behavioral tests (all fail against stubs) (6933d1a)
- P11: HD Optimize impl — 3 deterministic pruning phases (6850ed5)
- P10: HD Optimize TDD — 45 behavioral tests (all fail against stubs) (3cfa5c9)
- fix: align test files with merged source code (a841a4a)
- P09: HighDensityStrategy stub — class, factory wiring, exports (587148d)
- P08: HistoryService impl — applyDensityResult, getRawHistory, recalculateTotalTokens (104acfb)
- P07: HistoryService TDD — 23 behavioral tests (19 fail against stubs) (1d6df85)
- Merge pull request #1373 from vybestack/issue727 (4b881cb)
- P06: HistoryService stub — applyDensityResult, getRawHistory, recalculateTotalTokens (3de89c7)
- P05: Types & Strategy Interface impl — verified complete, added pseudocode markers (c846421)
- P04: Types & Strategy Interface TDD — 32 behavioral tests (58efa0b)
- P03: Types & Strategy Interface stub — StrategyTrigger, DensityResult, DensityConfig types (b039884)
- Merge pull request #1376 from vybestack/issue373 (c1d6fb9)
- fix: restore diverged test files from main, remove orphaned tests (37b0285)
- fix(task): close subagent XML tags consistently across sync and async paths (dc3ff19)
- fix: align local lint with CI --max-warnings 0, fix jsx-no-bind warning (8ec5803)
- Add full plan structure per dev-docs/PLAN.md: analysis, pseudocode, 29 phases (4a0f5ab)
- fix(cli): route non-interactive runs through GeminiClient stream path (992681d)
- refactor: extract shared OpenAI-compatible tooling utilities (#373) (a3083d4)
- fix: regenerate package-lock.json after merge (cc9654d)
- Remove monolithic PLAN.md — rebuilding per dev-docs/PLAN.md structure (0fbc359)
- merge: resolve conflicts with main (7e533f5)
- docs: document session recording out-of-band status in gmerge project plans (c62328d)
- Add PLAN.md: 24-phase implementation plan for high-density context compression (c985785)
- feat: subagent self-identification with XML tags in non-interactive mode (fixes #727) (cada0d4)
- Merge pull request #1372 from vybestack/issue826 implements #826 (363265a)
- Merge pull request #1371 from vybestack/issue1370 fixes #1370 (cee86ca)
- fix(tests): add runtimeSettings mock to OAuth provider tests for auth.noBrowser setting (4d43112)
- fix: improve error message per CodeRabbit review — remove misleading NO_BROWSER advice (c85b406)
- feat: add auth.noBrowser setting to disable OAuth browser auto-launch (#826) (e438e82)
- fix: prevent readline fallback from corrupting TUI in sandbox OAuth flow (06cf8fe)
- Address deepthinker review: add concurrency safety requirement, edge cases, back REQ-HD-008.6 in tech spec (a37352a)
- Merge pull request #1354 from vybestack/issue1347 (740d69f)
- Add EARS requirements for high-density context (REQ-HD-001 through REQ-HD-013) (c1019be)
- Add high-density context design docs (overview + technical spec) (9f88bbc)
- Fix test-setup mock: use kebab-case 'base-url' to match real config (9de0b3b)
- Move kimi reasoning settings to modelDefaults for kimi.* pattern (b73cbd6)
- Merge pull request #1345 from vybestack/issue1036 (06601b3)
- fix: address CodeRabbit review — network conflict guard, socat check, remove detached (bf15e03)
- fix: use /tmp/ssh-agent for socat socket (node user can't write to /) (7df7399)
- fix: use TCP tunnel + socat for Podman macOS SSH agent forwarding (9390600)
- fix: mount ~/.ssh/known_hosts into sandbox for SSH host verification (fc03604)
- fix: gmerge-0.18.4 post-sync remediation (378e78f)
- Merge pull request #1342 from vybestack/issue_1295_1296_1298_1299 (1630b5a)
- Merge pull request #1344 from vybestack/issue1167 (d0f8c1c)
- Merge pull request #1343 from vybestack/issue174 (adba75e)
- fix: address CodeQL ReDoS alert and CodeRabbit review feedback (04b1360)
- Merge pull request #1339 from vybestack/issue1130 (0ff574f)
- feat: add Kimi Code subscription quota support via /usages endpoint (5c38da4)
- Extract aggregateTextFromBlocks to shared utils (43e9d89)
- fix: address CodeRabbit review feedback (8db19cc)
- fix: address CodeRabbit review feedback (941b460)
- fix: improve sandbox Git support and SSH agent forwarding (#1036) (e3e5c6f)
- fix: address CodeRabbit review feedback (1cf10af)
- feat: add tab completion for file paths in shell mode (8b1bf88)
- feat: add ast_grep and structural_analysis tools (75a4e26)
- Add one-shot compression strategy (issue #174) (d3cc69f)
- feat: add API-key provider quota support for Z.ai, Synthetic, Chutes, Kimi (3a162b1)
- Merge pull request #1338 from vybestack/issue_170_171_172_173 (573f05a)
- Fix minimum-middle recheck after boundary adjustment, wrap provider errors (128fa6e)
- Merge pull request #1341 from vybestack/issue157 (f8efaab)
- fix: restore Ctrl+\ mouse toggle lost during gmerge cherry-picks (bbe14c3)
- Merge pull request #1340 from vybestack/issue1337 (2439ea2)
- fix: restore useAlternateBuffer default to true and fix mouse escape sequences (efa99fa)
- fix: wire createInkStdio into Ink render options for interactive mode (3a34912)
- Fix CompressionExecutionError constructor arg type (string, not Error) (6c59ace)
- docs: update PROGRESS.md, NOTES.md, AUDIT.md for gmerge v0.18.4 completion (c12012c)
- reimplement: move stdio to core + terminal utils (upstream 2e8d7831) (75abfc4)
- Address CodeRabbit review: typed ephemerals access, empty summary guard (706df1c)
- cherry-pick: MCP dependency bump (upstream 4b19a833) (5da8ce2)
- reimplement: extensions exitCli + output middleware (upstream 013f9848) (e0bebe7)
- reimplement: extract useBanner hook + persistentState (upstream ea3d022c) (b9423ca)
- fix: enforce single in_progress todo in TodoWrite (819fcdf)
- fix: add re-entrancy guard to connectAndDiscover onerror handler (dde1293)
- reimplement: loading indicator + inactivity timer (upstream 843b019c) (61fa4c1)
- reimplement: alternate buffer default to false (upstream 316349ca) (bd60cea)
- fix: post-batch 11 — remove stray conflict marker from zedIntegration.ts (9f25de0)
- feat(zed-integration): Use default model routing for Zed integration (#13398) (a11ed05)
- Enable switching preview features on/off without restart (#13515) (9113677)
- style: format after batch 10 (9313ad9)
- fix: handle unhandled promise rejection from mcpClient.close() in catch block (f50ebe5)
- Protect stdout and stderr so JavaScript code can't accidentally write to stdout corrupting ink rendering (#13247) (1401fd9)
- Remove eslint-disable directives from test files (7e216a0)
- cherry-pick: upstream v0.17.1..v0.18.4 batch 9 (3624742)
- Merge pull request #1334 from vybestack/issue1076 (dda1d48)
- fix(zed-integration): Ensure that the zed integration is classified as interactive (#13394) (48e4c47)
- fix: dispose PTY event listeners and close MCP client on error to prevent file handle exhaustion (62fcad9)
- reimplement: update system instruction on LLXPRT.md reload (upstream 1d2e27a6) (b6b602c)
- Merge pull request #1333 from vybestack/issue204 (ba2adeb)
- Address CodeRabbit review: fix profile test + add promptBaseDir (91bb5e6)
- P15: Full verification complete - all phases done (b7f6761)
- P13-P14: Dispatcher TDD + integration implementation (bdef86b)
- chore: regenerate settings schema and docs for memoryDiscoveryMaxDepth (7c9037a)
- P11-P12: Settings & configuration TDD + implementation (2a0cd9d)
- reimplement: synchronous keyboard writes in kittyProtocolDetector (upstream 9ebf3217) (8db0290)
- Merge pull request #1335 from vybestack/issue980 (a0a4ac7)
- reimplement: click-to-focus + ToolMessage refactor (upstream 2231497b) (c0b1e2c)
- P09-P10: Compression strategy factory TDD + implementation (047cb16)
- fix: eliminate double-retry risk in streaming fetch (8c14577)
- P07-P08: Top-Down Truncation strategy TDD + implementation (1ee51c5)
- fix: update config.test.ts mock assertion for new maxDepth parameter (00dce02)
- fix: add try/catch to ripGrep getDescription to match grep.ts pattern (d533600)
- P05-P06: Middle-Out strategy TDD + implementation (f7b9c4a)
- fix: standardize path handling across tools (closes #980) (1c9c04b)
- fix: retry terminated/transient errors in OpenAIResponsesProvider streaming (1b19b8d)
- feat: add configurable depth for downward LLXPRT.md search (fixes #204) (0c84717)
- P01-P04: Preflight, types/constants, shared utils (TDD + impl) (4a5cc5c)
- fix: post-batch 4 verification — remove duplicate write-todos.ts, fix ThemedGradient props, fix unused Key import, format (1ce754d)
- feat: update thinking mode support to exclude gemini-2.0 models and simplify logic. (#13454) (c7cecda)
- Address deepthinker review findings across all plan phases (a12dff4)
- Fix typo in write_todos methodology instructions (#13411) (3bc78fc)
- [cli-ui] Keep header ASCII art colored on non-gradient terminals (#13373) (#13374) (3867b9b)
- feat(core, cli): Bump genai version to 1.30.0 (#13435) (efc64d5)
- Merge pull request #1325 from vybestack/issue1323 (081d9e3)
- Restore keyboard mode when exiting the editor (#13350) (a5fc5a5)
- fix: post-batch 3 verification — fix branding, types, and remove orphaned test (ed0be7d)
- fix(zed-integration): Correctly handle cancellation errors (#13399) (3cf8b7d)
- feat(sessions): record interactive-only errors and warnings to chat recording JSON files (#13300) (5a8e8d9)
- merge: resolve conflict with main (profileApplication refactor) (b101ac2)
- Followup from #10719 (#13243) (8fec97e)
- Refactor createTransport to duplicate less code (#13010) (1eee847)
- fix: allow MCP prompts with spaces in name (#12910) (dfa35e0)
- reimplement: Escape clears input when idle (upstream b644f037) (9560a83)
- Merge pull request #1331 from vybestack/issue1330 (5542cc8)
- fix: post-batch 1 verification — adapt tests/types to LLxprt API (455dbbb)
- docs: add gmerge v0.18.4 sync plan and playbooks (0795acb)
- fix(cli): fix crash on startup in NO_COLOR mode (#13343) due to ungua… (#13352) (f7092de)
- bug(ui) showLineNumbers had the wrong default value. (#13356) (fac1735)
- Improve pty resize error handling for Windows (#13353) (9670770)
- Support 3-parameter modifyOtherKeys sequences (#13342) (1f11895)
- fix(core): Ensure
read_many_filestool is available to zed. (#13338) (a82f21b) - Improve keyboard code parsing (#13307) (c06838d)
- Remove obsolete reference to "help wanted" label in CONTRIBUTING.md (#13291) (ca61dd9)
- Add implementation plan: PLAN-20260211-COMPRESSION (15 phases) (3066484)
- Address deepthinker review of overview and requirements (d903dbb)
- fix: use array syntax for toHaveProperty with dotted flat keys (f2005b7)
- Merge pull request #1332 from vybestack/issue1214 (c9ea7f7)
- Merge pull request #1260 from vybestack/issue244 (b11ea61)
- feat: configurable model defaults via provider alias config (fixes #1323) (274642c)
- Add EARS requirements and fix overview for compression strategies (25746de)
- fix: eliminate TOCTOU race in async task notification delivery (f5670a9)
- Add design overview for configurable compression strategies (a9dd16d)
- fix: use request start time for TPM calculation to prevent inflated values (d15dab8)
- fix: address 3 critical async task bugs found by expert analysis (c00f127)
- feat(gemini): support thinkingLevel for Gemini 3 models (df2bbc5)
- Merge pull request #1328 from vybestack/issue1327 (9663926)
- fix: resolve Anthropic 400 errors and add public cancelReservation API (fd09616)
- fix(anthropic): merge all consecutive same-role messages to enforce strict role alternation (fixes #1312) (3f0f805)
- chore: apply Prettier formatting and update COORDINATING.md (73030ec)
- fix: address CodeRabbit review feedback on batch output limits (fabbc02)
- fix: guard parallel tool batches against context window overflow (#1301) (a16636a)
- fix: resolve build errors in async task feature (cd63010)
- fix: remove --prompt/-p deprecation warning (320cff8)
- Merge pull request #1320 from vybestack/issue1278 (22792a9)
- Merge pull request #1322 from vybestack/issue580 (6b3ca2b)
- Merge pull request #1326 from vybestack/issue1272-redeux (460aeae)
- Merge pull request #1324 from vybestack/gmerge/0.17.1 (0f54b9c)
- docs: regenerate settings and keybinding docs for CI sync (4972830)
- test(ui): stabilize ProfileChangeMessage output assertions in NO_COLOR CI (5be5d3b)
- chore(subagent): resolve remaining CodeRabbit nits (6c5cd4f)
- fix(cli): keep thinking ownership on first committed gemini segment (6da281b)
- fix: make reasoning defaults model-aware, allow profiles to unset ephemerals (0f1f47d)
- fix(subagent): preserve create wizard state on auto prompt failures (b649c9f)
- fix(ui): complete post-merge coderabbit follow-ups for trust and UI regressions (047ed4c)
- Merge branch 'main' into issue580 (643bb17)
- Merge remote-tracking branch 'origin/main' into gmerge/0.17.1 (48e7e34)
- fix: address CodeRabbit nits in profile application (9b16071)
- fix(ui): align devDependencies with overrides to fix npm publish EOVERRIDE (5b69ec2)
- fix(subagent): stabilize manager navigation and prompt editing UX (ff566fa)
- refactor: remove dead previewFeatures plumbing from gmerge sync (7d4c35b)
- refactor: split profile application workflows for safer maintenance (0fe4815)
- fix: remove commented-out ModelDialog stub from DialogManager.tsx (70e24f1)
- Merge pull request #1314 from vybestack/issue1312 (dbec335)
- fix: deep-audit remediations (cursor restore, ProQuotaDialog cleanup, mcpToTool removal, right-click paste test) (4b59561)
- Merge pull request #1315 from vybestack/fix/1301-parallel-tool-context-overflow (6ec39fb)
- Merge branch 'main' into issue244 (983d7b3)
- Merge branch 'main' into issue1312 (6992551)
- chore: apply Prettier formatting and update COORDINATING.md (75a9d13)
- fix: address CodeRabbit review feedback on batch output limits (67d5abe)
- Merge pull request #1319 from vybestack/issue1310 (d1ee778)
- docs: update gmerge/0.17.1 tracking docs for follow-up plans P1–P4 (0508d2b)
- chore: regenerate settings.schema.json (d95d006)
- refactor: componentize ProfileChangeMessage + upstream formatting parity (upstream ab11b2c cleanup) (ece3312)
- reimplement: check folder trust before /add directory (upstream 9786c4dcf) (4018472)
- reimplement: /permissions modify trust for other dirs (upstream 472e775) (97fc400)
- fix: prevent /tools enable from creating accidental whitelist (9c9dad8)
- fix(subagent): address CodeRabbit review nits (c40e1e1)
- fix: normalize tool names and strengthen defaultDisabledTools tests (cfc287b)
- Merge pull request #1316 from vybestack/issue1148 (52abe9b)
- Merge pull request #1318 from vybestack/issue1317 (16e9ac4)
- docs(core): clarify encrypted fallback threat model (5851c4f)
- Merge branch 'main' into issue1317 (9c51209)
- feat(cli): add schema autocomplete for toolkey commands (0887230)
- Merge branch 'main' into issue1312 (b671cb1)
- Merge pull request #1303 from vybestack/issue1292 (de0f99c)
- feat: disable google_web_fetch tool by default (#1310) (1024da7)
- refactor(subagent): deduplicate auto-prompt logic, fix mode selector initial state (cc0bc76)
- fix(subagent): improve menu routing, add auto mode to create wizard (f57cc64)
- docs: update gmerge/0.17.1 progress, notes, and audit after all batches (afeb99e)
- style: apply prettier formatting (75fedd3)
- reimplement: extension command tests + it.each refactoring (upstream 638dd2f) (e40324c)
- reimplement: show profile name on change in chat history (upstream ab11b2c) (a89f8f8)
- fix(oauth): reuse valid tokens in subagent and profile-load paths (91cc190)
- reimplement: right-click paste in alternate buffer mode (upstream 8877c852) (c3af055)
- reimplement: comprehensive terminal mode cleanup on exit (upstream ba88707b) (b760257)
- reimplement: uninstall multiple extensions (upstream 7d33baab) (52c10a9)
- reimplement: Gemini 3 useful extracts (upstream 86828bb5) (de1f0fb)
- cherry-pick: MCP rework (upstream 8c78fe4f) (c9e1b0a)
- docs: update gmerge/0.17.1 progress after batch 1 (f2a7a3f)
- fix: post-batch 1 verification — adapt GradientRegression test types, fix useFolderTrust deps (cbf9864)
- Fix: Animated scrollbar renders black in NO_COLOR mode (#13188) (f412ee1)
- fix(core): harden tool key storage and reuse key resolver (ea8372f)
- test(e2e): deflake save_memory and shell listing with fake responses (e1e4862)
- feat(cli,core): add systemwide tool API key management for Exa (9bcfe03)
- fix(cli): Exit CLI when trust save unsuccessful during launch (#11968) (e288fe9)
- fix(ui): pin typescript-eslint for deterministic bun lint (4fba886)
- fix: guard parallel tool batches against context window overflow (#1301) (60f2e08)
- fix(anthropic): merge all consecutive same-role messages to enforce strict role alternation (fixes #1312) (04e207b)
- Merge branch 'main' into issue1292 (d40758e)
- test(e2e): assert read_many_files output content validation (683e935)
- Merge pull request #1311 from vybestack/issue1277 (b0a984c)
- docs: add gmerge/0.17.1 planning artifacts + version-based naming convention (6936109)
- refactor: derive todoContinuationRef type from TodoContinuationHook interface (41cf389)
- test(e2e): stabilize read_many_files with fake provider replay (94a020d)
- fix(todo-continuation): prevent pause looping by persisting pause state (b11ead3)
- Merge pull request #1309 from vybestack/issue1307_1308 (8ba649b)
- fix(openai): include mistral tool names in continuation payloads (1166454)
- fix(anthropic): remove invalid opus 4.6 dated id and align runtime typing (1a43c8c)
- Merge branch 'main' into issue1307_1308 (e2c7bbf)
- Merge branch 'main' into issue1292 (1f48986)
- Merge pull request #1305 from vybestack/20260129gmerge (f4369dc)
- fix(openai): omit reasoning_content on assistant tool-call history for strict gateways (3e6d79d)
- fix(openai): preserve provider tool_call IDs in continuation replay (41a19b4)
- fix(openai): harden tool-call continuation payload for strict gateways (c2af053)
- fix(openai): scope tool message name to mistral-compatible payloads (3ffd1ab)
- chore(pr1305): finalize CodeRabbit follow-ups and docs/test consistency (a0b781b)
- feat(providers): add Opus 4.6 adaptive thinking and Codex gpt-5.3 defaults (cfd9200)
- fix(openai): include tool name in continuation placeholder tool messages (18ce139)
- fix(openai): preserve contiguous tool responses for strict tool-call continuations (e7ae10f)
- fix(e2e): force interactive provider args and validate CI auth env (858af73)
- test(e2e): skip flaky cyclic-schema MCP interactive test in CI (b685ae2)
- test(e2e): skip BOM integration suite in CI by default (8f7753e)
- feat(stats): add Codex quota info to /stats quota (fixes #1294) (#1300) (7f3d857)
- style: apply prettier formatting for CI lint gate (2c231bd)
- fix(fake-provider): clarify exhausted response call index (aefae13)
- fix: remove flaky integration tests, add FakeProvider for deterministic E2E (#1292) (c5478ec)
- test(cli): type dedup fixture statuses for CI build (0068824)
- docs(keybindings): clarify ctrl+c context in generated shortcuts (bf2b161)
- fix(review): apply scoped CodeRabbit follow-ups for shell and docs (039af6d)
- merge: reconcile origin/main into 20260129gmerge (80256a7)
- feat(sync): finalize 20260129gmerge reconciliation and shell UX (043f803)
- fix(anthropic): merge 3+ consecutive AI messages and enforce tool_use/tool_result adjacency (issue #1293) (#1302) (4803820)
- fix(auth): finish authType cleanup and provider init (issue #1268) (#1279) (0c89451)
- refactor(core): move compression to GeminiChat and add maxOutputTokens setting (#1289) (7a71493)
- test: remove flaky E2E test for editing non-existent files (#1291) (ed9808b)
- feat: add Anthropic OAuth usage quota display in /status command (#1288) (1183707)
- fix(core): preserve history after failed compression (#1274) (a6606c5)
- feat(shell): Add PID propagation for Ctrl+F interactive shell focus (7635df2)
- chore: bump @jrichman/ink from 6.4.7 to 6.4.8 (cbcff1c)
- fix: make loop detection configurable with unlimited by default (#1287) (2280389)
- fix: update mouse selection on release and add Cmd+C/Ctrl+C keyboard shortcut (#1284) (#1286) (d22b349)
- fix: add reasoning ephemeral defaults to kimi provider alias (#1285) (d643df4)
- fix(ci): replace globalSetup quota check with inline workflow step (#1282) (8c0fb59)
- fix(ci): remove local-only synthetic profile from release workflow (f40a859)
- fix(shell): restore live PTY output and debug logs (ffcee17)
- wip: subagent timeout configuration and task cancellation improvements (a198029)
- fix: properly record tool_use and tool_result for cancelled tools (e743fed)
- fix(ci): add quota-aware key selection to PR review workflow and fix mixed-input test (#1267) (88301db)
- fix(oauth): reuse existing valid tokens before triggering auth flow (#1263) (4779b06)
- fix(auth): remove LLXPRT_AUTH_TYPE and vestigial AuthType code (#1259) (97d2879)
- fix: update subagent test to expect functionResponse for self_emitvalue (d228bee)
- fix: mock setupAsyncTaskAutoTrigger in useGeminiStream thinking tests (8ad9596)
- fix: re-add async task auto-trigger CLI wiring (6361884)
- Revert "fix: wire async task auto-trigger and fix subagent Anthropic compatibility" (163ee95)
- ci: optimize workflows, add nightly tests, and quota-aware key selection (#1257) (1d454d3)
- Merge branch 'main' into issue244 (7ffef29)
- fix: wire async task auto-trigger and fix subagent Anthropic compatibility (0b75573)
- fix: address CodeRabbit review comments for async task feature (694e141)
- fix: record subagent tool calls to history for proper Anthropic tool_use/tool_result pairing (ebc625d)
- fix: show full task IDs instead of truncated prefixes in /task and check_async_tasks (70e1a02)
- feat(providers): add RetryOrchestrator for centralized retry and bucket failover (#1258) (7a8a66b)
- fix: consolidate /tasks and /task into single /task command with subcommands (73f9a83)
- fix: async tasks use same execution path as sync tasks (084d89f)
- fix: register CheckAsyncTasksTool and tasksCommands (6a50157)
- fix: wire getAsyncTaskManager to TaskTool dependencies (aa50753)
- fix: address CodeRabbit review comments for async tasks (f71fc28)
- feat: add async task execution for background subagents (daf0630)
- docs: add comprehensive design and plan for async task execution (issue #244) (2839295)
- fix(oauth): proactively wire bucket failover handler for load balancer sub-profiles (#1255) (f86fb13)
- fix(cli): error when explicit --profile-load fails instead of silently falling back (#1254) (0ce5a88)
- feat: add /setup slash command to re-run welcome onboarding (#1256) (3c3310b)
- docs: Update sync documentation with AnsiOutput type chain fix (0dc3c03) (cd77d67)
- fix(shell): Add full AnsiOutput type support through tool execution chain (0dc3c03)
- docs(compression): document system prompt token inclusion in threshold (fixes #1213) (#1253) (32a853c)
- fix: remove legacy compressToolMessages feature from OpenAIProvider (#1252) (9906a9b)
- fix(release): skip branch creation for nightlies and patches (#1199) (53b1ab7)
- fix(oauth): proactively wire bucket failover handler before API calls (#1151) (#1251) (34b6ce1)
- feat(todo): add persistent TODOs and /todo slash commands (#1249) (cdcbc0c)
- fix(shell): Use updater function for setPendingHistoryItem to properly update resultDisplay (c1fd65e)
- docs: Update sync documentation with AnsiOutput rendering fixes (a6e8c06)
- fix(shell): Sync AnsiOutput component with upstream to fix dimColor and color handling (8b4ba4c)
- fix(shell): Pass AnsiOutput directly to resultDisplay instead of stringifying (8fdfcd3)
- fix: suppress subagent delegation prompt when tools disabled (#1248) (550d51d)
- docs: Update sync documentation with AnsiOutput fix (07b7c96)
- feat(shell): Port AnsiOutput rendering from upstream for PTY mode (18cb40c)
- fix(settings): Exclude Session scope from forScope() iteration (c0202da)
- feat(ui): Complete StickyHeader integration in ToolGroupMessage (e77e438)
- feat(shell): Complete Interactive Shell Phase 4 wiring (612101d)
- feat: derive hardcoded setting lists from central registry (#1242) (7d45460)
- docs: Update plans with Interactive Shell progress (d466210)
- feat(shell): Add interactive shell UI support (181898c) (6df7e5f)
- docs: Add Interactive Shell and StickyHeader integration plans (872fd45)
- docs: Update v0.16.0 sync documentation with final outcomes (ae322be)
- sync(v0.16.0): Batch 5 - Improve MALFORMED_FUNCTION_CALL handling (fb03242) (6bf8dba)
- sync(v0.16.0): Batch 3 - Add StickyHeader component (ee7065f) (e0d9a12)
- sync(v0.16.0): Batch 2 - PICK 4 commits (aa9922b, ad1f0d9, a810ca8, 43916b9, 13d8d94) (29ac8b2)
- fix(editor): ensure preferred editor setting updates immediately (#12981) (8331a89)
- Don't clear buffers on cleanup. (#12979) (fcc0bf9)
- Allow users to reset to auto when it's in fallback mode (#12623) (a8ab70b)
- refactor: move toml-loader.test.ts to use real filesystem (#12969) (4084083)
- feat: autogenerate keyboard shortcut docs (#12944) (128fa14)
- sync(v0.16.0): Batch 1 - PICK 4 commits (d3cf28e, cab9b1f, 1c8fe92, 1ffb9c4) (1587bf8)
- fix(FileCommandLoader): Remove error logs if the operation was aborted (#12927) (55bb542)
- feat(hooks): Hook Result Aggregation (#9095) (ef8fdc8)
- Fix extensions disable/enable commands not awaiting handler (#12915) (852f032)
- Use PascalCase for all tool display names (#12918) (0d856e7)
- feat: sync upstream gemini-cli v0.14.0 → v0.15.4 (#1245) (532ca7f)
- fix(openai-responses): emit reasoning blocks from responses stream (#1156) (ddec3b5)
- fix: retry on all 5xx server errors including 502 Bad Gateway (#1244) (e8a888b)
- feat(brew): add Homebrew support for llxprt-code (#1222) (26a2528)
- feat: add configurable file-read-max-lines setting (#1173) (#1241) (ffc6d1d)
- fix: Use this.name instead of hardcoded provider name in OpenAIResponsesProvider.getModels() (#1237) (c404c15)
- feat: central settings registry + separated RuntimeInvocationContext fields (#1238) (7a5275d)
- fix: make CLI build script cross-platform safe (chmod → node script) (#1236) (5bab194)
- fix: apply EmojiFilter to thinking blocks in CLI and interactive stream (#1234) (8893a53)
- feat: sync upstream v0.13.0 to v0.14.0 (cherry-picks, TDD reimplementations, MCP hang fix) (#1233) (53e9814)
- fix: clean up PTY and child_process resources to prevent posix_spawnp exhaustion (#1232) (cd7dc00)
- fix: Add stream retry with exponential backoff to AnthropicProvider (#1229) (5ecb6a2)
- feat(core): clip run_shell_command output in the middle when truncating (#1231) (029ccee)
- fix: add exponential backoff to stream retries for terminated errors (#1187) (#1227) (b29bd51)
- fix(ci): avoid vitest thread RPC timeouts on Windows (#1225) fixes #1224 (hopefully) (d5c2a38)
- refactor(todo): remove priority field from todo system (#1223) fixes #1165 (17c4ac4)
- Fix Anthropic thinking with tool calls (#1160) (031616b)
- fix(ci): use --prompt flag for llxprt non-interactive mode (#1221) (84845e6)
- fix(ci): refactor pr-review to agentic workflow with proper baseurl handling (#1219) (61e126c)
- fix(core): sync prompt token counts with cached usage (#1215) (f78e565)
- feat(providers): backport staticModels support to main (issue #1206) (#1208) (18620be)
- fix: backport v0.8.1 fixes to main (#1200) (45260c7)
- feat: upstream merge v0.12.0 → v0.13.0 (#1153) (c5843db)
- feat: implement AST-aware tools with syntax validation, enhanced context, and concurrency protection (#1143) (0a24711)
- Remove CODEX_SYSTEM_PROMPT handling from OpenAIResponsesProvider (closes #1177) (#1178) (8927988)
- Fix OAuth refresh race with token locks (#1161) fixed #1159 (0f05075)
- fix: clean up abort listeners in non-interactive tool executor (#1164) fixed #1092 (cdf0ee3)
- feat(core,cli): integrate models.dev registry for unified model hydration and discovery (#1124) (18cdc58)
- fix: restore core package name for docker build compatibility (320047a)
- chore: update to 0.9.0 (c588acb)
Full Changelog: v0.8.1...v0.9.0