What's Changed
- feat(A5a): manual context compaction (/compact, /context) by @zjshen14 in #114
- chore(deps): bump actions/checkout from 4 to 6 by @dependabot[bot] in #99
- chore(deps): bump tsx from 4.21.0 to 4.22.0 by @dependabot[bot] in #103
- chore(deps): bump diff from 8.0.4 to 9.0.0 by @dependabot[bot] in #105
- chore(deps): bump typescript-eslint from 8.58.0 to 8.59.3 by @dependabot[bot] in #106
- chore(deps): bump yaml from 2.8.3 to 2.9.0 by @dependabot[bot] in #107
- chore(deps): bump @clack/prompts from 0.9.1 to 1.4.0 by @dependabot[bot] in #108
- chore(deps): bump ora from 8.2.0 to 9.4.0 by @dependabot[bot] in #111
- chore(deps): bump commander from 13.1.0 to 14.0.3 by @dependabot[bot] in #110
- chore(deps): bump @anthropic-ai/sdk from 0.91.1 to 0.96.0 by @dependabot[bot] in #109
- fix(prune): prevent model-first history when fallback fires + add task workflow guide by @zjshen14 in #123
- fix(agent): abort loop on repeated environmental errors by @zjshen14 in #124
- chore(deps): bump github/codeql-action from 3 to 4 by @dependabot[bot] in #100
- chore(deps): bump actions/setup-node from 4 to 6 by @dependabot[bot] in #101
- chore(deps): bump codecov/codecov-action from 5 to 6 by @dependabot[bot] in #98
- fix(sandbox): loosen auto profile so normal coding workflows succeed by @zjshen14 in #148
- fix(agent): retry once when LLM returns empty response mid-task by @zjshen14 in #131
- fix: friendly error for missing session id; guard stdin.ref() for non-TTY stdin by @zjshen14 in #132
- fix(mcp): validate --transport and guard interactive prompts behind isTTY by @zjshen14 in #133
- docs: sync eval default Gemini model and add billing note by @zjshen14 in #134
- fix(todo): nudge the agent to continue when pending items remain by @zjshen14 in #150
- fix(bash): unblock when backgrounded grandchildren hold stdio pipes by @zjshen14 in #152
- fix(resume): unblock Gemini thinking-model sessions + prune-anchor hardening by @zjshen14 in #154
- fix: read version from package.json and mention OpenAI in description by @zjshen14 in #129
- docs: add mcp/ layer and missing state files to Source Structure in CLAUDE.md / AGENTS.md by @zjshen14 in #160
- fix(compact): add gemini-3.x and gpt-4.1 to contextWindowFor lookup table by @zjshen14 in #158
- fix(runner): show error when edit tool fails instead of silently swallowing it by @zjshen14 in #162
- chore(deps): bump typescript from 5.9.3 to 6.0.3 by @dependabot[bot] in #138
- chore(deps): bump typescript-eslint from 8.59.3 to 8.59.4 by @dependabot[bot] in #139
- fix(resume): persist thoughtSignature in JSONL so resume matches live path by @zjshen14 in #163
- validate --max-turns and --temperature flags to prevent silent NaN by @zjshen14 in #130
- fix(gemini): strip control tokens from text stream (Bug A, #125) by @zjshen14 in #147
- feat(permissions): add configurable deny rules to the confirmation system by @zjshen14 in #156
- feat(sandbox): implement real strict mode for macOS and Linux by @zjshen14 in #155
- chore(deps): bump @types/node from 22.19.17 to 25.9.1 by @dependabot[bot] in #140
- chore(deps): bump @google/genai from 1.48.0 to 2.6.0 by @dependabot[bot] in #141
- chore(deps): bump eslint from 10.2.0 to 10.4.0 by @dependabot[bot] in #142
- chore(deps): bump jiti from 2.6.1 to 2.7.0 by @dependabot[bot] in #143
- chore(deps): bump openai from 6.35.0 to 6.39.0 by @dependabot[bot] in #144
- chore(deps): bump @anthropic-ai/sdk from 0.96.0 to 0.98.0 by @dependabot[bot] in #145
- fix(plan): skip auto-execute when run --plan produces a direct answer by @zjshen14 in #135
- feat: add /undo command to remove the last agent turn from history by @zjshen14 in #165
- feat(permissions): add ask rules to force confirmation for SAFE_COMMANDS by @zjshen14 in #164
- docs: sync CLAUDE.md and AGENTS.md source structure with actual codebase by @zjshen14 in #167
- docs: mark A5a as implemented in a5-compact-context.md by @zjshen14 in #178
- fix(sandbox): expand strict-mode read paths so the shell actually loads on macOS Tahoe + Homebrew by @zjshen14 in #179
- docs(architecture): document the deny pattern format added in #156 by @zjshen14 in #180
- prompt: strengthen parallel-tool-call rule with cost framing and example by @zjshen14 in #181
- fix(renderer): expand compact-tool results on error instead of green ✓ by @zjshen14 in #182
- fix(renderer): keep spinner alive across tool calls and LLM re-entries by @zjshen14 in #184
- feat(input): multi-line input with backslash + Enter continuation by @zjshen14 in #183
- docs(A5b): promote A5b to ready-for-implementation with Phase 2 design decisions by @zjshen14 in #189
- docs(readme): sharpen positioning and add a richer demo GIF by @zjshen14 in #190
- docs(readme): badges, star-history chart, contributor on-ramp by @zjshen14 in #192
- feat(A5b): auto-compact at turn boundary with safety gates by @zjshen14 in #191
- refactor(agent): extract run() loop body into focused helper methods by @zjshen14 in #199
- feat(tools): add Tool composition interface with multi_edit proof of concept by @zjshen14 in #193
- feat: expand bash SAFE_COMMANDS allowlist with common read-only utilities by @zjshen14 in #198
- feat(skills): add /changelog built-in skill by @zjshen14 in #200
- chore(deps): bump ws from 8.20.0 to 8.21.0 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #185
- chore(deps): bump qs from 6.15.1 to 6.15.2 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #186
- chore(deps): bump @protobufjs/utf8 from 1.1.0 to 1.1.1 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #187
- chore(deps): bump protobufjs from 7.5.4 to 7.6.1 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #188
- chore(deps): bump openai from 6.39.0 to 6.39.1 by @dependabot[bot] in #170
- chore(deps): bump prettier from 3.8.1 to 3.8.3 by @dependabot[bot] in #173
- chore(deps): bump tsx from 4.22.0 to 4.22.3 by @dependabot[bot] in #174
- chore(deps): bump @google/genai from 2.6.0 to 2.7.0 by @dependabot[bot] in #169
- chore(deps): bump @anthropic-ai/sdk from 0.98.0 to 0.100.1 by @dependabot[bot] in #171
- chore(deps): bump @clack/prompts from 1.4.0 to 1.5.0 by @dependabot[bot] in #175
- chore(deps): bump the npm_and_yarn group across 1 directory with 2 updates by @dependabot[bot] in #201
- docs(readme): document OPENCLI_SYSTEM_MD and OPENCLI_MAX_TOOL_OUTPUT by @zjshen14 in #202
- fix(eval): substring-aware notContains + multi_edit scenario by @zjshen14 in #204
- docs(A5b): mark A5b as implemented in a5-compact-context.md by @zjshen14 in #203
- feat(eval): workflow_dispatch eval + first parity baseline by @zjshen14 in #205
- docs: add multi_edit and tool composition fields to source structure docs by @zjshen14 in #207
- fix(prompt): include multi_edit in write-tool reminder conditions by @zjshen14 in #208
- docs: fix architecture.md — add multi_edit to reminders and confirmation table by @zjshen14 in #209
- fix(renderer): handle multi_edit in toolStyle, formatToolArgs, and summariseResult by @zjshen14 in #210
- fix(confirm): extend file_path extraction to cover multi_edit by @zjshen14 in #212
- docs: document env_error_loop guard and add missing observability events by @zjshen14 in #213
- docs: add OpenCLI vs Claude Code / Gemini CLI / Aider comparison by @zjshen14 in #215
- docs(D2): context-management replay design + roadmap link by @zjshen14 in #216
- refactor(agent): inline turn-loop helpers; fix compact test cap regression by @zjshen14 in #228
- feat(eval): D2 replay harness skeleton — Tape, TapeClient, TapeRegistry, runTape by @zjshen14 in #229
- feat(eval): D2 real card_trade tape + redaction script + empty-assistant padding by @zjshen14 in #231
- fix(eval): make redact-tape actually rewrite session_start.cwd as documented by @zjshen14 in #232
- feat(eval): D2 synthesised edge-case replay tapes — stuck-loop, env-error-loop, nested compaction by @zjshen14 in #233
- docs(D2): flip replay sub-item status to Implemented; link tracking issue for remaining surfaces by @zjshen14 in #235
- fix(renderer): add spacing separator for long tool names in printToolResultExpanded by @zjshen14 in #214
- fix(renderer): remove misleading first-line "file path" from read result summary by @zjshen14 in #217
- fix(compact): add 128k context window entries for o1/o3/o4 mini reasoning models by @zjshen14 in #227
- chore(deps): bump @types/diff from 7.0.2 to 8.0.0 by @dependabot[bot] in #225
- chore(deps): bump openai from 6.39.1 to 6.42.0 by @dependabot[bot] in #224
- chore(deps): bump typescript-eslint from 8.59.4 to 8.60.1 by @dependabot[bot] in #223
- chore(deps): bump eslint from 10.4.0 to 10.4.1 by @dependabot[bot] in #222
- chore(deps): bump @clack/prompts from 1.5.0 to 1.5.1 by @dependabot[bot] in #221
- chore(deps): bump tsx from 4.22.3 to 4.22.4 by @dependabot[bot] in #220
- chore(deps): bump vitest from 3.2.4 to 3.2.6 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #206
- chore(deps): bump hono from 4.12.18 to 4.12.25 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #240
- fix: return synthetic functionResponse for activate_skill to keep conversation well-formed by @zjshen14 in #242
- chore(deps): bump typescript-eslint from 8.60.1 to 8.61.0 by @dependabot[bot] in #250
- chore(deps): bump @google/genai from 2.7.0 to 2.8.0 by @dependabot[bot] in #249
- chore(deps): bump prettier from 3.8.3 to 3.8.4 by @dependabot[bot] in #248
- chore(deps): bump eslint from 10.4.1 to 10.5.0 by @dependabot[bot] in #247
- chore(deps): bump @types/node from 25.9.1 to 25.9.3 by @dependabot[bot] in #245
- chore(deps): bump @anthropic-ai/sdk from 0.100.1 to 0.104.1 by @dependabot[bot] in #244
- feat: inject periodic mid-loop reminder every 5 turns to counter instruction drift by @zjshen14 in #211
- chore(deps): bump typescript-eslint from 8.61.0 to 8.61.1 by @dependabot[bot] in #255
- chore(deps): bump @google/genai from 2.8.0 to 2.9.0 by @dependabot[bot] in #256
- chore(deps): bump @anthropic-ai/sdk from 0.104.1 to 0.105.0 by @dependabot[bot] in #259
- chore(deps): bump openai from 6.42.0 to 6.44.0 by @dependabot[bot] in #262
- chore(deps): bump @clack/prompts from 1.5.1 to 1.6.0 by @dependabot[bot] in #258
- chore(deps): bump @types/node from 25.9.3 to 26.0.0 by @dependabot[bot] in #261
- feat(eval): D2 sandbox contract eval — sealed allow/deny table per profile by @zjshen14 in #238
- chore(deps): bump openai from 6.44.0 to 6.45.0 by @dependabot[bot] in #268
- chore(deps): bump tsx from 4.22.4 to 4.23.0 by @dependabot[bot] in #267
- chore(deps): bump @clack/prompts from 1.6.0 to 1.7.0 by @dependabot[bot] in #266
- chore(deps): bump ora from 9.4.0 to 9.4.1 by @dependabot[bot] in #265
- chore(deps): bump @types/node from 26.0.0 to 26.1.0 by @dependabot[bot] in #264
- chore(deps): bump eslint from 10.5.0 to 10.6.0 by @dependabot[bot] in #263
- chore(deps): bump typescript-eslint from 8.61.1 to 8.63.0 by @dependabot[bot] in #270
- chore(deps): bump openai from 6.45.0 to 6.46.0 by @dependabot[bot] in #271
- chore(deps): bump @types/node from 26.1.0 to 26.1.1 by @dependabot[bot] in #272
- chore(deps): bump eslint from 10.6.0 to 10.7.0 by @dependabot[bot] in #275
- chore(deps): bump openai from 6.46.0 to 6.48.0 by @dependabot[bot] in #284
- chore(deps): bump typescript-eslint from 8.63.0 to 8.64.0 by @dependabot[bot] in #283
- chore(deps): bump @anthropic-ai/sdk from 0.105.0 to 0.112.3 by @dependabot[bot] in #282
- chore(deps): bump tsx from 4.23.0 to 4.23.1 by @dependabot[bot] in #281
- chore(deps): bump openai from 6.48.0 to 6.49.0 by @dependabot[bot] in #289
- chore(deps): bump typescript-eslint from 8.64.0 to 8.65.0 by @dependabot[bot] in #287
- chore(deps): bump eslint from 10.7.0 to 10.8.0 by @dependabot[bot] in #286
- chore(deps): bump @google/genai from 2.9.0 to 2.13.0 by @dependabot[bot] in #285
- feat: B6 — first-class OSS and local model support by @zjshen14 in #297
- docs: make the Co-Authored-By trailer model-agnostic by @zjshen14 in #307
- fix(file): bound directory walks against symlink cycles and deep trees by @zjshen14 in #303
- fix(sandbox): drop ~/.config and ~/.local from auto write-set by @zjshen14 in #305
- fix(config): strip prototype-hijacking keys from parsed config by @zjshen14 in #304
- fix(prompt): append non-overridable safety footer to OPENCLI_SYSTEM_MD by @zjshen14 in #306
- chore(release): v0.1.4 — security release by @zjshen14 in #310
- docs: sync CLAUDE.md/AGENTS.md with v0.1.4 security hardening by @zjshen14 in #311
New Contributors
- @dependabot[bot] made their first contribution in #99
Full Changelog: v0.1.3...v0.1.4