Compiled entirely from public activity on meta.discourse.org, X, and GitHub.
💬 meta.discourse.org
Sam’s week focused on AI integration and usability fixes: he introduced automatically generated llms.txt and helped troubleshoot Gemini regressions after the 2026.8.0 upgrade, steering users toward non-legacy API endpoints. He also pointed to an upcoming fix for expanded Markdown tables that couldn’t be interacted with, confirmed the mobile HTML-pasting issue remained queued, and engaged with feedback on workflows.
🐦 On social
Hands-on Astra experimentation dominated, from its shell-heavy workflow and startup-performance tuning to proactively generating a video demo of a feature, alongside a caution about pushing Astra fast too hard. Other notable posts announced term-llm’s new website and shared a tip for accessing an independent credit pool through gpt-reserve on an existing Codex plan. Replies extended the practical discussion with model-limit recommendations, comparisons of usage-reset behavior, and secrets-configuration details, while crediting another post for inspiring the website refresh.
- 33 posts and 25 replies captured in the last 7 days
- Top by engagement: This is a very effective way of working on plans, been…, I disagree, three js is interesting cause it can show…, Fable 5.1 , single shot
Most engaged tweets:
- post — This is a very effective way of working on plans, been wanting it forever. — 20 likes · 1 reposts · 2 replies · 4484 views
- reply — I disagree, three js is interesting cause it can show world understanding, something that is super rare in models, no saying this is the only vector, but it is an interesting data… — 10 likes · 0 reposts · 3 replies · 4398 views
- post — Fable 5.1 , single shot — 14 likes · 1 reposts · 0 replies · 3143 views
- reply to @thsottiaux — note reset strategy for Claude appears to be diff to Codex they did not shift my window, just reset the usage to 0. magic Tibo reset is different, resets clock to 0 and usage to 0… — 4 likes · 0 reposts · 1 replies · 2099 views
- reply — I see it as accountability, they are applying pressure on themselves to get it out there, seems totally reasonable to me. Even Sol was not available on Codex the minute it was rel… — 13 likes · 0 reposts · 0 replies · 676 views
🛠️ GitHub — Sam’s Commits
samsaffron/term-llm
Over the last seven days, Sam focused on making term-llm a more complete workspace for agent-assisted development, adding native commit, push and PR workflows, richer file review, and collaborative browser shells. He strengthened control and continuity across sessions with durable attention tracking, approval controls and “Steer now” handoffs, while migrating the Hub to Preact and reducing rendering flicker and unnecessary work. Integration work added MCP OAuth sign-in and improved provider compatibility, while trusted web extensions and a UI-builder agent opened up interface customization. He also redesigned the homepage and documentation around clearer onboarding and interactive product tours.
Key commits:
c6619d6— Add required OpenCode Go attribution headers57d8651— Add web extensions and a UI builder agentefb37d0— Disable ICE mDNS for WebRTC relay smoke testsa5432f6— Show completed agent work in the Hub tour6f79d50— Add terminal scene to homepage product tour
discourse/discourse
Over the last seven days, Sam focused on making Discourse interactions more reliable: checklist changes now better survive concurrent updates and rerenders, fullscreen tables retain their behavior, and voice calls restore users’ camera preferences while room listings scale more efficiently. He also strengthened AI integration by preventing private reasoning from leaking into generated output, refreshing model defaults, and adding a default /llms.txt. On security, he tightened mailing-list mirror reply handling so a mirror address cannot authorize writes to unrelated topics or private messages.
Key commits:
fe397de— FEATURE: Restore preferred voice camera (#43252)0b3d44a— FIX: Handle thinking events and refresh models (#43162)6802427— PERF: Batch voice room directory state (#43156)6bd7e57— FEATURE: Generate a default/llms.txt(#43109)2e354eb— FIX: Preserve checklist toggles across rerenders (#43065)
discourse/dv
Over the last seven days, Sam Saffron focused on making Discourse repository resets more resilient to interrupted Git operations. His change removes orphaned HEAD.lock files that would otherwise block a reset, while refusing cleanup if Git is still running or process inspection is unavailable, with regression tests covering the recovery behavior.
Key commits:
e1bf9ad— fix(cli): recover stale Git HEAD locks
discourse/message_bus
Sam focused on preparing MessageBus 5.0.0, raising the minimum Ruby version to 3.3, updating CI coverage, and documenting the release and compatibility changes. He also improved test reliability by making backlog-expiry checks deterministic and allowing more scheduling tolerance in long-poll timeout tests, while keeping experimental Ruby failures non-blocking only during setup and testing.
Key commits:
SamSaffron/dotfiles
Over the last seven days, Sam focused on making his AI-assisted development environment more seamless: new Discourse dev containers now inherit Antigravity CLI authentication with restricted permissions, and the developer agent can display media. He also fixed the desktop usage monitor to include previously missing weekly limits and clearer time-window labels. Alongside those improvements, he added repository-wide guidance for safe agent edits and secret handling, and refreshed Neovim plugins.
Key commits:
7c9beb2— I like pictures4ae83d4— sync agy auth as well5c73e32— add agents md277908e— missing spark weekly3f8c159— upgrades
discourse/mini_mime
Over the last seven days, Sam focused on releasing mini_mime 2.0.0, modernizing the gem with a Ruby 3.3 minimum and refreshed MIME data. The work improved lookup reliability and efficiency—particularly for Unicode custom databases and missing extensions—while preserving preferred extension mappings during database rebuilds. He also strengthened custom-database validation and configuration handling, expanded tests, and updated CI for current Ruby implementations.
Key commits:
6493de9— Release version 2.0.0
🤖 Jarvis — Public Repo Work
Agent-authored public commits, typically guided by Sam during implementation work.
SamSaffron/term-llm
Over the last seven days, Jarvis, acting under Sam’s direction, focused on making term-llm a more capable browser-based workspace, adding an interactive shell and custom sharing/publishing helpers while smoothing conversation switching, dedicated-agent startup, and proxied widgets. The work also expanded embedding support with OAuth, Venice, task-aware requests, and configurable memory-embedding batches. A parallel reliability and safety push tightened interpreter restrictions in untrusted directories, corrected tool execution and image delivery, prevented persisted jobs from silently running without durable sessions, and preserved the independently deployed learning site and HTTPS during documentation deployments.
Key commits:
6947ad3— Preserve independently deployed learn route and HTTPS on docs deploys (#1114)21c2bff— feat(share): support custom publishing helpers (#1106)a2c2f7b— fix(web): allow dedicated agent in fresh threads (#1104)adc6a17— fix: Persisted jobs silently run without a durable session after session creation fails (#1097)0122a38— fix(widgets): propagate public proxy prefixes (#1102)
⤴️ GitHub — Pull Requests
17 PRs this week:
- ✅ SamSaffron/term-llm#1105 (diff) — fix: Telegram interruption can hang forever while closing an uncooperative strea closed
- Cancel Telegram response contexts before beginning stream cleanup. - Run
Stream.Closeasynchronously and bound cleanup across the stream consumer, direct stream close, and shared runner. - Mark runtimes stale when cleanup misses the deadline so t…
- Cancel Telegram response contexts before beginning stream cleanup. - Run
- ✅ SamSaffron/term-llm#1107 (diff) — fix: OpenAI tool-parameter cache permanently retains every runtime’s schema grap closed
- Replaced the process-global, unbounded OpenAI parameter
sync.Mapwith a mutex-protected identity cache capped at 4,096 entries. - Added O(1) FIFO eviction with a circular cursor, so evicted entries release their strong references to both the sour…
- Replaced the process-global, unbounded OpenAI parameter
- ✅ SamSaffron/term-llm#1108 (diff) — fix: A hung Git hook wedges commit operations and can survive server restart closed
- Bound the host-owned
git commitsubprocess to a generous five-minute deadline without making an admitted commit depend on client cancellation. - Run Git in its own process group so deadline cancellation kills hooks and helper descendants, and add…
- Bound the host-owned
- ✅ SamSaffron/term-llm#1109 (diff) — perf: reduce chat startup work closed
Reduce redundant work while constructing a new interactive chat: - reuse the
ToolPermissionsinstance already owned by the approval manager instead of rebuilding and discarding a duplicate - skip loading scrollback for a session created moments ear… - ✅ SamSaffron/term-llm#1111 (diff) — fix: Shared-shell replay shifts 1 MiB on every output chunk closed
- Keep a logical start index for the shared-shell replay buffer instead of shifting the retained 1 MiB window after every small PTY output chunk. - Reclaim dropped storage only after a full replay window has accumulated, while preserving
baseOffset…
- Keep a logical start index for the shared-shell replay buffer instead of shifting the retained 1 MiB window after every small PTY output chunk. - Reclaim dropped storage only after a full replay window has accumulated, while preserving
- ✅ discourse/discourse#43252 (diff) — FEATURE: Restore preferred voice camera merged
Remember explicit camera choices and restore the camera when a voice call becomes visible or screen sharing ends. Guard automatic restoration against stale captures, room changes, permissions, and concurrent user actions.
- ✅ discourse/message_bus#391 (diff) — chore: release version 5.0.0 merged
Require Ruby 3.3 or newer, update the supported CI matrix, and document the release changes. Keep Ruby head non-blocking and add dependencies needed for Rack 2 tests on Ruby 4.
- 🟢 discourse/discourse#43249 (diff) — FEATURE: Add chat channel list options opened
Let users filter and sort sidebar channels, with preferences persisted per user. Keep active channels visible, provide filtered empty states, and preserve sidebar position when starring channels. Add model, request, serializer, system, component, and…
- ✅ discourse/discourse#43162 (diff) — FIX: Handle thinking events and refresh models merged
Exclude non-text completion events from agent output so private reasoning does not leak into artifacts, research, or image analysis. Refresh the default LLM catalog, pricing, capabilities, and descriptions, including the correct Gemini 3.8 thinking b…
- ✅ discourse/discourse#43156 (diff) — PERF: Batch voice room directory state merged
Preload participant, recording, MessageBus, and chat data for all visible rooms. Filter visibility in SQL and reuse loaded memberships to keep directory query and Redis costs constant as room counts grow. Cache default-room schema readiness per site …
- ✅ discourse/mini_mime#66 (diff) — Preserve preferred extensions when rebuilding MIME data closed
Keep each selected MIME type’s own preferred extension when building
content_type_mime.db, rather than resolving the row’s current extension back through the global filename index. The filename lookup can select a different MIME type that shares th… - ✅ discourse/mini_mime#65 (diff) — Use byte widths for fixed-record MIME databases closed
Measure database row sizes and generated column padding in bytes. Positional reads use byte offsets, but String#length counts characters; custom Unicode extensions could make later records unreadable. Write a UTF-8 custom extension database with thes…
- ✅ discourse/mini_mime#64 (diff) — Avoid repeating identical lowercase extension lookups closed
Skip the fallback database lookup when downcasing an unknown extension leaves it unchanged. Preserve exact-case precedence and mixed-case fallback. Instrument Db#lookup_by_extension and call MiniMime.lookup_by_extension(‘unknown’): previously two loo…
- ✅ discourse/mini_mime#67 (diff) — Release version 2.0.0 merged
Require Ruby 3.3 and refresh the bundled MIME database from mime-types-data 3.2026.0701. Use byte offsets for Unicode-safe database lookups, avoid duplicate lowercase misses, and preserve extension priorities when rebuilding the database. Update CI t…
- ✅ discourse/discourse#43109 (diff) — FEATURE: Generate a default
/llms.txtmerged - ✅ discourse/discourse#43065 (diff) — FIX: Preserve checklist toggles across rerenders merged
Track pending checkbox intent independently of rendered controls so queued toggles survive hydration, rebinding, and concurrent post updates. Rebase valid intent onto authoritative content while discarding stale intent after structural edits. Replace…
- ✅ discourse/discourse#43058 (diff) — SECURITY: Constrain mailing-list mirror reply threading to the addressed mirror merged
Previously, any inbound email addressed to a mailing-list mirror destination could leverage predictable Discourse Message-IDs to append attacker-controlled content to an unrelated private message and add attacker-selected recipients to that conversat…
🐛 GitHub — Issues
1 issues this week:
- discourse/message_bus#387 — Global messages on XX timed out, subscriber thread never self-heals after half-o closed
👀 GitHub — Reviews
11 reviews this week:
- discourse/discourse#43068 — DEV: Fix
bin/lintsilently passing when it lints nothing approved - discourse/discourse#43247 — DEV: Enable Style/AccessModifierDeclarations approved
- discourse/message_bus#389 — fix: subscriber thread never self heals after connection issue approved
- discourse/discourse#43152 — FIX: Refresh browse-more counts when topic tracking state changes approved
- discourse/discourse#43151 — DEV: Decrease RSpec startup time approved
- discourse/discourse#43147 — Revert “DEV: Decrease rspec startup time (#42946)” approved
- discourse/discourse#43112 — FIX: Load boards plugin SVG icons lazily approved
- discourse/discourse#43109 — FEATURE: Generate a default
/llms.txtcommented - discourse/discourse#43109 — FEATURE: Generate a default
/llms.txtcommented - discourse/discourse#43066 — DEV: Backport scroll restoration flake fix to 2026.7 approved
- discourse/discourse#43064 — SECURITY: Constrain mailing-list mirror reply threading to the addressed mirror approved