Current Projects – August 2025 lindsey rolled out the August newsletter with plans to update the lightbox for improved image viewing (OP) and preview centralized authentication tests coming to Meta (feedback). MachineScholar praised Discourse’s community-driven approach and tech adaptability (post). read more
Add a CLI warning when running launcher bootstrap/rebuild without app.yml Ethsim2 proposed clearer guidance if app.yml is missing during ./launcher bootstrap (OP), Cathyy01 suggested covering both fresh installs and quick-test forums (reply), and ShiverTimber4973 expanded the warning to include restore-to-new-server scenarios (discussion). read more
Spoilerizing parts of two paragraphs doesn’t work right dfabulich highlighted that inline spoilers break when paragraphs are split (OP), and lindsey confirmed the framing issue, promising an upcoming fix (response). read more
Error with Tooltipify-words Shauny reported Tooltipify-words incompatibility after the recent release (OP), and Arkshine swiftly merged a PR to restore functionality (fix). read more
Prevent Google OAuth2 users getting username “user1”, “user2”…? pmusaraj identified that disabling use email for username leads to userN suggestions by default (insight), and lindsey proposed leaving the field blank to avoid userN when email is disabled (idea). read more
No more live reload with CSS modifications? rahim123 noticed that CSS hot-reload stopped working in 3.5.0 (report); RGJ explained that live-reload is disabled on production to avoid update conflicts (explanation). read more
I disagree with the location of the bookmark reminder notification preference schleifer couldn’t find the bookmark reminder under Notifications and discovered it lives under Interface instead (post). read more
Is the login page .d-header color supposed to be the secondary color? rahim123 questioned the new light header on the login page (OP), and chapoi confirmed it’s intentional to de-emphasize the header on login (reply). read more
Message bus ignores DISCOURSE_LONG_POLLING_BASE_URL setting lukec set up a CDN URL for long polling, but the message bus still hit / (issue), traced to an initializer not handling the setting. read more
AI spam bot says it is not spam but scan log says it is spam Roman detailed the skip-post rules for the discourse_ai_spam bot and helped J-Ha_Hasegawa debug why a TL0 post was never flagged (explanation). read more
#Translations
Offer to help: English ↔ Polish translation MachineScholar offered Polish translation support based on his experience in Poland (offer), and Canapin pointed to the official guide for contributing translations (guide). read more
#Site Management
AI Bot – Personas
Discussion on extending image support in the researcher persona: MachineScholar asked about vision LLMs (/306099/19), and sam recommended using the Forum Researcher persona for project-summary use cases (/306099/21). read more
Failing update rlauriston hit ownership errors during launcher bootstrap on DigitalOcean (log), with NateDhaliwal pointing to a related upgrade-failure thread for troubleshooting (reference). read more
#Data & reporting
Dashboard Report – Web Crawler User Agents ToddZ proposed parsing long crawler user-agent strings into clickable links in the dashboard report component (suggestion). read more
#Using Discourse
Filtering topic lists in Discourse Shauny asked for filters to show topics they haven’t yet viewed or replied to—e.g., “Introductions” they haven’t responded to (request). read more
Replacing a forked Discourse repo:kuaza struggled to apply changes from a GitHub fork into a live site, with advice referencing the Can’t change repo in Discourse Docker thread to use plugin-centered overrides instead of full-app forks (read more).
Accidental deletion of the “feature request” category:yachun_li requested help restoring a deleted category, learning that empty categories can be recreated but content recovery needs Discourse Team support and may involve recovering deleted categories (read more).
CLI debugging after UI-forced updates:pfaffman and Benjol discussed the change that now requires using the command line when updates fail via the web UI, linking back to a previous update priority discussion for context (read more).
Discourse AI persistent memory:BrianC asked whether the AI could retain conversation context across sessions, sparking discussion on adding persistent memory features to Discourse AI (ai) (read more).
AI translator summary translation:Jagster proposed that the AI translator should also translate summaries, and nat confirmed it’s possible and may be prioritized if more votes arrive (read more).
Review items for “Take Action…” flags:per1234 requested that using the “Take Action…” button generate review queue records for transparency and legal reporting, prompting a discussion on flag handling and review data exports (read more).
Calendar missing post-level events:Nick_Stager reported that events tied to topics are not showing on the calendar view, affecting calendar-and-event functionality in v3.6.0.beta1-dev (read more).
Twitter Native Embed still works: Despite reports of breakage, Lhc_fl (post 86) and Richie (post 88) confirmed the component functions on the latest release (read more).
“Message” and “Chat” on profile pages:donaldsoncd deployed CSS to hide redundant buttons on one’s own profile, and NateDhaliwal is exploring a scoped fix to avoid hiding buttons globally (read more).
per1234 observed that the Uncategorized category still appears in dropdowns despite allow_uncategorized_topics being off at post #12, and sam confirmed the issue by reproducing it on default installs at post #10. read more
RGJ discovered that disabling AI embeddings enabled after removing all models fails with a “Set ‘ai embeddings selected model’ first” error post #1, prompting sam to request a quick fix review post #2. read more
A contributor noted that the message bus always reconnects to / instead of using DISCOURSE_LONG_POLLING_BASE_URL, and sam thanked them for the patch post #2. read more
sam outlined a potential race condition where whispers can desync the unread count from actual new replies post #2. read more
sam announced that the calendar plugin’s search result positioning bug has been fixed and asked for confirmation on the latest version post #2. read more
A report showed that default uBlock Origin on older browsers can bypass the outdated-browser warning, and sam requested more details post #2. read more
nathank expanded on link encoding issues in the composer modal when URLs contain apostrophes and updated the report title and tags accordingly post #5. read more
pfaffman sympathized with Benjol’s request for a “get ready, this one will hurt” warning on complex updates, and the community discussed log formatting to highlight critical errors post #4. read more
LG1 detailed failure of outbound mail via Namecheap Private Email, and NateDhaliwal along with pfaffman recommended using Mailgun, Brevo or alternate ports like 2525 post #2post #3. read more
ace_1 asked for free SMTP server options, and Lhc_fl favorably mentioned Brevo’s 300-email/day tier before Ethsim2 advised switching to port 2525 for connectivity post #2post #7. read more
S.AAKASH_MUTHIAH requested client-side JS to enforce a mandatory tag in a specific category, and chapoi pointed to Discourse’s tag-group setting as the simplest solution post #1post #2. read more
agemo proposed adding a “tip” or “paid-like” button to monetize user posts, and NateDhaliwal confirmed no core support exists while referencing the Discourse Subscriptions plugin as a close alternative post #1post #2. read more
Jensen_Chek asked whether Topic List Previews can show multiple thumbnails per card, and merefield explained the performance constraints of core thumbnail code while welcoming high-quality PRs post #663post #664. read more
sam debugged and confirmed multiple Bug fixes: uncategorized category leakage at post #10, AI embeddings toggle at post #2, message bus URL at post #2, outdated-browser warning at post #2, calendar plugin search positioning at post #2, and missing post-level events at post #2.
martin merged the experimental “allow any emoji” option for Discourse Reactions in Featureat post #31.
chapoi addressed footnote spacing at post #2, hid chat buttons on self-profiles at post #8, and guided the built-in approach for requiring tags via category settings at post #2.
j.jaffeux reviewed the S3 chat image upload PR and refined ProseMirror comment handling in Bugat post #16.
kelv confirmed that iOS mention autocomplete now appears based on viewport space in Bugat post #6.
With all these bug squashes and PRs landing, even our office puppy slept soundly last night—paws-itively peaceful! Now keep those forums humming and the code clean!
Emoji not rendering after “+”: MachineScholar discovered that emojis immediately following a plus sign don’t render in posts or titles, with merefield noting a space-based workaround and Don pointing to the Enable inline emoji translation site setting. read more
Modal input fields jump to top on iOS: Don reported that focusing on modal inputs (including the emoji picker) in the Glimmer Post Stream causes an infinite jump to post #1, and sam suspects event bubbling issues. read more
URL highlighting cut off mid-fragment: carbon-starlight showed that Markdown link highlighting stops before certain special characters, questioning conformance with [RFC 3986]. read more
Calendar plugin search links misdirect: opcourdis noted that using the admin plugin search lands on Site Settings instead of the Calendar UI; martin and sam debated aligning its layout with newer plugin pages. read more
Accessible name missing for arrow icons: msftedad highlighted that the “Right arrow” and “Left arrow” icon buttons lack screen-reader labels on Windows. read more
Tip or Pay button for posts: agemo proposed a micropay “tip” button integrated into the subscriptions plugin to fund content creators, with chapoi suggesting bundling votes with existing “pay best answer” threads. read more
Discourse Calendar → FullCalendar 6: j.jaffeux rolled out a major #calendar update to FullCalendar 6, adding clean URLs, event previews, performance gains, and CSS-variable theming. read more
AI spam detection replaces Akismet: Discourse announced that built-in AI now handles spam instead of Akismet, prompting reminders about GDPR/PII when using external LLMs. read more
Unsupported iOS browser warning: xkhalid saw Safari/Chrome on iOS ≤ 16.0.3 flagged as “unsupported.” merefield pointed to the [dropping-iOS-15 announcement], and chapoi reminded about forum tagging etiquette. read more
Missing mobile “Post” button in Horizon: HiAI asked why the Horizon theme omits the default bottom-bar “New Topic” button on mobile. nat and chapoi explained the sidebar shortcut and linked back to the Horizon release post. read more
Required tag group not enforced for admins: S.AAKASH_MUTHIAH found topics could bypass required tags when posted by an admin; chapoi confirmed it’s working “as designed” for non-admins only. read more
Persistent “ads.txt not detected” alert: agemo reported intermittent AdSense errors even after verifying the file, seeking best practices for crawler verification. read more
Discourse Graph (Plotly) Embed: NateDhaliwal released a theme component letting users insert Plotly.js graphs via a new toolbar icon. Jagster helped test icon styling. read more
Advanced Search Banner fix: awesomerobot restored js.welcome_banner.search functionality in the Official Advanced Search Banner component. read more
Right Sidebar Blocks date sort bug: pmusaraj tracked down an ordering glitch where single-digit event dates appeared after larger numbers, merged in PR #34526. read more
PM signature bug Paul_King discovered that emailed replies to PM notifications via Outlook Android included full email threads and phone signatures instead of stripping them; tobiaseigen recommended adding the signature separator -- to resolve the issue (see post 1 and post 9).
Theme CLI SSL & import errors gormus encountered certificate verify failed SSL errors when running discourse_theme watch . and later hit “about.json does not exist” import failures; chapoi pointed out API key scope settings as the root cause (errors in post 1 and post 2).
Missing Discover thumbnail Jinpeng_Wang’s forum listing lacked a preview image under Discourse Discover; community members walked through uploading a site screenshot and clearing caches to restore the thumbnail (initial report post 1).
Horizon: mobile “Create topic” returns chapoi shared a mini update to horizon-theme that brings back the Create topic button in its original mobile spot while preserving the new sidebar version (post 44).
Calendar plugin ➔ FullCalendar 6 j.jaffeux upgraded the calendar-and-event plugin to FullCalendar 6, introduced clean event URLs (/upcoming-events/day/2025/8/2), and discussed date formatting with gilles and opcourdis (post 1 & post 3).
Pre-compiled JS assets for self-hosting merefield explained the new build pipeline that ships pre-compiled JavaScript for core bundles, enabling faster startup for self-hosted instances and clarifying plugin bundling decisions (post 18).
#Sysadmins
Watched words to block spam pfaffman released a quick shell script to populate watched-words from a recent LLM-targeted spam wave, offering a stopgap until Discourse AI spam detection is fully configured (post 1).
Header search & quick quote enhancements Tris20 and Ethsim2 clarified how the header-search component can redirect queries to external sites like StackOverflow (post 75), while merefield confirmed the #quick-quote component still works on the latest beta and shared setup tips (post 62).
Protecting children & vulnerable users
The #SiteManagement blog post by Discourse outlined evolving privacy laws and strategies for online child safety, driving a detailed companion discussion on moderation best practices (read more).
Assignment cleanup on topic deletion
Following ganncamp’s report, nat merged and deployed PR 34564 to clear stale group assignments when a topic is deleted, with confirmation in the thread (post 11).
#Site feedback
UX vs. Bug vs. Feature categorization tobiaseigen and chapoi refined the UX tag’s scope—covering friction in working features and small quality-of-life tweaks—while reserving Bug for true breakages and Feature for larger projects (post 15).
Disallow Outlook emoji reactions supermathie proposed adding the x-ms-reactions: disallow header to suppress Outlook 365 emoji reactions until native support is rolled out in Discourse (post 1).
ICS feed sync & waiting-list events Ethsim2 published a Python + cron recipe for syncing iCal/ICS feeds into Discourse topics, complete with a step-by-step YouTube guide (post 25), and opcourdis suggested using Interested as a waiting list and tracking registration times (post 1).
“Quote whole post” button location sb56637 discussed the UX of quoting entire posts versus selection, and community members pointed to both the #quick-quote component and third-party plugins like quote-whole-post-composer-button for custom placement (post 9).
SIWE auth & email templates tipo and RGJ diagnosed an ffi version conflict in the Sign-In with Ethereum plugin and recommended removing the redundant gem entry (post 43), while Paul_King explored leveraging editor Templates for canned rejection emails during signup (post 49).
chapoi published a mini update on horizon-theme to restore the mobile Create topic button (post 44) and provided guidance on theme imports by adjusting API key scopes in the CLI (post 2).
tobiaseigen diagnosed the signature stripping issue in the PM email replies thread (post 9), recategorized the tag SEO meta description bug (post 11), and outlined UX tagging guidelines for Site feedback (post 13).
nat merged and deployed a fix clearing group assignments on deleted topics in the bug tracker (post 11).
supermathie added the x-ms-reactions: disallow header proposal to suppress Outlook emoji noise in the feature discussion (post 1).
j.jaffeux rolled out the FullCalendar 6 upgrade for the calendar plugin and clarified event URL formatting (post 2).
sam flagged the arrow icon accessibility issue as pr-welcome and kicked off ARIA-label improvements (post 3).
awesomerobot added a note on external search targets to the advanced header search component (post 72) and merged ARIA-label updates to the group-tracker plugin (read more).
lindsey weighed in on revisit-to-unread behavior in the support thread, helping clarify expected navigation (post 3).
After all that calendar syncing, theme tweaking, and pep talks about UX, our forum was as busy as a puppy chasing a squeaky toy—see you tomorrow!
Custom Topic Sort Order Button: Don introduced a new Theme Component that adds a Topic Sort Order dropdown beside the Create Topic button—perfect for mobile and hidden-header themes. read more
Allow admins the option to show the header language switcher even for logged-in users: nat announced that the language switcher update is now merged (#34578) and discussions are underway about retiring the old preferences-page switcher.
Don’t show silenced users in whos-online: Canapin requested that silenced user avatars be hidden from the online users list to keep the avatar strip free of detected spammers.
List of all unanswered questions: jan2 needs to audit 1 million+ topics for those without replies—NateDhaliwal and Moin walked through using filters like /filter?q=status:unsolved and Data Explorer workarounds. view discussion
All topics authored by a specific user, how?: patrickemin sought an advanced filter to list topics created by group members only—group:Experts-Elite in:first did the trick after a missing “s” was spotted. details
Submit button missing for new topics in iOS native app: dennisjbr found that the compose screen in the iOS Discourse Hub hides the submit button; chapoi has asked for a video walkthrough to reproduce the issue. see thread
Difficult contrast of tags and categories in dark mode: Moin filed a report showing that #tag and #category badges in banner-style layouts are illegible when white text is used on dark backgrounds.
Recurring events fail to handle daylight saving change: tshenry discovered that an event slated every week shifts by an hour when crossing DST; j.jaffeux later confirmed a commit fixing the regression.
Long press emoticon select doesn’t work on one Android: SomeoneElse noted that on a specific Firefox Android build, long-pressing the emoji selector highlights the heart but never opens the picker. bug report
HTML entities don’t work in chat: A patch was merged to address HTML entity rendering in the chat composer (PR #34591).
Major upgrade – best practices?: dylanb is cautioning over upgrading a 3.2.0.beta4-dev instance with plugins; pfaffman recommends spinning up a fresh test VPS and reviewing PG 15 upgrade notes.
Custom composer fullscreen issue: saish’s composer-fields connector works docked but vanishes in fullscreen; suggestions include moving the UI into a before-composer-fields outlet. read more
How have you built a local community around Discourse?: justinm described migrating a fractured sports-league chat ecosystem into a unified forum, sparking tips on push notifications and email engagement. discussion
Discourse Calendar updated to use fullcalendar 6: After upgrading, stephen34 saw a one-hour discrepancy in some events; j.jaffeux confirmed the fix was merged. announcement
How Discourse ID works rishabh outlined the new Discourse ID single sign-on system for cross-forum login, and community members chimed in on social auth and self-hosting support.
Reply by e-mail message clip bug
Reports of Tutao Mail clipping matter, repro steps, and the importance of -- signature separators for reliable replies.
Major upgrade — best practices?
Strategies for spinning up a fresh server, rsync-ing data, managing backups, and choreographing plugin re-enables post-upgrade.
Managing Images in AI context sam broke down options for feeding images to LLMs—Markdown-retained vs. appended payloads—and invited community feedback.
Language switcher and language content: patrickemin and Jagster debug mixed‐language posts and interface translation toggles, unveiling a detection quirk in post language (380845/3) and Moin’s playback demo (380845/9).
How to use Discourse API for article forums and independent community spaces: awesomerobot explains why individual “social feed” plugins don’t exist, and guides user600 on embedding article comments into Discourse, complete with sample integration snippets (380883/3) read more.
Upgrading from 2.6.0.beta1 to latest stable: pfaffman advises running a fresh discourse-setup on a new server—skip in‐place OS/postgres upgrades—and restore backups via rsync to avoid broken VM upgrades (380859/2), reinforced by his “I’ve done this ten times” note (380859/4).
H1 in NOJS hinzufügen: jan2 spots missing <h1> in the no-JS thread view; awesomerobot confirms the template should wrap titles in <h1> and requests a public example to debug (380909/4).
New user responding to invite fails: kgrier reports NoMethodError: undefined method 'gsub' for true in watch_words; supermathie and j.jaffeux diagnose regex toggles (380920/3), and kgrier isolates faulty censor words as the culprit (380920/9).
Translation not displayed on locale change: monty25 finds translated content missing despite HTML lang updates; nat reveals the new hidden crawler param content_localization_crawler_param and Moin notes it’s unavailable on stable (380395/2) read more.
Internal Server Error when previewing digest emails: xkhalid triggers a String vs TimeWithZone comparison error when interface is Arabic; Moin reproduces it by switching locales and pinpoints Arabic‐numeral parsing as the breaker (380954/8).
Viewing email templates in wysiwyg composer causes an error: toggling WYSIWYG in /admin/email/templates/system_messages.reviewables_reminder crashes the preview, demoed by Moin with a video capture (380984/2).
Use fixed-width numbers in mobile view topic progress: awesomerobot proposes keeping the number container wider rather than changing fonts to prevent layout shifts (380866/2).
Category permissions checkboxes misalign when localized: tvavrda shares screenshots of headers offset in translated tables (380966/1); Moin links a duplicate report (bad-permission-table-alignment).
Too little space for inputs when editing sidebar section: NateDhaliwal calls out uneven icon padding and cramped link fields in the custom sidebar editor (380964/1).
Tags auf noindex,follow setzen: jan2 wants tags to be indexed by Google but not added to the search index; community discusses using <meta> vs robots.txt vs tag‐level controls (380982/1).
Moderation API Plugin: DonBot hits a Faraday version conflict on plugin activation; ModerationAPI offers support via email while triaging logs (348828/8).
Content Localization and Automatic Translations for Your Community Tordanik reminded us that polyglot users want originals alongside AI-powered translations, hellekin warned of miscommunication and “AI-fodder” risks, and tvavrda highlighted SEO and subtleties lost in auto-translate. read more
Inconsistent plugin settings RGJ pointed out that Calendar and Fingerprint plugins bury their Settings behind “Installed plugins,” unlike Discourse AI or Akismet, sparking suggestions to unify the admin UI. read more
Re-order the groups list Richie asked for alphabetical ordering of groups on /g, while Moin cautioned that sorting by full name would vary by interface language, preferring a stable @Name sort. read more
Disable Markdown & default to Rich Text rimelek requested a site setting to turn off the new Rich Text editor by default; Kartoon and Jagster noted missing toolbar functions and emphasized user confusion until RTE matures. read more
Replies via email not counted as posts? ToddZ discovered that email-reply users see 0 in “Replies Posted,” affecting badges and clean-up scripts, and questioned the role of last_posted_at. read more
Disabling “click for more details”
guildedgrey wants full email signatures shown in posts, not the “click for more details” placeholder; pfaffman suggested a custom plugin or self-hosting pro service. read more
Configuring incoming email for topics or group messages RBoy and philh shared that using “forwarded emails” behavior with Gmail polling works around Discourse’s reply-key limitations for category topics and PMs. read more
Rich Text editor breaks white-space in code rimelek reported that RTE mangles code indentation and line breaks; j.jaffeux confirmed it’s on the backlog and part-started. read more
New user responding to invite fails (word_watcher.rb:258) j.jaffeux merged a fix for the invite-reply error in watched words, resolving the “cannot read property” crash. read more
AI helper hiding on Android tablets Moin noted that the AI assistant pane vanishes behind the composer on tablets, impacting tag and category suggestions. read more
OP of warnings not highlighted with Staff Color
littleD reported that moderator warnings no longer get the staff-colored background on the warning post, raising UX consistency concerns. read more
Enabling push notifications skips subscription
justinm found that if browser consent is required, the code requests permission but never calls subscribePushNotification, so users remain unsubscribed. read more
Reply Template broken in new composer davidkingham saw [wrap] tokens error in RTE (wrap_open not supported); dax plans proper support for wrap tokens post-meetup. read more
#Hosting
How to install Discourse on an OVH VPS
Murffy published a Debian 12 + OVH step-by-step, and NateDhaliwal questioned using OVH Email Pro for transactional mail. read more
What does api.addSaveableUserOptionField do? NateDhaliwal noted the lack of docs on this plugin-API hook and asked for examples of additional configuration or side effects. read more
dax updated the Reply Template component to plan support for [wrap] tokens in the Rich Text editor, noting that work will pause during the annual Discourse meetup. link
j.jaffeux acknowledged and triaged the Rich Text whitespace bug, confirming it’s in the backlog, and merged a fix for the invite response error in word_watcher.rb. link & link
renato chimed in on Rich Text defaults, asking which composer toolbar buttons are broken to drive separate bug reports. link
Lilly resolved errors in the Group navigation sidebar theme component, updating it so admins no longer see console messages. link
No puppies (or posts!) were harmed in the making of these discussions—just a few stray codeblocks and confetti sparks!
hugh introduced a revamped color palette editing interface for color-palettes, allowing admins to preview and manage light/dark mode themes more seamlessly. read more
merefield addressed deprecations in the Locations Plugin under paid-support, removing the broken tag and merging fixes to ensure continued compatibility. see changes
sam and Jagster uncovered that the AI translation graph only appears when specific backfill settings are met, and nat streamlined the requirements—see issue details and related Summarize Gists doc
nat opened a bug report on quoting behavior in multilingual threads, highlighting how quoting always uses the user’s locale rather than the original post language. read more
pento merged a fix for word censorship in watched words when responding to invites, resolving errors in word_watcher.rb. view discussion
RGJ reported that events default dates are misparsed in calendar-and-event when locales use DD.MM.YYYY, prompting investigation into moment.js parsing routines. report
Damian_Boon asked about changing the PWA bottom bar color on Samsung Galaxy S20 Ultra in dark mode, and dax clarified it’s native to Android settings. details
piffy released a Customizable Navbar Component, enabling quick-access links in the nav bar and configurable via theme settings. component repo | install guide
opcourdis shared strategies for local community-building—using #invite-codes as QR, leveraging push notifications, and calendar integration for offline events. community insights