v0.30.0#

These are the release notes for gptme version v0.30.0.

Contributors#

Thanks to everyone who contributed to this release:

@0xbrayo, @erikbjare, @TimeToBuildBob

Changelog#

Changes since v0.29.0:

📦 gptme#

✨ Features (26)#

  • feat(context): Phase 1 - Core Context Selector Infrastructure (#831) (71416f6c)

  • feat: convert default model and hook registry to ContextVar for thread safety (#848) (5a1ac7b9)

  • feat(plugins): implement Phase 3 command integration (#846) (c7304c43)

  • feat(plugins): implement Phase 2 hook integration (#845) (e86fe8e0)

  • feat(plugins): implement Phase 1 plugin infrastructure (#843) (fe8b355c)

  • feat(server): add API v2 client for programmatic interaction (#841) (dfd9f74f)

  • feat: auto-enable complete tool in non-interactive mode and support multiple -t flags (#836) (a5ccb6cd)

  • feat(gepa): Phase 2 test set expansion - 7 more tasks (#833) (7bbce067)

  • feat(gepa): implement Phase 1 test set expansion (12 new tasks) (#832) (68bd60cf)

  • feat: support OPENROUTER_API_KEY for perplexity (#828) (658c4450)

  • feat(validation): add MESSAGE_POST_PROCESS hook for markdown codeblock cut-off detection (#824) (ed01e1cb)

  • feat: add support for gptme.local.toml configuration layering (#617) (3dfcc9e5)

  • feat(gepa): add PromptImprovementModule to fix InputField architecture issue (#823) (825d71aa)

  • feat(lessons): Phase 5.5 - Dynamic top-K selection (#820) (7d7fcc45)

  • feat(lessons): Add ACE-inspired hybrid lesson matching (#817) (1bdd9de5)

  • feat: add hook support to server API v2 (#769) (104aacff)

  • feat(llm): add custom OpenAI-compatible providers support (#800) (cdf548ee)

  • feat(subagent): add planner mode for task delegation (#753) (71b72b9b)

  • feat(server): auto-generate auth token and document security risks (#803) (f652e752)

  • feat(hooks): improve typing for hook registration with Protocol overloads (#801) (7bb17df7)

  • feat(eval): implement Docker-based execution environment (#791) (7c676168)

  • feat(dspy): implement multi-stage reasoning program for GEPA (#786) (a7f87c58)

  • feat: log a warning when context command output is large (#787) (cf741f84)

  • feat(server): implement token-based authentication for dev environment (#782) (65507d7b)

  • feat(lessons): add Cursor rules integration and project-local lessons support (#779) (2ddc0e00)

  • feat(tools/shell): store truncated output before discarding (#775) (b7c44982)

🐛 Fixes (30)#

Click to expand

  • fix: added SC2016 as excluded shellcheck code (436b335d)

  • fix: fix broken favicon in the root path (#847) (421194a1)

  • fix: remove xfail markers from previously flaky server tests (#849) (1645926d)

  • fix(gepa): Phase 3.3 - Fix task source and auto parameter conflicts (#837) (dbbbc849)

  • fix(security): block command injection via pipe-to-shell patterns (#840) (87cd354d)

  • fix(gepa): remove auto parameter conflict in MIPROv2 (#835) (7e51e0ac)

  • fix: fixed Kimi K2 thinking toolcall support via OpenRouter (#830) (5a758dbc)

  • fix: resolve MCP tool loading issues and connection errors (#825) (72a4d85b)

  • fix(subagent): add missing tool_format parameter to chat() calls (3167b336)

  • fix(gepa): export ANTHROPIC_API_KEY and suppress verbose logs (#821) (aeefe9b4)

  • fix(gepa): collect and save trajectory feedback in optimization results (#819) (603ccfef)

  • fix(eval): fix reflection model used in GEPA optimizer (#814) (6345f0c2)

  • fix(eval): add defensive check for eval_result in task_success_metric (#813) (644eadd9)

  • fix(server): add GPTME_DISABLE_AUTH env var for k8s deployments (#811) (dd491017)

  • fix(tmux): use dashes instead of underscores for tmux tool function (#810) (e1119abe)

  • fix(shell): added SC2002 to default shellcheck excludes (3c088d37)

  • fix: improve shell error handling and add Anthropic debug logging (cdd90afb)

  • fix: fix session start hook msgs not being persisted (#808) (43a8c55d)

  • fix(eval): run gptme agent inside Docker when –use-docker is used (#805) (84f18eb3)

  • fix(shell): handle bashlex parsing errors for bash builtins like ‘time’ (#799) (0e18bf53)

  • fix(shell): added rg, ag, ast-grep, hyperfine to mentioned installed shell commands (3c2b3f8e)

  • fix(tests): update test_auto_compact.py for timestamp-based naming (#797) (8142f895)

  • fix(autocompact): restore manager state after fork to prevent name mutation (#794) (ce25affc)

  • fix(autocompact): resolve NameError and naming bug (#792) (16032e48)

  • fix: dont mistake absolute path for command when given as prompt (55c5a92d)

  • fix(server): support query param token for SSE authentication (#785) (66b418a5)

  • fix: convert GEPA output_dir to absolute path to prevent FileNotFoundError (#784) (ad5f47a1)

  • fix(shell): handle logical OR operators (||) in pipe detection (#777) (d52a1729)

  • fix(anthropic): retry on RemoteProtocolError’s (#773) (9c7b4874)

  • fix(shell): denylist pkill and killall (fixes #768) (#770) (6c793939)

🔨 Misc (12)#

Click to expand

  • chore: bump version to 0.30.0 (bc4d8cd2)

  • tests: add xfail to flaky test (0d9448af)

  • tests: add xfail to flaky test (2db3c003)

  • tests: fixed flaky tests (5eb817bd)

  • refactor: extract cwd tracking to hook and refactor time/token awareness to clean hooks (#839) (32dc01f6)

  • Refactor threading.local to ContextVars support (#827) (cb157ea1)

  • refactor: migrate TTS to hook-based architecture (#816) (83cbe9ff)

  • chore: change default TTS server port from 8000 to 8765 (#815) (48f11f2c)

  • refactor: move len_tokens and related code into gptme.util.tokens (#809) (62ba557b)

  • perf: improve startup time by using shutil.which to check for pre-commit instead of pre-commit --version (630c0cc0)

  • docs: add comprehensive lesson system documentation (#771) (5671da68)

  • docs(lessons): add Phase 6 comprehensive documentation (#795) (8e11c24f)

(excluded 7 less relevant commits)

Full Changelog: https://github.com/gptme/gptme/compare/v0.29.0…v0.30.0