Even more!
But wait, there’s more! We do our best to highlight new features and changes for you, but there’s always too many changes to detail. For a full list of new features, bug fixes, UX improvements, and more, be sure to review the Additional Features and Fixes listed below.
Plugin improvements
discourse-akismet
Bug Fixes
- Remove
discourse_devdependency from plugin.rb (185)
discourse-anon-usernames
New Features
- Add anonymous username generator plugin (1)
Bug Fixes
- Reduce generation strictness (2)
discourse-category-experts
Bug Fixes
- Auto-tag improperly when category is changed (215)
discourse-doc-categories
New Features
- Bump topic on OP of doc categories topics (61)
Bug Fixes
- Ensure PMs are handled when moving index topics (62)
discourse-no-bump
Bug Fixes
- Remove bump on revision logic (80)
discourse-preset-topic-composer
Bug Fixes
- Update for core change to new topic btn (53)
discourse-route-blocker
Bug Fixes
- Raise
Discourse::NotFoundwhen route is blocked (9)
discourse-theme-creator
Bug Fixes
All Features and Fixes
New Features
- Add plugin hook for extra username validations (35522)
- Promote discourse_reactions_allow_any_emoji out of experimental (35589)
- Add full-text search for chat messages (34704)
- Add Czech default quotation marks (34797)
- Add estimated completion time to AI translation backfill (35474)
- Append limited search results with semantic search (35446)
- Experimental Photoswipe Lightbox (35109)
- Add settings for connect/revoke capability in Login with Amazon (35387)
- Enforce prosemirror-gapcursor on additional block nodes (35415)
- Always show All, Topics, and Replies subtabs for unified new (35292)
- Support for newer Gemini Embedding model (35390)
- Hosted LLM credit system (35162)
- Auto enable AI search (full page) when no regular results (35336)
- Disable link notification user preference (35352)
- Link to “All settings” for real in the admin sidebar (35263)
- Update India Diwali 2025 Holiday (35354)
- Switch to markdown when unsupported tokens are found on rich editor (35044)
- Allow adding anchor tag to 404 page title (35318)
- Add locale as a filter on topic /filter (35299)
- Also process manually updated translations (35276)
- Add the option to flag, delete and silence in LLM Triage (35285)
- Introduce ‘google_site_verification_token’ site setting (35229)
- Add oneboxes and lightboxes to localized posts (34900)
- Add plugin_modifier to include AI summary in topic view serializer (35110)
- Split setting for allowing mods to manage categories and groups (35174)
- Allow editing theme-owned palettes (34722)
- Bump wiki topics when OP is edited (35137)
- Add site setting to prevent mods from changing trust levels (35160)
Bug Fixes
- Filter out hidden/whisper/deleted posts from keyword filter. (35648)
- Can’t update close based on last post timer to close timer (35541)
- Ensures edited post in fast edit is not mutated (35622)
- Improves position of post toolbar on iOS (35574)
- Improves modal on iOS when input is focused (35619)
- Restore support for normalized plugin routes under
admin/(35598) - Topic filter should respect whisper rights (35555)
- Add request tracking headers to Message Bus responses (35537)
- Clear partial flag when streaming tool calls finish (35605)
- Add distinct emoji context for discourse-reactions picker (35614)
- Rich editor input rule wrapping missing options (35548)
- Prevent duplicate PMs when multiple LLM triage rules flag same post (35596)
- Twitter login problem check not reporting accurately (35593)
- Moving first post sequentially doesn’t bump the destination topic (35559)
- Fully hides section if user can’t send dms (35595)
- Handle media optimization worker load timeouts and errors (34943)
- Skip trust level changes when group grant_trust_level is 0 (35572)
- Lightbox img size within details element (35570)
- Add extra tag_id, topic_id index to topic_tags (35565)
- Always save post drafts no matter content length (35540)
- Duplicate results in AI quick search (35554)
- Update optionalRequire paths after admin directory move (35551)
- Ensure AI default LLM model fallback is present (35549)
- Revert scroll on focus solution (35544)
- Rich editor link toolbar Max call stack exceeded (35530)
- Fix scroll more chat spec (35543)
- Make system user fallback optional for category email (35536)
- Handle cancel action in topic reply choice dialog (35534)
[rich editor]convert newlines to hard breaks when parsed from HTML (35518)- Add Azure communication service endpoint to SMTP authentication override (33226)
- Persist reviewable notes when toggle tabs (35495)
- Ensure chat service has loaded channel before rendering channel (35433)
- Adds timeout to prevent-scroll-on-focus modifier (35503)
- Prevents body scroll in input focus (35497)
- Prosemirror input rule code mark check (35416)
- Improve topic tracking state sync (35478)
- Disable AI Problem Checks (35475)
- Job exception: Holidays::InvalidRegion (35473)
- Allows check_policy to find mailer class (35464)
- Add data attrs to quoted images (35455)
- Phantom notification when being added to an event in a message… (35459)
- Unsuspend a moderator (35452)
- DeleteReplies should use the guardian instead of checking for staff (35443)
- Remove category definition topics in hot (35449)
- Improves input method editor in chat (35448)
- Don’t create AI Problem check trackers without a target LLM. (35447)
- Add lightbox class to chat quoted images (35442)
- Show flair visibility warning after groups configuration page reload (35445)
- Wide images on FAQ page overflowing on mobile (35398)
- Event location field in .ics / google calendar exports (35355)
- Eager “load more” in users directory (35439)
- Fix a loading loop when a topic is removed (35409)
- Don’t try to track search suggestion clicks (35431)
- Ensures user can DM to show start new dm button (35440)
- Broken reviewable link to relevant automation (35434)
- Only load the api-docs rake task definition when required gems are available (35432)
- Subcategories_with_featured_topics rendering of topics (35418)
- Clear stored mark on rich editor mark input rule conversion (35360)
- Moderator notifications when new post auto-silences a user (35403)
- Exclude fields hidden on sign-up from invite signup form (35405)
- Twitter health check broken on Faraday update (35407)
- Handle nil @post in CookedProcessorMixin for chat messages (35386)
- Update composer placeholder when toggled (35383)
- Moving a topic’s first post to an existing topic resets bumped_at (35373)
- Missing topic properties in category-featured-topics (35380)
- Watching_first_post topic filter & query (35353)
- Treat the topic status enabled param as a truthy value. (35366)
- Remove unused service (35364)
- Resolve race condition where draft is not loaded for a chat channel (35351)
- Use default locale for temporarily_closed_due_to_flags (34718)
- Safari color palette pasting (35348)
- Use system user for email-in when staged users disabled (34655)
- URL encode usernames in grant admin redirect (34664)
- Correct assignment of admin user groups property (35315)
- Reduce false positives in AI LLM status problem check (35304)
- Offline mode should not send typing indicator (35279)
- Invites to private topic when using discourse connect (35303)
- Allow AI tagging automation to tag posts by bots (35310)
- Prevent left-over markup for old hidden post notices (35311)
- Do not return translated name when editing category (35297)
- Ensure scheduled problem checks honor perform_every configuration (35291)
- Add backup codes immediately after adding 2FA (35287)
- PG::UniqueViolation for PostTimings in posts:reorder_posts rake task when PostTiming records have no corresponding Post (35212)
- Let user recover their own deleted topics (35214)
- Possible crash during category creation (35277)
- Add minimal load-more-sentinel height (35262)
- Confirmation prompt breaks when using pipe (35261)
- Remove btn-default from the DActionButton component (35196)
- Another category modal partial loading edge case (35204)
- Opening category dropdown should not reset translated name (35232)
- Simultaneous rich editor data img uploads (35098)
- Remove error section when viewing details for received emails (35228)
- Wildcard watched word and regexps (35217)
- Skip triage on edits when unhandled flags exist (35218)
- Spec ambiguity when selecting category dropdowns (35215)
- Navigating via topic filters should not untranslate a category name (35211)
- Crash in Admin::PluginsController when plugin has nil commit URL path (35186)
- Ensure a reviewable is created when directly taking action on user (35198)
- Align text display behaviour for user-menu-billing with other buttons (35200)
- Double declarative button class names (35177)
- Pass ancestor data to category badge helper (35169)
- Disable replies button until replies are loaded (35136)
- Notification reminder is deleted with bookmark (35141)
- Respect img size when quoting multiple elements (35144)
- Streamline topic bump functionality and notification settings behaviour (34945)
- Removes debugging line (35157)
- Don’t link seeded LLMs on the features page (35151)
- Use persona’s allowed groups for AI helper’s custom prompts access (35150)
- Allow saving category when color attributes are 3-digits hex (35119)
- Don’t update last_seen_at when impersonating a user (34872)
- Allow mediaconvert client without endpoint (35135)
- Show more button now loads additional root-level subcategories (35101)
- Allow aws mediaconvert to use iam profile (35091)
- Show AI gists in mobile messages (35124)
- Discourse_id_challenge response when using subfolder (35123)
- Hides redundant chat icon on mobile chat routes (35015)
- Run scheduled problem checks even when no tracker exists yet (35102)
- Notification reminder is deleted with bookmark (35069)
- Post voting comments editing UX (35108)
- Clicking on subject in admin email logs broken (35030)
- Translate string in search 404 page (35090)
- Topic pagination overflow with deleted posts (35081)
- Force update size on full calendar (35075)
- Topic footer dropdown/anonymousOnly null handling (35072)
- Uses css selector to ensure we use waiters (35063)
- Correctly replace emojis in bookmark reminder (35061)
- Avoid returning duplicate voters from
/polls/voters.jsonendpoint (34433)
UX Changes
- When closing lightbox avoid jitter if thumb is cropped (35646)
- Allow inline-footnote content to shrink-to-fit (35633)
- Add modifier to customize invite template (35458)
- Show magnifying glass on left for picker (35621)
- Adds padding top to picker on mobile (35618)
- Simplify PM participant removal (34022)
- Close lightbox on backdrop tap on mobile (35571)
- Set border-radius to 0 for buttons in DMenu (35602)
- Use custom icon for searching in chat (35600)
- Add missing btn class (35562)
- Link to post when clicking on subject in received email logs (35567)
- Make sentiment analysis reports accessible to moderators (35577)
- Move quote and code dark mode styles to element selectors for emails (35576)
- Remove z-index for header notification badge (35575)
- Add missing translations for lightbox (35568)
- Uses flat btn for search filter bar in chat (35566)
- Slightly reduce padding above chat composer (35546)
- Improve messaging when auto closed based on last post topic timer (35538)
- Add class to draft error ignore button (35531)
- Update remove password button to use btn-danger class (35514)
- Show AI gist toggle on /filter route, fix appearance of gists (35521)
- Move AI bot PM to navigation menu (35189)
- Mobile lightbox padding and styling improvements (35494)
- Fix overflow on admin search input (35481)
- Remove total and update backfill message for AI translations (35479)
- Sort AI translations by completion, show decimal between 99 and 100% (35461)
- Additional AI translation chart adjustments (35454)
- Add btn class to wizard buttons (35450)
- Show only posts needing translation for default locale in AI translation chart (35397)
- User card metadata links should use link color (35427)
- Remove redundant unread/new labels for empty topic list (35350)
- Add exact URL matching for sidebar section links (34677)
- Replace dropdown with a dedicated index page for email templates (35284)
- Simplify Composer Discard confirmation dialog: removes Safe draft button (35298)
- Add missing declarative classes to btn (35312)
- Show SCSS files in theme admin “extra files” section (35300)
- Better separate login and authentication settings (33711)
- User inbox styling fix (35258)
- Remove double actions buttons in bookmark modal on mobile (35183)
- Add missing button class to secret toggle (35254)
- Make translations easier to set up by showing requisite site setting (35078)
- Remove subtitle from 404 page (35185)
- Update the copy in settings for the mobile logo (35184)
- Make lightbox hover caption unselectable (35148)
- Rework button classes (34882)
- Always apply discoveries padding regardless of viewport (35154)
- Update topic-footer buttons automatically when viewport changes (35074)
- Show remove password button without suspense (34635)
- Update Discourse ID setting description (35094)
- Add missing post notice styling (35093)
- Add “works with” explanation for Discourse ID logins (35088)
- Improve kbd shortcut appearance on macOS (35099)
- Hide time in month view on mobile (35107)
- Remove love background on hover (35089)
- Fix hover effect on heart icon in double-like button (35086)
- Post notices part 2 (35049)
- Update strings for filter (35062)
Security Changes
- Error responses missing
Cache-Controlheader
Performance
- Optimize AI translation stats query and remove caching (35597)
- Use persona cache for translation and summarization lookups (35560)
- Fix N+1 queries due to user custom fields when loading chat DMs (35516)
- N+1 when checking for category moderators when loading channels (35466)
- Use correctly-encoded JS files for webpack chunks on S3 (35444)
- Cache requests when navigating user directory (35371)
- Re-use topic-footer-button elements when rerendering (35167)
Accessibility
- Make ariaLabelledBy conditional for topic lists (35334)
- Remove aria-controls from expandable replies in topic (35333)
- Remove aria-controls from search input, fix result count (35332)
- Add aria-label to search results region (35327)
- Add role to video thumbnail button (35326)
- Fix ariaHidden for user links (35329)
- Add aria-label to topic footer button region (35328)
- Add href to post voting comment username (35325)
- Add aria-label, title, to interface color selector (35324)