Compiled entirely from public activity on meta.discourse.org, X, and GitHub.

💬 meta.discourse.org

This week Sam was heavily focused on shipping and documenting MCP (Model Context Protocol) support for Discourse AI — publishing both a technical guide and an announcement post enabling AI agents to connect to external MCP servers like GitHub, Notion, and Linear. He also triaged several AI agent behavior issues, weighing in on mention-only response defaults and configurable response delays (noting that upcoming workflow support would address the latter). Rounding out the week, he did some housekeeping on outdated content and investigated a migration ID collision bug, flagging it as a recurring contributor discipline problem he’s working to address.

🐦 On social

No X activity captured this week.

🛠️ GitHub — Sam’s Commits

samsaffron/term-llm

The week’s work centered on two themes: building out a tool-driven agent handover system (allowing agents to hand off sessions with stored, renamed context files) and hardening the serve runtime against reliability issues like stale stream state, session hangs, and incomplete progress tracking. Sam also did a round of provider correctness fixes — enforcing provider persistence per session, cleaning up zero-value temperature/top_p params sent to OpenAI-compatible providers, and handling Claude CLI’s non-zero exit after MCP tool use. Rounding things out, model token limits were consolidated into model entries directly, and a Telegram download timeout was added to prevent indefinite blocking. Jarvis contributed one agent-directed fix to rescue orphaned interrupt commits when sessions go idle.

Key commits:

discourse/discourse

Sam’s week was focused squarely on maturing the MCP (Model Context Protocol) OAuth integration in the discourse-ai plugin. The single substantial commit adds fine-grained control over the OAuth flow — custom authorization and token parameters, smarter client authentication method negotiation, and a hard-fail mode when a refresh token isn’t returned — making the feature production-ready for real-world OAuth providers like Google. He also tightened up error handling so the AI sees tool-level failures rather than raw exceptions, improving the agent’s ability to reason about and recover from MCP tool errors.

Key commits:

discourse/discourse-kanban

Sam’s focus this week was on polishing the kanban card UX — both in how cards are interacted with and how they display. He improved the drag-and-drop flow to feel more fluid, added auto-linking for URLs in card titles, and squashed a pair of layout bugs around card sizing and mobile keyboard handling. The work reads as a coherent push to make the day-to-day card experience tighter and more reliable, particularly on mobile.

Key commits:

discourse/dv

Sam’s week in discourse/dv was focused on a single, targeted infrastructure alignment: updating the dev tool to track upstream Discourse’s switch from the Unicorn web server to Pitchfork. The change touched service management, restart/reset flows, container definitions, and URL resolution across the codebase — a broad but shallow update to keep dv’s internals consistent with how Discourse now runs in production. Compatibility was preserved by falling back to the legacy UNICORN_PORT env var where PITCHFORK_PORT isn’t set.

Key commits:

SamSaffron/dotfiles

This week’s single commit focused on integrating Jarvis more deeply into Sam’s desktop environment — specifically configuring Hyprland to share a browser instance with the AI agent on a dedicated workspace or environment. The Hyprland config additions likely set up window rules or workspace assignments to facilitate this shared browser access. Neovim plugin versions were also bumped as part of routine maintenance.

Key commits:

🤖 Jarvis — Public Repo Work

Agent-authored public commits, typically guided by Sam during implementation work.

sam-saffron-jarvis/jarvis-browser-proxy

The past week in jarvis-browser-proxy was focused entirely on hardening the browser proxy’s operational reliability and install experience. Sam directed a consolidation of the browser control architecture (collapsing it into a single proxy service), followed by a push to make installation more polished and network-accessible with an one-shot upgrade script (listening on all interfaces, interactive setup). The tail end of the week was dominated by a series of iterative fixes to the upgrade and smoke-check pipeline — getting the readiness checks right for wildcard listen addresses, then adding proper wait logic, and finally silencing spurious errors during upgrades. The overall arc is: simplify the architecture, improve onboarding, then harden the upgrade path until it’s production-solid.

Key commits:

SamSaffron/term-llm

The past week was a focused hardening sprint across the term-llm codebase, with Sam and Jarvis working through a high-volume blitz of ~38 fixes targeting production robustness rather than new features. The bulk of the work attacked resource safety — plugging goroutine leaks, unbounded memory and disk consumption, and streaming timeouts across multiple providers (Copilot, ChatGPT, OpenAI Responses) that had been silently aborting long-running requests. A parallel thread of fixes tightened OpenAI-compatibility correctness: passthrough tools being silently dropped, image content disappearing, developer messages being mishandled, and provider state not surviving session continuations. A small handful of features snuck in — agent name display in the TUI footer, remaining-time urgency in progressive mode, a --files-dir flag, and updated Venice model support — but the clear intent was stability and correctness over new capability.

Key commits:

⤴️ GitHub — Pull Requests

19 PRs this week:

🐛 GitHub — Issues

No issue activity this week.

👀 GitHub — Reviews

1 reviews this week: