This Week in gptme (W23 2026)
Here's what landed in gptme and gptme-contrib this week (2026-06-01 – 2026-06-07): 38 new features, 49 bug fixes across 108 merged PRs.
Here’s what landed in gptme and gptme-contrib this week (2026-06-01 – 2026-06-07): 38 new features, 49 bug fixes across 108 merged PRs.
Highlights
- gptme#2664 (webui) offline demo ApiClient seam (IApiClient + createDemoApiClient)
- gptme#2666 (webui) speech-to-text dictation button
- gptme#2681 (server) add docker-compose self-host setup
- gptme-contrib#1052 (sessions) wire smell_score into post_session recording
- gptme#2680 (tools/python) emit artifact descriptors for plot files (#830 Phase 2)
New Features
- gptme#2664 (webui) offline demo ApiClient seam (IApiClient + createDemoApiClient)
- gptme#2666 (webui) speech-to-text dictation button
- gptme#2668 (webui) add Ctrl+F message search with match navigation
- gptme#2671 (webui) import exported conversation JSON
- gptme#2673 (webui) add open conversation directory action
- gptme#2674 (webui) stream tool outputs live via SSE tool_output events
- gptme#2675 (webui) server connection health panel with /api/v2/server/health endpoint
- gptme#2676 (webui) structured tool call visualization with RichToolCall component
- gptme#2677 (webui) add config file editor
- gptme#2678 (webui) add compact user avatar treatment
- gptme#2679 (webui) recover dropped event streams
- gptme#2680 (tools/python) emit artifact descriptors for plot files (#830 Phase 2)
- gptme#2681 (server) add docker-compose self-host setup
- gptme#2687 (webui) demo mode slice 2 — fixture-backed read paths
- gptme#2689 (ci) self-heal workflow — analyze test failures and propose fixes (Phase 1)
- gptme#2695 (webui) replay demo tool-call flow
- gptme#2697 (self-heal) add structured autofix gate
- gptme#2721 (webui) suppress live fetches in demo mode
- gptme#2733 (patch) add _anchored core module — hash-anchored line editing
- gptme#2735 (cost_tracker) add extras dict and record_extra() to SessionCosts
- gptme#2743 (complete) stuck/loop detection hook for repeating tool calls
- gptme#2752 (util) add gptme-util status subcommand for operator handoff
- gptme#2754 (webui) add live_app panel kind distinct from iframe panels (#830 follow-on 3)
- gptme#2759 (util) add batch mode command
- gptme-contrib#1034 (codegraph) extract function calls from Rust symbols
- gptme-contrib#1035 (codegraph) add C# language support
- gptme-contrib#1036 (codegraph) add Ruby language support (symbol + import extraction)
- gptme-contrib#1037 (codegraph) add C language support (symbol + import extraction)
- gptme-contrib#1038 (codegraph) add C++ language support
- gptme-contrib#1039 (codegraph) add PHP language support (symbol + import extraction)
- gptme-contrib#1041 (codegraph) add Kotlin language support
- gptme-contrib#1042 (codegraph) add Swift language support
- gptme-contrib#1044 (codegraph) resolve cross-module calls for TypeScript, Go, and Rust
- gptme-contrib#1048 (plugins) add gptme-headroom-compressor SmartCrusher hook
- gptme-contrib#1049 (headroom-compressor) plugin-config integration for raw_tool_prefixes and config-driven enable/disable
- gptme-contrib#1052 (sessions) wire smell_score into post_session recording
- gptme-contrib#1053 (codegraph) add stat-fingerprint cache for on-the-fly repo-map generation
- gptme-contrib#1054 (skills) add missing YAML frontmatter to gptme-wrapped and plugin-development
Bug Fixes
- gptme#2670 (webui) improve history accessibility
- gptme#2685 (webui) add missing getServerHealth to demoApiClient
- gptme#2686 (webui) add missing getServerHealth to demo ApiClient
- gptme#2690 (webui) polyfill structuredClone in jest.setup for jsdom
- gptme#2691 (webui) replace structuredClone with JSON.parse/stringify for jsdom compat
- gptme#2692 (cli) catch empty –model at parse time instead of blocking startup
- gptme#2693 (self-heal) handle invalid ANTHROPIC_API_KEY gracefully
- gptme#2694 (server) reject path traversal in file attachments via API
- gptme#2696 (server) load conversations from validated logdir
- gptme#2698 (logs) quiet normal runtime noise
- gptme#2699 (webui) encode chat route conversation ids
- gptme#2700 (logs) suppress think-sig in streaming; restore CLI workspace default
- gptme#2702 (cost) fix request_count inflation and redundant total display
- gptme#2703 (logs) suppress multiline think-sig; capture usage when stream broken early
- gptme#2704 (llm) buffer thinking-block display to prevent think-sig wrapping
- gptme#2715 (logs) demote reasoning_budget and auto-naming retry messages to debug
- gptme#2719 (logs) route log output through shared Rich Console in interactive mode
- gptme#2720 (cost) drain stream after tool break to capture message_delta usage
- gptme#2722 (webui) preserve demo query across chat navigation
- gptme#2726 (llm) suppress arg-type errors in stream() after anthropic SDK 0.105 bump
- gptme#2727 (logmanager) stop auto-pruning thinking blocks
- gptme#2728 suppress RequestsDependencyWarning globally
- gptme#2729 (tests) update bad-input test expectations for correct error codes
- gptme#2730 (server) batch SSE generation_progress events and fire generation_complete early
- gptme#2732 (cli) guard against empty –name value bypassing ParamType validation
- gptme#2734 (cli) bare model name without provider gives misleading error
- gptme#2736 (cli) promote no-tool auto-reply logging from info to warning level
- gptme#2737 (config) validate temperature/top_p/max_tokens types in ChatConfig.from_dict
- gptme#2738 (tests) add assertions to three no-op test functions in server bad-input suite
- gptme#2740 (server) return JSON instead of HTML for HTTP errors (404, 405, etc.)
- gptme#2742 (webui) restore direct-link fallbacks for admin and health
- gptme#2744 (webui) add baseline security headers to Cloudflare Pages _headers
- gptme#2746 (webui) keep demo mode out of setup probes
- gptme#2747 (reduce) drop orphaned tool results in limit_log when tool-use is dropped
- gptme#2750 (eval) normalize model key in pass-rate gate to handle router prefixes
- gptme#2757 model-aware temperature and top_p for gpt-5 and moonshot (conflict resolved)
- gptme#2758 (complete) nudge interactive+no_confirm (-y) mode on think-only responses
- gptme#2761 (webui) Jest ESM import crash from ansi-regex v6
- gptme#2764 (webui) improve chat composer mobile ergonomics
- gptme#2766 (util) reject empty batch model override
- gptme-contrib#1008 (self-merge) treat green StatusContext checks as passing
- gptme-contrib#1043 (codegraph) link receiver method calls
- gptme-contrib#1047 (activity-gate) key assigned-issue resolution on last-actor, not timestamp watermark
- gptme-contrib#1050 (twitter) redirect console output to stderr
- gptme-contrib#1055 (skills) add explicit category to home-assistant skill for catalog
- gptme-contrib#1057 (lessons) skip companion/length soft-warnings for archived lessons
- gptme-contrib#1058 (voice) truthful runtime-identity self-report (no more confabulated model)
- gptme-contrib#1059 (voice) surface recently-completed subagent outcomes in subagent_status
- gptme-contrib#1060 (voice) clear Twilio playback buffer on barge-in
Performance
- gptme#2753 (llm) batch terminal output per chunk, not per char
Refactors
- gptme#2755 (extension) move under webui/, replace side panel with React
Documentation
- gptme#2683 (server) point self-hosters to the same-origin bundled web UI
- gptme#2684 (server) add nginx reverse proxy guide for self-hosters
- gptme#2688 (server) add systemd unit template for pipx self-hosters
- gptme#2741 (webui) add comment on structuredClone polyfill limitations
- gptme#2748 (commands) add missing /account, /doctor, and /checkpoint commands
- gptme#2749 (automation) expand automation guide with non-interactive mode, CI/CD, and scheduling
- gptme-contrib#1056 (commands) add vent command entry
Tests
- gptme-contrib#1046 (codegraph) add Python cross-module call resolution tests
- gptme-contrib#1051 (headroom-compressor) cover cost-tracker recording path + isolate config tests
CI & Infrastructure
- gptme#2682 exclude webui/tauri/site from Docker build context
- gptme#2706 (deps) bump actions/checkout from 4 to 6
- gptme#2707 (deps) bump actions/upload-artifact from 4 to 7
- gptme#2708 (deps) bump actions/setup-node from 4 to 6
- gptme#2709 (deps) bump actions/setup-python from 5 to 6
- gptme#2710 (deps) bump anthropic from 0.47.0 to 0.105.2
- gptme#2711 (deps-dev) bump pytest-mock from 3.14.0 to 3.15.1
- gptme#2712 (deps) bump questionary from 2.1.0 to 2.1.1
- gptme#2713 (deps) bump playwright from 1.49.1 to 1.60.0
- gptme#2714 (deps) bump agent-client-protocol from 0.7.0 to 0.10.1
| *108 PRs merged across 2 repos. See the full changelogs: gptme | gptme-contrib* |