bmind reported that localized/translated pages were being hurt in search due to canonical handling, and nat confirmed a core fix has shipped and will be included after updating (read more). (Confirmation follow-up: read more)
Eviepayne flagged that the composer was ignoring default_composition_mode, and sam walked through repro checks + safe mode testing—ultimately pointing to a third-party plugin interaction as the likely cause (read more). (Original report: read more)
A busy community asked for “per-volunteer” archiving in the Support Mailbox so helpers can clear items from their view without hiding it from everyone else—surfacing a workflow gap for shared inbox triage (read more).
#Announcements
Discourse announced simpler email subject lines to reduce technical-looking clutter in inboxes, aiming to make communities feel less intimidating to non-technical members (read more). A related concern: some communities rely on category cues in the subject; see also the request around template display options (read more).
In Current Projects, lindsey noted that blog post styling components are now available for translation via Crowdin, unblocking localization work for those assets (read more). (For broader roadmap context, the April projects thread was also referenced elsewhere: read more).
The calendar subscription URL work continues to mature: after positive feedback, there was agreement that key UI affordances “should be in the plugin itself,” with a pointer to interim solutions in an “extra buttons” companion topic (read more; read more).
A member proposed an MMN (Meta Monthly Newsletter) run by the community, but feedback questioned the value vs existing summaries and cautioned that “user/staff of the month” voting can become a popularity contest (read more; critique: read more).
nicolsdennis shared a preview of Domniq, a Discourse-native Android+iOS app concept, including design explorations like app-wide custom color modes and chat UI styling (read more). Related inspirations referenced: a chat bubble component (read more) and the Horizon theme (read more).
In a second “Domniq” showcase, nicolsdennis previewed a premium landing page plugin for unauthenticated visitors—hero layouts, live stats, FAQs, and configurable sections aimed at turning “front page” traffic into engaged members (read more). (Companion app thread: read more)
#Site feedback
mcwumbly proposed a clearer home for lighter “I made a thing” posts: use General with the show-and-tell tag for now, and revisit structure once patterns emerge (read more). piffy immediately sanity-checked the direction by sharing an embeddings-based topic clustering map experiment (read more).
#Feature
A feature request floated a new notification level called “Obnoxious”, but the discussion quickly narrowed to a practical ask: thread-specific desktop notifications (not global browser push) so people can opt-in only where it matters (read more).
A thoughtful feature ideation explored protecting users during episodic unwellness (e.g., manic episodes): mcwumbly suggested “draft it to a trusted friend” patterns and even the possibility of opt-in, just-in-time AI feedback (“you sure you want to post this?”) (read more). Ed_S added adjacent concepts like scheduled send / undo-send time windows (read more).
Self-serve login control came up again: a request asked whether it’s possible to disable local sign-ups (hide Sign Up without CSS) while avoiding tricky authentication combinations—pointing to prior reports about invite only + auth skip create confirm interactions and differences across auth providers (read more; related: read more; auth context: read more).
CI pipelines hit friction when the minio_runner install script failed to follow a redirect, breaking shared GitHub Actions workflows and preventing Rails system tests from even starting in some plugin repos (read more).
#Self-hosting
Storage layout questions resurfaced: one admin asked whether /var/discourse and /var/lib/docker can live on different volumes, and follow-up clarified what’s actually consuming disk (notably the shared/standalone data vs Docker overlay/image layers) (read more).
nat confirmed a production-ready fix for translated pages + canonical SEO behavior and told the reporter the patch is available in the newest build (read more; update confirmation: read more).
mcwumbly established lightweight guidance for “show and tell” posts—routing them to General with show-and-tell while Meta watches for patterns worth formalizing (read more). They also contributed to the “future self / trusted friends” posting-safety brainstorm, suggesting DM drafts and even opt-in AI nudges (read more).
lindsey published an announcement detailing how Discourse is simplifying default email subject lines and how communities can adopt the changes (read more). They also shared a projects update: blog post styling components are now ready for translation in Crowdin (read more).
sam helped debug a “composer ignores default_composition_mode” report, recommending safe mode and identifying third-party plugin interference as the likely culprit (read more).
If you survived the push for “Obnoxious” notifications, at least your inbox gets a calmer ride with those newly simplified email subject lines. (read more; read more)
“Access denied” on email verification link (read more)
Interesting Topics
#Announcements
Emoji picker search now works in your language — Falco shipped multilingual emoji keyword search (48 languages), unblocking long-standing localization pain where emoji search was effectively English-only (read more). Related context: the earlier request for translated aliases (read more) and the older “how do I support other languages?” support thread now answered via the new feature (read more).
Simpler email subject lines — the email UX discussion continued around making subjects clearer by default (and what to keep, like the usefulness of [PM]) (read more).
“I populated my (mostly-dead) Discourse forum with bots!” — kirupa shared a show-and-tell experiment using AI bots with distinct personalities to generate topics and replies, sparking debate about community vs. “Dead Internet” vibes and the practical value of a personalized “daily briefing” forum (read more).
Random thought: notify contributors when a topic disappears — fuse wondered whether Discourse should PM or otherwise preserve contributors’ writing when a topic is deleted or becomes inaccessible (especially when you’ve written something substantial) (read more).
Modifications/features I made on my forums (and why) — Canapin consolidated a set of pragmatic improvements they’ve built (including community-funding mechanics) and why each change helped, as a concrete “here’s what worked” show-and-tell reference for other admins (read more). Related: the donation progress bar component referenced in the write-up (read more) and the broader “where should people share?” meta discussion about show-and-tell culture/site structure (read more).
Releases.discourse.org feedback & suggestions — a quick but meaningful nod that recent changes made releases.discourse.org “a lot easier to read,” reinforcing that polish work on ancillary Discourse properties gets noticed (read more).
Can a leaderboard top contributor have no topic or posts in their activity? — a neat edge case: yes, if the leaderboard is counting private-category participation (or even reading), it can look like a user has “no activity” while still ranking highly (read more). Related: Falco pointed to external point-award integrations as another factor (read more).
What happens to translations when an LLM changes? — after a model deprecation and switching LLM parameters, the key clarification was that existing translations remain and only missing items should be translated—helpful for admins watching token usage and progress bars (read more).
Videos and monetizing my Discourse community — a “what’s possible?” thread about selling access to instructional racing videos via a Discourse community, with early guidance leaning toward offloading video hosting/storage complexity elsewhere (read more).
AI triage examples not sent properly? — an important Discourse AI / automation report: examples appeared to be interpreted as part of the content being evaluated, causing every post to get flagged (and the model citing the example wiring details as if they were real) (read more).
Admin changing email address of a member is still quirky — tobiaseigen documented a confusing flow where email verification links fail with “Access Denied” while logged in as admin; workarounds include impersonation or alternative methods, but the UX mismatch versus admin expectations sparked discussion (read more). Related: the console-based approach for certain cases (read more).
#Feature
Tecnoblog’s Experience With Discourse Comments (Embedding) — ongoing embed feedback included a serious “can’t type in the text field” issue (notably for the first comment on mobile), Safari/iOS scroll quirks, and broader embed instrumentation concerns (read more).
#Plugin
Locations Plugin prototype + early access for sponsors — merefield shared a prototype preview and outlined a sponsorship-based early access path (with invites rolling out and a “fixes first” promise for backers) (read more).
Trading Buttons plugin appears broken after an update — a report that a recent Discourse update removed category-setting options needed for the plugin UI to function, despite the plugin being enabled (read more).
Accessing Discourse DB with DBeaver — a practical guide to safely exposing Postgres from a Dockerized Discourse for use with GUI clients (port mapping, firewalling, and switching auth to scram-sha-256, with an emphasis on private networking like Tailscale) (read more).
Announced the multilingual emoji search upgrade (48 locales), including examples of non-English keywords now matching correctly (read more).
Clarified translation behavior when switching LLM parameters: old translations are retained and only missing items should be processed going forward (read more).
Helped explain “invisible” leaderboard activity and pointed to external gamification integration possibilities (read more).
Stayed engaged in embed-related troubleshooting and follow-ups in Tecnoblog’s embedding thread (read more).
Closed the loop on an older “emoji search in other languages” question by linking to the new announcement (read more).
Responded to confusion caused by a topic becoming inaccessible, acknowledged the internal mishap, and signaled the content should reappear once things are untangled (read more).
Nudged show-and-tell sharing toward clearer expectations (inspiration/feedback vs. reusable components) and explored how meta should structure those conversations (read more).
Added thoughts to a sensitive feature discussion around safer posting flows (e.g., “undo send” style ideas) for users dealing with episodic unwellness (read more).
Shared a “quote-to-draft” reading workflow hack in the long-running “chapters for long topics” thread (read more).
Chimed in on the bot-populated forum #show-and-tell: appreciated the styling, questioned “community” framing, and highlighted the “stay up to date on interests” angle (read more).
That’s a wrap—may tomorrow bring multilingual emoji searches, fewer disappearing topics, and bots that know when to stop posting.
Top contributors (posts • likes)
(Links go to a representative recent post from each user.)
Ginger_Marcus — 3 posts • 5 likes — reflections on tightening edit windows to reduce “impulsive posting” in a sensitive moderation/UX discussion (read more)
Falco(team) — 3 posts • 2 likes — guidance on automation triage agents and how “examples” are actually injected into the prompt history (read more)
darkpixlz — 3 posts • 2 likes — launched a “shortlink router” utility and followed up on privacy/logging concerns (read more)
kirupa — 2 posts • 5 likes — shared implementation details for populating a forum with bots and content sources (read more)
ted — 2 posts • 5 likes — weighed in on guardrails for regrettable posting and later on monetization/legal implications (read more)
nathank — 1 post • 5 likes — excitement about the Meta theme rebuild and “Blocks API” direction (read more)
Moin — 1 post • 4 likes — pointed to the revert control in wiki edit history (and who can actually use it) (read more)
ondrej — 1 post • 3 likes — clarified permissions: category mods/TL4 can’t revert revisions (read more)
pfaffman — 1 post • 3 likes — pragmatic self-hosting guidance on separating Docker/Discourse volumes (read more)
RGJ — 1 post • 2 likes — cautioned against framing episodic unwellness as “accountability training” (read more)
Interesting Topics
#Feature
Ginger_Marcus shared a real-world moderation experiment: shortening the edit window to make conversations more coherent (and reduce context drift after OP edits), while RGJ pushed back on “accountability” framing for episodic unwellness; ted noted adjacent use-cases like rage-bait or drunk posting (read more)
A quick “how do I roll back a wiki page?” turned into a permissions gotcha: Moin described the revert UI, but ondrej clarified category moderators/TL4 don’t have revert rights per the permissions reference (read more)
Monetizing via gated video/content raised bigger questions than plugins: ted highlighted that paying creators can introduce legal and operational complexity, not just technical setup (read more)
In automation + ai triage, Falco recommended using a “Triage with AI Agent” and the flag tool instead of string-return prompts—then dug into why example messages were causing unintended “flag everything” behavior (read more)
Translation workloads + LLM switching: Falco suggested enabling verbose logs and checking the AI API audit logs table to reconcile high token usage with “no progress” stats (read more)
OpenID Connect login nuance: a new thread asked whether allowed email domains is validated against the email returned by OIDC at account creation time (read more)
Discourse ID accounts: mcwumbly confirmed that recent changes now allow users to change username/name in user settings, even when the account was created via Discourse ID (read more)
#Self-hosting
“Can /var/discourse and /var/lib/docker live on different volumes?” got a pragmatic answer: Discourse doesn’t care where Docker stores its data—optimize for maintainability and clarity first (read more)
A HestiaCP install run hit multiple snags: port conflicts with 80/443 templates and a puzzling GitHub/network failure that the OP later traced to DNS resolver behavior (Cloudflare/Google DNS vs internal DNS) (read more)
#Extras
A new utility, Discourse Shortlink Router, proposes a “swap hostname, keep path” approach to sharing admin/support URLs—prompting immediate questions about trust, logs, and what data might be exposed (read more)
The ICS → Discourse importer thread documented a subtle behavior: --time-only-dedupe isn’t strictly time-only because it still applies “close enough” location checks—leading to a helpful “signal vs noise” outcome for room changes vs feed churn (read more)
A brand-new UX concern: “Edit history visible to public” doesn’t appear to cover author/owner changes on the first post/topic—raising questions about transparency, moderation workflows, and whether this is a bug vs missing feature (read more)
#Site feedback
Meta’s theme rebuild continues to generate excitement: nathank called out how the new tooling could help Discourse move from “a website component” to “the full website,” especially for small orgs seeking a simpler stack (read more)
A lively #show-and-tell:kirupa described bootstrapping a “mostly-dead” forum with bots, curated sources, and plans to resurrect old topics with modern responses—plus discussion about translation using Discourse AI (read more)
#Theme
After upgrading to v2026.4.0-latest (Ember v6.10.1), a report in the FKB Pro theme thread shows a client-side failure: missing ember-this-fallback/this-fallback-helper, effectively breaking the forum UI until resolved (read more)
Falco helped troubleshoot why AI triage “examples” were backfiring: they explained that examples are sent as previous turns, so they must mimic the exact expected model response (including what a tool call should look like) and asked which LLM was in use (read more). They also suggested a cleaner architecture using Triage with AI Agent plus the flag tool (read more). In a separate AI-translations thread, they advised turning on verbose logging and checking AI audit logs to verify translation progress vs token burn (read more).
mcwumbly responded to concerns that public edit history doesn’t reflect author/owner changes, flagging it as likely a bug or missing feature and moved it to UX for discussion (read more). They also confirmed a Discourse ID improvement: users can now change their username/name directly in settings after recent changes (read more).
Yesterday, Meta proved two things: bots can revive sleepy communities, and a 60-second edit window can keep the mustard-fueled hot takes delightfully accountable.
Revan_Manaflı reported a strange profile/UI behavior (“blue, nameless button”) affecting a single Discourse instance; Moin suggested confirming whether it reproduces elsewhere and using Safe Mode to rule out customizations in Kali Forums Bug. The reporter confirmed it disappeared in Safe Mode, pointing to a theme/component issue rather than core (safe mode reference).
ice.d asked whether Discourse requires users to be 13+ and whether hosted vs self-hosted changes that requirement; Lilly highlighted Meta’s ToS language and child-safety compliance considerations in Age requirement for Discourse. For policy context, the “volunteer moderators” section change was also noted recently in What Changed in the META ToS (July 18, 2024) (and prior comparison thread: read more).
Incoming email workflows regressed for private categories: hellekin described cases where email-to-category fails with Email::Receiver::InsufficientTrustLevelError, even when unknown-address email is allowed, in Incoming email stopped working for private categories.
Debugging AI translation behavior: RBoy enabled verbose translation logs and observed repeated retries that consumed daily token quotas, suggesting a potential loop or repeated job retries in What happens to translations when LLM changes? (ai).
Group visibility/admin UX edge cases: nathank noted that marking groups “automatic” removes the Membership tab entirely (making some admin edits awkward), and RGJ clarified the behavior is core—then flagged potential plugin maintenance follow-up—in Discourse Dynamic Groups.
Gallery navigation ergonomics: Canapin asked whether the gallery icon should open from the current/unread post rather than always from the start, especially on mobile, in Topic Gallery.
Visualization niceties: the long-running visualization thread got an update with a “snazzy” 3D view option shared by merefield in Community Network Visualisation.
Cookie inventories and compliance: miednr asked for a detailed cookie list attributable to the WP Discourse plugin; angus replied that the plugin doesn’t set its own cookies (noting WordPress auth cookies as standard behavior) in Cookie information request.
chapoi closed an off-scope support thread (site-specific theme/customization issue) after Moin helped narrow it down using Safe Mode, in Kali Forums Bug.
mcwumbly followed up on a mobile-title wrapping report, noting it appears fixed on current Meta themes and suggesting affected sites may need updates, in 标题过长,超出边界 (mobile).
Yesterday proved that Safe Mode is still the quickest way to turn “mystery blue buttons” into actionable theme fixes—right as everyone else was busy debating magic-link logins and chasing down cookie lists.
In the last 24 hours, Meta saw 94 new posts across 15 new topics (compiled from activity in the threads linked below, e.g. read more, read more, read more).
ice.d asked how age requirements / age verification interact with self-hosted vs CDCK-hosted sites, and supermathie pointed to hosting terms and “Special Data Regulations” constraints in the discussion on age requirement for Discourse.
(Also: awesomerobot clarified where “talk to your government” fits when regulations apply to hosting regions read more.)
A theme/component interaction after updating to 2026.4.0 caused category badge text color to change while scrolling; chapoi suggested safe mode and inspection steps, and Lilly shared a quick CSS fix in issue with font colour in category badges.
Follow-up: chapoi said the team would investigate root cause read more.
A new admin asked for a “send it back to the author to rewrite it” flow for incomplete/low-quality/AI-ish topics in how to force a topic to be edited by the user.
This one is likely to evolve into a moderation-workflow conversation (flags, staff messages, slow mode, approval queues, etc.) as the thread develops read more.
A GitHub → Discourse integration attempt hit a snag: issue creation posts fine, but issue comment webhooks don’t appear in Discourse in Discourse Code Review Questions.
Context-wise, the asker is comparing the Code Review plugin to the older GitHub integration plugin docs/threads read more.
Accessibility scanning surfaced that custom badge images may be missing alt text, prompting a question about whether this needs core changes or admin-side work in Custom Badges are not applying Alt Text.
This is a classic “is the HTML attribute missing in render, or can the badge UI supply it?” investigation read more.
Data Explorer users reported that query results appear capped to a tiny scrollable viewport (effectively “5 rows”) regardless of result size in Explorer reports limited to 5 rows….
After Lilly offered a CSS workaround and a pointer to the SCSS in the plugin read more, nat confirmed a fix was in progress read more and later posted that it was fixed and deployedread more.
A crawler-related error appeared post-upgrade: ArgumentError (Document tree depth limit exceeded) in middleware logs, likely triggered by bots requesting uploaded assets, in Middleware - document tree depth exceeded. Falco asked for a reproducible page/request to debug the culprit read more.
manuel published a repo of Claude Code “skills” for theme authoring and the Blocks API, including reference material and an example theme, in Skills for authoring themes and blocks.
In follow-up, manuel explained how Blocks shift theme customizations toward “layout frames” per outlet and showed where initializer-driven layouts live read more.
CI friction popped up again around dev tooling, with a report that a Minio installer breaks CI affecting workflows in Minio installer breaks CI.
This kind of thread is a bellwether for “dev environment parity” work read more.
Admin ergonomics for reporting got attention: ganncamp proposed a better way to share Data Explorer queries without forcing admins to manually hunt down group report URLs, in Sharing a Data Explorer Query. Lilly suggested a deterministic /g/.../reports/... pattern and hinted at a possible PR (plus a UX need to show which groups a query is shared with) read more.
Embedding/Comments users confirmed a fix landed, but continued discussing a lingering horizontal scroll on mobile in Tecnoblog’s Experience With Discourse Comments. Falco couldn’t reproduce on-device and shared screenshots while investigating read more.
A “paid build” request sparked healthy scope/budget reality checks: a community platform owner requested help for a v2 launch (theme QA + custom member portal/profile work) in [Paid] Discoure Community Platform - development for v2.
The thread quickly focused on clarifying milestones, fragility of nav injection, and realistic pricing expectations read more.
#Self-hosting
A self-hoster asked how to run Discourse behind an external reverse proxy and disable Let’s Encrypt in the docker setup in Fresh install without lets-encrypt on docker.
The canonical reference thread often cited for this area is “Allow SSL/HTTPS for your Discourse Docker setup” read more.
supermathie provided the key legal/terms pointer for hosted customers around “Special Data Regulations” (including COPPA) in Age requirement for Discourse, grounding the discussion in the actual contractual clause.
awesomerobot added an operational note on compliance realities for hosted services—where regulation applies, CDCK must comply, and feedback is best directed at lawmakers—in Age requirement for Discourse.
pmusaraj shipped and showcased a new official-ish theme entry with install + getting-started references in Verso Theme, expanding the “lightweight theme” ecosystem and giving admins another clean baseline option.
That’s a wrap—may your Data Explorer tables grow taller than five rows, your category badge text stay readable while scrolling, and your Blocks layouts snap neatly into place.
Proposed new defaults for TL3 requirements behind an upcoming change: read more
Interesting Topics
#Announcements
lindsey introduced four new Topic Voting badges (Daydreamer/Brainstormer/Innovator/Visionary) to celebrate ideas that attract votes, then flipped them on for Meta; follow-up clarified backfill + notification rules (only notify if earned in last 2 weeks, and only the highest badge if multiple thresholds are met). read more
Related context: earlier Topic Voting improvements: read more and long-running “Vote Notifications” discussion: read more
The April 2026 monthly release dropped, with david pointing admins to the full 2026.4 changelog for details on what shipped. read more
martin announced an upcoming change to make TL3 achievable on very active forums by reducing viewed/read caps and increasing minimum promotion duration (defaults only; manual overrides remain untouched). read more
#Feature
In an embedded-comments rollout, Thiago_Mobilon shared screenshots of horizontal scrolling on iOS that seemed to affect admin sessions; pmusaraj confirmed the “admin-only” angle and pointed to a core fix via PR. read more
A long-running gamification request got a quick victory lap: Falco noted per-leaderboard scoring values were merged, and Lilly highlighted the new granular scoring configuration options. read more
A moderation workflow pain point: requesting that a user must edit a topic before it can proceed. Suggestions ranged from approvals to converting to PMs, but the most practical path discussed was using custom flags, plus UI-limiting them to staff via CSS. read more
Supporting links: category-level approvals flexibility: read more and the “staff-only custom flag” CSS approach: read more
“Age requirement for Discourse” turned into a compliance reality-check: HAWK clarified UK Online Safety Act scope for U2U platforms (and noted DSA requirements in the EU), emphasizing that jurisdictional exposure matters even for self-hosters. read more
A Chinese-language support thread asked where to enable allow_user_api_key; the resolution was simply pointing to the User API Keys specification doc topic. read more
Reference: the spec itself: read more
Event notifications in French (“Notifier un évènement à un groupe”) surfaced confusion around bulk invitations/notifications where only the first user seemed to receive the invite, prompting a call to rethink group notification flows. read more
Discourse shared an Office Hours replay focused on Discourse AI for Enterprise, covering semantic/conversational search and automation patterns for moderation and ops work. read more
Related: the webinar/office-hours program context: read more
The calendar/events UX thread about “all day events” effectively got closed out by a now-shipped All day event checkbox in the create-event modal, removing the “00:00 confusion” problem. read more
Related feature request that’s now completed: read more
Another calendar UX improvement also landed: event exports now include event descriptions in the .ics file, improving the “save to calendar” experience. read more
A completed calendar request was formally closed, with an offer to split follow-ups into a new feature topic if needed (good housekeeping that keeps feature scopes clean). read more
Oneboxing edge case: MediaWiki-style image HTML pages sometimes break oneboxes (especially on certain MediaWiki hosts), and the suggestion was to detect Content-Type: text/html to avoid treating it as an image. read more
A “document tree depth exceeded” middleware issue got a couple fixes linked directly to PRs, with Falco flagging it for review/visibility. read more
#Theme component
The “Video Upload to YouTube and Vimeo” theme component thread progressed toward permission scoping: multiple folks emphasized restricting upload access by group to prevent abuse, and Arkshine discussed Vimeo OAuth work so uploads can go to a user’s Vimeo space. read more
#Plugin
The “Discourse to Markdown” plugin discussion explored a clean integration path with Discourse MCP: try Accept: text/markdown first, then fall back to JSON API with include_raw=true. read more
Related: Discourse MCP announcement thread: read more
#Community Building
A fresh, practical write-up shared a lightweight pattern for using Discourse as an LMS/course tracker built around categories/topics + Docs, with a small plugin + theme component to compensate for “notification decay” in lesson progress. read more
Dependency referenced: Doc Categories plugin: read more
lindsey shipped and enabled the new Topic Voting badges, then clarified how the badge backfill + notification throttling works to avoid retroactive notification spam. read more and notification behavior detail: read more
Also closed the loop on calendar UX improvements by pointing to shipped solutions for all-day events: read more and .icsevent descriptions: read more, and wrapped up a completed calendar-default-view request: read more
david published the pointer for the 2026.4 (April 2026) release notes. read more
He also added an important implementation note elsewhere: group sync is now available for OIDC, pointing admins to the plugin topic and changelog. read more (referencing the OIDC plugin’s “group sync” documentation: read more)
martin proposed an “upcoming change” to adjust TL3 default requirements, reducing caps for topics viewed/posts read while increasing minimum duration—aimed at very active communities where TL3 becomes unreachable. read more
HAWK provided jurisdiction-specific clarification on UK OSA applicability (and noted DSA considerations), emphasizing that sites “may have users from” regulated regions and should plan compliance accordingly. read more
pmusaraj helped narrow down an embedded-comments horizontal scroll issue to an admin-context repro and linked the upstream fix PR that should resolve it. read more
Danielle shared the AI for Enterprise Office Hours replay, outlining how AI search and automated moderation aim to remove repetitive work while keeping humans in the loop. read more
Falco flagged multiple “this is now fixed/shipped” updates across the day:
Noted per-leaderboard scoring values were merged. read more
Linked PRs for the middleware document tree depth exceeded fixes. read more
Suggested an LLM configuration troubleshooting step (“disable thinking”) in an AI translations thread. read more
fzngagan outlined a practical moderation workaround for “force user edits” using the flag system’s Hide Post flow (while noting limitations around custom messaging), and pointed back to approvals as the more proactive approach. read more
If yesterday’s Meta had a theme, it was “ship the badges, fix the scroll, and let calendars finally have all-day events without doing midnight math.”
RGJ and others debated what an “age requirement” should mean in practice—ranging from parental responsibility to privacy-preserving verification—while awesomerobot highlighted the risk profile of third-party identity services and why zero-knowledge approaches may reduce retained data exposure (read more).
Related: existing “enter your age” UI approaches like Discourse age check also resurfaced as a lower-stakes alternative.
A newly-migrated (52k-topic) community asked for alternatives to infinite scroll so their footer stays reachable; chapoi stated pagination isn’t on the roadmap, while others suggested shifting the homepage to categories or rethinking footer importance (read more).
Related: footer workarounds and components were referenced (e.g. Easy Responsive Footer).
A Windows 7 compatibility detour turned into a practical question: can admins customize the “unsupported browser” messaging to point users at viable alternatives? Moin explained it’s a static HTML view plus an editable text string (js.browser_update) and suggested testing via old browsers/BrowserStack (read more).
Related: what users see on old browsers was demoed here: read more, and the broader text customization guide is here: read more.
A UX paper-cut: invite creation controls appear on other users’ profiles, but the invite is still created/sent as the clicking user—making the placement misleading and “irk-y” to multiple admins (read more).
The core mismatch (“looks like it’s on their behalf, but isn’t”) was spelled out clearly by Lilly (read more).
A closely-related UX issue: even when a user’s public profile is hidden, an Invite tab can still show (even though it doesn’t leak hidden info), creating confusing navigation and expectations (read more).
Cross-reference to the underlying behavior thread: read more.
#Announcements
The announcement about default changes for Trust Level 3 requirements prompted clarification on how admin overrides behave; martin confirmed existing admin-set values are preserved, and “Reset” will reveal the new defaults when the upcoming change is enabled (read more).
On simpler email subject lines, discussion centered on whether PM-vs-public context needs to be present in email subjects; participants argued that email clients can obscure the distinction even if the web UI makes it clear (read more).
A self-hosting performance tweak became a debugging thread: adding the enable-ruby-yjit.yml template set RUBY_YJIT_ENABLE=1, but the reporter still observed YJIT disabled in runtime checks; the back-and-forth focused on whether the test method was checking the “right Ruby process” and what might be overriding startup behavior (read more).
A moderation edge case: a flagged post (that originally created a topic) became hard to restore after the author was pushed to TL0 and locked; restoring failed until the author was unlocked and moved back to TL1. The request: give admins clearer UI guidance instead of a generic error (read more).
A chat notifications anomaly: a user reported being “pinged” multiple times (8) by what should have been a single mention, with all notifications pointing to the same message (read more).
AI Helper editing concerns resurfaced: “Proofread” reportedly breaks or alters quotes, which can be especially problematic in contexts where quoted material must remain exact (e.g., religious texts) (read more).
Related structured-data/formatting thread seeing continued attention: read more.
#Self-hosting
Two different restore failures highlighted a common theme: database object collisions during restore/migrate. One restore hit a PG::DuplicateTable error involving a plugin table (read more); another showed “type already exists” errors alongside Sidekiq/permissions noise, with suggestions pointing toward restoring into a clean DB and avoiding collisions (read more).
Related: a “belt and suspenders” approach to deletion safeguards was also discussed recently in the context of permanent deletes: read more.
A small but useful docker note was documented: how to disable Let’s Encrypt / SSL templates in a container setup by commenting out the relevant template includes (read more).
#Theme
The popular FKB Pro theme thread continued to absorb fallout from newer Ember versions: admins reported “forum unusable” errors (Could not find module ember-this-fallback/this-fallback-helper), and pfaffman pointed to a working repo and a PR to address it (read more).
Related “oh no my theme broke” admin panic is also mentioned in the restore-debugging story: read more.
#Plugin
The Contact Form plugin received a maintenance update after failures on recent Discourse versions, with the author noting they’d updated the plugin to restore compatibility (read more).
Related auth/integration topic still active in the background: OIDC account association troubles continue here: read more.
A new “Discourse Discover” installment highlighted niche hobbyist communities and the specific expertise that makes forums work; the companion topic is live for discussion and link-sharing to the featured communities (read more).
Related community enablement content: the moderator program webinar recording also got a fresh link drop: read more.
#Extras
A tool pitch: SuperHref proposes detecting dead Amazon/eBay links and swapping in related products; Bas asked the practical question—has it been tested on a Discourse instance, and what were the results? (read more).
Related “Discourse + chat/workspaces” experimentation also continues elsewhere: read more.
awesomerobot weighed in on privacy and security tradeoffs in age verification, pointing to real-world breach risk and why minimizing retained personal data matters (read more).
chapoi firmly set expectations on infinite scroll: no roadmap plans to add pagination to topic lists, and suggested alternative approaches like custom landing pages/homepage configuration (read more). chapoi also pushed back on framing age-gating solely as “kids misbehaving,” raising the accountability/anon tension in the same discussion (read more).
martin clarified how the site setting default override system interacts with the updated TL3 defaults—especially what “Reset” will show when upcoming changes are enabled/disabled (read more).
Falco challenged the YJIT troubleshooting approach, arguing the check was inspecting a newly spawned Ruby process rather than the web server’s running process environment, and suggested inspecting the Pitchfork process environ instead (read more).
Bas pressed for real-world validation on the SuperHref idea, asking whether it’s been tried on Discourse and what the findings were (read more).
Yesterday’s vibe: invite buttons tried to show up on the wrong profiles while infinite scroll refused to stop—at least the team kept the conversation grounded (and the footers… aspirational).
Last 24h snapshot (2026-04-30 → 2026-05-01):78 new posts and 8 new topics, with much of the discussion concentrated around infinite scroll policy, front-end regressions, and admin/email customization questions (e.g. read more, read more, read more).
New posts:78
New topics:8 — notably:
“Addictive design with infinite scrolling” read more
“Ember-this-fallback deprecations crash in the deprecation handler” read more
mcmcclur asked the team to reconsider Discourse’s stance on pagination vs. infinite scroll in light of “addictive design” concerns and potential legal exposure; chapoi pushed back that the harm is mostly about algorithmic feeds/variable rewards rather than Discourse’s chronological lists read more.
Related threads and context: a recent pagination request in French read more, plus a “small screens / old browser friendly” UI workaround mentioned as an alternative read more.
A pings/mentions regression got acknowledged by lindsey (“this happened to me as well”) and then quickly patched by Falco, linking the fix PR for confirmation read more.
If you’ve seen inconsistent pings lately, this is the thread to watch read more.
RGJ reported that missing ember-this-fallback/* modules were getting injected into compiled JS, making it harder to identify the real deprecation source; david confirmed .hbs should still work and shipped a core fix with a backport planned read more.
The report includes examples of the failing module imports and plugin/theme impact read more.
The AI docked composer (tags composer + ai) was flagged as “nice but buggy,” with reports of editing/quoting/sidebar glitches on desktop and lockups on mobile; sam replied that keegan is already working on it and will update the thread read more.
Adjacent AI tooling discussion also popped up in the proofreader helper thread (quotes being affected, model choice, grounding examples) read more.
A deep-dive into YJIT enablement detection: Falco clarified how DISCOURSE_YJIT_ENABLED and Ruby’s ENV toggles actually behave, and the OP ultimately discovered their confusion came from sudo scrubbing environment variables (resolved) read more.
The “aha” moment (and the exact command fix using sudo -E) is documented by the OP for future admins read more.
An admin hit an “[Admin Notice] One of your themes or plugins contains code which needs updating (id:discourse.user.userOptions)” warning alongside confusing notification behavior; troubleshooting focused on identifying which customization triggered the notice and reviewing app.yml plugin lists read more.
The thread also cross-references the “bundling more popular plugins with core” change as possible background context read more.
The age requirement / identity verification conversation continued with HAWK arguing that purely non-verified communities risk becoming bot magnets, and emphasizing the difficulty of treating the underlying problem as “just parenting” read more.
The thread also calls out the regulatory/fine landscape (e.g., COPPA concerns) as a practical driver for some communities read more.
A subtle gotcha in unsupported browser messaging: paco found that customizing js.browser_update didn’t change the message on very old Firefox, and Falco explained why—JS (and thus JS translations) is intentionally not running in those blocked browsers read more.
Follow-up investigation dug into what “very old” means and how the block logic is applied read more.
A small UX/theming tweak solved: hiding category descriptions inside the category chooser can be done with a simple CSS rule; Lilly provided the snippet and the OP confirmed it worked read more.
This is a handy pattern for sites that want a cleaner composer UI read more.
“Can I change the default subject of digest/summary emails?”—NateDhaliwal pointed to user_notifications.digest.subject_template as the relevant site text to explore for self-hosts read more.
The initial misunderstanding (asking about Meta’s own emails vs. a self-host) is captured in-thread for clarity read more.
A Chinese-language support question: admins saw “0 posts that need to be permanently deleted” when trying to permanently delete a topic, and asked what to do next read more.
If you’ve run into edge cases around the deletion queue, this thread is the starting point read more.
#Announcements
Discourse’s embedded comment system positioning got clarified: JimCanto asked whether it’s meant to compete with Disqus, and Falco confirmed “yes,” highlighting the “bring readers in via blog comments without giving up data/control” use case (including on the free plan) read more.
This is particularly relevant for SSO/private communities that still want public-facing touchpoints read more.
Email UX continues to be refined: the “simpler email subject lines” discussion added another admin perspective—when reply-by-email is disabled, ambiguity around “replying by email” isn’t top-of-mind, but clarity still matters read more.
If you’re tuning email deliverability and comprehension, the thread is worth a skim read more.
Theme/block authoring got a jolt of inspiration: manuel shared experiments using AI design tooling to prototype wild homepage concepts (including the memorably titled “Newspaper from Hell”), showing how fast iteration can surface novel block layouts read more.
Related theme-component chatter about “Blog Post Styling” continues too (still seeing update issues) read more.
#Site_Management
A new official guide explains how to auto-categorize topics using AI triage by combining the ai Discourse AI plugin with Discourse Automation, including prerequisite setup and example agent prompts read more.
This sits nicely alongside other ongoing “AI in operations” discussions (e.g., proofreader behavior and quotes) read more.
chapoi weighed in on the infinite scroll vs. addictiveness framing, arguing Discourse lacks the algorithmic “variable reward” mechanisms typically implicated by research, and suggested de-escalating the thread unless practical workarounds emerge read more.
They also answered an email-customization question—clarifying that per-user customization of subjects isn’t a thing in the way the OP initially asked it (before the self-host clarification) read more.
Falco closed the loop on multiple threads: they posted the fix reference for the pings regression read more, provided the authoritative explanation/solution on YJIT enablement detection and toggles read more, and confirmed the practical limitation of customizing js.browser_update when JS is blocked in old browsers read more.
They also pointed people back to the already-landed fix for AI proofreader/quotes and asked about adding examples to ground custom proofreader agents read more.
david acknowledged and investigated the ember-this-fallback deprecation crash report, then shipped/linked a core PR and noted it would be backported to 2026.4read more.
HAWK added a key perspective to the age/verification debate—warning that non-verified communities may increasingly be the only ones bots can join, and reinforcing that the underlying safety/regulatory problem can’t be hand-waved away read more.
lindsey confirmed the pings bug was reproducible on their end and signaled it was being investigated before the fix landed read more.
manuel shared tangible theme/block prototypes created via AI-aided exploration (brutalist editorial layout, dense Japanese-style portal), illustrating a faster path from “idea” to “block concept” for theme authors read more.
sam acknowledged the AI docked composer bug report and pointed to ongoing work (with an upcoming update from keegan) read more.
awesomerobot asked for sources in the infinite scroll/addictiveness discussion, prompting participants to bring research citations into the thread read more.
Yesterday’s vibe check: between doomscroll-law hypotheticals and a theme prototype literally dubbed “Newspaper from Hell,” Meta managed to be both conscientious and wonderfully dramatic.
Icon usability feedback popped up again—this time about mirrored “back/forward” affordances in edit history—via a specific UI example in Discourse Lucide Icons (request: make the icon pairings less ambiguous).
A long-running theme enhancement got a new question: whether Created Topic Sort can also appear while browsing a tag page (where the option currently disappears): Created Topic Sortread more.
A compatibility/migration concern resurfaced for a popular official component—whether the update depends on a particular Discourse core PR and how compatibility branches behave—discussed in Blog Post Styling.
Badge-heavy communities ran into the hard upper bound for max_favorite_badges (0–6). The thread explored alternatives (profiles vs usercards, plugins/components, and feasibility of changing limits via plugin or app.yml replace stanza): Bypass the 6 badge fav limit. Suggested adjacent tooling included the “post badges” ecosystem: Post badges plugin discussionread more.
A user reported that font sizes (navbar + suggested/related areas) looked smaller on mobile across multiple hosted forums; the likely culprit was enabling the modernized Foundation theme, with reproduction steps and a cross-link into the main announcement thread: Theme font size gets smaller due to hosted instance updates?, referencing Modernizing the Foundation theme.
The ongoing “infinite scroll vs ‘stop at last visit’” discussion continued, including distinctions between infinite scroll and algorithmic addictive feeds, and whether legal definitions might apply: Time to reconsider infinite scroll?. The practical outcome (a manual-load TC) was later summarized and linked from within the same conversation: Load More Button mention.
Draft reliability concerns resurfaced: users want a way to verify drafts will save before closing, especially when content is mostly quotes/short text and doesn’t always trigger the save behavior they expect: How do I ensure my draft will be saved…?.
A “completed” feature still had a usability gap: users can’t easily view all reactions in the post reaction tooltip without knowing horizontal scrolling is supported (and some devices/mice make that difficult): Ability to display all the likes/reactions on a post.
The new AI docked composer saw rapid iteration: fixes landed and more were queued to address edit issues and mobile quirks, with explicit design notes about RTE-first UX and why markdown preview isn’t shown in docked mode: New ai docked composer.
#Announcements
Continued feedback on the modernized Foundation theme focused on WCAG palette button borders, perceived affordance (buttons “floating”), and other subtle contrast/styling regressions, plus cross-linking to the mobile font-size report: Modernizing the Foundation theme.
A styling regression was traced to Foundation modernization overriding expected text colors in a category badge component, and a fix PR was shared for the component repository: Issue with font colour in category badgesread more.
Falco helped untangle hidden/advanced image optimization settings by clarifying which composer setting controls triggering vs the width target, and corrected how to verify values in Rails console: Composer image resize threshold, plus follow-ups on checking the setting correctly at post 11 and a longer-term UX tradeoff discussion at post 13.
keegan provided an implementation/status update on fixes and improvements for the docked AI composer, referencing active PR work and explaining the “no markdown preview” decision in docked mode: New ai docked composer.
derek identified Foundation modernization styles as the source of a category badge color regression, and linked a patch PR for the affected component: Issue with font colour in category badges.
southpaw requested key hosting/self-hosting context to diagnose why a site couldn’t be taken out of read-only mode (noting hosted-plan constraints): Read Only Modes in Discourse.
Yesterday’s vibe check: we debated whether infinite scroll is “addictive,” then promptly built a button to make the law (and your thumb) happy.
A lot of the visible momentum clustered around theme/UI polish and “is Discourse infinite scroll actually infinite?” philosophy—see the new theme component drop (read more), the Foundation theme UX gap investigation (read more), and the ongoing infinite-scroll framing debate (read more).
Interesting Topics
#Theme component
darkpixlz published “Modern User Card | Fixed Experimental Usercard”, aiming to restore the older experimental user card on modern Discourse, with install pointers and a theme-creator preview (read more). Follow-up posts dug into refactor realities and what “fixed” means in practice (read more), plus compatibility concerns around the discourse.component-template-resolving deprecation warning (read more) and how it relates to the broader deprecation guidance (read more).
#Announcements
In “Modernizing the Foundation theme”, a small but annoying visual gap under the Related / Suggested buttons was reported—especially obvious with larger fonts (read more). Lilly traced it to a UX mismatch between button classes (including the injected AI-related button) and provided a targeted padding/line-height patch (read more), with additional diagnostic back-and-forth on viewport assumptions (read more).
The long-running “Time to reconsider infinite scroll?” thread kept pushing on definitions: elmuerte asked about technical implications at scale (e.g., “1,000,000 topics”) and suggested a “catch your breath after N units” UX concept (read more). Replies pointed to existing “take a break” patterns (read more) and reframed the debate as infinite scroll vs infinite content, emphasizing Discourse’s finite endpoints (read more), plus legal/definition nuance about whether it’s a “significant part of the services” (read more). (Related component link surfaced: read more.)
In the show-and-tell thread “I populated my (mostly-dead) Discourse forum with bots!”, kirupa posted a substantial update: the full source code was published for others to adapt, plus a walkthrough video for implementation details (read more).
“Is there a way to force people to write exact characters for a single line?” (marked solved) got a practical confirmation: hipp0 reported the solution worked well and noted the counter color could be customized too (read more).
#Plugin
In the official Discourse Calendar (and Event) thread (officialcalendar-and-eventincluded-in-core), oshyan argued the current event/calendar configuration is a confusing “mish-mash” across settings layers and shared a prototype of a more event-focused plugin—after only a few days of “vibe coding”—including a demo video and feature outline (read more).
The Telegram Notifications Plugin (discourse-telegram-notifications) support thread saw UI/option confusion reported (including screenshots and “missing option” context) (read more) with an additional follow-up screenshot clarifying what the reporter sees in the newer interface (read more).
#Self-hosting
“Bypass the 6 badge fav limit” continued with alternative approaches: pfaffman suggested skipping badges entirely and using theme components to add multiple flair-badges based on group membership (targeting user card/profile UX rather than badge limits) (read more).
jericson posted “Case study of an amateur plugin author”, walking through the real-world path from “this isn’t possible” to building a contact-form plugin—despite not being a frontend specialist—linking out to earlier constraints and the plugin tutorial trail that made it doable (read more). The post connects back to the earlier “contact form without third-party services” discussion (read more), the official plugin-outlet tutorial (read more), and the finished contact form plugin thread (read more).
In “Automatically updating themes and plugins to .gjs file format” (dev-news), jericson added a concrete gotcha for older plugins: depending on skeleton age, you may also need to pull in the updated ESLint config file (read more).
Lilly partnered with darkpixlz on the new user-card theme component thread—responding to reports of broken behavior and helping set expectations that it likely needs a deeper refactor to align with current core/theming patterns (read more; read more). Lilly also helped contextualize the deprecation warning discussion and how to treat it in the short term (read more; read more).
Lilly investigated a UI gap/regression in the Foundation theme’s “Related/Suggested” area, identified class/structure mismatches, and offered a CSS patch to improve spacing across desktop and mobile (read more), following up on the original report and reproductions (read more; read more).
hipp0 confirmed the accepted approach in a Support thread worked as intended and highlighted an extra customization win (counter color flexibility) (read more).
Yesterday’s meta energy: finite scrolling that feels “infinite,” revived communities powered by bots, and yet another reminder that one tiny CSS gap can launch a whole UX investigation—see you tomorrow.
New posts (24h): 75 across active threads like the Self-hosting upload-limit troubleshooting saga (read more), a deep dive into plugin maintenance/documentation gaps (read more), and a fast-moving bin/lint regression report + fix cycle (read more).
New topics (24h): 3, including a new #Self-hosting support request about upload limits (read more) and a #Site feedback report about Meta’s logo rendering oddly at certain zoom levels (read more).
Top users (posts / likes in the last 24h)
Lilly — 7 posts / 11 likes (notably diagnosing the root cause of a “broken rebuild” as an upstream firewall/VPS issue: read more)
merefield — 6 posts / 8 likes (kept the rebuild troubleshooting grounded in logs + SSH basics: read more)
david — 7 posts / 5 likes (shipped a quick fix for plugin linting workflow regression: read more)
Moin — 2 posts / 4 likes (connected a plugin author’s breakage to a specific deprecation-handler bug: read more)
piffy — 1 post / 4 likes (shared how “agentic coding” changed their plugin maintenance reality: read more)
chapoi — 1 post / 4 likes (offered candid context on why docs lag behind product work: read more)
Bathinda — 2 posts / 3 likes (reacted to the “not going closed source” announcement with appreciation: read more)
ondrej — 1 post / 3 likes (reported the “weird logo” display issue: read more)
Heliosurge — 5 posts / 3 likes (continued the practical policy/implementation discussion on age requirements: read more)
Canapin — 1 post / 2 likes (linked the canonical “increase upload size” guide during troubleshooting: read more)
“this is not a build issue… it is a VPSmanager issue… enabled a firewall that is blocking sign up payloads as well as file uploads.” — Lilly (read more)
Interesting Topics
#Self-hosting
Vsekraski hit “This file is too large” even for tiny uploads, then the thread escalated into instance recovery drama when rebuilds were interrupted—ultimately landing on a provider firewall blocking payloads rather than an Nginx/app.yml misconfiguration (read more, read more, read more).
A German-language OIDC integration post documented why users weren’t matching existing accounts: the IdP email claim wasn’t being marked verified, and setting email verification handling fixed association in testing (read more).
A regression report explained how a change to bin/lint broke linting for non-bundled plugins when running bin/lint --fix plugins/my-custom-plugin; david responded with a fix branch/PR, then iterated on visibility, file targeting, and --fix behavior (read more, read more, read more).
“Case study of an amateur plugin author” turned into a broader conversation about versioning strategy, a .hbs-related deprecation-handler crash, and the long-term cost of outdated tutorials—especially the still-referenced plugin guide teaching older patterns (read more, read more, read more). (Related threads mentioned in the discussion: the deprecation crash bug report (read more), the versioning strategy RFC (read more), and the plugin tutorial that’s still widely linked (read more).)
#Announcements
The long-running “tests-passed is now latest” announcement got a fresh check-in: jericson asked whether an admin warning exists yet, and david confirmed it hasn’t been added—while noting tests-passed remains a working alias (read more, read more).
In the composerai experiment thread, Lilly reported the “AI docked composer” is much less buggy but still has issues: quoting initially failed (later fixed after a rebuild) and uploads after the first post continued to fail—plus ongoing muscle-memory friction around Shift+Enter for newlines (read more, read more, read more).
#Site feedback
A quick but intriguing bug report: Meta’s logo appears “weird” (pixelated/aliased) at normal zoom in multiple desktop browsers, but looks correct when zoomed in—suggesting a rendering/scaling edge case (read more).
The ongoing “Daily Summary Feedback” thread continued surfacing how automated summaries read in practice, including a system-generated recap that quoted and linked live troubleshooting threads (read more). (The referenced auto-summary excerpt pointed back into the Self-hosting upload-limit thread: read more.)
#Theme component
The “Load More Button” theme-component discussion highlighted a core issue: DiscoveryTopics doesn’t pass the canLoadMore model property through, so a “Load more” button may appear when it shouldn’t; commenters floated CSS hiding as a partial workaround and noted a fork exists for an edge case (read more, read more).
#Plugin
In the official openid-connect plugin topic, a key behavioral question came up: whether users are automatically removed from Discourse groups when they lose upstream membership; david said “yes,” but follow-up testing suggested a mismatch worth re-checking (read more, read more, read more).
An old “Trading Buttons” plugin thread resurfaced with a very current-sounding hypothesis: plugin-per-category settings might fail to save due to the “simplified category creation” changes, pointing directly at a related bug/announcement about plugin category settings persistence (read more, read more).
The official calendar-and-event plugin topic continued with a product-shaping idea: rather than stacking multiple plugins, build a more complete event management system with toggles—plus a side discussion on which AI coding tools people use in practice (read more, read more).
#Site Management
A form-templates UX gap: users can easily paste images/GIFs into normal posts, but copying/pasting into form template composer fields didn’t work in the Markdown editor; a workaround was to toggle WYSIWYG (with caveats), and an alternative was to add explicit upload fields to templates (read more, read more, read more).
The “Age requirement for Discourse” thread kept rolling with practical/legal comparisons (e.g., helmet laws) and a strong focus on accountability and parental guidance—including a detailed anecdote about locking down kids’ OS accounts and the human factor of password leaks (read more, read more).
#Extras
SuperHref shipped a monetization flexibility update: suggested products can now preserve the original affiliate tag or swap in your own, depending on the site owner’s preference (read more).
The “Discourse is Not Going Closed Source” blog topic picked up fresh appreciation and reflection from readers discovering the post later, underscoring how much the community values the open-source commitment and transparency (read more).
david jumped into a tooling regression report and quickly provided a concrete fix path for plugin authors impacted by bin/lint changes, then continued troubleshooting follow-up behavior like missing progress output and --fix doing nothing (read more, read more, read more). He also clarified that tests-passed remains a functional alias for latest (no admin warning added yet) (read more), and answered OIDC expectations about automatic group membership removal (read more).
chapoi responded in the plugin-author “case study” thread with frank context about tradeoffs: a small team maintaining a large codebase, balancing customer commitments and community support, and why documentation (like plugin tutorials) often trails behind product evolution (read more).
If yesterday taught anything, it’s this: let rebuilds finish, keep your hands off Ctrl+C, and maybe don’t trust a “weird logo” until you’ve tried zooming.
New posts (last 24h): 78 (spread across today’s active threads like the asset build memory report in Support and plugin/docs discussions in Development).
New topics (last 24h): 12 — here they are for quick scanning:
jericson’s “amateur plugin author” case study turned into a broader conversation about documentation currency, migration pain, and how much “agency” plugin authors should have—with pushback on wiki-style docs vs GitHub review flow (read more, and david’s deprecation timeline clarification: read more).
A regression in plugin linting for non-bundled plugins was resolved, with david confirming the fix and merging the PR after user verification (read more).
Self-hosters running OpenShift reported asset precompilation memory usage exploding past 20GB after the newer precompiled assets + plugin build approach; debugging focused on plugin inventory and whether memory drops after assets:build completes (read more, plugin list follow-up: read more).
A “full app embed” used for cross-domain commenting ran into login/session issues that look like third-party cookie behavior; the thread quickly converged on SameSite settings and the security tradeoffs of cross-domain embedding (read more, suggested setting: read more).
A Russian-language “component install error” got resolved quickly; Lilly noted the “link method” can break when translation/characters interfere, and confirmed the component was installed successfully (read more).
Invite links shared into apps like WhatsApp produced a preview tile where a white-on-transparent logo disappears; the conclusion was that preview clients often render thumbnails onto a light tile, so the fix is to bake contrast into the icon rather than expecting external renderers to respect transparency/background choices (read more).
A “Latest topics” header request revealed that Meta’s UI here is customized; the actionable answer was to add it via the discovery-navigation-bar-above outlet (and to review how outlets work in themes/plugins) (read more).
A Discourse AI Agent PM follow-up couldn’t accept an image upload on one instance, but was pointed to a fix already landed (and a specific commit to pick up), tying back to the docked composer/AI UX work (read more, related fix context: read more).
“Welcoming new users” explored ways to notify non-admin community members of new signups, especially when hosted plans restrict SQL/cron; one practical idea was linking trusted users to a TL group membership view (e.g., TL0/TL1) via the sidebar for logged-in users (read more).
In a longer-running “new product launch” community reconfiguration thread, a simple tactic surfaced: switching the homepage from /latest to /categories to make a new structure immediately legible to members (read more).
A new companion topic showcased what Discourse actually feels like in a browser set to Japanese—spotlighting translation quality and the UI experience for non-English communities (read more).
A revived discussion argued the three-bar “hamburger” used to toggle Discourse’s sidebar violates a common convention (users expect a temporary menu), and highlighted the tension between “customize it” solutions and out-of-the-box clarity (read more, plus a pointer to dynamic icon customization: read more).
Documentation nitpicks in the “closed/private community” guide: a screenshot example appears misleading about who can see a category (“everyone” vs TL0), and the guide may need updates for newer category visibility + the “advanced settings” requirement to even see the Security tab (read more).
#Feature
A concept proposal to treat Chat channels and Topics as “first-class” activity in one unified recency-sorted view (including category/subcategory lines + previews) generated discussion about what Discourse navigation could become as chat/forum boundaries blur (read more, demo video follow-up: read more).
ActivityPub integration continues to mature: a report noted that following Mastodon actors works, but following other Discourse actors may not, prompting the plugin maintainer to investigate (read more, maintainer response: read more).
A rich text ↔ Markdown switch appears to introduce incorrect whitespace insertion (GIF + repro snippet provided), raising another composer edge case for parity between editors (read more).
A DiscourseConnect privacy/security concern progressed with a linked PR intended to prevent leaking email addresses in redirect URLs (read more).
#Self-hosting
A French self-hosting thread documented the pain of installing behind a non-full-stack residential IP + unusual port forwarding constraints; suggestions ranged from Cloudflare Tunnel to “use a VPS,” and also highlighted that the installer’s connection test can be skipped when appropriate (read more, skip flag suggestion: read more).
david clarified that the .hbs deprecation runway is not an immediate “support drop,” pegging earliest removal after the next ESR (end of July), while acknowledging docs should have been updated sooner (read more). He also investigated self-hoster reports of runaway memory during asset builds by requesting plugin lists and probing whether memory subsides after build completion (read more, follow-up question: read more). Finally, he confirmed a linting workflow fix and merged the PR once validated (read more).
nat published the companion discussion for the Discourse blog post on multilingual UX, anchoring observations around what Meta looks like in Japanese locale settings (read more).
chapoi helped theme builders by pointing to the discovery-navigation-bar-above outlet for injecting a “Latest topics” header, and linked to the canonical outlet usage guide (read more). He also unpacked why invite-link previews are largely controlled by external preview renderers—and why baking contrast into the uploaded icon is often the only reliable approach (read more).
HAWK suggested a pragmatic community reconfiguration win for product launches: switch the homepage from /latest to /categories to immediately signal a new information architecture (read more).
Falco advised how to get cross-domain “full app embed” sessions working by setting SiteSetting.same_site_cookies = "None" (via rails console), directly addressing modern browser cookie restrictions in iframes (read more).
derek confirmed a UX styling fix (category badge font color) has been merged and invited further reports if anything remains off (read more).
pmusaraj acknowledged an ActivityPub issue report (following Mastodon works, Discourse actors don’t) and said the team will investigate shortly (read more).
keegan gated the new AI docked composer behind an “upcoming changes” switch while polish continues, and shipped an uploads fix tied to user testing feedback (read more).
That’s a wrap—may your embeds keep their cookies, your sidebars use the “right” icon, and your asset builds stay comfortably under 20GB.
Lilly and nat dug into what actually gets translated (and what doesn’t) when running Discourse in other languages; plugin/theme strings were a big pain point, and derek confirmed a missing theme translation string is now fixed in What It’s Actually Like to Use Discourse in Another Language — with extra context on plugin translation gaps in read more.
Andrew_Rowe wanted to stop a “daily noise” category from cluttering Latest for everyone; the solution was the discourse-categories-suppressed plugin and related site settings discussed in Exclude category from latest (and contrasted with default_categories_muted behavior in read more).
Uploading >100MB files looked like a Discourse limit at first, but the real culprit was upstream: Cloudflare’s 100MB cap on the free plan; the fix was to adjust Cloudflare settings, as confirmed in Issue with Upload File Size Limit.
Moin investigated an “Other notifications” bubble that didn’t show in the unread notifications list, sparking debugging questions around notification traceability in Can I identify what caused this specific notification (and some initial guesswork / clarification from chapoi in read more).
Custom badge images were missing appropriate alt-text behavior; awesomerobot confirmed the images are decorative and should use an empty alt attribute to avoid redundant screen reader output in Custom Badges are not applying Alt Text.
Editing a survey after transferring topic ownership threw an error; the issue was acknowledged and fixed via a plugin commit, as tracked in Unable to edit a survey.
AI Proofread/Proofreader behavior and quoting issues continued to be debugged, with Falco pointing to local agent examples for troubleshooting in Proofread breaks quotes.
#Theme-Component
The “Created Topic Sort” component shipped updates adding new settings for tag-based display behavior, announced in Created Topic Sort.
The Locations plugin discussion flagged missing MaxMind environment variable hints in the newer slimmed app.yml, plus a sidebar link UX question; see Locations Plugin and the referenced setup guide Configure MaxMind for reverse IP lookups.
OpenID Connect implementers discussed passing custom /authorize parameters reliably, asking what’s “officially supported” and what patterns are recommended in Discourse OpenID Connect (OIDC).
Admins revisited whether email notification settings can be adjusted at a group level (especially for onboarding cohorts), continuing the older request thread in Email notification granularity.
Alteras published updates to the Created Topic Sort theme component, adding new settings requested by users in Created Topic Sort.
Falco provided targeted troubleshooting guidance for AI proofread/quote breakage by pointing admins to local agent examples in Proofread breaks quotes.
Yesterday’s meta lesson: sometimes the proof really is in the pudding—especially when you’re testing translations, chasing phantom notification bubbles, and discovering Cloudflare was the “100MB limit” all along.
Bryony asked for help building safeguarding-first reporting UX (custom “report” buttons, different outcomes per option, emergency messaging, and notifications), and the thread quickly clarified this is plugin territory rather than theme work: read more. Related pointers included using Discourse’s custom flags as a starting point (read more), concerns about automated flag PM wording (read more), and a “report content to group” theme component as a partial workaround (read more).
Custom “Top Menu” navigation filters came up again as a way to surface topics from specific (even muted) subcategories; the request was resolved by pointing to a theme component for custom top navigation links: read more and the referenced solution (read more). Follow-up discussion dug into a mobile-only gap when hiding the default nav menu (read more), with broader context from the “muted subcategories in parent category” use case (read more).
The “Site traffic report” thread resurfaced confusion around why a promoted admin report can effectively disappear behind a hidden setting; the key detail was SiteSetting.use_legacy_pageviews and how it impacts what admins see: read more. For background, hidden site settings were cited as requiring Rails console access for self-hosters (read more) and hosted customers needing to contact support for changes (read more).
A follow-on question compared “Legacy Consolidated Pageviews” vs “Site Traffic” crawler numbers (showing crawlers in one place and zeros in the other); the explanation was essentially date-range / rollout alignment and that the legacy report can be ignored going forward: read more. (This was explicitly framed as piggybacking on the original traffic-report discussion: read more).
A Discourse AI operator reported requests “randomly” exceeding LLM token thresholds; discussion focused on distinguishing request size vs response size (and what a 413 implies), plus the practical need to tune the configured context window: read more and the key clarification reply (read more).
A mobile sign-up UX question asked how to place external login buttons (institutional SSO) above the local “Simple Sign Up” form, to reduce student mis-signups when arriving via QR/invite; theme/CSS reordering was proposed: read more.
An SSO/identity architecture question asked if enabling DiscourseConnect provider breaks native login; the answer was “no”—provider mode can be enabled without changing the forum’s own login experience: read more. The question referenced the broader DiscourseConnect setup guidance thread (read more).
A small-but-real linking edge case: punctuation after a URL (like a trailing period) can cause auto-linking to capture the dot and break the link, especially with routes like .rss in play: read more.
A support thread investigated a situation where a forum appeared to show “mailcow” instead of Discourse after a config change; replies strongly suggested a DNS/server/caching mismatch and recommended restarting/clearing cache: read more. (Related self-hosting “it works for me now” reverse-proxy operational notes also appeared elsewhere: read more).
#Feature
embedding received two complementary updates: a real-world “Discourse Comments” conversion/UX note that native login still leaves iframe embeds looking logged out until refresh (read more), plus a pointer to ongoing work improving the login flow (read more). In parallel, the canonical embed announcement thread reiterated that embedded comments can auto-create topics on first visit (read more) and linked back to the long-running embed how-to documentation (read more).
A long-running request about showing all likes/reactions in the post “liked by” modal got a practical pointer: enabling an upcoming change in admin can make the list load more users rather than truncating early: read more.
A bug report noted missing paste functionality in form-template composer fields; a fix is actively in progress: read more.
Schema/SEO monitoring continued for “Missing field text in mainEntity.suggestedAnswer”; guidance suggested using Google’s “test live URL” to rule out cached validation artifacts, with follow-up reports of new affected URLs: read more and the fresh example report (read more).
Impersonation timeout UX: discussion considered whether the auto-termination timer should be “15 minutes of inactivity” vs a fixed countdown, and concluded that clearer messaging might be the safer improvement (given configurable duration and unclear original intent): read more and the follow-up reasoning (read more).
A new companion discussion thread for the Discourse blog post “The Digg Lesson: Why Moderation Infrastructure Matters” kicked off broader reflection on moderation tooling, brigading, and the “arms race” nature of community safety: read more.
#Community Building
A Russian-language question asked how many subcategories display within a parent category (and where to configure that), for a “cities as subcategories” structure: read more.
Falco weighed in on improving the embedded-comments login experience and shared that work is underway to make the flow better: read more. Falco also responded to the Discourse AI token-limit report, clarifying that a 413 indicates request too large (not response tokens) and pointing at context window configuration: read more.
HAWK published the companion discussion topic for the Discourse blog article on Digg and moderation infrastructure: read more.
tannerabread confirmed a real missing capability (paste in form-template composer fields) and stated a fix is in progress: read more.
sam pointed admins to the /admin/config/upcoming-changes toggle that enables a “load more” style for the likes popup list: read more.
supermathie answered an SSO/identity-provider question: enabling DiscourseConnect provider should not disrupt native login on the Discourse site: read more.
awesomerobot explained why crawlers can show as zero in the “Site Traffic” report for older dates (rollout alignment and hidden/filtered pre-rollout data), helping reconcile the discrepancy with legacy pageview reports: read more.
pmusaraj reviewed a proposal to unify public activity across chats/topics/categories in a single view, questioning whether categories belong alongside “content items” like topics and chat channels: read more.
martin continued the internal UX discussion around impersonation timeouts, weighing the intent and security implications of redefining “inactivity” vs fixed timers: read more.
chapoi helped troubleshoot a theme-component issue (“Discourse Age Check”) by asking for console errors and confirming reproduction steps: read more.
davidb suggested using Google Search Console’s “test live URL” to distinguish cached schema errors from current behavior and noted trending improvements after merged fixes: read more.
Yesterday’s moral: keep your moderation tools sharp and your login flows smooth—nobody wants a “Digg redesign moment” for their community.
gabriel introduced Discover “Hot Topics”—a new way to surface the most active discussions across Discourse communities, grouped by subject, inside Discourse Discover (discourse-discover) (read more); background context also lives in the earlier Discourse Discover overview (read more).
A markdown/linkify edge-case: punctuation and brackets can become part of a detected URL, and the practical fix is to wrap the URL in angle brackets—though quoting can complicate that presentation (read more); Falco traced it to markdown-it/linkify-it behavior (read more).
A “Nice Share” badge confusion was cleared up: it’s tied to referral-style links with ?u= getting clicked, not necessarily the badge recipient owning the linked post (read more).
“Bootstrap mode is legacy?” sparked a useful archaeology thread on what bootstrap mode used to do and what remains configurable via site settings today (read more); related background on bootstrap effects and its removal came up via older references (read more, read more).
Tag UI basics: how to change the title/description shown on a tag page (hint: the wrench/controls on the tag-filtered topic list) (read more).
“How do I make a static page?” got pointed toward the modern toolbox: the Landing Pages plugin and Page Publishing (and a note that an older static pages plugin is broken) (read more, plus read more and read more; historical footnote: read more).
A newly-upgraded site asked if the blue “Discourse Splash” preloader dots can be disabled; the answer leaned toward “no, but you can customize what appears” (read more); original splash introduction for context (read more).
A Russian-language admin question explored how many subcategories can/should be displayed under a parent category (including the practical reality of trying ~30 “city” subcats) (read more).
A hosted signup flow issue: when using Discourse ID, “full name required” didn’t behave as expected—testing suggested Discourse ID autofill + signup flow needs adjustment, and the report was moved to bug for follow-up (read more).
OpenID Connect group sync may remove users from all non-synced groups when a single OIDC group disappears from the claim; supermathie proposed a crisp repro summary to validate the behavior (read more, original report: read more).
Structured data / schema debugging continued: missing mainEntity.suggestedAnswer.text appears linked to topics whose OP has no text content, prompting investigation into skipping/placeholder behavior (read more, more detail from the field: read more).
A theme-switching gotcha: if your default theme has a /custom homepage but your user-selected theme doesn’t, users can land on a blank custom page after login—suggestion: show a friendly “Take me home” affordance instead (read more).
The “Permanent” filter on Upcoming Changes appeared empty and raised questions about what should be listed there (especially after changes become permanent) (read more).
“Where did the tag info button go?” tracked a UI affordance regression/relocation: non-admin users can’t easily find tag descriptions/usage help that used to be surfaced via an info icon (read more); older references cited in the discussion include prior guidance screenshots (read more, read more).
#plugin
The long-running official Discourse Translator discussion clarified strategy: pick one translation UX, and the newer automatic translation path is preferred as the older experience deprecates (read more).
#feature
A thoughtful localization UX request: translated posts currently lose useful quote metadata (topic linkage + the “more context” affordance), making translated quotes less informative than originals (read more).
gabriel shipped the day’s headline: Discover Hot Topics for discourse-discover, expanding cross-community discovery in DiscourseHub and beyond (read more; earlier Discover overview: read more).
pmusaraj jumped into both product and troubleshooting threads—answering DiscourseHub/TestFlight questions (read more) and confirming the Discourse ID + full-name requirement flow likely needs a fix, moving it into bug (read more); they also continued engaging on chat-as-content experiments (read more).
david provided the concrete solution for link parsing ambiguity: use angle brackets to explicitly bound URLs when punctuation/brackets are involved (read more).
Falco traced the bracket/URL behavior to the underlying library defaults (read more) and helped diagnose why AI translations can stall when locale detection meets “thinking” model output formats (read more); they also engaged on an embedded-comments UI bug report in the Tecnoblog case study thread (read more).
nat clarified the direction for Discourse Translator: avoid running both translation experiences, and prefer the newer automatic translations since the older path is deprecating (read more).
davidb investigated schema validation errors and suspected a key trigger: OPs with no text can break QAPage schema expectations, suggesting either skipping or filling placeholders (read more).
supermathie worked on pinning down the OpenID Connect group sync issue by proposing a precise reproduction summary (critical when group membership changes could remove access) (read more).
awesomerobot acknowledged a fix is inbound for mobile tag display truncation (“long tags are cut off at screen edge”) (read more).
Yesterday’s lesson: may your URLs be neatly wrapped in angle brackets, your tag info buttons stay discoverable, and your blue splash dots blink only briefly.
Bootstrap mode appears “legacy” — what changed, and what should remain?pmusaraj explained bootstrap mode had effectively faded away and that the admin onboarding panel is the new “nudge” mechanism (read more); Moin challenged the timeline and pointed to prior discussion that implied bootstrap mode was still active (read more), referencing the older deep-dive on behavior details (read more).
Disabling the “preloader-image” / splash screen is no longer a toggle (and why): awesomerobot confirmed the setting to disable the splash screen was removed, citing stability and potential Core Web Vitals impact, and offered a clever workaround via a transparent animated SVG (read more); the thread also featured some lighthearted ops advice (read more).
Mobile-only category background styling (Horizon theme): Lilly shared a clean SCSS approach using viewport mixins and category targeting, plus optional dark/light variable handling (read more; follow-up snippet: read more).
Custom dropdown user field “unselectable value” showing up (possible bot signal?): A report that spambots appear to submit values not present in the dropdown options—raising both honeypot implications and potential validation gaps (read more).
OpenID Connect group sync can remove users from unrelated groups: A bug report highlighted that OIDC group syncing could kick users out of groups that aren’t being synced; pmusaraj linked a fix PR intended to resolve it (read more).
AI translations failing with “Raw can’t be blank / Cooked can’t be blank”: Falco guided debugging via /p/ID and ai_api_audit_logs queries (read more; query correction: read more), and later identified token starvation from reasoning output as a likely root cause (read more), tying it to prior translation-scale troubleshooting (read more).
“Middleware document tree depth exceeded” still biting (patch referenced): A fix was pointed to via a linked PR, continuing the effort to stamp out this recurring error (read more).
Selecting “no tag” then switching categories causes an error page: A Chinese-language report shows a reproducible UI flow ending in “page doesn’t exist or isn’t public,” with an animated repro GIF (read more).
Custom homepage goes blank for regular users — suggest a “Take me home” button: A UX proposal to avoid dead-end custom pages for non-staff drew acknowledgement from derek, who said the team would investigate and report back (read more).
“Split this topic” mini-post link behavior still confusing: Follow-up discussion notes those system posts lack a post menu and don’t auto-update the link the way users expect (read more).
#Self-hosting
AWS Lightsail + Ubuntu LTS upgrades: in-place vs. snapshot-and-restore strategy: A self-host admin asked for real-world experiences planning the jump from Ubuntu 20.04 to newer LTS on Lightsail and whether rebuild-from-snapshot remains the safest pattern (read more).
Nested replies notification behavior: does consolidation “feel right”?markvanlan ran a quick series of notification tests in the experimental nested replies area (read more; continuation: read more), while others compared it to journaling-style workflows (read more; related: read more) and broader skepticism about threading complexity over time (read more).
#Feature
Discourse Comments embed: editing inside iframe layout glitch: In the ongoing field report from Tecnoblog’s Discourse Comments usage, keegan confirmed a fix landed for an iframe edit-mode blank-space/layout shift bug (read more).
#Plugin
Geo Blocking plugin: request for an “allowlist-first” mode (and PR review expectations): A user requested a configuration where only certain countries can access (deny-by-default), with precedence rules for allowlist vs blocklist (read more); RGJ suggested a backwards-compatible approach and asked for smaller, focused PRs (read more; review feedback: read more).
Trading Buttons plugin: is the per-category enable/disable actually working?RGJ asked whether the category-level setting functions as intended, alongside ongoing maintenance concerns (read more).
pmusaraj clarified that bootstrap mode has effectively been superseded by a lighter-touch onboarding panel, then revisited the history after Moin challenged the details—ultimately agreeing bootstrap mode did have some “niceties” worth preserving (bootstrap discussion, correction/research follow-up: read more, and the idea to refresh directory views more frequently for very small sites: read more). pmusaraj also linked a fix for an OpenID Connect group-sync edge case (read more).
awesomerobot confirmed the removal of the “disable splash screen” setting, explained the SEO/perf rationale, and provided a workaround path using a custom (even transparent) animated SVG (read more).
Falco contributed to troubleshooting across multiple threads: chiming in on the splash-screen topic (read more), pointing to a fix PR for the “document tree depth” issue (read more), and walking through debugging steps for AI translation errors—ultimately attributing failures to reasoning tokens exhausting the completion budget (read more, follow-up guidance: read more, conclusion: read more).
markvanlan ran a compact set of “how do these notifications feel?” experiments inside the nested replies testbed (read more; also: read more).
keegan confirmed a Discourse Comments embed bugfix shipped for iframe edit-mode layout issues reported by a production user (read more).
derek acknowledged a UX report about regular users hitting blank custom pages and said the team would investigate and update (read more).
If your dashboard emoji is starting to look a little too red, it might be time to ship that fix—and maybe swap your splash screen for a stylish animated SVG while you’re at it (read more).
If you only have time for a quick scan, today leaned heavily into migration/ops, localization quirks, and UX papercuts—plus some lively plugin/theme component iteration.
merefield asked about realistic migration/upgrade timing, and Falco recommended the “spin up new server → read-only old site → backup/restore → DNS cutover” approach (plus lowering DNS TTL in advance), with Lilly confirming the same method worked well during a long-distance Docker move (read more, read more)
A “why does it say regular under my username?” question turned into a helpful explainer: Lilly pointed to trust levels, while Moin clarified it’s a selectable Title once earned via badges (read more, read more, plus the trust-level reference: read more)
A guest-access concern in Chinese: jack222 reported that logged-out visitors can’t view /activity/reactions and asked for either a setting to allow it or a clearer error message indicating login is required (read more)
Noble_Fish proposed that “New topic approval” and “New reply approval” need global default counterparts for workflows where only certain users later become “must-approve” without needing category-by-category configuration (read more)
A forensic/logging question: Sukenik asked how one might establish (years later) whether suspensions carried over during a Discourse → custom-forum migration; Andrew_Rowe noted hosting details matter and that long-term log retention is often limited, with follow-up context about a large platform running parallel migrations (read more, read more, read more)
Dark-theme readability feedback: Noble_Fish flagged low-contrast text (including Titles) and a “dark yellow” highlight row in the user list that makes scanning harder in the current redesign context (read more)
Moin investigated an “unexpected language code” problem and suggested the invalid hreflang may originate in core when locales include underscores—proposing conversion to hyphens (e.g., tr('_', '-')) to avoid malformed values (read more)
cuo_wu asked how to make custom user fields display in multiple languages; Lilly indicated it’s likely a feature request and linked the existing request to make custom user field names/descriptions translatable (read more, related: read more)
A dropdown custom user field ended up storing “unselectable” values; Lilly suggested bots may bypass front-end validation via API signup, recommended tightening anti-spam (including hCaptcha), and shared a Data Explorer query to find offending rows (read more, hCaptcha reference: read more)
Rich-text composer behavior: Noble_Fish reported that dragging an unselected image triggers a re-upload instead of moving it in-place, and asked whether that’s intentional or a design/UX bug (read more)
#Theme component
The Quote Callouts component discussion continued: Noble_Fish noted callouts still render citation-style in revision history, nathank pointed out similar oddities in excerpts/oneboxes, and scavin raised a macOS shortcut hazard (“Ctrl+Q” muscle memory colliding with “⌘+Q” quit); Arkshine discussed edge cases and floated safer shortcut alternatives (read more, read more, read more, read more)
In the “Upcoming Changes” system thread, Lilly asked whether the UI notifications can be disabled without CSS hacks (sharing a CSS snippet that hides the alerts), and NateDhaliwal noted the notification count/indicator may still remain (read more, read more)
Locations Plugin status update: merefield said a fix is now deployed (plus compatibility work) and explained a widened gap between Early Access vs public versions—highlighting sponsor-only features like a 3D users-map globe and IP-based location lookup; gilles replied with thanks (read more, read more)
#Plugin
Trading Buttons saw modernization work: Janno_Liivak updated the plugin to reduce browser console warnings and align better with FormKit, asking the community to report any issues (read more)
On the Discourse AI LLM settings page, danhanghai reported trouble getting gemini-3.1-flash-lite working with the Google provider endpoint, sharing their configuration details while seeking guidance (read more)
AI translations troubleshooting continued: after switching models, RBoy hit a json_schema/structured outputs limitation error, and Falco advised using a model that supports structured outputs (common among recent state-of-the-art models) (read more, read more)
A Chinese-language repro note: NateDhaliwal confirmed an issue can be reproduced on Meta where choosing “no tag” in one category then switching categories triggers a “page doesn’t exist / not public” style error (read more)
Falco weighed in on best-practice self-host migration strategy—restore to a fresh server and flip DNS with a lowered TTL, rather than attempting risky in-place release upgrades (read more)
Falco also helped unblock an AI translations thread by pointing out the reported error indicates a structured outputs requirement, and that the fix is to choose a model that supports it (read more)
Migration plans got sharper, callouts got safer, and someone out there is definitely lowering their DNS TTL to 5 minutes right now—see you tomorrow for another round of Meta detective work.
A self-host reported Badges failing to load and missing admin settings; troubleshooting quickly converged on “too many / unofficial plugins” (including theme creator installed as a plugin) and possible environment pitfalls like missing SMTP port and storage choices in Badges Error launching (badges). Related/duplicate context: Discourse badges error.
A site owner seeing errors in Google’s URL inspection was told it may simply be a brand-new domain + empty sitemap/content situation in Error encountered while inspecting Live URL (seo).
#Site-Management
A concise how-to explained how admins can force a consistent sidebar category set for all users (via clearing and re-applying default navigation menu categorieshistorically) in How to set the same sidebar categories for all the users (sidebar), followed by nuance/questions about whether the “two-step + wait” is required in the follow-up discussion.
#Self-hosting
A migration restore failed with You can only specify one non-default checksum at a time. and the thread narrowed toward Cloudflare R2 S3-compatibility concerns and checksum handling, in 迁移Discourse恢复数据失败. Suggestions included attempting checksum env-var overrides (read more) and confirming the object store + environment details (read more).
@discourse/mcp users reported that on subfolder installs (e.g. /forum) MCP calls drop the subpath and hit the wrong endpoints in MCP bug when subfolder-install in (mcp); a fix was linked shortly after in the response.
Structured data markup continues to be iterated: one admin reported Google Search Console issues resolved after upgrading, while another still sees problems, in Missing field ‘text’ (in ‘mainEntity.suggestedAnswer’).
Theme developers discussed long-term maintenance expectations and the intended stability goals of Blocks, with guidance that forks are owned by the forker and the “skills” docs should be treated as the living reference in Skills for authoring themes and blocks (theme-guidesblocksskills).
manuel replied with practical guidance on forking themes, expectations for upstream updates, and how the Blocks API aims for resilience in Skills for authoring themes and blocks.
supermathie jumped into the restore/migration failure to request environment/object-store specifics in 迁移Discourse恢复数据失败.
gerhard suggested a potential workaround for Cloudflare R2 checksum incompatibility by setting AWS checksum environment variables, in 迁移Discourse恢复数据失败.
That’s a wrap: may your badges load, your service workers take control on the first try, and your cat images drag without triggering an accidental re-upload spree.
A lot of today’s momentum clustered around mobile UX, automation scheduling, and a big step forward in image optimization.
Interesting Topics
#Announcements
Bulk tag actions got a cleanup:lindsey introduced Better bulk tag management with a unified “Manage Tags” modal, while Lilly and Moin raised follow-ups about bringing back tag UI affordances and improving how bulk tag edits appear in revision history (read more, related: tag info button, prior feature request).
Chat notification quick replies are back (and better):Falco revived quick replies for Chat notifications and noted improved robustness, emoji-only replies becoming reactions, and support for chat threads (read more, related: Chat threads).
Less “admin noise” for Upcoming Changes:Lilly shared a way to dismiss notifications tied to Upcoming Changes (and new features) within the ongoing rollout discussion (read more, related: Introducing Upcoming Changes).
Clarifying “Everyone” on Admin UI upcoming changes: In the Admin Reporting & Analysis thread, martin explained that “Everyone” is a misleading label for admin-only surfaces (since only staff can access the admin UI anyway), and suggested future options like Staff only / No one to reduce confusion (read more).
#Feature
Client-side image optimization gets a major upgrade:Falco announced new client-side optimizations, including GIF → Animated WebP conversion (roughly halving file sizes) and tying the rollout into the Upcoming Changes framework (read more, background: client-side image optimization origins, older discussions: GIF conversion idea, WebP plugin idea).
Smoother self-hosted builds when downloads fail: A feature request proposed making fragile build-time downloads (like fetching acme.sh) more resilient, including adding an override such as DISCOURSE_ACME_DOWNLOAD_URL (read more, related guidance: acme.sh rebuild stuck thread).
Embedded views stats vs. “full app embed” reality check: In the Tecnoblog embedding experience thread, Thiago_Mobilon questioned whether embedded view tracking is undercounting after switching to full app embed—because traffic increased dramatically but “Embedded Views” did not (read more).
Klipy + limited infinite search results = error edge cases:RGJ reported that Klipy categories aren’t paginated but still wire up a loadMore, which breaks when limit_infinite_search_results is enabled (and also noted a backspace crash scenario) (read more).
iOS PWA push subscriptions silently failing (service worker control):Falco asked whether adding skipWaiting() / clients.claim() to the main service worker would resolve the issue, and the reporter iterated on a PR to ensure immediate SW control for the PWA (read more).
Admin API /active.json intermittently 500s (nil main_user_record): A report highlighted failures in /admin/users/list/active.json pages due to main_user_record[:silenced_till] being nil, including a traced regression window and stack output (read more).
“Jump to post” + edit reply + save ⇒ missing resource error: A reproducible flow in the reply expansion UI can lead to “URL/resource not found” after saving an edit with no changes; chapoi confirmed and shared console clues (read more).
Why monthly timed automations don’t run (and why month length matters): The automation scheduling debugging thread dug into why “monthly” recurrence behaves inconsistently; Lilly traced the logic to recurring trigger code and suspected a mismatch between calendar day intent and BYDAY-based RRULE behavior (read more).
Mobile Edge “Permanent delete” dialog is too narrow: A long-lived UI path wasn’t updated to the newer modal component; chapoi confirmed, and zogstrip linked a fix PR (read more).
Automation list on mobile: “last run” column overlaps edit controls:Lilly reported the portrait viewport collision, and awesomerobot pointed to an upcoming fix (read more).
Salesforce Experience Cloud embedding: iframe shows only login / limited mode: A Business Trial user described an LWC-based embed setup (including DiscourseConnect and trusted URLs) but still seeing only the login view rather than a full forum experience (read more).
Falco shipped news and follow-ups across performance + platform edges: announcing new client-side image optimizations (including GIF→WebP) (read more), restoring Chat notification quick replies with better handling + thread support (read more), and pushing on an iOS PWA fix by suggesting service worker control changes (read more).
lindsey introduced the consolidated Manage Tags modal for bulk actions and invited feedback on the workflow (read more).
zogstrip confirmed and routed multiple fixes: a narrow mobile Edge “permanent delete” modal got a concrete fix path (read more), a category/tag “no tag” switching bug received a PR-based resolution (read more), and the monthly automation investigation got escalated for a deeper look (read more).
chapoi did a lot of sharp-edge triage: confirming the outdated modal implementation behind the Edge report (read more), confirming the “missing URL/resource” reproduction and sharing console hints (read more), and pushing back on “reading time scripts” as unethical trust-level gaming (read more). They also noted a merged fix for reaction-picker behavior on long press (read more).
awesomerobot acknowledged two UX paper-cuts and linked fixes/next steps: the confusing “Permanent” filter wording in Upcoming Changes (read more) and a fix for the automation mobile overlap issue (read more).
supermathie supported a self-host migration recovery case by pointing to the official migration guide and requesting the relevant (redacted) ENV block for troubleshooting (read more, guide: step-by-step migration).
martin clarified how admin-only upcoming changes behave despite “Everyone” being shown, and outlined why adding Staff / No one options would reduce confusion (read more).
sam checked in on an AI integration bug report regarding Gemini Pro “thinking budget” edge values (0 / -1), asking whether it’s still reproducible (read more).
Yesterday, Meta managed to shrink GIFs, untangle tags, and un-squish mobile modals—may all your automations trigger on the exact calendar day you meant.
OpenID Connect group sync bug: backporting underway (read more)
API failures around silenced_till + ESR timing discussion (read more)
“Disable Markdown / default rich text” thread asked for a reliable repro in Contribute > Bug (read more)
Assign on mobile: modal search field blows up with JS error (read more)
Data restore/migration troubleshooting continued (S3 uploads rake task) (read more)
Interesting Topics
#Announcements
Nested replies are here (early days, big potential):markvanlan introduced an officially-supported, fully nested topic view—including a single-thread view when deep-linking to a reply, plus new site settings and a roadmap to watch. read more
Clearer permissions via new pseudogroups:martin announced “granular” pseudogroups—anonymous and logged_in_users—to replace confusing @everyone behavior in group-list settings, while explicitly keeping category/tag permission semantics stable. read more
Reporting UI clarity improvements shipped: In the ongoing admin reporting thread, martin noted a merged change that makes upcoming “reporting improvements” options more explicit (No one / Staff / Specific groups). read more
Interest check: deeper gamification beyond trust levels: A proposal to integrate a richer XP/streaks/economy-style gamification system with Discourse sparked discussion about where core ends and plugin ecosystems begin (gamification). read more
#Self-hosting
Renaming categories (and slugs) without breaking links:bayardo.rivas asked what changes are “safe” in production; replies clarified how category IDs drive routing and how “wrong” slugs still redirect—plus practical examples and reassurance about renaming slugs. read more
Redirecting users away from non-existent pages: A self-hosting question on handling 404s quickly pointed to established approaches and highlighted using permalinks for redirecting specific paths. read more
Self-hosted DiscourseAI sentiment model fix: A setup broke due to upstream model files returning 404; Falco shared a workaround by pointing Docker at the correct branch until the model-side change lands. read more
Grid lightbox navigation order is wrong:Shauny reported grid-uploaded images advancing in an unexpected order (1,3,2,4), and zogstrip confirmed it was debugged and fixed via a PR. (lightbox) read more
Chinese error: “cannot find requested URL/resource” fix in progress: In a Chinese-language bug thread, zogstrip reported reproducing the issue and working on a fix (linked PR) before landing the final solution. (fixed) read more
Upcoming Events: clicking a link opens a user card (maybe Safari PWA?):Ethsim2 traced the click path through FullCalendar’s eventClick and a popover menu, then suspected conditions like Safari PWA + network jitter after the issue stopped reproducing reliably. (calendar-and-eventux) read more
Norwegian locale mismatch wastes translation credits: A DiscourseAI locale detector labeling Norwegian as no while target locales use nb_NO caused “translations” that barely change content—prompt tweaks were suggested as a fast mitigation. (ai) read more
Assign/re-assign on mobile: can’t type in the user search field: A long-running mobile/assign issue resurfaced with a concrete console trace; attempts to guard targetElement removed the exception but didn’t restore typing behavior. (mobileassign) read more
Hide user cards from anonymous users: A straightforward configuration question got a quick pointer to the relevant setting to prevent anon visitors from seeing user cards. read more
Translation translates only the topic title (not the post body): A report showed the title translating while the post content did not; nat identified a post-length limit and adjusted/bumped so the content translated properly afterwards. read more