This Week in gptme (W24 2026)
Here's what landed in gptme and gptme-contrib this week (2026-06-08 – 2026-06-14): 9 new features, 11 bug fixes, and 5 more across 43 merged PRs in gptme/gptme and 7 in gptme-contrib.
Here’s what landed in gptme and gptme-contrib this week (2026-06-08 – 2026-06-14): 9 new features, 11 bug fixes, and 5 more across 43 merged PRs in gptme/gptme and 7 in gptme-contrib.
The headline: audio got a full stack in one week, CI self-heal learned to write its own fix PRs, and the artifact system got a complete overhaul.
Highlights
- gptme#2778 (webui) browser TTS for assistant messages — Web Speech API, no backend required (Slice 1)
- gptme#2813 (ci) self-heal Phase 2 — auto-opens draft fix PR when structured gate passes
- gptme#2818 (artifacts) format-independent file-write parsing + diffs
- gptme#2776 (webui) split-pane conversation view (Slice 1 — layout skeleton)
- gptme#2775 (server) provider health endpoint and webui panel with degraded badge
New Features
Audio / TTS
The TTS stack went from zero to a full selector in one week:
- gptme#2778 (webui) browser TTS for assistant messages via Web Speech API (Slice 1) — zero backend dependencies
- gptme#2794 (webui) OpenRouter STT fallback for browsers that don’t support Web Speech API
- gptme#2795 (webui) server-side TTS endpoint via OpenRouter — audio generated on the server side
- gptme#2803 (webui) toggle/stop TTS playback per message
- gptme#2815 (webui) TTS engine selector — pick browser / gptme-server / gptme-tts
- gptme-contrib#1065 (gptme-tts) actionable
available_hintwhen TTS is unavailable
WebUI
- gptme#2776 (webui) split-pane conversation view (Slice 1 — layout skeleton)
- gptme#2779 (webui) Alt+N global shortcut for new conversation
- gptme#2801 (webui) model favorites, set-as-default, and picker scroll fix
- gptme#2806 (webui)
/settingsroute with full-page settings view - gptme#2812 (webui) show active model in conversation header
- gptme#2771 (webui) staging deploy trigger from the webui
- gptme#2792 (webui) auto-poll provider health every 60s; degraded badge on settings icon
Artifacts
Two PRs completely overhauled artifact tracking:
- gptme#2818 (artifacts) format-independent file-write parsing — handles fenced blocks, raw writes, and side effects; adds unified diffs
- gptme#2814 (artifacts) include workspace files created/modified by the conversation in artifact output
Server / CLI
- gptme#2775 (server) provider health endpoint (
/api/v2/server/health/providers) and webui panel - gptme#2774 (chats) per-conversation session stats
- gptme#2791 (server)
detailquery param on conversation list endpoint - gptme#2797 (cli)
--format tableoption forgptme-util status - gptme#2781 (plugins) discover src-layout plugins; support
[plugins]config table; lenient+toolparsing - gptme-contrib#1063 (coordination) generic inter-agent coordination package (extracted from bob-local)
- gptme-contrib#1061 (codegraph) local-first semantic search (Phase 1)
CI Self-Heal
- gptme#2813 (ci) self-heal Phase 2 — when the structured autofix gate passes, automatically opens a draft fix PR instead of posting a comment
Docs
- gptme#2782 (howto) how-to guide section with 5 task-oriented recipes
- gptme#2810 (docs) model-routing guide — pick your model per task
- gptme#2811 (config) documented the
[models]section —defaultandfavoriteskeys were present in code but completely missing from the docs
Testing (Tauri)
Three PRs landed solid Tauri coverage:
- gptme#2772 IPC server lifecycle command coverage
- gptme#2773 E2E smoke test with
tauri-driver(Slice 1, Linux) - gptme#2780 E2E chat interaction flow tests (Slice 2)
Bug Fixes
- gptme#2800 (server+webui) conversation load crash chain — symlink 500 + webui dataless crash + error surfacing, fixed together
- gptme#2809 (tools) report unavailable tools accurately as “unavailable” instead of “invalid choice”
- gptme#2808 (webui) don’t flush queued messages during tool confirmation dialogs
- gptme#2807 (hooks) hide injected agent-instructions from the conversation view
- gptme#2804 (webui) sync model selector when switching conversations
- gptme#2802 (webui) UI polish — input radius, code block styles, avatar, health badge
- gptme#2798 (cli) reject malformed model paths
- gptme#2796 (webui) request fast conversation list detail (faster initial load)
- gptme#2793 (plugins) recurse nested src-layout tool packages
- gptme#2777 (ci) pin self-heal logs to the triggering attempt
- gptme#2770 (server) reject whitespace-only elicitation IDs
- gptme#2762 (server) validate edited message file paths
- gptme-contrib#1062 (gptme-tts) fix plugin discoverability and stale hook names
- gptme-contrib#1064 (subscription) export pacing snapshot helpers
- gptme-contrib#1066 (self-merge-check) accept
owner/repo <number>two-positional argument form
What to Watch
Two PRs open as of this writing that should land early next week:
- gptme#2820 (cloud) route LLM API calls to Supabase edge functions instead of
fleet.gptme.ai— fixes the stale URL defaults that have caused repeated confusion forgptme-auth loginusers - gptme#2817 (webui) per-pane conversation selector in split view (Slice 2) — the layout skeleton from #2776 becomes usable
Full changelog: github.com/gptme/gptme/compare/…