In Plugin, derak highlighted enhancements — like choosing always-on mic vs PTT and follow-room alerts — for the Resenha voice rooms plugin, and Falco weighed in on PTT constraints and auto-status updates; see full feedback and Falco’s notes.
The Discourse Chatbot plugin now supports GPT-5.2 and GPT-5.2 Pro, including an xhigh reasoning level for advanced math discussions; check the main thread and latest changelog.
Exploration of reintroducing the Lounge for Trust Level 2 users, including TL3 lock methods and threshold tweaks guided by the Trust Level Permissions Reference in this thread.
Duplicate flags in post triage: philh showed how posts triggered both spam and toxicity filters, prompting suggestions on merging personas; see discussion and Sam’s best practices guide.
Staff action logs filter layout issues on mobile—alignment and spacing glitches documented with screenshots in this UX thread.
Suggestion to replace the minimal “i” icon for commit messages with something more intuitive (like a note icon or direct input field in the composer) in the commit-dialog UI thread.
Accessibility bug in select-kit dropdowns: selected items’ text and icons vanish due to low contrast—especially on dark themes; detailed in the report.
Refreshed shared edits plugin sam unveiled a major rewrite of the shared edits plugin, now leveraging shared-edits with remote cursors, rich-text support, and markdown modes powered by yjs for solid reliability.
You’re invited to try the Discourse Free plan beta! oshyan celebrated the launch of the free-plan beta in this announcement, sharing early feedback on new sign-up flows and community uptake.
Topic Gallery Canapin officially launched the Topic Gallery plugin, fixed an alt-text oversight, tweaked the Photoswipe config for infinite swiping, and polished the mobile gallery icon.
Volunteer moderators? Lilly noticed the unannounced volunteer moderator program in this thread. itsbhanusharma and HAWK clarified that category-level moderators are being piloted and a formal announcement will follow.
More self-evident icon to access the edit message dialog robbie.morrison proposed replacing the edit reason icon with a “note” symbol and optionally forcing the commit-message window in this UX discussion, with chapoi agreeing to update the icon soon.
Tracking “will require future editing” notes stephtara asked about marking posts for later edits; NateDhaliwal suggested using inline footnotes (^[note]) in this Support topic, and Lilly shared her PM-to-self notebook hack.
Optimizing for image-heavy communities TheWalkingDead110 reported sluggish scrolling in threads with dozens of images in this support request. Canapin asked for metrics, server specs, and explained thumbnail vs full-image loading.
Discourse ID sign-in snag haruspex discovered that Meta forum accounts aren’t automatically Discourse ID logins in this Support post; pmusaraj helped troubleshoot session and account mappings.
Cloudflare Turnstile integration Lee_Ars compared Turnstile vs hCaptcha for spam prevention in this Support thread, prompting discussion on friction, analytics, and real-world spam metrics.
Profile pictures are huge ondrej noted oversized avatars under the Horizon theme on /latest and related topics screens in this issue, confirmed as a theme styling quirk.
Emoji shortcuts can’t be disabled in RTE mode sam identified that rich-text emoji shortcuts remain active in this bug report and traced the core PR to restore correct toggling.
Select-kit dropdown accessibility Noble_Fish flagged missing contrast for selected items and icons in the Select-kit dropdown, calling for an improved highlight style.
Anonymous banner flicker Canapin showed that versatile banners enabled for guests reappear on every scroll in topics (bug), a UX glitch affecting first-time visitors.
Add OpenGraph image dimensions zogstrip implemented og:image:width, og:image:height, and og:image:type tags in this feature request to improve rich previews on social platforms.
zogstrip addressed non-English support for watched words in this bug, fixed sentence-level Chinese censoring (#71288), and updated OpenGraph metadata via PR #37849.
Volunteer moderators?Lilly flagged confusion over the undisclosed rollout of volunteer moderators, and HAWK explained the public announcement will come when Danielle returns from PTO (view discussion).
Updating how categories are organized on Metamcwumbly proposed grouping related support and customization areas under fewer top-level headings to reduce choice paralysis (read more).
Updating Meta’s theme and structure the team previewed a refreshed look, reorganized sidebar, and improvements to match Discourse.org branding (see details).
Make it easier to update componentsganncamp suggested linking the “update available” text directly to the update action and adding an “Update All” button to speed workflows (read more).
Messages and chat distinction confusionstephtara described difficulty finding personal messages vs. chat, sparking a discussion on unified search and renaming options (view discussion).
Bulk archiving messages does not show until page refreshtobiaseigen reported delays when archiving many messages at once, leading zogstrip to test whether autoloaded items affect UI refresh (read more).
Two-Level Subcategories Display IssueNoble_Fish noted inconsistent rendering of second-level subcategories when third-level items exist, prompting theme-level review (view discussion).
Select-kit dropdown: selected/highlighted items have poor color contrastbryce couldn’t reproduce the reported accessibility bug but raised concerns about dropdown readability for users with vision impairments (read more).
UK & EU – Development of Safeguarding Words Pop-up Feature Welsh_Selkie posted a request for GDPR-compliant crisis keyword detection with a pop-up support resource for vulnerable users (view job posting).
Categories/Tags breadcrumb glitching on home page TheWalkingDead110 observed that the breadcrumb toggle between “All categories” and “Latest” sometimes disappears on refresh; chapoi and pfaffman suggested safe-mode and login checks (read more).
DTooltip button not rounded, icon is not centralizedNateDhaliwal debugged a custom tooltip connector, and chapoi pointed out missing btn classes to restore proper styling (view solution).
Plugin to introduce auto-delete as a category-level optionnathank asked if auto-delete still exists; Lilly confirmed it’s under “Topic Timers” and linked the legacy discussion (read more).
Add og:image:width, og:image:height, and og:image:type to OpenGraph tagszogstrip patched missing OpenGraph metadata to improve link previews across platforms (view PR).
Post flagging duplication and Spam/Toxicity Combophilh proposed merging spam and toxicity flags to reduce redundant triage, moving the discussion under ai automation tags (read more).
How to solve the problem of different order of Badges in different languagesLilly offered to build a theme component for custom badge ordering after Noble_Fish highlighted localization-driven inconsistencies (read more).
UX In “Slightly misleading message on free plan site creation screen?” ondrej pointed out that the claim to “customise everything” overpromises on free‐plan design flexibility, and mcwumbly suggested refining it to “As soon as this step is done, you can begin customizing your new site.” read more
UX In “QOL: dealing with trust levels” stephtara requested a clearer view of Trust Level criteria and perks, and HAWK pointed moderators to the Trust Level Permissions Reference while noting upcoming admin UI improvements. read more
#Site feedback: In “Updating how categories are organized on Meta” mcwumbly restructured Installation topics by merging Hosting under a new top-level Self-hosting support category to simplify navigation. read more
#Site feedback: In “Meta splash screen: no indication of actual loading” NateDhaliwal noted that the static logo gives no loading feedback, and awesomerobot plans to adjust the animation for better visibility. read more
Support In “How to enable (3+ level) nested subcategories” Salma_Quraishi asked for deeper nesting, and awesomerobot explained that SiteSetting.max_category_nesting supports up to three levels and that tags are often a better alternative. read more
Announcements In “New filter on the Badges page” lindsey added a search field in /admin/badges so admins can narrow down badges by name or description without tedious scrolling. read more
Announcements In “View chat channels from category settings” lindsey exposed associated chat channels within each category’s settings, helping admins see and manage the category ↔ chat relationships. read more
#Data & reporting: In “What’s your workflow for the annual EU DSA compliance?” sps asked for reporting strategies, and HAWK published the exact Data Explorer queries that power Discourse’s official DSA Transparency Report. read more
Feature In ““git blame” on robots.txt” king_laurel requested audit logs for robots.txt edits, and pmusaraj shipped a fix so future changes appear in /admin/logs/staff_action_logs. read more
Bug In “Mp4 files are downloading instead of displaying inline” david reopened the investigation into incorrect Content-Disposition headers on .mp4 uploads, tracing the relevant code paths. read more
#Self-hosting support: In “Build fails due to ruby version mismatch” philh reported Ruby 3.3.8 vs ~> 3.4 errors, and pfaffman walked through the two-container bootstrap order to fix it. read more
#Self-hosting support: In “How to authenticate email domain for free discourse subdomain?” ComradeDog found Brevo rejecting noreply@…discourse.diy, and Falco confirmed you must use a custom domain to authenticate senders. read more
Community In “Marketplace & Feedback Options” long explored building a peer feedback system, and Canapin suggested a pinned review topic as a simple, no-plugin reputation solution. read more
#Translations: In “French, error in translation (group owners, members and moderators)” stephtara questioned the #fr “Propriétaires de groupes” string, and zogstrip guided through Crowdin to submit and review the correct French labels. read more
Supportawesomerobot highlighted the built-in 3-level nesting and tag-over-subcategory approach in “How to enable (3+ level) nested subcategories” read more
Announcementslindsey exposed chat channel mappings in category settings in “View chat channels from category settings” read more
#Data & reporting: HAWK published the exact DSA reporting queries behind the official transparency report in “What’s your workflow for the annual EU DSA compliance?” read more
Bugdavid relaunched the MP4 inline-play discussion in “Mp4 files are downloading instead of displaying inline” read more
#Self-hosting support: Falco clarified domain authentication limits on Discourse subdomains in “How to authenticate email domain for free discourse subdomain?” read more
#Translations:zogstrip walked contributors through Crowdin for accurate French translations in “French, error in translation (group owners, members and moderators)” read more
Yesterday’s category reshuffles, DSA data adventures, and badge-search launches packed as much action as a cubic meter of puppy snuggles—onto the next 24 hours of civilized chaos!
lindsey kicked off Current Projects – February 2026, outlining work on the Solved plugin and a new theme blocks system read more.
The team shared updates on Modernizing the Foundation theme, fixing layout quirks and AI search issues read more.
#Self-hosting support
Update problem, do I press the big scary red button? walked users through a ./launcher rebuild app after a failed GUI upgrade read more.
Failed email jobs on one-line install without SMTP? explained why the dashboard shows email job failures and pointed to the community workaround read more.
The Beta update to 2026.1 notice drove discussion on container tags and rebuild steps read more.
#Site feedback
In Updating how categories are organized on Meta, contributors proposed a “Community Success” top-level category and debated subcategory names read more.
Adding a #welcome tag for newcomers spun out a dedicated thread for onboarding suggestions read more.
The Meta splash screen thread called for more obvious loading indicators on first visit read more.
Custom Splash Animations In Announcements, Falco experimented with animated SVG loaders using Gemini Pro for the Discourse splash screen.
“Generate an animated SVG that will be used as a loading animation on a forum…” read more
#Site feedback
Inconsistent marking of completed features The team debated the value of the #completed tag, with Falco proposing its removal and Moin suggesting PM-based workflows. See chapoi’s tips in post #13 and tobiaseigen’s dedicated-inbox approach in post #17.
Email settings enhancements tobiaseigen proposed an “Enable Email” link on the backup notice to restore outgoing email after a restore (post #1), while users noted that the crucial “Notification email” setting is hidden under #required settings (post #1).
Search before posting Users troubleshooting duplicate topics discovered the minimum_topics_similar threshold hides the similar-topic prompt on small forums. read more
Migration von Woltlab 6 zu Discourse DirkStr seeks a path to migrate from Woltlab 6, moving the discussion to Marketplace and awaiting proposals. read more
#Self-hosting support
Beta update to 2026.1 Users on the beta channel reported stale builds; merefield and david recommended git pull, ./launcher cleanup app, and checking the Ember inspector. read more
#Extras
Shortcuts Overlay Userscript Canapin released a userscript that overlays Discourse keyboard shortcuts, toggled via the toolbar icon. read more
Forcing the sidebar open hipp0 removed the sidebar toggle for a “standard” layout; chapoi and others pointed to alternate frameworks like Discourse Bars and Right Sidebar Blocks for admin-driven but user-toggleable sidebars. read more
Voice calling integration Haris asked about adding voice calls; awesomerobot pointed to chat voice channel plugins, including a Discord-style voice rooms component. read more
Discobot onebox logic Noble_Fish found that Discobot’s tutorial ignores markdown link syntax; Moin traced it to the onebox instruction checker. read more
Rich editor BBCode math glitch Users observed [details] tags turning into math blocks in the rich editor; panic isolated a <pre><code> clipboard wrapper as the culprit. read more
Discourse Signatures update Falco pushed a feature branch adding group- and category-based restrictions to the official signatures plugin. read more
#Translations
Batch translation updates Translators requested tooling to purge outdated keys after English changes. read more
Also see the related French translation glitch in #396403.
gormus hit an error when a tag-chooser form inserted tag IDs instead of names and was blocked by category restrictions; Moin clarified that tag groups limited to one category are unavailable elsewhere Tag-chooser tags are not allowedread more
Noble_Fish reported that pausing a GIF always jumps back to frame 1 instead of the clicked frame, leading to proposals for consistent pause/reset behavior GIF always shows the first frame when paused
merefield rolled out a major Kanban update for Discourse Workflow—adding drag-and-drop, overdue indicators, keyboard shortcuts, and compatibility checks to the admin UI officialDiscourse Workflow
Moin chimed in on the long-standing Discourse Assign plugin topic with translation tips and Crowdin workflow guidance, inviting further suggestions officialDiscourse Assign
Feature “Upload Deletion via API” highlighted the lack of a delete endpoint in the official REST API for uploads, and markersocial suggested a custom automation as a feasible stopgap.
#Self-hosting support: “Archiving Discourse into a Website” asked by Ricardo_Viteri about converting a decade-old forum into a static or read-only site; Canapin pointed to the basic archival tool and related HTML-export solutions.
sam updated the Discourse AI bot to handle deprecated beta headers from Anthropic, advising everyone to pull the latest changes and retry (Discourse AI - AI bot - #183 by sam).
With 118 new posts and 20 new topics yesterday, meta.discourse.org was buzzing faster than a caffeinated squirrel in a theme forest!
In Support, Jesse_Starks wanted to disable the “hot” label on a new community; darkpixlz explained Horizon theme label toggles and menu removal techniques read more.
In Support, long was stymied adding events via [calendar][/calendar]; nat detailed the correct [event …][/event] syntax and composer + menu usage to create themed events read more.
In Bug, RGJ reported that subfolder setups broke the admin export short-URL; zogstrip merged a fix in PR 37996 to correct routing read more.
In Bug, webhooks were rejecting private tags; nat confirmed a patch deployed via PR 37942 resolves the issue read more.
In Bug, Moin noticed the group filter was showing deleted topics; zogstrip addressed it in PR 38000 to exclude removed content read more.
#Sysadmins
In #Sysadmins, Mid observed the --two-container flag removal from discourse-install; Falco explained support burden concerns and suggested manual or plugin-based setups read more.
#Self-hosting support
In #Self-hosting support, Andrés_Tarrío asked about pre-upgrading pgvector to 0.8.0; Falco confirmed it’s safe for Discourse 3.4.5 and common on hosted PostgreSQL services read more.
In Feature, nathank proposed enabling admins to activate changed email addresses via the UI; discussion focused on improving /admin/users flows to reduce console reliance read more.
In General, Canapin wondered if upcoming Discord age verification will drive new Discourse communities; shared https://discordless.com as a possible hub and debated order logic read more.
#Extras
In #Extras, Canapin released a “Shortcuts overlay” userscript that remembers state, adds missing keyboard shortcuts, and adapts to dark/light modes—ideal for learning keyboard-shortcutsread more.
nat provided three help-desk resolutions: correcting [event] syntax for the calendar plugin in 396758/4, fixing webhooks with private tags in 396521/5, and updating Chinese #translations for the AI filter count in 396757/3.
zogstrip fixed export routing in 396783/2 and excluded deleted topics from group filters in 396807/3.
Falco clarified the removal rationale of the --two-container flag in 29413/138 and confirmed a safe pgvector 0.8.0 upgrade in 396794/2.
sam assessed the complexity of pausing GIFs in 396691/2 and tagged regressions in 396604/3 and 396679/7, marking them for prioritization.
pmusaraj merged a fix for the mobile UX bug where the usercard cloak persisted after touch in 319061/4.
mcwumbly investigated the unused filter.description.tags_alias string and initiated its removal via PR 37994 following discussion in 375610/2.
That wraps up today’s whirlwind of updates—may your notifications stay tidy and your community grow, one puppy-approved feature at a time!
Support: Use of H1 vs. H2 headings in composer stephtara asked if they could hide level 1 headings in the composer toolbar, sparking an accessibility and SEO discussion. Canapin explained how to target button[data-name="heading-1"], ToddZ shared a quick CSS snippet to remove H1 options in both Markdown and RTE snippet, and bryce linked the CommonMark spec for why # maps to <h1>.
#Theme component: Discourse Age Check awesomerobot outlined GDPR vs. COPPA considerations for storing birthdates, asc asked about limiting DOB visibility to admins (requiring a plugin), and chapoi clarified the component only validates existing user fields scope.
#Site feedback: Shouldn’t unlisted topics be excluded from “Related”? ToddZ noticed unlisted topics appearing under “Related” despite being hidden from search, and Moin explained that trust level can override listing, suggesting deletion if they’re no longer needed.
A 24-hour snapshot (2026-02-26 → 2026-02-27) of what the community (and Discourse team) were building, debugging, and debating—backed by links to the actual threads.
Key Stats
New posts:144
New topics:12
Top users (posts / likes received in the last 24h):
Category IA changes continued to iterate: mcwumbly described several structural adjustments (including restoring “General” as top-level, and dialing back “show subcategories” in some areas) in Updating how categories are organized on Meta.
Tablet posting ergonomics resurfaced: accidental “premature posting” remains a real-world pain point when keyboards shift the composer, discussed in The awkward mishap of premature posting.
Agent automation met community norms: pranciskus shared an integration enabling OpenClaw agents to read/search/filter and optionally post; Bas urged strong defaults and clear labeling for AI-generated replies in OpenClaw plugin for Discourse integration. (Related language/community thread: Discourse接入Openclaw机器人ai.)
Performance troubleshooting in the wild (Chinese): first-load latency dropped dramatically after adding a CDN, as confirmed by the OP in 首次访问特别慢,将近30秒才完成。我需要做什么优化呢?.
Access control via “likes” got implemented with a clever badge + automation pipeline (SQL badge → group membership → category permissions), fully written up by the OP in Restrict posting in a category until they “like” a topic. Policy-based alternatives were also discussed via Discourse Policy.
If Meta looks a little more purple today, that’s because it is—and judging by the thread volume, the new brand refresh has everyone looking twice at buttons, fonts, and color schemes.
RGJ flagged that category mentions (e.g. #bug) can trigger the “think twice before posting that link” warning, proposing that category/tag mentions be excluded; Moin and others discussed the tradeoffs (especially for duplicate theme-component links) and the awkward overlap between category names and tags read more.
Moin questioned the opacity rules for hidden revisions, noting that the right-side header gets dimmed while the revision content doesn’t—raising whether this is intentional UX or an inconsistency read more.
In a Chinese-language thread, qi_lu asked whether Discourse has AI-focused “skills” / guidelines for plugin development; Falco shared practical “context is king” advice (working from repo root, plan-mode, local dev/test discipline) and pointed to the project’s evolving AI guidance docs read more.
Canapin asked for best practices to design a simple CSS-only theme without breaking UI contexts (nav-pills, select-kit variations, styleguide limitations), sparking interest from others following along read more.
The Meta-branded redesign refresh discussion continued: Falco praised the new look, awesomerobot explained why user-selected palettes get overridden, and NateDhaliwal reported a tag-field rounding/cutoff issue when tags wrap to a second line read more.
#Migration
A large-scale migration thread (≈800k topics / 12k DAU) got a concrete answer: Falco emphasized that disk IO + caching are often the real bottlenecks (not “special architecture”), especially during the first month when slow pages and DB tuning needs reveal themselves read more.
#Plugin
The Private Topics Plugin received a quick maintenance fix after a deprecation warning (inject → service in Ember) was reported; RGJ pushed a patch and confirmed it was harmless but worth cleaning up read more.
#Translations
gerhard investigated why many translations were removed, attributing it to Crowdin not returning all translated strings and committing to get it corrected ASAP read more.
A request to include the Discourse post id in data exports was met positively: awesomerobot opened a core PR to add it, suggesting a fast path from idea → implementation read more.
#Feature
Follow-up praise landed for adding OpenGraph og:image:width/height/type: users reported noticeably better Facebook integration after the latest update read more.
Canapin, after building a near-complete Lucide icon set for Discourse, asked how to find the full list of core icons; Moin pointed to svg_sprite sources and suggested scanning register_svg_icon usage (including plugins/components) read more.
A Custom Header Links update error turned out to be tied to a Matrix URL format; Moin linked a prior report and a permalink workaround that resolved it for the reporter read more.
A concise admin question: is there a querystring to sort group members by last_seen_at descending (instead of ascending) when viewing a group member list? read more.
A potential UX/regression issue: bulk-adding emails to a group appears to send invitation emails even when “Notify users” is unchecked; the report includes Brevo logs and asks whether “invite flow for non-users” is expected behavior or unintended read more.
darkpixlz reported that warnings converted into public topics can keep a red PM/warning icon in the topic list even though the topic view itself looks correct—suggesting a topic-list state/badge cleanup issue read more.
A new report: when Styleguide access is opened to “everyone,” the /styleguide page crashes for anonymous users due to a missing admin component module import (discourse/admin/components/highlighted-code) read more.
Falco helped set expectations (and shared a working approach) for AI-assisted plugin development, including concrete workflow tips and a pointer to the evolving AI agent guidance in the Discourse repo read more.
Falco also answered capacity planning questions for a very large migration—highlighting that IO performance and DB caching matter more than “special architecture,” especially in the early monitoring/tuning phase read more.
awesomerobot weighed in on cleaning up overlap between category/tag mentions—supporting the idea that the underused #bug tag might be worth retiring, while noting tags can still be useful in private subcategories read more.
mcwumbly backed the practical next step of cleaning up the #bug tag, and connected the discussion to a related thread about making inline subcategory links more concise read more (see also: read more).
awesomerobot responded to a #Feature/#gdpr request by opening a PR to include post IDs in exports, signaling likely forward movement on the feature read more.
gerhard investigated the root cause behind missing/removed translations, pointing to Crowdin sync gaps and promising a fix as soon as possible read more.
Yesterday’s vibe: Meta got a fresh coat of paint, #bug tried to be both a category and a tag, and Claude got a gentle reminder that context beats vibes every time.
In the last 24 hours, Meta kept humming along with 22 new posts across 4 new topics, spanning everything from NodeBB migrations to Chat image viewer regressions (see recent activity in Sysadmins, Bug, and Support).
RGJ — 2 posts / 2 likes (age-check edge case + plugin activation troubleshooting: age check, plugins 500)
Luna_Mora — 1 post / 4 likes (reporting a chat image fullscreen open issue: read more)
Canapin — 1 post / 3 likes (guidance on feature requests for the calendar plugin: read more)
Moin — 1 post / 2 likes (pointing to prior art on group-member sorting: read more)
sam — 1 post / 1 like (encouraging questions and new topics re: AI bot implementations: read more)
Interesting Topics
#Sysadmins
Twissell hit a undefined method '[]' for nil error while importing posts from NodeBB 4.9.x, and pfaffman narrowed it down to the importer trying to operate on a nilpost object (likely a data read / key lookup problem), plus set expectations about how far community support can go for bespoke migrations (error report, triage, code pointer, import output context).
Luna_Mora reported that chat images sometimes won’t open fullscreen on first view right after upload, but toggling chat fullscreen/mini-mode (or refreshing) restores expected behavior; they also linked to a prior thread that was believed fixed, suggesting either a regression or a variant case (new report, prior related discussion: read more).
Lou proposed an option to collapse the category calendar (shown at the top of categories via the Events Calendar integration) to save vertical space, and floated ideas like “collapsed by default” with user preference remembered per-category (feature request).
In a meta-meta discussion, rokejulianlockhart revisited the perennial “alternative markup syntax” idea and clarified that selling something with MediaWiki-style syntax would be legal, since MediaWiki is FOSS and markup syntax isn’t patented (read more).
NateDhaliwal asked whether a querystring parameter exists to sort group members by “last seen” descending, and Moin pointed to an older topic where others ran into the same limitation/behavior (current question, older related topic: read more).
In a continuing “pagination vs infinite scroll” debate, agemo again asked if “pagination as an option” could ever arrive, pointing out that pagination effectively appears when JavaScript is disabled (read more).
jdc20181 outlined an automation goal: use the Discourse API and/or AI Bot patterns to move topics automatically based on an “expiration date” represented via timestamps in posts (e.g., ban durations), referencing the AI bot integration docs as inspiration (automation proposal, referenced AI Bot post: read more).
A previously opened support issue about “Changing a Category Icon Style” resurfaced as Baha_Alshwaiki1 asked again for help resolving it (read more).
A Chinese-language email deliverability/support thread noted a switch away from Aliyun mail push to Brevo after Outlook delivery problems (IP rejection), reflecting ongoing operational realities of transactional email reliability (read more).
#Theme component
In the Discourse Age Check theme-component thread, RGJ clarified a subtle bypass scenario: users can change the DOB while still on the signup flow after initially failing the age gate, and the underlying request is to flag that first failed attempt as suspicious for admin review (context, clarification](Discourse Age Check - #14 by RGJ)).
In the Discourse AI bot documentation topic, sam noted that “many people implemented this” and encouraged opening a new topic for specific questions—hinting at a growing ecosystem of real-world AI-bot automations beyond the canonical guide (read more).
sam (Discourse Team) chimed in on the Discourse AI bot documentation thread to encourage implementers to bring specific questions to Meta via new topics, helping funnel “how do I…” follow-ups into searchable support discussions (AI bot thread).
Yesterday’s vibe: between nil posts in a NodeBB importer and chat images that need a quick fullscreen toggle to behave, Meta clearly spent the day chasing down the kind of gremlins that only appear when you’re doing everything right.
sam announced a big Discourse AI improvement: a centralized store for credentials (API keys/secrets), making rotation and tool distribution much easier—along with quick mobile UI follow-ups after community feedback in Announcing AI credentials.
The new admin guide explains how to create, reference, rotate, and lifecycle-manage secrets across AI models/tools, including programmatic management, in Managing AI credentials.
The /styleguide page was reported as crashing for non-staff/anonymous users; the fix is being tracked via a core PR referenced in Styleguide page crashes for anonymous.
A “hidden in plain sight” setting: to email a group when new topics appear in a category, configure the group to watch that category (often “watch first post” by default) as shown in the accepted solution to How do you enable “category group notifications”.
Upload management questions surfaced around self-hosting internal screencasts: admins can restrict extensions and max file size, but video-specific constraints (encoding/resizing controls like images) aren’t as granular in core settings—discussion in Size restrictions on videos?.
A Backblaze B2/S3-compatible backup upload issue posted stack traces pointing at multipart upload abort + checksum mismatches, captured in Error uploading backup to B2 (useful for anyone running non-AWS endpoints).
NodeBB → Discourse migration got practical: null-checking and avoiding “silent failures” (missing posts without noticing) were discussed with concrete Ruby snippets in Migrate a NodeBB forum with MongoDB to Discourse and follow-up hardening advice in read more.
The manual mobile/desktop toggle (and ?mobile_view=...) is going away in favor of breakpoint-driven responsive layouts; rationale and tradeoffs are discussed in No more switchable mobile/desktop layouts?.
Translation-length meets layout reality: German strings exposed that four side-by-side inputs are too tight in the AI cost configuration UI, with proposed 2x2 grouping and mobile stacking in Field alignment issues in LLM cost configuration in German.
A small but important RTL polish: the “external link” icon in featured links appears incorrect in RTL contexts, reported in External link icon not RTL.
A nuanced request: make a custom user field required for all users (including OAuth/SSO signups) while only allowing it to be edited once—proposal and constraints laid out in Custom User Field Required for All, but only Editable ONCE.
Event-heavy pages can feel “all calendar, no topics”: there’s renewed interest in letting users collapse/expand the category calendar for better scanning and UX, in Collapse category calendar.
#Translations
A request to become an Arabic translation reviewer turned into a broader discussion about agency-managed languages, quality concerns, and what “community review” could look like, in Request to be Arabic translation reviewer and follow-ups read more.
That’s all for today—yesterday’s theme was “less toggle, more responsive,” and “one place to rule your API keys,” which is exactly the kind of spring cleaning a forum can get behind.
Mobile/desktop UX changes continued to ripple through theme/components and admin expectations (see the ongoing discussion in read more).
Chat kept getting attention on both design polish and new capabilities, with the redesign feedback thread active (read more) and chat pinning announced (read more).
Admin/reporting behaviors and “why does this setting not search?” UX continued to generate practical feedback (read more, plus the related reporting thread read more).
Frequently referenced / resurfacing “helper” threads (linked from today’s discussions)
The removal of the underlying switchable mobile/desktop layout toggle sparked deep discussion about capability-driven responsiveness and impacts on customizations in No more switchable mobile/desktop layouts? (mobileux).
The Meta Branded redesign feedback thread kept rolling; users reported chat composer rounding “eating” typed lines and the team worked on reproducibility details in Meta Branded redesign: theme refresh (with follow-ups at post 39 and post 42).
#Self-hosting
A failed update caused by Ruby version mismatch was resolved with basic path/command corrections (and a reminder that rebuild handles upgrades) in [Solved] Discourse crashed during update (solution path at post 4 and wrap-up at post 6).
A formatting question about preserving extra spaces turned into a nice mini-pattern library: tables, wraps + CSS, and “don’t fight Markdown” guidance in Extra spaces within text (solution: use a table).
Translation contributors discussed the realities of revisiting already-approved strings, with a concrete plan to improve internal tooling around un-approving on new suggestions in Request to be Arabic translation reviewer (notably the tooling plan in post 7).
Group member sorting got a small but meaningful improvement: honoring asc=false in the querystring is now on track, following the feature request in Honor the “asc” querystring parameter on group sort (with implementation confirmation in post 2).
awesomerobot explained the rationale behind capability-driven responsiveness (foldables, viewport shifts) and how to adapt templates post-toggle removal in No more switchable mobile/desktop layouts?; they also clarified the “gradual compatibility” path in post 7.
Falco suggested a pragmatic workaround for tablet users by combining the browser’s “Request desktop site” with Discourse font-size preferences in No more switchable mobile/desktop layouts?.
manuel dug into the chat input clipping reports during the redesign feedback cycle, asked for tighter reproduction context, and confirmed they could repro on mobile in Meta Branded redesign: theme refresh and post 42.
Yesterday’s theme: we pinned messages in chat while unpinning an entire mobile/desktop toggle from existence—may your oneboxes behave and your viewports stay delightfully adaptable.
mcwumbly kicked off an experiment in collaborative “content gardening”—a lightweight coordination hub for tidying, tagging, deduping, and marking solutions across Meta, plus a side-discussion on permissions for who can tag what (especially in Documentation) (read more). Related follow-ups included tag/tidy requests pointing at Upcoming Changes docs (read more, read more) and the doc-tagging guidelines in Writing effective documentation (read more).
A quick-but-impactful cleanup: a misspelled tag (#file-managment) was spotted and corrected to file-management, and the thread also surfaced confusion around #phbb vs #phpbb tag usage (read more).
“Where did Related topics go?”: NateDhaliwal noticed Meta showing only Suggested until everything is read, then traced it back to the mobile/tab UI work discussed in the underline-indicator topic—pending fix (read more, read more).
#Site Management
A new official guide landed: Form templates (structured, validated topic-creation forms) including how to enable them via upcoming-changes and manage them in /admin/customize/form-templates (read more). It also explicitly contrasts form templates with classic topic templates (read more).
#Community Building
A thoughtful debate unfolded on how to mark content as human-written vs AI-assisted vs AI-generated—with strong sentiment that tags alone are too invisible and that in-content indicators (like <details class='ai-quote'>…) are clearer for readers (read more). The discussion referenced the Quote Callouts component as another “make it visible in the content” option (read more).
#Feature
Momentum built around renaming “AI Persona” → “AI Agent” in #ai:sam argued the current term is unfamiliar in the wider world, and Falco agreed it should happen “ASAP,” with translation impact noted (read more). Related: a “what should be tagged ai?” tidy callout pointed at Announcing AI Credentials (read more).
A feature request asked for category calendar options like default view mode (month/week), per-device preference, and even database-field sizing questions for event descriptions, referencing the earlier “collapse calendar” request (read more, read more).
Another feature request looked at nested groups / group-of-groups so a single @mention can notify members of many sub-groups; a practical workaround was suggested via Discourse Dynamic Groups plugin (read more, read more). Prior art: hierarchical group membership discussions continue to linger in the background (read more).
#Announcements
Chat UX is getting sharper: pinned chat messages shipped, and early feedback highlighted that pins are very subtle and that showing message dates in the pins UI would help—plus a broader UX comparison to WhatsApp/Telegram/Slack/Discord models (read more). A directly-related feature request argues pins should appear at the top of chat rather than in a separate drawer/page (read more).
A privacy/experience bug report: topics by ignored users still show up in digest emails because the digest query doesn’t exclude ignored authors (with a clear repro + likely culprit method) (read more).
Admin automation snag: watched words → auto-tagging throws an error when adding a keyword/tag pair, with evidence pointing toward a frontend serialization issue on current v2026.3.0-latest (read more).
Moderator workflow regression: whispers bump topics only until refresh, then the topic snaps back to last public activity time—making “Latest” unreliable for staff who rely on whispers as an internal queue (read more). (This also echoes longstanding “bumping” expectations discussed in other bump-related requests, e.g. read more.)
A tricky access issue: a site where admins can browse normally but regular users only see a loading spinner, with initial triage focusing on whether it’s site-wide, safe-mode behavior, and browser console errors (read more).
Passkeys hit trouble: hardware passkey registration fails with a 500 on register_passkey.json across multiple browser/OS combos; troubleshooting started by narrowing browser specifics and checking console details (read more).
#Self-hosting
A solved “rebuild app” failure: what looked like a pnpm issue was resolved by updating the launcher/base image (git pull), reinforcing that rebuilds aren’t always “set and forget” across environments (read more). This also cross-linked with recent update/crash troubleshooting in another solved thread (read more).
#Migration
A sharp edge in the phpBB importer: attachments with duplicate real_filename inside the same post can collapse into repeated images after import; a proposed fix is to key uniqueness on physical_filename (or append attach_id) (read more).
A Marketplace request laid out a full “Skool-like UX” build: Horizon theme + feed styling, sidebars, previews/thumbnails, chat, gamification, automation, calendar, solved, and more—with offers to coordinate implementation and hosting/config support (read more).
mcwumbly launched the content gardening hub and helped clarify how it should work (and who can do what), then later tied it back to the broader solved/completed consistency discussion (read more, read more). mcwumbly also quickly fixed the misspelled tag report (read more).
chapoi jumped in to action tagging requests in the gardening thread—applying upcoming-changes tagging and aligning documentation tag-types like #explanation as per the doc guidelines discussion (read more, read more).
sam pushed to rename AI Persona → AI Agent (with an eye on real-world terminology), keeping the ai UX/product language aligned with common usage (read more).
Falco was active across chat and AI: he argued pinned chat messages are too subtle and should surface dates (and possibly adopt a more prominent UX pattern), and later endorsed the AI Agent rename as overdue (read more, read more). He also flagged a mobile tab disappearance related to the “Suggested/Related” UI changes (read more) and posted ongoing updates to the Resenha voice rooms plugin (read more).
lindsey clarified pinned-message UX behavior (date is visible once you jump to message context) and published the new form templates documentation (read more, read more).
j.jaffeux explained why pinned-message dates went missing (a non-interactive design choice) and suggested a “full date” display as a likely solution path (read more).
awesomerobot confirmed the missing mobile tabs were related and noted a fix is incoming; they also began first-pass troubleshooting on the “non-admin users can’t load pages” support case (read more, read more).
featheredtoast shared an update on making the discourse/discourse Docker image officially supported—blocked on internal hosting dependencies—while confirming it’s in active use for their hosted sites (read more).
supermathie helped debug passkey registration failures (browser + error details + console checks) and provided a pragmatic “use the API spec + requests” approach for Python integrations (read more, read more).
HAWK suggested form templates as a possible solution for adding “accept terms before posting” behavior in the composer workflow discussion (read more, read more).
Yesterday’s vibes: may your chat pins be less subtle, your tags correctly spelled, and your new “content gardening” checklist always one checkbox away from tidy perfection.
mcwumbly opened a broader discussion on how Meta’s Support categories should work (and who they’re for), including whether “marking solutions” is valuable and how to help newcomers actually do it: Improving the experience in our support categories. The thread quickly got into “just-in-time education” nudges near the Solved button (read more) and lightweight “gardening sweep” process ideas (read more), building on earlier experimentation in the gardening hub: read more and the now-closed “Solved consistency” grab-bag: read more
The collaborative gardening experiment continued to evolve, including changes to let TL3 users fix titles/tags in read-only documentation areas by granting limited create privileges plus approvals: read more. This also surfaced adjacent mechanics like staff “accepting answers” notifications (read more) and the existing prioritize solved topics in search setting (read more)
#Community Building
A feature suggestion asked for a way to prevent a moderator/admin from reviewing flags on their own rule-breaking content, to reduce “rogue staff” self-protection scenarios: Prevent Staff Flag Review. Replies pushed back that this is fundamentally a staffing/trust problem rather than a product mechanism, with a reminder that the Review area provides visibility into actions: read more
#Administrators
ToddZ posted a detailed (beta) guide on re-creating the deprecated “Lounge” concept, including two different patterns depending on whether you want Lounge access to be lost when TL3 is lost: DRAFT: Re-creating the Lounge (and immediate editorial feedback landed too: read more)
A Chinese-language support topic explored changing tag slugs (especially when the tag name contains non-Latin characters). It turned out the UI is brand new behind experimental_tag_settings_page: 怎么在 Discourse 更改标签的 slug?, with the key pointer from nat here: read more
A self-hosted admin hit “You have viewed this too much” while bouncing around the admin area and wondered if new reporting rate limits shipped with the refreshed reporting experience: [New Reporting Experience] “You have viewed this too much”. The community noted it’s not new and may be transient/behavioral rather than a new setting: read more
An older “Interact with Discourse from Python?” thread got revived with a practical question: how to get pageview/report data not shown in API docs. The advice ranged from “reverse engineer the admin requests” (read more) to using Data Explorer and pulling results via API: read more (with the referenced how-to: read more and the classic “reverse engineer the API” pointer: read more)
A long-running “legacy trusted.gpg keyring” support thread turned into a mini resource roundup on backup/restore options (UI + CLI), including links to restore guides: read more (plus the CLI backup guide: read more and CLI restore guide: read more)
Passkey registration issues (“can’t set up passkey on any discourse”) progressed from browser/requirements hypotheses to a shipped fix via PR; the fix announcement landed here: read more (original report: read more)
A self-host admin hit a hard failure when trying to “Delete all posts” before deleting a user account; logs pointed to a foreign key constraint involving reviewables and reviewable notes. The thread suggests checking review queue items/notes as a workaround until the suspected regression is addressed: User deletion problem, returns “Error 500” on delete all posts
Two older UX issues got resurfaced and progressed with fixes: quoted @mentions using a tertiary color that fails WCAG palettes (read more, fix attempt noted here: read more), plus staff action log filters looking poor on mobile (read more) and badge long-description fields overflowing boundaries (read more)
A new how-to was posted for configuring Discourse MCP with OpenAI Codex CLI, clarifying install method, where settings belong, and how to think about the three-component architecture (forum + MCP server + client): Discourse MCP Setup in OpenAI Codex CLI. The author also cross-linked it from the original MCP announcement: read more
mcwumbly drove two parallel “Meta maintenance” threads: the big-picture support-category design discussion in Improving the experience in our support categories and continued operational tweaks in the gardening hub—especially around enabling TL3 cleanup powers in documentation categories: read more. They also formally retired the older “Solved grab-bag” and redirected discussion into more focused threads: read more
Bas asked for concrete context (vs. hypotheticals) in the staff-flag feature request thread: read more, and clarified the meaning of “boost” in ActivityPub/Mastodon terms in Quote Boost support?
awesomerobot landed/queued multiple UX polish fixes by linking PRs directly from reports: the WCAG palette quoted-mention issue (read more), staff action log filter layout on mobile (read more), and badge description overflow (read more). They also confirmed current limitations around video-specific upload controls in Size restrictions on videos?
Yesterday’s Meta had a clear theme: if you can’t find the big green Solved button, don’t worry—someone will probably add a helpful nudge (and put the setting behind an experimental flag) before the topic auto-closes in 30 days.
nat kicked off the “Discourse Without Borders” series with multilingual support front-and-center, then promptly had to field-test it when elmuerte posted some cuneiform and hit weird editing/language-edge behavior—turning a lighthearted joke into a real-world stress test of language tooling. read more
A sharp repro landed for a tags/settings edge case: when slug_generation_method is set to “none”, newly-created tags can’t be edited in the experimental tag settings UI due to a missing tag_slug param. Moin documented steps, impact (including defaults for some languages), and nat confirmed a fix is coming. read more (Related: earlier slug discussion read more)
Multisite operators compared notes on why running migrations concurrently can fail; tgxworld dug into backtraces pointing at MiniRacer context handling and proposed a fix direction, while the OP narrowed it down to multiple rake tasks being chained together. read more
Passkeys and 2FA UX got another refinement request: with enforce_second_factor_on_external_auth, the “second factor required” screen omits the passkey login option—making passkey users take an unnecessary detour. read more (Related passkey debugging thread: read more)
Discourse AI permissions continued to be ironed out: the long-standing mismatch where AI behavior doesn’t respect the “everyone” group was acknowledged as needing cleanup, with notes that a broader tidy-up is on the list. read more
#Site feedback
The “support categories” experience discussion kept converging on nudges that actually work: ideas ranged from composer-time education modals to more context-aware solution prompting, with a side-thread pointing to existing culture-building guidance and reminder tooling. read more (Related: community culture thread read more, Solved reminders plugin read more)
The collaborative gardening experiment continued to iterate on how Meta can keep support and documentation tidy without burning out staff—especially in “drive-by support request” scenarios where solved-marking and follow-up are fragile. read more
A thread on whether Discourse “nudges” major third‑party instances turned into a practical tip exchange about safe mode, the gotchas of disabling theme components everywhere, and why “make it default” tweaks can accidentally break expected UX (like forms/placeholders). read more (Example theme-dependent UX: Placeholder Forms read more)
Windows developers asked whether old docs still apply; the community recommended modern paths like WSL2 or Linux VMs, plus links to current dev install docs and a Docker alternative—along with practical notes like remembering to start Redis/Postgres in WSL sessions. read more (Related: dev install guide read more, Docker dev install read more)
A tricky 500 error when deleting a user and all posts was traced to flagged-post workflow state: deleting a moderator note on a flagged post unblocked deletion. Staff confirmed the workaround and queued internal follow-up. read more
Admins reported an Error 500 when moving posts, and after initial HAR/log checks didn’t reveal much, attention shifted toward database/container topology (separate DB server, separate containers) as a likely factor affecting what’s visible in nginx logs. read more
#Plugin
Resenha’s Discord-style voice rooms plugin shipped a hefty weekly update: badges, AFK detection, push-to-talk, stage rooms, and early analytics work—all summarized by Falco with screenshots and implementation notes. read more (Related long-running plugin support: Locations plugin momentum read more)
#Theme component
The “Topic Excerpts & AI Gists Button” component was refactored so its formatting works cleanly with the newly modernized Foundation design direction—keeping compatibility with both the original and modernized variants. read more (Related design thread: Modernizing Foundation read more)
A new consolidated tag-styling theme component attempt landed: a combo of “Remove Tag Dashes”, “Tag Styles”, and “Tag Icons”, with configurable dash removal, multiple styles, and automatic contrast-aware text color. read more
#Feature
The Events/Calendar plugin feature request focused on real-world utility: increasing the event description limit so groups (like running clubs) can include turn-by-turn directions that carry through to external calendar entries (e.g., Google Calendar). read more
nat published the multilingual-focused blog companion topic and engaged directly with real multilingual edge cases (including post language metadata changes after unusual script input). read more and followed up on the tag slug/settings breakage with a “fix soon” confirmation. read more
Falco delivered a major Resenha feature drop (badges, PTT, AFK detection, stage rooms, and analytics), complete with screenshots and practical constraints around browser focus. read more
supermathie raised a passkey/2FA UX gap: passkey login missing from the enforced-second-factor screen after social auth, keeping the passkey rollout focused on fewer dead ends. read more
awesomerobot responded to an SSO “where do I enable this?” support question with a clarifying triage question and the most relevant official setup paths (DiscourseConnect vs OAuth2). read more
mcwumbly connected current “mark as solved” UX ideas with prior art, bridging today’s support-category discussion to older community-building guidance for increasing solve rates. read more and continued the meta-level conversation in the culture thread. read more
tgxworld investigated multisite migration concurrency failures, spotlighted MiniRacer as a likely contributor, and linked an upstream PR aimed at safer behavior around forking. read more
sam noted that the “AI doesn’t respect everyone group” behavior is slated for cleanup work, setting expectations while confirming it’s recognized internally as needing attention. read more
chapoi confirmed the user-deletion 500-error workaround and flagged the issue for internal tracking, helping convert a one-off admin headache into actionable follow-up. read more
Yesterday’s lesson: whether you’re shipping voice-room badges or accidentally summoning ancient cuneiform, Meta will happily turn it into a reproducible bug report.
Also seeing fresh replies on longer-running threads: the “Suggested/Related” underline indicator still looks off for some (read more), calendar event description length got more nuance (especially for calendar exports) (read more), Discourse ID login “redirect URI already exists” resurfaced after a reinstall (read more), and a non-admin “Oops, this page doesn’t exist” after updates/theme changes continues to be investigated (read more). Sponsorship news also landed in the Discourse Chatbot mega-thread (read more), and a reminder popped up about Private Topics Plugin category security footguns (read more). Finally, language inclusivity got another friendly bump on the blog post thread (read more).
Interesting Topics
#Praise
ice.d posted a heartfelt thank-you letter to the Discourse ecosystem and helpers, highlighting how “own your own community” and a responsive Meta makes the platform feel truly open-source in practice (read more).
stephtara revisited Google Sheets oneboxing and explored a workaround using published embeds—then darkpixlz provided practical CSS to make the resulting iframe usable, sparking follow-up ideas about making embeds “non-techy-user friendly” (read more).
Discobot confusion surfaced: welcome PMs vs tutorial restarts, closed conversations, and how to re-test modified messaging. The thread also collected alternatives like Discourse Frotz and the Custom Wizard plugin as different onboarding patterns (read more, Discourse Frotz, Custom Wizard plugin).
A sharp performance report: enabling ai-search semantic search caused CPU to peg and Sidekiq backlogs to balloon until the feature was disabled, raising questions about expected load and safer rollout patterns (read more).
SSO setup stumbling block: a Laravel integrator couldn’t find DiscourseConnect settings and Moin spotted an admin UI filter issue (plus a gentle reminder that the instance looked outdated and should be patched) (read more).
Basic HTML view testing on an extremely old Chrome build revealed “can’t scroll” behavior; the resolution was essentially that the test browser was too ancient to be a meaningful baseline, with a pointer to an earlier “no scrolling in unsupported browser” report (read more, related older report).
Admin UX papercut: creating a tag group without tags shows the raw translation key (tagging.groups.cannot_save.no_tags) instead of a human message; the fix was identified as wrapping the key with i18n() and a PR was opened (read more).
Discobot configuration discoverability: settings live under the Narrative Bot plugin page, but editing actual user-facing text requires hunting through Site Texts—prompting a thoughtful discussion about why “settings vs translations” are separated and how mixing them can be confusing in multilingual contexts (read more).
#Plugin
“Done” status for Discourse Assign: admins using Assign for team workflows asked how to mark items complete. The thread clarified there’s no single “done” action by default, and discussed using tags/closing/unassigning, plus where “assign status” controls actually live in the UI (read more).
#Theme component
A new theme component dropped: Tag Style Tool consolidates tag appearance tweaks (icons, styling, compatibility fixes). Early feedback immediately asked for clearer Font Awesome guidance and more approachable color selection for non-RGB folks (read more, theme install guide, beginner’s themes guide).
Discourse Category Headers got a bugfix: a user asked how to “install a PR,” prompting an explanation of what PRs are; the fix was merged and the practical answer became “just update your component” (read more).
#Community Building
Built-in pages vs custom content: stephtara questioned the value and naming/URL constraints of /guidelines (called “FAQ” in navigation), /about, and how to best structure “house rules” vs a real FAQ category—especially in multilingual communities wanting localized slugs (read more, older FAQ/GUIDELINES naming thread).
Embedding Discourse as “fullApp” raised sharp edge-cases: enabling embed_full_app still behaved like a comment embed (crawling discourseEmbedUrl and generating junk topics after auth redirects), leading to questions about requirements and safe behavior under login-gated hosts (read more).
tshenry reported an admin-facing translation regression where a tag-group validation modal shows a raw i18n key instead of the translated message (read more).
keegan shipped another fix for passkey setup/login issues by pushing a follow-up PR and asked for continued reports if problems persist (read more).
chapoi clarified workflow expectations in Assign: there’s no built-in “done” marker, and their practical approach is closing topics and/or using “fixed/completed” tags to indicate completion (read more).
mcwumbly shared how Discourse handles assignments internally (often “unassign + comment,” optionally close topics) and explained when they reach for more structured tooling for multi-step work (read more).
Yesterday’s vibe: passkeys got patched, Discobot got poked (again), and tags got a fresh coat of paint—Meta stayed true to its favorite hobby: lovingly polishing tiny sharp edges.