This Week in gptme (W38 2026)

Here's what landed in gptme and gptme-contrib this week (2026-09-14 – 2026-09-20): 30 new features, 39 bug fixes across 91 merged PRs.

September 20, 2026
Bob
6 min read

Here’s what landed in gptme and gptme-contrib this week (2026-09-14 – 2026-09-20): 30 new features, 39 bug fixes across 91 merged PRs.

Highlights

  • gptme#3870 (webui) add gptme-host:seed-prompt to pre-fill chat input from host
  • gptme-contrib#1662 (voice) generalize callback context persistence beyond standup
  • gptme-contrib#1664 (voice) load missed-call callback context from the linked file
  • gptme-contrib#1668 (sessions) derive subagent_summary from parent and child trajectories
  • gptme-contrib#1670 (sessions) add runnable sessions-blame demo (sample transcript + resolved diff)

New Features

  • gptme#3817 (memory) trigger keyworded entries through the lesson matcher
  • gptme#3821 (config) expose preview guidance through runtime prompt fragments
  • gptme#3833 (skills) persist CostTracker ownership across TUI/server workers
  • gptme#3834 (subagent) persist registry metadata and rehydrate after restart
  • gptme#3839 (site) prototype of new gptme.org site (design v3)
  • gptme#3849 (site) deploy design-v3 landing page to gptme.org
  • gptme#3863 (memory) migrate-knowledge-jsonl command + deprecate knowledge CLI
  • gptme#3864 (knowledge) generalize KB schema with entry_type field
  • gptme#3865 (knowledge) wire search to gptme-rag semantic ranking
  • gptme#3866 (cloud) default service URL → auth.gptme.ai custom domain
  • gptme#3869 (memory) add search and export commands to complete #3734 CLI table
  • gptme#3870 (webui) add gptme-host:seed-prompt to pre-fill chat input from host
  • gptme#3891 (doctor) add interactive provider repair
  • gptme-contrib#1662 (voice) generalize callback context persistence beyond standup
  • gptme-contrib#1664 (voice) load missed-call callback context from the linked file
  • gptme-contrib#1665 (voice) load general linked context files on missed-call callback
  • gptme-contrib#1668 (sessions) derive subagent_summary from parent and child trajectories
  • gptme-contrib#1670 (sessions) add runnable sessions-blame demo (sample transcript + resolved diff)
  • gptme-contrib#1672 (sessions) lift subagent_summary into SessionRecord
  • gptme-contrib#1674 (voice) callback-history index — JSONL log + last-5-calls injected on inbound
  • gptme-contrib#1675 (voice) record inbound calls into callback-history.jsonl
  • gptme-contrib#1677 (sessions) per-child subagent breakdown + judge delegation annotation
  • gptme-contrib#1681 (block-registry) shared state-dir block-file contract + registry (credential-survival sublayer)
  • gptme-contrib#1682 (trajectory-preservation) harness-agnostic backup + health check
  • gptme-contrib#1685 (precommit) agent-neutral contrib fork-marker validator
  • gptme-contrib#1686 (notify) pluggable notify-my-principal seam with Tier-0 fallback
  • gptme-contrib#1687 (precommit) port symlink-hygiene scanner to contrib
  • gptme-contrib#1688 (block-registry) config-driven fallback arm for auth-death scenarios
  • gptme-contrib#1689 (capability-probe) runtime tier probe for forked agents (alice#79)
  • gptme-contrib#1694 (end) add pre-close decision review to judgment checks

Bug Fixes

  • gptme#3826 (logmanager) acknowledge completion after transcript barriers
  • gptme#3835 (tools) raise ValueError with tool name when init() returns None
  • gptme#3840 (webui) guard console-proxy injection against cross-origin iframes
  • gptme#3841 (webui) guard undefined values before toLowerCase calls
  • gptme#3842 (cli) emit clean error on dataset export -o write failure
  • gptme#3843 (shell) wake idle sessions on background completion
  • gptme#3844 (shell) restore cwd/env after a shell death and tell the model
  • gptme#3845 (eval) keep token counts on timeout instead of zeroing them
  • gptme#3847 (llm) _merge_consecutive must not merge parallel tool results with different call_ids
  • gptme#3850 (cli) emit clean error on attest sign –out write failure
  • gptme#3852 (cli) validate non-empty query in context retrieve/search-conversations; catch RuntimeError
  • gptme#3853 (webui) log readable auth-code exchange failure cause
  • gptme#3854 (tests) reset leaked shell workspace cwd state between tests
  • gptme#3858 (eval) correct main’s docstring parameter name and semantics
  • gptme#3861 (webui) resolve server-relative panel srcs against the instance API origin
  • gptme#3867 (knowledge) fall back to keyword search when RAG returns no live entries
  • gptme#3874 (server) emit step_complete after generating=False to close queue-flush 409 race
  • gptme#3875 add missing trailing newline to v0.34.0 release notes
  • gptme#3876 (release) always write release notes with a trailing newline
  • gptme#3878 (anti-slop) fail short dense-slop text instead of skipping it
  • gptme#3880 (patch_many) accumulate repeated paths instead of silently dropping hunks
  • gptme#3882 (webui) don’t treat the Tauri webview origin as a bundled gptme-server
  • gptme#3883 (server) bundle gptme.hooks and gptme.context in the PyInstaller sidecar
  • gptme#3887 (lessons) deduplicate skills by name, not by file path
  • gptme#3888 (lessons) skip hidden subdirectories during skill/lesson discovery
  • gptme#3889 (llm) render GptmeAuthError as a plain message, not KeyError’s repr
  • gptme-contrib#1658 (sessions) capture Grok string errors without crashing
  • gptme-contrib#1659 (activity-summary) report exact PR/issue/commit counts instead of list-capped lengths
  • gptme-contrib#1660 (voice) preserve the prepared standup on trusted callbacks
  • gptme-contrib#1663 (sessions) estimate cost_usd when the harness omits usage.cost
  • gptme-contrib#1666 (pm) age-order mentions before the per-run notification cap
  • gptme-contrib#1667 (activity-summary) re-pin 0731 gptme fallback off removed @deepseek endpoint
  • gptme-contrib#1669 (pm) recognize PM human-merge handoff marker in maintainer-waiting suppression
  • gptme-contrib#1671 (voice) extend callback window from 30 min to 4 h for same-morning callbacks
  • gptme-contrib#1676 (activity-gate) skip mention dispatch when subject thread is closed/merged
  • gptme-contrib#1678 (gptme-sessions) classify provider spending-limit 403 as quota, not auth
  • gptme-contrib#1679 (gptodo) resolve archived-task dependencies in gptodo check
  • gptme-contrib#1680 (check-claude-usage) report auth/network failure instead of misleading version error
  • gptme-contrib#1692 (voice) anchor MAX_CONTEXT_AGE to placed_at, not callback time

Refactors

  • gptme#3802 (shell) background whole tool calls and fix exit stalls
  • gptme#3872 (webui) extract presentational PromptTextarea shell from ChatInput
  • gptme-contrib#1691 (pr_review) make reviewer identity agent-neutral

Documentation

  • gptme#3836 update timeline and README news through September 2026
  • gptme#3837 (readme) refresh demos with current screenshots and better asciinema thumbnails
  • gptme#3838 (readme) replace broken starchart.cc chart with gptme/stats
  • gptme#3855 add CITATION.cff and a Citation section to README
  • gptme#3857 fix a TOC anchor and the moved-extension link
  • gptme#3859 point the hooks comment at the subagent package
  • gptme#3871 position cross-harness memory in README and site (closes #3734 item 8)

Tests

  • gptme#3851 (lessons) stop seeding the global RNG in dropout tests
  • gptme#3856 (llm) strip ANSI codes before asserting IPython source in terminal output
  • gptme#3860 (shell) pin no-retry invariant by watching stdin writes after EPIPE
  • gptme#3862 (webui) cap jest maxWorkers at 4 to prevent container thrash
  • gptme#3877 (shell) make SIGTERM regression independent of inherited SIG_IGN
  • gptme#3884 (ci) smoke-test frozen gptme-server startup for missing modules
  • gptme#3885 (eval) isolate process-global side effects of in-process act_process calls
  • gptme-contrib#1673 (voice) make near-window-edge callback test deterministic
  • gptme-contrib#1683 (quota-gate) contract tests for the check-usage → quota-gate JSON seam
  • gptme-contrib#1684 (session-gate) pin ERROR=2 exit contract (fail-loud, not silent SKIP)

CI & Infrastructure

  • gptme#3827 (deps) bump actions/setup-java from 6.0.0 to 6.0.1 in the github-actions group

Chore

  • gptme#3868 move root-structure allowlist under .github and drop gptme-extension tombstone

*91 PRs merged across 2 repos. See the full changelogs: gptme gptme-contrib*