v0.29.0#
These are the release notes for gptme version v0.29.0.
Contributors#
Thanks to everyone who contributed to this release:
@erikbjare, @TimeToBuildBob
Changelog#
Changes since v0.28.3:
📦 gptme#
✨ Features (39)#
feat: improve token awareness to show warnings at meaningful thresholds (
fce2382a)feat: make hook parameters consistent across all hook types (
2e71dcc9)feat: expose MCP tool commands as slash commands (#760) (
2a89022f)feat(mcp): add MCP discovery and dynamic loading support (#685) (
e8af7604)feat: add token & time awareness tools/hooks (#665) (
c0391ddd)feat: show conversation ID in goodbye message (
ad5bc4d0)feat: add gptme-util prompts expand command (
fb543142)feat: add –profile flag for performance profiling (
9ce6e3e8)feat(shell): add configurable shellcheck exclude codes (#747) (
46a54148)feat(shell): add simple shellcheck validation (#740) (
20f28f6b)feat(lessons): add message pattern-based mode detection for Phase 3 (#722) (
fc131775)feat: switch CI from claude-3-5-haiku to claude-haiku-4-5 (#712) (
64e04708)feat(llm): add support for Claude Haiku 4.5 (#705) (
e48fcd2f)feat(lessons): implement status filtering for lesson lifecycle management (#702) (
be25b397)feat: support @log workspace magic value in API (#695) (
9fc71ad1)feat: save removed tool outputs during auto-compacting (
186ac031)feat(gh): add optional commit_sha parameter to check specific commits (
3df3c44f)feat(lessons): add configurable lesson directories via gptme.toml (
0a05ec61)feat(gh): add quick status check command (
76c67881)feat(gh): show run IDs for failed checks and add –log-failed example (
c3f131c3)feat: enhance lesson matching with tools and history-based deduplication (
5aefbe37)feat(llm): add configurable API timeout for OpenAI-compatible providers (#681) (
6a2d532f)feat: enhance GitHub PR reading with code context and suggestions (#689) (
4c1cef43)feat: implement basic lesson system with metadata and auto-inclusion (#687) (
3e81a0d2)feat: add tool_format to telemetry and remove redundant log (
d59332ab)feat(browser): add Accept header to prefer markdown/plaintext over HTML (#680) (
f92ab671)feat: improve conversation history context (#679) (
35c303d3)feat(shell): add 20-minute default timeout to prevent stuck commands (#678) (
526da1cb)feat(telemetry): add hostname to resource attributes (#676) (
0d77253f)feat(telemetry): add agent name and interactive mode metadata (#675) (
206ff1fb)feat: reintroduce OpenAI and Anthropic telemetry instrumentation (
d4b031f0)feat: add GENERATION_PRE hook trigger before LLM generation (
f69c3d37)feat: add concise repr to Log class (
b9485b98)feat: implement auto-reply mechanism as LOOP_CONTINUE hook (
de79d5ba)feat: implement /compact and auto-compacting (#645) (
61392fc0)feat: implement comprehensive hook system and command registration (#156) (#660) (
32d39817)feat: auto-restore todo state when resuming conversations (#659) (
debcb096)feat: implement complete tool and auto-reply mechanism for autonomous operation (
14952de1)feat: emit hint when save tool barely changes file (
1601f5e8)
🐛 Fixes (77)#
Click to expand
fix: fix issue with hook args (
4fa95612)fix: correct complete_hook signature to match GENERATION_PRE calling convention (
90a12f9c)fix: handle pipe operators inside quoted strings in shell commands (#764) (
5f80b533)fix: skip generating initial messages when resuming conversations (#763) (
2898e79d)fix: add special haiku-adapted to_xml (for testing) (
cc868960)fix(tools): add support for Haiku 4.5 XML format (#752) (
96f87e43)fix: run auto-naming in background thread to avoid blocking CLI (
1d17674f)fix: fix anthropic non-streaming requests being denied during auto renames (#759) (
397634ab)fix: disable time and token awareness hooks by default (until issues are fixed) (
6b6ad577)fix(mcp): add resilience with auto-restart and retry on connection failures (#719) (
d30fd6ca)fix: improve tool instructions, add pyyaml dependency (#755) (
696f1430)fix: lower ding log message level from info to debug (
41d604d9)fix(shell): fix pipe handling and add telemetry error filter (#750) (
3bb57151)fix: improve handling of keyboard interrupts in precommit and autocommit hooks and commands (
8ea8db89)fix: include tool-registered commands in autocomplete (
25c9772a)fix: fixed log formatting of included lessons (
a95ac3f7)fix(llm): extend Anthropic retry logic to handle all transient 5xx errors (#746) (
418b4669)fix(llm): use client defaults for timeout instead of explicit value (#735) (
0e3dcbcc)fix(llm): update deepseek models context window to 128k (#742) (
dca014fe)fix(shell): handle file descriptor redirects and complex tool syntax (#736) (
5207e421)fix: include duration in tool call telemetry (
d7dfb9c9)fix: ensure MCP tools reload with updated config (#731) (
a46e6799)fix(shell): handle compound commands (for/while/if loops) correctly (#725) (
64f7d7c4)fix(shell): handle compound operators and preserve tilde expansion (#730) (
1213b372)fix: extend context script timeout to 60s, log warning if it takes >10s (
a5274983)fix: log message when lessons included (
45ef8d95)fix(eval): set tool_format before LogManager.load() (#726) (
f9403a1f)fix(tests): skip test_subagent for claude-haiku-4-5 due to timeout (#728) (
6165feb3)fix(shell): redirect stdin in pipelines to prevent deadlock (#715) (
350d87d1)fix(codeblock): improve nested block detection to fix XFAIL tests (#711) (
d3de4165)fix(auto-naming): strip think tags from LLM responses (#716) (
ec6224b7)fix(shell): include heredoc content when splitting compound commands (#714) (
d6b256b6)fix(openai): preserve tool results in gpt-5 models (#713) (
a9616f78)fix: set disallowed_special=[] for encode in len_tokens (
e6629375)fix: correct haiku pricing (
8e986ea6)fix: fix metadata for haiku (
9513741b)fix(anthropic): add timeout configuration to prevent indefinite hangs (#701) (
23fa89f3)fix(anthropic): handle status 529 overload errors (#697) (
5f851d10)fix(complete): allow up to 2 auto-replies before exiting autonomous mode (#696) (
fd94f689)fix(autocompact): prevent backup filename growth with repeated compactions (#693) (
ad7e1574)fix(tests): update remaining lesson tests to mock _get_lesson_index (#694) (
b1d3d775)fix(autocompact): reduce limits to avoid Anthropic token approximation errors (
a382baaa)fix(tests): replace tmp_path with tempfile to avoid pytest-retry KeyError (
2825a9a5)fix(tests): update tests for lesson system changes (
78743917)fix(gh): poll original commit checks even if PR head updates (
09f1622f)fix(tests): update exception test to mock cached index getter (
36b5b6a1)fix(gh): add logging for check polling (
c8494836)fix: extract tool name correctly from codeblock lang (
fc874f30)fix: cache lesson index per-thread to reduce log noise (
bc3364c3)fix: prevent duplicate tool loading warnings in evals (#690) (
fa4e40a0)fix: show full path in patch tool output (
dc1c8458)fix(anthropic): set temperature/top_p only for models not supporting reasoning, even if thinking disabled (as if due to –tool-format tool) (
9eb0c704)fix: remove emoji from OTLP log message (
dc0ae258)fix: remove redundant log message (
cc2262ee)fix: shortened telemetry startup log (
4467046d)fix(ci): pin openai version in pre-commit mypy config (#682) (
565a3a3f)fix(telemetry): Strip http:// prefix from OTLP endpoint for gRPC (
87985904)fix(telemetry): switch to using OTLP for both metrics and traces (#668) (
0bf1839b)fix: fixes complete, autocommit, and pre-commit hooks (#672) (
ba81cb24)fix(config): always apply CLI defaults for stream and interactive (
c1571069)fix: pass workspace and manager args to GENERATION_PRE hooks (
f2818334)fix: use trigger_hook function to properly trigger hooks (
5d84602d)fix(complete): handle Log objects in complete_hook (
1e4ff12f)fix(autocompact): handle Log objects in hook (
bc64b55d)fix(complete): stop session immediately after complete tool (
be0282b8)fix: prevent infinite loop when hooks fail (
06081068)fix: reduce verbosity in hook error logging (
67aa156b)fix(shell): prevent editors from breaking terminal state (
8f5b436b)fix: prevent cache_control on empty text blocks in Anthropic API (#653) (
e19f4fd8)fix: improved complete tool detection in chat loop (
2645dab6)fix: increase number of past conversation summaries in system prompt to 5 (
d151017f)fix: handle nested code blocks in patch blocks correctly (
42cff496)fix: add version header and correct heading levels in release notes (
51c4066b)
🔨 Misc (42)#
Click to expand
chore: bump version to 0.29.0 (
556b0621)test: added xfail tests for patch with relaxed matching for whitespace-only lines (
7f813225)refactor: enable ruff import sorting and sort all imports (
3dbd45bd)test: fix token_awareness tests to handle threshold-based warnings (
8d5a40c3)chore: add worktree/ to gitignore (
899d94dd)refactor: simplify and improve typing of hook signatures (#765) (
e003b285)test: mark flaky test with xfail (
a52a846b)docs: add nitpick ignore for failing targets (
819ad518)refactor: use manager.workspace instead of threading workspace parameter (
c90f55d4)test: added xfail shell test (
3d4da112)test: fixed missing parameter in test (
38b0bc8e)refactor(cli): move auto-naming from logmanager to chat.py (#757) (
bf2fae75)tests: remove flaky/slow/stalling test (
5dd354d7)docs: fixed docstring formatting (
9dc9cdf2)docs: complete /edit command demo documentation (#734) (
d66e76e7)test(codeblock): add streaming mode variants for header+backticks tests (#721) (
8bc29a4b)tests: adjust allowed prompt sizes with buffer in non-CI environments (
b2ccf215)tests: fix tests to check for response type (
48a3eaae)test(codeblock): remove xfail markers from passing header tests (#718) (
320cc4b8)tests: comment out bad assert (
4777e9d5)docs(alternatives): add Hosting and Funding columns to comparison table (#698) (
f22195f5)test(codeblock): add edge case tests for nested markdown blocks (#704) (
36646f93)docs: suggest
uv tool installas pipx alternative (23f9b2c5)revert: restore tmp_path in setup_conversation fixture (
2e5fdd35)docs: simplified python lesson (
b16580bd)docs(lessons): add uv shebang for directly executable scripts (
5aa47af6)docs(lessons): rewrite Python lesson with practical gptme-specific guidance (
af96ecc8)refactor(gh): extract common check fetching logic and address review comments (
e7d9acc7)docs: exclude lessons from Sphinx build (
7119fb4c)docs: add example lessons for testing lesson system (
fc54397d)docs: improve server docs, mention gptme.ai (
1850de88)docs: comprehensive streaming bug investigation report (
2ad5d258)Revert “fix(config): always apply CLI defaults for stream and interactive” (
001afd13)debug: add logging to complete_hook for diagnosis (
e7b2e40e)refactor: consolidate auto-compact/precommit functionality into tools (#666) (
8c12b806)docs(shell): move timeout config from agent instructions to module docstring (#662) (
fabdf981)test: document actual behavior of ambiguous bare backticks (
3e7841bc)test: add comprehensive nested codeblock tests (
42df7d90)chore: remove build_changelog.py, now available upstream (
22a316dd)refactor: simplify version header logic in build_changelog.py (
4e24c182)docs: fixed changelog index (
e7b276b0)chore: improve changelog version detection and update contributors (
6e200052)
Full Changelog: https://github.com/gptme/gptme/compare/v0.28.3…v0.29.0