v0.31.1.dev20260525
These are the release notes for gptme version v0.31.1.dev20260525.
Contributors
Thanks to everyone who contributed to this release:
Changelog
Changes since v0.31.1.dev20260521:
📦 gptme
✨ Features (16)
- feat(webui): launch SetupWizard from disconnected banner on first visit (#2494) (
511bdbd3e) - feat(webui): surface gptme.ai as cloud alternative in disconnected banner (#2490) (
5b4f29696) - feat(webui): opt into Chrome LNA for local-server fetches (targetAddressSpace) (#2488) (
55b9cacc1) - feat(webui): add install step + setup-guide link to disconnected banner (#2481) (
0f18cf1af) - feat(llm): surface diagnostic for generic out-of-credits 402 errors (#2467) (
a085d2b18) - feat(bot): add /gptme-resolve comment macro trigger to resolve workflow (#2453) (
ed054e4a8) - feat(tools): add vent tool for real-time friction signals (#2452) (
32bf967a3) - feat(bot): add label-triggered issue resolver mode (#2445) (
930acf352) - feat(tools): add when-to-use trigger language for choice, complete, and restart (#2442) (
94f2feced) - feat(tools): add when-to-use trigger language for mcp and lessons (#2440) (
fe6d73250) - feat(tools): add when-to-use trigger language for gh (
992489cc2) - feat(tools): add when-to-use trigger language for screenshot, rag, vision, and todo (
6861f00a9) - feat(eval): add minimal-feature-preserve-default-with-decoys scenario (
0d935883f) - feat(tools): add when-to-use trigger language for elicit and form (#2437) (
8a7cc6c44) - feat(tools): add when-to-use trigger language for vision and screenshot (#2435) (
842efa85b) - feat(tools): add when-to-use trigger language for computer and morph (#2434) (
1301dfa15)
🐛 Fixes (62)
Click to expand
- fix(server): reject non-string step models (#2535) (
64f74e318) - fix(cli): validate custom tool paths before init (#2533) (
212139f93) - fix(server): validate agent creation field types (#2531) (
ec61e388e) - fix(webui): keep api misses out of SPA fallback (#2532) (
10ee75d53) - fix(telemetry): suppress OTLP timeout tracebacks (#2528) (
2d64b73ec) - fix(server): return 409 for upload name exhaustion (#2529) (
ef29f0682) - fix(cli): avoid blocking on idle stdin pipes (#2525) (
9390f0ef7) - fix(cli): ignore disable env in prompts expand (
bcfbd00bc) - fix(server): reject non-object conversation config (
4f68269eb) - fix(server): use get_json(silent=True) in tasks endpoints (#2524) (
84d5c5857) - fix(server): reject non-object v2 JSON bodies (
e5c09e826) - fix(server): use get_json(silent=True) in tasks and agents endpoints (#2523) (
03fca16a6) - fix(cli): honor --name when resuming conversations (#2522) (
417a4f82a) - fix(mcp): deduplicate search_all results across registries (#2520) (
ecfea2bae) - fix(webui): route auth code exchange through fleet (#2519) (
d50617c57) - fix(server): validate PUT conversation body and messages types (#2517) (
4c7fa7916) - fix(cli): reject unsafe conversation names (#2518) (
fa6c9d80c) - fix(chats): add logger warning for skipped non-string content and narrower type hint (
5f1fee889) - fix(webui): reset isLoading to false when disconnected in useModels (#2514) (
568585c70) - fix(webui): gate useModels on connection state (#2513) (
3282b11db) - fix(server): validate transcript turn text type to prevent 500 on non-string input (
01729f32c) - fix(server): validate message content type in PUT conversation (#2511) (
2bd3b3ca8) - fix(cli): reject directory passed to 'tokens count --file' (#2510) (
7e1cdf1c6) - fix(server): validate session belongs to conversation across all sessions endpoints (#2508) (
d5f44c478) - fix(cli): prevent gptme-util tokens count from hanging on no-input non-TTY (#2509) (
5f527a0f6) - fix(server): return 404 from events endpoint when conversation does not exist (
cca616bd9) - fix: prevent hang on empty query in chats search (#2505) (
b68a38f75) - fix(webui): gate useTasksQuery on connection state (
24d42078b) - fix(webui): suppress duplicate PNA hint in install block (
9379aa6db) - fix(cli): reject overlong conversation IDs before filesystem access (#2502) (
6bdf18dc3) - fix(server): return 400 for conversation_id/branch names exceeding NAME_MAX (#2498) (
4d3f06f97) - fix(cli): remove browser backend noise from utility output (#2500) (
a5b383286) - fix(chats): read finds any conversation by id and exits non-zero when missing (#2497) (
7a39bba7f) - fix(cli): reject negative chats --limit instead of crashing islice() (#2496) (
dad0fe359) - fix(cli): warn when 'models info' falls back for an unrecognized provider (#2495) (
8bcc96e8b) - fix(cli): make non-default tools callable via gptme-util tools call (#2493) (
b4664e9ad) - fix(chats): avoid scanning test logs for user stats (#2491) (
b3b3e01b7) - fix(cli): tokens count treats '-' as stdin (Unix convention) (#2489) (
3e137c218) - fix(cli): mcp commands exit nonzero on failure (#2487) (
925eaae6a) - fix(cli): tokens count exits nonzero when no input is provided (#2484) (
1ceb07ab1) - fix(cli): resolve bare provider-less model names instead of crashing (
3072e1a4f) - fix(logmanager): tolerate unknown message fields when reading logs (#2482) (
f1719b89a) - fix(tools): split comma-separated choice options (
cf1c91a28) - fix(vent): tolerate trailing punctuation in resolution-owner tag (#2474) (
9bd65be9b) - fix(bot): verify sha256 of downloaded github_bot.py (
0973bbf44) - fix(lessons): use description field for semantic matching in hybrid_matcher (#2469) (
35e426d19) - fix(bot): update model default, fix checkout version, tighten permissions (#2468) (
aa7675878) - fix(vent): teach resolution-owner taxonomy, capture owner tag (#2463) (
09bcf44ef) - fix(webui): surface payment-required chat errors (#2462) (
a3302479a) - fix(hooks): replace invalid noqa directives in auto_snapshots (#2461) (
e4e078fb0) - fix(tests): bump short prompt token limit to 4200 (#2460) (
aad46a340) - fix(site): strip broken README TOC from homepage (#2459) (
daea4ee98) - fix(tauri): verify server is usable before reusing port 5700 (#2458) (
1bf0beb3c) - fix(webui): include status code and server error in models fetch failure (#2457) (
137a55d53) - fix(android): disable broken mobile cloud setup path (#2454) (
30bc3384e) - fix(tests): skip test_search_perplexity on Perplexity/OpenRouter quota exhaustion (#2450) (
d30562d6d) - fix(benchmark): raise cold threshold to 10s and increase runs to 10 (#2449) (
fdbcf5a92) - fix(bot): avoid duplicate resolve failure comments (#2447) (
248aac98c) - fix(tauri): commit app icons and remove icons/* from gitignore (#2446) (
abe287c84) - fix(tests): skip requires_api tests on invalid API key (AuthenticationError) (#2444) (
b4b6ea58a) - fix(tools): keep tool descriptions within OpenAI limit (#2441) (
89a5dccac) - fix(github): rewire stale PR view helper (#2432) (
1071fac9a)
🔨 Misc (16)
Click to expand
- chore: bump version to 0.31.1.dev20260525 (
0e9745a29) - test(cli): add real resume hint coverage (#2530) (
254d1edd4) - docs(readme): surface gptme-codegraph as a named feature (
ab5ae11d8) - docs: surface gptme-codegraph as named ecosystem project in README (#2503) (
c1861dbd7) - docs(webui): explain Chrome 142+ Local Network Access for hosted UI → local server (#2483) (
7a01a7e0d) - docs(webui): document CORS origin needed for hosted UI + local server (#2478) (
fea7042ce) - docs(readme): add multi-agent and provider support rows to comparison table (#2477) (
a8ca40aae) - chore: ignore local test artifacts (#2476) (
5e4abf48e) - test(server): relax tool confirmation log assertions (#2472) (
82a170b09) - perf(lessons): cache lesson embeddings across turns in hybrid matcher (#2471) (
ebd927dba) - perf(webui): route-based code-splitting via React.lazy (#2464) (
98c6341e2) - test(webui): add setup wizard e2e coverage (#2456) (
4880cd7cf) - docs(tools): add missing autocommit, precommit, and vent tool entries (#2455) (
ec72c0452) - docs(tools): add 9 missing tools to tools.rst (#2443) (
9fc3c925b) - test(config): document chat workspace default (
ae0c4aa68) - chore: bump version to 0.31.1.dev20260521 (
21e423787)
(excluded 2 less relevant commits)
Full Changelog: v0.31.1.dev20260521...v0.31.1.dev20260525