This Week in gptme (W39 2026)
Here's what landed in gptme and gptme-contrib this week (2026-09-21 – 2026-09-27): 23 new features, 41 bug fixes across 82 merged PRs.
Here’s what landed in gptme and gptme-contrib this week (2026-09-21 – 2026-09-27): 23 new features, 41 bug fixes across 82 merged PRs.
Highlights
- gptme#3912 (webui) subscription provider setup (ChatGPT/Grok/OpenRouter PKCE)
- gptme#3917 (webui) add provider health dot badge to model picker label
- gptme#3942 (server) forward temperature and top_p request overrides to provider
- gptme#3947 (tauri) LAN QR access backend — Phase 1
- gptme-contrib#1723 (voice) open handoff roster via GPTME_VOICE_AGENTS env var
New Features
- gptme#3895 (compaction) Phase 1 — one budget, always-on trigger, no per-call mutation (#3812)
- gptme#3897 (subagent) deliver completions to idle server sessions
- gptme#3898 (shell) promote slow foreground commands
- gptme#3912 (webui) subscription provider setup (ChatGPT/Grok/OpenRouter PKCE)
- gptme#3914 (models) add GPT-6 Sol and GPT-6 Luna to OpenAI model registry
- gptme#3917 (webui) add provider health dot badge to model picker label
- gptme#3942 (server) forward temperature and top_p request overrides to provider
- gptme#3947 (tauri) LAN QR access backend — Phase 1
- gptme#3954 (tools) URL host allowlist for autonomous web access
- gptme#3957 (providers) make api_key_env optional in ProviderPlugin
- gptme-contrib#1690 (self-outage-check) harness-agnostic auth-outage self-detector
- gptme-contrib#1697 (auth) canonical transient-401/auth-death classifier (shared core)
- gptme-contrib#1698 (lib) add reusable log/disk hygiene mechanism for long-running agents
- gptme-contrib#1699 (git) upstream git-safe-pull + git-safe-push-master (trunk-derived)
- gptme-contrib#1700 (runloops) composable state_delta_gate (runtime-admission gate library)
- gptme-contrib#1701 (runloops) composable trigger-gate framework (durable state + max_skip floor)
- gptme-contrib#1702 (harness-models) register claude-code:opus-5-5 parallel window arm
- gptme-contrib#1703 (auth) shared auth-resilience bash unit (preflight + slot resolver + 401 wrapper)
- gptme-contrib#1708 (lib) add hygiene_prune_uv_cache to log-hygiene.sh
- gptme-contrib#1712 (runs) capability-tier autonomous-loop with Tier-0 direct mode
- gptme-contrib#1723 (voice) open handoff roster via GPTME_VOICE_AGENTS env var
- gptme-contrib#1724 (identity) read neutral AGENT_* protocol env vars, keep BOB_* as aliases
- gptme-contrib#1739 (runloops) configurable pm_dispatch slot unit prefix (PM_UNIT_PREFIX)
Bug Fixes
- gptme#3893 (doctor) resolve effective model source
- gptme#3899 (cli) honor gitignore anchoring and negation in context tree
- gptme#3901 (cli) import extras lazily so gptme-server and gptme-dspy start without them
- gptme#3904 (memory) reject unknown list filters
- gptme#3905 (server) honor per-step max token override
- gptme#3907 (tauri) rename user-facing product to gptme
- gptme#3908 (webui) bundle Inter font locally instead of CDN import
- gptme#3910 (review-pr) don’t let a trailing shutdown log mask the real session error
- gptme#3915 (config) don’t crash on malformed [[providers]] entry
- gptme#3916 (tests) update browser-lynx test to use stable gptme.org assertion
- gptme#3922 (webui) cancel subscription poll and in-flight request on wizard unmount
- gptme#3923 (server) add timeout to subscription OAuth background threads
- gptme#3926 (tauri) preserve OAuth chars in deep-link auth code injection
- gptme#3927 (config) don’t crash on malformed [[mcp.servers]] entry
- gptme#3928 (tauri) regenerate small icons from SVG for readable title-bar rendering
- gptme#3930 (service) preserve existing model when –force without –model
- gptme#3934 (tauri) retry connect on managed sidecar startup delay
- gptme#3965 (autocompact) only record attempt after successful compaction, not before
- gptme-contrib#1695 (runloops) record lock-busy exit 75/76 as a defer, not a failure
- gptme-contrib#1696 (activity-summary) widen subscription fallback budget
- gptme-contrib#1704 (gptodo) don’t default
add --assigned-toto bob - gptme-contrib#1707 (github) honor BOT_USERNAME in fix-trigger and merge-ready filter
- gptme-contrib#1709 (sessions) attach timings for all session formats, not just gptme
- gptme-contrib#1710 (repo-status) filter ghost startup_failure runs from deleted workflows
- gptme-contrib#1713 (lessons) tighten python-invocation keyword precision
- gptme-contrib#1714 (github) don’t dispatch recovered master CI from a stale branch index
- gptme-contrib#1715 (runloops) max_skip floor must force-run on a future last_session_ts
- gptme-contrib#1716 (gptmail) scope agent conversation IDs by named mailbox
- gptme-contrib#1718 (gptodo) ready/next treat archived done deps as met
- gptme-contrib#1719 (dotfiles) resolve hook config through symlinked installs; install identity allowlist
- gptme-contrib#1721 (activity-summary) derive default repos from the workspace remote (#1705)
- gptme-contrib#1722 (coordination) resolve worktree guard identity from AGENT_* with BOB_* legacy aliases
- gptme-contrib#1727 (activity-gate) recognise –author as a handoff comment identity
- gptme-contrib#1728 (lessons) strip quoted literals and heredoc bodies from PreToolUse Bash match text
- gptme-contrib#1729 (lessons) pointer-inject SKILL.md on PreToolUse instead of full body
- gptme-contrib#1730 (lesson_matcher) raise skill-descriptor min token overlap from 2 to 3
- gptme-contrib#1732 (activity-gate) default BOT_USERNAME to –author for fork-generality
- gptme-contrib#1733 (sessions) classify current Claude OAuth failures
- gptme-contrib#1734 (judge) allow requested annotation fields
- gptme-contrib#1736 (voice) authenticate the /twilio media-stream websocket
- gptme-contrib#1737 (voice) never let a latency sink failure kill the receive loop
Performance
- gptme#3952 (shell) batch 7 separate export calls in _init() into one
- gptme-contrib#1726 (gptodo) resolve archived deps lazily in ready/next
- gptme-contrib#1735 (activity-gate) cache merge_ready review-thread probe per PR head
- gptme-contrib#1738 (activity-gate) cache non-comment-bump actor probe per (PR, updatedAt)
Refactors
- gptme#3937 (cli) remove architect/editor split mode
- gptme#3938 (server) stop falling back to the legacy web UI
- gptme#3940 (cli) remove –gear, –multi-tool, –injection-hygiene, –manifest-dir
- gptme#3941 (tools) remove patch_anchored and view_anchored
- gptme#3944 (shell) remove bashlex fallback after tree-sitter soak
Documentation
- gptme#3902 (contributing) add setup smoke test
- gptme#3933 fix verified README/docs drift (agent workflow, GPTME_LOG_LEVEL, codegraph tool count)
- gptme#3936 correct inaccurate and stale claims across README and docs
- gptme#3946 (shell) document allowlist, transparent wrappers, and tree-sitter-bash parser
- gptme#3951 (plugins) add Plugin Registry section — how to get listed via GitHub topics
Tests
- gptme#3900 (server) gate cold conversation scan on scaling, not milliseconds
- gptme#3948 (e2e) Playwright tests for InlineToolConfirmation (tool_pending flow)
- gptme#3962 (hooks) unregister server_confirm in test_register (fixes master Test red)
Chore
- gptme#3955 (meta) add PyPI keywords and classifiers
| *82 PRs merged across 2 repos. See the full changelogs: gptme | gptme-contrib* |