# v0.32.1

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

## Contributors

Thanks to everyone who contributed to this release:

@erikbjare, @TimeToBuildBob

## Changelog

Changes since v0.32.0:


## 📦 gptme

### ✨ Features (27)

 - feat(webui): warn on server API incompatibility ([#3271](https://github.com/gptme/gptme/issues/3271)) ([`6c5c979b7`](https://github.com/gptme/gptme/commit/6c5c979b7))
 - feat(context): expose initial prompt to context_cmd ([#3270](https://github.com/gptme/gptme/issues/3270)) ([`47c30c14c`](https://github.com/gptme/gptme/commit/47c30c14c))
 - feat(webui): add BranchMapPanel to right sidebar ([#3264](https://github.com/gptme/gptme/issues/3264)) ([`ab4ae0950`](https://github.com/gptme/gptme/commit/ab4ae0950))
 - feat(subagent): cooperative cancel checkpoint — make cancel actually stop thread-mode subagents ([#3261](https://github.com/gptme/gptme/issues/3261)) ([`9acd22a61`](https://github.com/gptme/gptme/commit/9acd22a61))
 - feat(subagent): stop thread agents at control checkpoints ([#3262](https://github.com/gptme/gptme/issues/3262)) ([`808c1af76`](https://github.com/gptme/gptme/commit/808c1af76))
 - feat(subagent): add max_concurrent fleet cap to subagent_parallel() ([#3222](https://github.com/gptme/gptme/issues/3222)) ([`6eda8b7d4`](https://github.com/gptme/gptme/commit/6eda8b7d4))
 - feat(anti-slop): add LLM-slop detector and quality gate CLI ([#3245](https://github.com/gptme/gptme/issues/3245)) ([`55bc30398`](https://github.com/gptme/gptme/commit/55bc30398))
 - feat(llm): stream idle-timeout retry + env overrides for subscription streaming ([#3248](https://github.com/gptme/gptme/issues/3248)) ([`6ee57a509`](https://github.com/gptme/gptme/commit/6ee57a509))
 - feat(skills): surface reputation badges in webui ([#3241](https://github.com/gptme/gptme/issues/3241)) ([`9c3649e19`](https://github.com/gptme/gptme/commit/9c3649e19))
 - feat(profiles): add dynamic web interaction functions to computer-use and browser-use profiles ([#3237](https://github.com/gptme/gptme/issues/3237)) ([`d988b3053`](https://github.com/gptme/gptme/commit/d988b3053))
 - feat(security): add --injection-hygiene CLI flag; screen local file reads ([#3218](https://github.com/gptme/gptme/issues/3218)) ([`bda4c1a3f`](https://github.com/gptme/gptme/commit/bda4c1a3f))
 - feat(prompts): add brief response mode ([#3230](https://github.com/gptme/gptme/issues/3230)) ([`d9be279cf`](https://github.com/gptme/gptme/commit/d9be279cf))
 - feat(subagent): add SubagentBudget for fleet-wide token budget coordination ([#3198](https://github.com/gptme/gptme/issues/3198)) ([`42e53289d`](https://github.com/gptme/gptme/commit/42e53289d))
 - feat(tauri): add GPTME_SERVER_PORT env var to override default port ([#3220](https://github.com/gptme/gptme/issues/3220)) ([`7cd71f406`](https://github.com/gptme/gptme/commit/7cd71f406))
 - feat(gptme-util): add `chats fork` for point-in-time session forking ([#3209](https://github.com/gptme/gptme/issues/3209)) ([`8903a783d`](https://github.com/gptme/gptme/commit/8903a783d))
 - feat(context): proactive context-window summarization before hard limit ([#3203](https://github.com/gptme/gptme/issues/3203)) ([`75bd94ae7`](https://github.com/gptme/gptme/commit/75bd94ae7))
 - feat(webui): show external sessions in chat sidebar ([#3219](https://github.com/gptme/gptme/issues/3219)) ([`c20cd200f`](https://github.com/gptme/gptme/commit/c20cd200f))
 - feat(security): extend injection screening — shell/mcp coverage, block mode, JSONL logging ([#3215](https://github.com/gptme/gptme/issues/3215)) ([`e47142bca`](https://github.com/gptme/gptme/commit/e47142bca))
 - feat(subagent): worktree isolation string API + smart cleanup ([#3200](https://github.com/gptme/gptme/issues/3200)) ([`1541032f3`](https://github.com/gptme/gptme/commit/1541032f3))
 - feat(tauri): add auto-updater for desktop app ([#3197](https://github.com/gptme/gptme/issues/3197)) ([`7969b1cd4`](https://github.com/gptme/gptme/commit/7969b1cd4))
 - feat(computer): add triple_click action and fill_native helper for native field filling ([#3201](https://github.com/gptme/gptme/issues/3201)) ([`434167ef0`](https://github.com/gptme/gptme/commit/434167ef0))
 - feat(ci): weekly check for stale OpenRouter model IDs ([#3204](https://github.com/gptme/gptme/issues/3204)) ([`b16c492ad`](https://github.com/gptme/gptme/commit/b16c492ad))
 - feat(subagent): cancel_on_failure — cancel the fleet when a sibling fails ([#3199](https://github.com/gptme/gptme/issues/3199)) ([`214ecfdd9`](https://github.com/gptme/gptme/commit/214ecfdd9))
 - feat(cli): compact log output for user-facing CLIs ([#3195](https://github.com/gptme/gptme/issues/3195)) ([`94122d68d`](https://github.com/gptme/gptme/commit/94122d68d))
 - feat(tui): add Textual-based TUI (gptme-tui) ([#3188](https://github.com/gptme/gptme/issues/3188)) ([`c0abe9c67`](https://github.com/gptme/gptme/commit/c0abe9c67))
 - feat(ci): add mypy type coverage reporting to Codecov ([#3189](https://github.com/gptme/gptme/issues/3189)) ([`ac1515739`](https://github.com/gptme/gptme/commit/ac1515739))
 - feat(cli): add gear autonomy presets ([#3180](https://github.com/gptme/gptme/issues/3180)) ([`bfdcef7db`](https://github.com/gptme/gptme/commit/bfdcef7db))

### 🐛 Fixes (35)
<details><summary>Click to expand</summary>
<p>

 - fix(acp): advertise authMethods in initialize response for ACP registry ([#3274](https://github.com/gptme/gptme/issues/3274)) ([`5d16f2dce`](https://github.com/gptme/gptme/commit/5d16f2dce))
 - fix(llm): capture usage tokens from subscription response.done events ([#3273](https://github.com/gptme/gptme/issues/3273)) ([`a3ea7fdc5`](https://github.com/gptme/gptme/commit/a3ea7fdc5))
 - fix(test): kill the leaked-thread teardown race class (moving "dictionary changed size during iteration" flake) ([#3257](https://github.com/gptme/gptme/issues/3257)) ([`0c8a90891`](https://github.com/gptme/gptme/commit/0c8a90891))
 - fix(security): replace last bare 'git' subprocess call in tasks_api.py with GIT_CMD ([#3269](https://github.com/gptme/gptme/issues/3269)) ([`3e5147f4a`](https://github.com/gptme/gptme/commit/3e5147f4a))
 - fix(security): extend GIT_CMD hardening to all remaining bare git subprocess call sites ([#3267](https://github.com/gptme/gptme/issues/3267)) ([`36ce99eb0`](https://github.com/gptme/gptme/commit/36ce99eb0))
 - fix(logmanager): don't merge adjacent tool-result system messages ([#3268](https://github.com/gptme/gptme/issues/3268)) ([`5be4ccf03`](https://github.com/gptme/gptme/commit/5be4ccf03))
 - fix(security): harden bare git subprocess resolution on native Windows ([#3266](https://github.com/gptme/gptme/issues/3266)) ([`eb4be1ad1`](https://github.com/gptme/gptme/commit/eb4be1ad1))
 - fix(subagent): eliminate cancel status race — set result before writing control file ([#3263](https://github.com/gptme/gptme/issues/3263)) ([`39881fba8`](https://github.com/gptme/gptme/commit/39881fba8))
 - fix(webui): latch demo mode so SPA URL rewrites can't split demo state ([#3252](https://github.com/gptme/gptme/issues/3252)) ([`16d29171c`](https://github.com/gptme/gptme/commit/16d29171c))
 - fix(subagent): stop orphaned subagents at parent session end via SESSION_END hook ([#3260](https://github.com/gptme/gptme/issues/3260)) ([`3e13dd38e`](https://github.com/gptme/gptme/commit/3e13dd38e))
 - fix(test): suppress pytest-retry StashKey teardown errors ([#3256](https://github.com/gptme/gptme/issues/3256)) ([`e4642b529`](https://github.com/gptme/gptme/commit/e4642b529))
 - fix(test): stop ACP health-monitor thread leaks and SessionManager dict-mutation races ([#3254](https://github.com/gptme/gptme/issues/3254)) ([`4018ea10d`](https://github.com/gptme/gptme/commit/4018ea10d))
 - fix(webui): keep offline demo active across navigation ([#3249](https://github.com/gptme/gptme/issues/3249)) ([`dd2ebcf1e`](https://github.com/gptme/gptme/commit/dd2ebcf1e))
 - fix(test): replace slow_stream timing hack with deterministic gate in TUI queue test ([#3255](https://github.com/gptme/gptme/issues/3255)) ([`d8744f3fb`](https://github.com/gptme/gptme/commit/d8744f3fb))
 - fix(security): redact secrets in GET /api/v2/user/config-file response ([#3246](https://github.com/gptme/gptme/issues/3246)) ([`f743b340a`](https://github.com/gptme/gptme/commit/f743b340a))
 - fix(llm): increase subscription stream timeout for reasoning models ([#3247](https://github.com/gptme/gptme/issues/3247)) ([`1424aa62f`](https://github.com/gptme/gptme/commit/1424aa62f))
 - fix(models): add gpt-5.6-sol to the openai-subscription registry ([#3243](https://github.com/gptme/gptme/issues/3243)) ([`a11e48f38`](https://github.com/gptme/gptme/commit/a11e48f38))
 - fix(webui): degrade gracefully when older gptme-server returns 404 for newer api/v2 routes ([#3235](https://github.com/gptme/gptme/issues/3235)) ([`731e3d0bc`](https://github.com/gptme/gptme/commit/731e3d0bc))
 - fix(webui): use dvh units for mobile browser URL bar compatibility ([#3240](https://github.com/gptme/gptme/issues/3240)) ([`77b145e87`](https://github.com/gptme/gptme/commit/77b145e87))
 - fix(chats): copy files/attachments dirs on fork + validate at-turn range ([`cf1987415`](https://github.com/gptme/gptme/commit/cf1987415))
 - fix(webui): hide Local preset server in embedded/hosted mode ([#3231](https://github.com/gptme/gptme/issues/3231)) ([`8c0610d81`](https://github.com/gptme/gptme/commit/8c0610d81))
 - fix(deps): update code for acp 0.11.0 and openai 2.45.0 breaking changes ([#3228](https://github.com/gptme/gptme/issues/3228)) ([`ce90c0e8e`](https://github.com/gptme/gptme/commit/ce90c0e8e))
 - fix(computer): capture pre-action baseline on native xdotool path in act_and_observe ([#3221](https://github.com/gptme/gptme/issues/3221)) ([`1494b7dbc`](https://github.com/gptme/gptme/commit/1494b7dbc))
 - fix: resolve cache_tokens test failures for openai 2.45.0 and acp 0.11.0 ([#3229](https://github.com/gptme/gptme/issues/3229)) ([`fc47d6b41`](https://github.com/gptme/gptme/commit/fc47d6b41))
 - fix(ci): add overwrite: true to tauri release artifact uploads ([#3227](https://github.com/gptme/gptme/issues/3227)) ([`03d497dc3`](https://github.com/gptme/gptme/commit/03d497dc3))
 - fix(tauri): sync webui to managed server port ([#3223](https://github.com/gptme/gptme/issues/3223)) ([`a8c795bd8`](https://github.com/gptme/gptme/commit/a8c795bd8))
 - fix(tokens): graceful tiktoken fallback for local/airgapped endpoints ([#3205](https://github.com/gptme/gptme/issues/3205)) ([`b9a2a135b`](https://github.com/gptme/gptme/commit/b9a2a135b))
 - fix(tauri): bundle matching libgpg-error in AppImage ([#3211](https://github.com/gptme/gptme/issues/3211)) ([`98675dfe6`](https://github.com/gptme/gptme/commit/98675dfe6))
 - fix(tests): replace duckduckgo.com URL in test_fill_element with local fixture ([#3214](https://github.com/gptme/gptme/issues/3214)) ([`f3ae0573e`](https://github.com/gptme/gptme/commit/f3ae0573e))
 - fix(computer): lower wait_for_change threshold to 0.2% to detect small screen changes ([#3210](https://github.com/gptme/gptme/issues/3210)) ([`bf1b29e8e`](https://github.com/gptme/gptme/commit/bf1b29e8e))
 - fix(tauri): add GPTME_DISABLE_AUTO_UPDATE env var to opt out of update check ([#3208](https://github.com/gptme/gptme/issues/3208)) ([`46002270e`](https://github.com/gptme/gptme/commit/46002270e))
 - fix(test): mock _monitor_subprocess in subprocess tests to fix flaky is_alive assertion ([#3196](https://github.com/gptme/gptme/issues/3196)) ([`6ae6ec759`](https://github.com/gptme/gptme/commit/6ae6ec759))
 - fix(release): drop duplicate version heading from GitHub release bodies ([#3185](https://github.com/gptme/gptme/issues/3185)) ([`0c3af2ed3`](https://github.com/gptme/gptme/commit/0c3af2ed3))
 - fix(ci): name Android release assets like desktop bundles ([#3186](https://github.com/gptme/gptme/issues/3186)) ([`e2a8113f2`](https://github.com/gptme/gptme/commit/e2a8113f2))
 - fix(ci): stop tauri-action overwriting release changelogs ([#3184](https://github.com/gptme/gptme/issues/3184)) ([`e6831ece4`](https://github.com/gptme/gptme/commit/e6831ece4))

</p>
</details>

### 🔨 Misc (10)
<details><summary>Click to expand</summary>
<p>

 - chore: bump version to 0.32.1 ([`e196475ee`](https://github.com/gptme/gptme/commit/e196475ee))
 - docs(subagent): document SubagentBudget and max_concurrent in tool instructions ([#3251](https://github.com/gptme/gptme/issues/3251)) ([`ed3b6b336`](https://github.com/gptme/gptme/commit/ed3b6b336))
 - test(computer): add missing error-path coverage for _measure_terminal_startup ([#3244](https://github.com/gptme/gptme/issues/3244)) ([`25b2537cf`](https://github.com/gptme/gptme/commit/25b2537cf))
 - test(computer): add --terminal flag coverage for latency cmd ([#3242](https://github.com/gptme/gptme/issues/3242)) ([`c1fdd6c30`](https://github.com/gptme/gptme/commit/c1fdd6c30))
 - revert(prompts): revert brief response mode ([#3230](https://github.com/gptme/gptme/issues/3230)) ([#3234](https://github.com/gptme/gptme/issues/3234)) ([`a4074c0d0`](https://github.com/gptme/gptme/commit/a4074c0d0))
 - docs(computer): add Background section linking to origin conversation ([#216](https://github.com/gptme/gptme/issues/216)) ([#3207](https://github.com/gptme/gptme/issues/3207)) ([`330fbc5e6`](https://github.com/gptme/gptme/commit/330fbc5e6))
 - chore(deps): bump rich to 14.x and textual to 8.x ([#3202](https://github.com/gptme/gptme/issues/3202)) ([`55a7cc712`](https://github.com/gptme/gptme/commit/55a7cc712))
 - docs: add local-models guide (Ollama, Groq, vLLM) ([#3178](https://github.com/gptme/gptme/issues/3178)) ([`104dec4fb`](https://github.com/gptme/gptme/commit/104dec4fb))
 - chore: update changelog_contributors caches ([`386a33b1a`](https://github.com/gptme/gptme/commit/386a33b1a))
 - perf: cut startup time ~6x by deferring heavy imports ([#3193](https://github.com/gptme/gptme/issues/3193)) ([`613fed71b`](https://github.com/gptme/gptme/commit/613fed71b))

</p>
</details>

*(excluded 4 less relevant [commits](https://github.com/gptme/gptme/compare/v0.32.0...v0.32.1))*

**Full Changelog**: https://github.com/gptme/gptme/compare/v0.32.0...v0.32.1