v0.31.0#
These are the release notes for gptme version v0.31.0.
Contributors#
Thanks to everyone who contributed to this release:
@erikbjare, @nikongo, @TimeToBuildBob
Changelog#
Changes since v0.30.0:
📦 gptme#
✨ Features (25)#
feat(lessons): auto-discover lessons from plugins (#944) (
ab531ad20)feat(message): add MessageMetadata TypedDict for token/cost tracking (#943) (
684bbb6ff)feat(cost): implement cost_awareness hook for session cost tracking (#939) (
ed409cb26)feat(telemetry): improve trace quality with context propagation and rich metrics (#942) (
5be5a39d4)feat(shell): add background job support for long-running commands (#902) (
c48bf9bd7)feat(setup): validate API keys before saving (Issue #930) (#931) (
bf1bc716b)feat(lessons): add caching and deduplication to lesson index (#928) (
3fdbf4186)feat(hooks): add form auto-detection hook (Issue #591) (#919) (
40dc68f45)feat(logmanager): add content-addressable file storage (Issue #150) (#913) (
86febf7de)feat(tools): add form tool for structured user input (Issue #591) (#911) (
92c475a47)feat: add Docker container for GitHub bot (Issue #305) (#905) (
ec1204fa9)feat(tmux): add wait command to monitor long-running commands (#901) (
0ee75e544)feat(prompt): add multi-line input support (#899) (
558ee3b5f)feat(autocompact): add Phase 3 extractive compression for long messages (#886) (
cca057c63)feat: add diagnostic logging to shell tool for Issue #408 (#890) (
750009193)feat: support GPTME_TTS_SPEED and set exclude-newer for tts_server.py script to fix issues (
eed3a987c)feat(llm): add constrained decoding support (#776) (
94621288d)feat: add Cursor .mdc rules support (Issue #686 Phase 5) (#882) (
59723c493)feat: Enhanced plugin management with smart src/ layout discovery (#873) (
0ccdfbe44)feat: add compression analysis utilities and script (#864) (
fd3d8edc2)feat(eval): GEPA Week 3 - HybridOptimizer with adaptive multi-stage optimization (#859) (
58cce70f8)feat(context): implement hooks-based context compression architecture (#844) (
20435f324)feat(context): implement Phase 3.1.1 core infrastructure (#860) (
b898c8550)
🐛 Fixes (50)#
Click to expand
fix(config): remove quiet parameter from cache key to prevent duplicate entries (
61b81b0f5)fix: mark plugins as loaded even if no tool_modules (
8917b180f)fix: more fixes to invalid unicode handling in shell tool (
65151ee60)fix: improved style of initial output (
06730c6bb)fix: fix invalid unicode handling in shell tool (
d3b7ddd87)fix: hide token/time/cost awareness messages by default (
755070737)fix: suppress duplicate config log when loading conversation metadata (
10148567b)fix: reduce plugin logging spam by logging each plugin once when loaded (
8e50bcde7)fix: handle interrupt detection when hooks add messages after interrupt (
216f274da)fix(autocompact): add minimum savings threshold to avoid wasteful compaction (#946) (
2f5b7825c)fix: suppress telemetry token warnings (
2aa146e46)fix: fixed metadata for xai models (
d9c42f2ba)fix: improved agent setup instructions with more extensive extra/optional/recommended packages (
4f5b64dab)fix: handle unquoted glob patterns in Cursor .mdc files (
b09f74dca)fix(telemetry): remove noisy codeblock tracing (Issue #199) (#936) (
c36e25089)fix: capture both stdout and stderr from context_cmd on error (#933) (
4e81c9187)fix: attribute perplexity use to gptme on openrouter (#929) (
50792e65f)fix: fix prompt_systeminfo to work on android/termux (
e5fa38fd8)fix(tests): clean up gptme_N sessions in tmux test fixture (#926) (
dbe1676e4)fix: read [prompt] section in project config (#927) (
1ee053ad1)fix(telemetry): filter NotGiven attribute warnings from OTEL instrumentation (#925) (
a50b70623)fix(tmux): truncate long pane output to prevent context overflow (Issue #923) (#924) (
7590830b8)fix(llm): add empty reasoning_content field for DeepSeek assistant messages with tool_calls (#918) (
20f4888cf)fix(tests): add cleanup fixtures for ShellSession and subagents (Issue #910) (#912) (
980917817)fix(mcp): preserve server process when conversation is interrupted (#914) (
c4b59c240)fix(browser): improve error messages for search bot detection (#904) (
ba3c0233f)fix(config): remove assertions requiring prompt/env in user config (#909) (
06a451433)fix(codeblock): handle nested codeblocks with same language tag (#903) (
79fdd6ea9)fix(shell): prevent output mixing between commands (Issue #408) (#906) (
25dac14f2)fix(llm): handle mixed content types in Groq/DeepSeek transformation (#896) (
31ef55c01)fix(message): resolve file paths to absolute when serializing (#898) (
4a62f837d)fix(message): escape Rich markup in non-code-block content (#894) (
369c72c32)fix(lessons): lazy-load ACE to prevent import warnings (#893) (
5e5557d05)fix: support custom providers in model selection and routing (#891) (
f20bdc18a)fix: add browser recovery logic to prevent deadlocks on connection errors (#888) (
ede5080f2)fix: prevent file content inclusion in command arguments (#889) (
a665571df)fix: prettier errors on fatal exceptions (
d9f2c06e2)fix: fix toolcall format to allow dots in call_id (fixes Kimi K2) (
6e970e546)fix: add better cost telemetry logging in optimizable scenarios (#883) (
7092eae59)fix: added claude-opus-4-5 (
4a9363a4b)fix(tests): explicitly disable chat history in server v2 test (#872) (
b888abbea)fix(shell): added SC1011 and SC1073 to shellcheck error codes (
4acc3748e)fix: skip large files in active_context hook (
ecc1da20d)fix: detect git version from pip’s direct_url.json for pipx installs (#871) (
f557c43b8)fix(patch): implement relaxed whitespace matching for whitespace-only lines (#861) (
6681751aa)fix(server): add default model fallback and improve error messages (#863) (
ebdd3df98)fix(shell): properly terminate child processes on timeout (#868) (
00377049a)fix(dspy): register metadata for complexity test tasks (#867) (
767264944)fix(tools): preserve full type information in tool signatures (#865) (
10ddeb6cb)fix: initialize tools and model in subagent threads (#854) (
389549c7f)
🔨 Misc (22)#
Click to expand
chore: bump version to 0.31.0 (
a211c2a1f)docs: add TODO comment to prompts.py about optimizing prompt caching of context_cmd (
63c998da5)style: use consistent ‘Using’ prefix for local config log message (
4fbcf8927)docs(bot): improve GitHub bot documentation (#938) (
bc3929e4e)docs: updated agent setup guide (
8d1b0b88d)chore(config): disable fresh context mode (
f71558992)docs: add issue labeling guide to contributing docs (Issue #874) (#922) (
606e7ead8)refactor(bot): simplify action.yml to use github_bot.py script (Issue #305) (#915) (
1e3c020d9)docs: add optional system dependencies section (#897) (
2718cb369)Fix: Use conservative token limit for Anthropic models to prevent overflow (#887) (
f94ecc3cb)docs: added more model alternatives and notes on model and provider selection (
c7b5fd8f7)docs: Phase 4 - Add plugin example links and decision guidance (#881) (
746fe1d04)docs: clarify skills vs plugins architecture (#880) (
66168d633)refactor: Adopt Anthropic skill format (replaces #876) (#877) (
8d8faca55)test: mark flaky test as flaky (
6b91b0d5f)test(dspy): add comprehensive unit tests for GptmeReasoningProgram (#870) (
8a8c04e8e)docs(dspy): add comprehensive documentation for use_reasoning_program parameter (#869) (
f81301090)tests: add xfail to flaky test (
8f609310f)
(excluded 4 less relevant commits)
Full Changelog: https://github.com/gptme/gptme/compare/v0.30.0…v0.31.0