Compiled entirely from public activity on meta.discourse.org, X, and GitHub.
💬 meta.discourse.org
This week on Meta, Sam was focused on tightening up Discourse’s AI and platform plumbing: he announced new service-tier controls for OpenAI/Azure providers, discussed how more sophisticated AI agents could surface in support workflows, and responded to performance concerns around embedding generation and AI search load. He also weighed in on core architecture and compatibility issues, clarifying Markdown’s extension-based path instead of replacement, troubleshooting a subscriptions plugin boot regression, and helping investigate slugification/tagging behavior. Alongside that, he did some routine product housekeeping, including splitting off side discussions into better-scoped topics and riffing on automation ideas inspired by his Jarvis assistant work.
🐦 On social
On social: The week’s posts centered on Jarvis and term-llm, with updates on turning the term-llm README into a dedicated site, automating a weekly AI-paper roundup, and experimenting with Jarvis-driven bug hunting and security scanning. There was also a practical thread mix around developer tooling and model economics, including terminal workflow pain points, Hyprland recording issues, and back-of-the-napkin comparisons of OpenAI vs Claude plan value. Replies were notably more conversational than promotional, expanding on security-scan results, RSS rollout, Discourse’s open-source moat, and credit-counting quirks in ongoing back-and-forths.
- 11 posts and 9 replies captured in the last 7 days
- Top by engagement: My back of napkin math, Open AI $200 plan gives you ab…, This sounds like a bug to me … I talked to @JamesMon…, term-llm readme was getting a bit too long so Jarvis m…
Most engaged tweets:
- post — My back of napkin math, Open AI $200 plan gives you about $1600 of API credits a month, Claude gives you about $5000 of API credits for $200
12 likes · 0 reposts · 2 replies - reply to @fidalgo_pt — This sounds like a bug to me … I talked to @JamesMontemagno about this in the past, 1 request to OpenAI 4.5 is meant to be 1 credit. A typical agentic turn will take 10-30 … w…
0 likes · 0 reposts · 3 replies - post — term-llm readme was getting a bit too long so Jarvis made it a site
2 likes · 1 reposts · 1 replies - post — ADD - Article Driven Development. This is quickly turning into a favorite pattern of mine. Author a deep dive article with Jarvis. Then use the article as a foundation for a featu…
4 likes · 1 reposts · 0 replies - post — FWIW @thsottiaux I have been running a loop for the past 32 hours non stop with GPT 5.4 xhigh scanning @discourse for security issues. 42% of my weekly is left. I am on a $200 pla…
3 likes · 0 reposts · 1 replies
🛠️ GitHub — Sam’s Commits
samsaffron/term-llm
Over the last 7 days, Sam focused heavily on making term-llm’s web experience feel more like a polished product: improving chat interaction, mobile/PWA behavior, web push notifications, voice notes, math rendering, session resume, and a string of fixes around composer focus, startup/loading, and chat continuity. He also pushed the platform forward on capability and reliability, adding progressive execution for long-running tasks, tightening subprocess/path safety, reworking compaction and history persistence, and expanding integrations with Tavily, Perplexity, and Venice, including new video-related workflows.
A second major theme was packaging and explainability: Sam directed a substantial docs overhaul that moved the docs site into the repo, rebuilt it with Hugo, clarified the homepage and install flow, and better surfaced providers, jobs, memory, embeddings, and built-in agents. Where commits were authored by Jarvis, they appear to be Sam-directed agent implementation work supporting those same product, docs, and UX goals.
Key commits:
1159cdf— remove uneeeded commands from chat535bde9— rtrim selection in chat49785c2— Merge pull request #154 from sam-saffron-jarvis/feat/mobile-composer-keyboardca8820c— Merge pull request #152 from sam-saffron-jarvis/feat/website-frontpage7f4bf47— Merge pull request #153 from sam-saffron-jarvis/feat/ui-self-heal-pr
discourse/discourse
Over the last 7 days, Sam Saffron was primarily focused on a substantial Discourse AI transition from “personas” to “agents,” touching the admin UI, models, routes, migrations, fixtures, and tests to reshape the feature while preserving compatibility during the rollout, including fixes for seeding agents during the transition period. He also tightened the AI configuration surface for admins—adding controls for OpenAI service tiers and gating advanced sampling settings like temperature/top_p—suggesting a push toward safer, more intentional tuning of cost, latency, and model behavior. Around that, he cleaned up migration-edge bugs and tool behavior in the AI stack, plus made smaller developer-facing improvements like better FormKit docs and plugin visibility into post_revisor options.
Key commits:
10fc3da— DEV: update formkit docs (#38575)077f81c— DEV: allow tracking opts on post_revisor (#38525)76c3a62— DEV: remove usage of deprecated const (#38524)b0504e4— FEATURE: gate temperature/top_p behind setting (#38479)f0f7815— FIX: overwrite tools not respected in Discourse AI (#38482)
discourse/discourse-kanban
In the last 7 days, Sam’s work in discourse-kanban was narrowly focused on a UX polish fix: resolving a double-scrollbar issue in the Foundation-based board view. The change appears aimed at simplifying the board’s scrolling behavior by removing component-side handling and tightening the styling instead, suggesting a cleanup that makes the layout behave more predictably rather than adding new functionality.
Key commits:
3527b2a— FIX: double scrollbars on foundation
discourse/discourse-suggested-edits
Over the last 7 days, Sam Saffron essentially stood up the Suggested Edits plugin end-to-end, then spent the rest of the week tightening the workflow, permissions, and review experience. The work focused on turning the initial feature into something production-shaped: adding API/MCP integration, defining schemas and access scopes, cleaning up guardian and controller boundaries, and expanding tests so the core suggestion, revision, apply, and withdraw flows are better covered.
A second clear theme was polish and correctness: Sam disabled draft behavior where it didn’t fit the product, improved settings consistency and rate-limiting structure, and fixed newline handling in the diff tokenizer so edit reviews render changes more accurately. Overall, the intent looks like moving quickly from a first complete implementation to a more robust, reviewable, and automation-friendly plugin.
Key commits:
c7059e6— FIX: preserve newlines in diff tokenizer and contexte7368cf— refactor: move rate limits to controller, pluralize group settings4518a32— drafts are not needed … so try to get them not to work.f3a29fe— Add MCP so we can use pluginfee9d05— some schemas
SamSaffron/dotfiles
In the last 7 days, Sam focused on developer environment maintenance and smoother desktop tooling in his dotfiles. The main themes were modernizing everyday workflows—most notably switching the Hyprland screen recording setup over to a GPU-based recorder—and routine editor/terminal upkeep, with config and lockfile upgrades in Neovim and Kitty to keep the local setup current and stable.
Key commits:
🤖 Jarvis — Public Repo Work
Agent-authored public commits, typically guided by Sam during implementation work.
SamSaffron/term-llm
Over the last 7 days, Sam-directed Jarvis work in term-llm was concentrated on making the web experience feel more complete and reliable: mobile/PWA polish, push notifications, voice notes, math rendering, session resume, concurrent chat handling, and fixes for stale UI state, startup/loading, and media playback. A second major theme was expanding the product surface with new capabilities and integrations, including Tavily and Perplexity search, full Venice provider support plus video generation inputs/playback, and default persistence for long-running job progress. In parallel, Sam had Jarvis do a substantial docs and website push—moving the docs site into the repo, rebuilding the homepage/README to better explain what term-llm is, and improving discoverability of agents, jobs, memory, config, providers, and install flow via a more cohesive docs homepage.
Key commits:
11cb441— fix: keep mobile composer above keyboard60d345d— docs: make docs homepage more cohesive945f657— fix: self-heal stale web UI session statecc58e2a— docs: simplify docs homepage navigationac23182— feat: embed sessions browser for resume
⤴️ GitHub — Pull Requests
12 PRs this week:
- ✅ discourse/discourse#38575 (diff) — DEV: update formkit docs merged
- 🟢 discourse/discourse#38577 (diff) — docs3 opened
- DEV: improve linting doc - DEV: expand topic-list customization guide
- 🟢 discourse/discourse#38573 (diff) — DEV: symlink to skills opened
(this makes skills work in both codex and claude)
- ✅ SamSaffron/term-llm#123 (diff) — fix: use external search when Gemini tools are enabled closed
- automatically fall back to external
web_searchwhen a provider supports native search but cannot combine it with function tools - mark both Gemini providers as unable to mix native search with tool calls - add an engine test covering the native-s…
- automatically fall back to external
- ✅ discourse/discourse#38525 (diff) — DEV: allow tracking opts on post_revisor merged
previously opts were invisible from plugins, this allows plugin to be aware of them. particularly it helps avoid loops and all sorts of nasty stuff like that
- ✅ discourse/discourse#38524 (diff) — DEV: remove usage of deprecated const merged
- ✅ discourse/discourse#38479 (diff) — FEATURE: gate temperature/top_p behind setting merged
Introduce
ai_llm_temperature_top_p_enabledhidden site setting (default: false) to control visibility and usage of temperature and top_p parameters across the AI plugin. When disabled: - LLM completions drop temperature/top_p model params - Agent e… - ✅ discourse/discourse#38482 (diff) — FIX: overwrite tools not respected in Discourse AI merged
Prior we were looping at “approve overwriting”
- ✅ discourse/discourse#38401 (diff) — FIX: can not seed agents during transition period merged
ai_agents starts off as a view for cross compatability, we can not seed it when it is a view hold off and seed it in post migration
- ✅ discourse/discourse#38319 (diff) — DEV: AI persona to agent migration merged
- ✅ discourse/discourse#38359 (diff) — FEATURE: Add service_tier support for OpenAI endpoints merged
Adds a configurable
service_tierparameter (auto, flex, priority) for OpenAI and Azure providers. This allows admins to control cost/latency tradeoffs when making API requests. - flex: lower cost with higher latency - priority: faster processing - … - ✅ discourse/discourse#38358 (diff) — FIX: treat 0 max_posts as unlimited merged
GPT 5.4 started sending max_posts:0 to our search tools, this is a problem cause we simply returned 0 posts from the tool which was never our intention This patch simply removes the param if it is sent in that shape
🐛 GitHub — Issues
No issue activity this week.
👀 GitHub — Reviews
6 reviews this week:
- discourse/discourse#38570 — FIX: Mathjax errors flooding logs on rails server boot locally approved
- discourse/discourse#38482 — FIX: overwrite tools not respected in Discourse AI commented
- discourse/discourse-nested-replies#17 — FIX: Routing to flat topics (not messing with query params) approved
- discourse/discourse#38317 — FIX: don’t cache localized color scheme name approved
- discourse/discourse#38360 — DEV: Remove enable_upcoming_changes global setting gate approved
- discourse/discourse#38359 — FEATURE: Add service_tier support for OpenAI endpoints commented