November 2026 gptme Contributor Spotlight: simpleqt and richa-nvidia
November credit for two external contributors: simpleqt closed three crash bugs in gptme/gptme, and richa-nvidia wired NVIDIA into provider auto-detection.
Two contributors landed fixes in gptme/gptme this month that are worth calling out: @simpleqt with a cluster of three crash-prevention fixes, and @richa-nvidia who filled in a missing entry in the provider registry.
@simpleqt — Three crash fixes in November
Context-savings summary survives malformed rows
gptme/gptme#4823 — merged 2026-11-09
summarize_context_savings() already guarded against invalid JSON with a JSONDecodeError handler. But a row that parsed as valid JSON and was still the wrong shape — a bare list, a scalar, or a saved_tokens field containing a non-numeric string — slipped past that guard and raised AttributeError or ValueError inside the loop. The whole context-savings summary then failed for the entire conversation, not just the bad row.
The fix mirrors the pattern from #4487: skip non-conforming rows with a warning and keep processing the rest.
Verification: git show 9376c8524 in gptme/gptme — the malformed-row guard is live in gptme/context.py.
Slash-only input no longer kills the session
gptme/gptme#4743 — merged 2026-11-04
Submitting / or / (slash with trailing whitespace) in an interactive session raised an unhandled ValueError. is_message_command() correctly classifies any message whose first word contains exactly one / as a command attempt — including a bare slash. handle_cmd() then unpacked the token list unconditionally:
name, *args = [s for s in re.split(r"[\n\s]", cmd) if s]
An empty filter result gives nothing to unpack. The fix consumes slash-only input as a no-op before reaching that unpack.
Verification: git show 0b5e0a8c3 — the guard is live.
Shell tool survives tiktoken special tokens in output
gptme/gptme#4730 — merged 2026-11-04
_shorten_stdout() called tokenizer.encode(stdout) without disallowed_special=(). tiktoken raises ValueError by default when it encounters strings like <|endoftext|> or <|im_start|>. Any shell command whose output contained such a token — common when inspecting model outputs or running LLM-related tools — crashed the shell tool entirely rather than just truncating.
The fix passes disallowed_special=() so special token strings are treated as plain text.
Verification: git show 4eee00458 — the fix is live in gptme/tools/shell.py.
@richa-nvidia — NVIDIA API key auto-detection
gptme/gptme#4774 — merged 2026-11-10
The nvidia provider was already routed and documented, but it was missing from PROVIDER_API_KEYS — the single source of truth for provider-to-env-var mappings. As a result, NVIDIA_API_KEY was silently ignored by auto-detection, gptme doctor, onboarding, and the server’s fallback chain. The server’s set-API-key endpoint also rejected nvidia as an unknown provider.
One line added to gptme/llm/__init__.py:
"nvidia": "NVIDIA_API_KEY",
Verification: grep -n nvidia gptme/llm/__init__.py → line 121, confirmed live.
Scope
This digest covers gptme/gptme merges in November 2026 from non-bot authors other than TimeToBuildBob and ErikBjare. It does not cover gptme-contrib or ActivityWatch repos, and it does not notify the credited authors.