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
New Features
- Update the ReviewableAkismetPost UI (186)
discourse-anon-usernames
Bug Fixes
- Validation being applied in groups (it should not) (4)
discourse-antivirus
New Features
- Add support for refreshed reviewable UI (93)
discourse-fontawesome-pro
Bug Fixes
- Remove discourse-bell-one from additional replacements (97)
- Selecting egular icons was not having changes (96)
discourse-page-visits
Bug Fixes
- Load csrf on page load if needed, to ensure it will be available instantly to sendBeacon (30)
- Fixes for anon users, Safari (29)
- Improve how we track page visits (28)
discourse-rewind
New Features
- Add seven new metrics to Discourse Rewind reports (26)
Bug Fixes
- Various bugs from 2024 rewind (29)
- Rename Favorite Tags/Categories to Most Viewed Tags/Categories and isRewindActive fixes (27)
UX Changes
discourse-saml
Bug Fixes
- Correctly support blank values in mapped fields (137)
All Features and Fixes
New Features
- Log errors when enabling discourse id (36110)
- Support for Opus 4.5 (36216)
- Automatically add ‘Add Translation’ post menu when content localization enabled (36210)
- New composer-force-editor-mode transformer (36201)
- Allow quoting an image from the lightbox (36156)
- Allow post authors to localize their own posts (36178)
- Use dropdown for upcoming change toggle (36091)
- Add claimed by filter to review queue, make assigned more distinct (36090)
- Improve performance of llm usage report (36177)
- Add topic admin button to schedule translations for untranslated posts (36172)
- Support image grid and auto-gridding on rich editor (35951)
- Serve localized content in the site’s default locale when user’s language is unsupported (36160)
- Add support for tracking write tokens and anthropic caching and Gemini Pro 3 (36113)
- Add IP lookup to review interface (36130)
- Update preconfigured models (36095)
- Add automation to remove uploads from deleted posts (36020)
- Add image generation tools (35946)
- Use evals to compare LLMs and Personas’ prompts (36027)
- Improve Github tools (36075)
- Support thinking summary on responses API (36013)
- Line number support for Github helper (36058)
- Cover all LLM features with evals (35693)
- Separate chat emails from regular emails (36018)
- Adds calendar_upcoming_events_default_view setting (36014)
- Support AWS role-based auth for AWS Bedrock (35872)
- Add support for uploads on translated posts (35871)
- Make site setting to serve localized content to crawlers public (35965)
- Display bounce details for bounced emails with bounce keys (35957)
- Lower AI Helper default access to trust level 1 (35943)
- Show localized blurbs when searching (35873)
- Adds plugin after-chat-channel-username in group chat (35920)
- Lower summarization default access to trust level 1 (35874)
- Add a multiplier for max tokens, typically used for various llm settings like reasoning (35859)
- Add presence indicators for translating posts (35857)
- Enables chat search by default (35799)
- Welcome banner shouldn’t say “welcome back” to new users (35777)
- Add btn to toggle lightbox image info (35762)
- Disable clean_up_inactive_users_after_days by default (35702)
- Update the ReviewablePostVotingComment UI (35675)
- Upcoming changes part 1 (34617)
- Convert watched_precedence_over_muted to default site setting (35671)
- Support group querying in
created-byfilter (/filter) (35692) - Disable outlooks reaction via email (35674)
- Add new, unified image_quality site setting (35467)
- Update the ReviewableUser UI for the review queue refresh. (35515)
- Add Prometheus metrics for LLM API calls (35636)
Bug Fixes
- Uses overflow hidden body on iOS (36248)
- Prevents scroll-lock to crash the app (36246)
- Anonymize more things when anonymizing user (36242)
- Show categories dropdown filter for user groups in lazy_load_categories_groups (36218)
- Maintain extension when quoting images (36240)
- Thinking could leak into topics in automation (36239)
redis.setex()expects seconds parameter not DateTime (36238)- Silent failure when watched words contains invalid regex (36132)
- Disable smtp_should_reject code
- Delete destination_url cookie when it’s used to set origin param during redirect to social auth (36194)
- Translation missing when using optional_* placeholder in body (36023)
- “browse latest topics” button in new new topics / replies subtabs (36136)
- Removes body scroll lock for composer (36219)
- Reactions count when there are deprecated bookmarks (36138)
- I18n key for schedule translation (36215)
- Post data on lightbox slide in production (36214)
- Deleted posts list should be rendered correctly (36103)
- Don’t join on llm name, causes dupe records in report (36206)
- Personal message participant padding issue (36170)
- Improves search banner migration scripts (36192)
- Update chat summary preference link in email (36189)
- /my/notifications/reactions-received view (36163)
- Prevent hidden tags from leaking in AI summaries (36167)
- Use PostRevisor with Topic context when revising posts from deleted topics (36168)
- Prevents scroll on focus when doing autofocus (36164)
- Type object setting not redirecting on saving (36150)
- User autocomplete should work even when no onRender callback provided (36161)
- IOS26 and composers
- Also update html page’s title when displaying localized titles (36139)
- Emoji autocomplete should not trigger if a whitespace is added at cursor (36131)
- More specific class for topic selected in bulk (36141)
- Notifications may not have topics (36143)
- Allow user to choose if they want to edit localized or original title (36099)
- Improve settings migration from search banner to welcome banner (36135)
- Prevent event bubbling in photoswipe on escape (36134)
- Fix unexpected scaling in lightbox when missing height/width. (35616)
- Feature credit cost not always working (36111)
- Topic creation failure when enabled category moderation (36094)
- Migration issues with AI credits (36089)
- Category page improvements (36062)
- Scope assigned group PMs to participant visibility (36073)
- Prevent false unsaved changes warning (36059)
- Preserve quote structure when pasting quotes starting with lists (36038)
- Quote username missing in imports
- Missing/incorrect flag reason in
account_deletedemails (34955) - Subcategory filter should be always visible on category view page (36050)
- Respect show_original for search results (36042)
- Harden JSON streaming tracker for arrays of objects (36047)
- Prevent discourse_reactions from overriding topic_view.posts preloads (36041)
- Emoji picker autocomplete in chat replaces entire draft (36017)
- Image optimization error when re-encoding to JPEG (36039)
- Ensure retry_count is set when checking if a job is being retried (36034)
- Use blank? check for role_arn validation (36009)
- Validation when toggling checkbox (35996)
- Shift on hover for transparent buttons (36011)
- Chat height fix (36019)
- Align z-index for ai-helper modals (35966)
- Don’t clear reminder on deleted bookmarks (35987)
- Handle edge case in
UserPostsStream#findItemswhen loading (35952) - Don’t add an edit reason when checking list (35985)
- Use oEmbed for YouTube oneboxing (35959)
- Removes extra a in translation (35977)
- Don’t log temporary email delivery errors. (35975)
- Include silence reason for auto-silenced users (35898)
- Assigned filter group visibility (35726)
- Allow stealth mode chatting when source user has permission (35961)
- Do not change language for logged in user when tl is present (35942)
- Chat drawer mode not preserved after requiresRefresh reload
- Csv import not being casing aware for tag groups (35837)
- Flakey post scrolling specs (35938)
- Editor in automation plugin not rendering in rich mode (35937)
- “add to calendar” not providing correct ics (35886)
- Bookmarkable query placholders (35935)
- Fix scheduled targeted problem checks (35696)
- Searching for bookmarks with : resulted in error (35850)
- Bug with styleguide group access (35912)
- Ensure user badge counts are displayed correctly (35895)
- Load more reactions on user notifications page (35913)
- Prevent translation editor auto discard (35887)
- Clean up search dropdown and fix reopening bug (35876)
- Wrong user in action logs page (35842)
- Supports pre-iOS 26 callout positioning heuristic (35907)
- Maintain wall clock time between DST transitions (35833)
- Ensures calendar is full height (35906)
- Include credits in serializer only if credit system enabled (35903)
- Move post_migration to migration instead to ensure monthly_usage is created (35902)
- Validate user locale in effective_locale method (35870)
- Do not show cached post after toggling “Show original post” and scrolling past 21st post (35868)
- Bookmark control should track a topic model change (35867)
- Also make sure quota is applied to detection (35838)
- Emojis should insert right after punctuation correctly (35830)
- Set invited PM users to watch so they receive notifications (35722)
- Reset keyboard selection when entering new topics (35851)
- Temporary ios modal hack (35719)
- Improve prompt and check returned value conforms to standard (35763)
- Don’t change automatic group name if it has been taken by a user (35826)
- Hashtag icon for style_type=icon not showing in rich editor (35786)
- Prevent nil value to be cached in client_settings_json in case errors (35781)
- Actually disable SMTP starttls if the user is attempting to disable it
- Remove validation check when using SMTP TLS-on-connect
- Restore post editing in the new reviewable UI (35784)
- Possible null column for watched precedence over muted migration (35815)
- Translation editor styles no longer being applied (35804)
- Chat images with lightbox dont have meta selector (35792)
- Chat message bookmark title update (35788)
- Copy after period should be titled (35757)
- Personal message message (35760)
- Reload site settings before seeding content during restore
- Remove unsupported SQL from DB dump during restore
- Draft excerpts with deeply nested html (35678)
- Prevent deletion of custom color palettes when installing themes (35754)
- Likes are not visible when rejecting PMs (35753)
- Don’t require restart for first flag badge working with custom flag (35733)
- Category badge hide parent with ancestors (35734)
- UI showed wrong error message when deleted a moderator (35496)
- Logs actor of disable theme action in rake (35732)
- Continue translation when post-processing fails (35725)
- Group visibility when filtering for
created-by(35712) - Exclude posts exceeding max length from translation progress (35723)
- Display a thumbnail for Youtube videos with the classic onebox (35715)
- Adds escape if no site setting found (35709)
- Linting issue (35713)
- Policy “not accepted” users list was not working (35502)
- Don’t apply callbacks from disabled plugins (35630)
- Improve the migration script from advanced search to welcome banner updates (35699)
- Reduce redemption_count when invited user is destroyed (35695)
- Set reminder options on menu render (35694)
- Styleguide JS error (35682)
- Infinite scrolling on user notification pages; modernize controller (35677)
- Do not lookup hidden_settings in a loop (35649)
- Clicking links in discovery search should close quick search (35660)
- Stop FoldContent truncation from splitting multi-codepoint emoji (35658)
- Avoid ProseMirror handling paste when unauthorized (35640)
- (safari-only) avoid image duplication on cross-window drop to rich editor (35643)
- Admin theme grid preview link missing subfolder path (35645)
- Uploads with no extension causing error in message processor (35656)
- Show flair visibility warning when creating hidden groups with icons or uploaded images (35517)
UX Changes
- Prevent lightbox counter wrapping (36245)
- One step wizard (36082)
- Improve AI usage per user table layout (36225)
- Switch user lists on /about to auto-fill (36228)
- Style policy footer relative to policy container width (36112)
- Chat name with emoji alignment (36217)
- Make AI usage table layout more flexible (36207)
- Remove unused CSS causing alignment issue (36205)
- Consistent sign up button position for mobile and desktop (36088)
- Make bookmark icon more readable on mobile (36096)
- Fix admin reports button overflow (36173)
- Adjust max-width for text in banner (36152)
- Disables autofocus on OTP on iOS (36083)
- Add quick link to edit own profile from user card (36048)
- Show search button on DMs and Threads tabs (36133)
- Improve upload icons in chat (36128)
- Improve AI summary modal animation (36108)
- Add admin config area for welcome banner (36022)
- Allows to click on topic item for bulk select (36102)
- Don’t escape PM excerpts in the review queue refresh, decorate HTML (36084)
- Use Meta links for review help resources (36079)
- Shows search button on channels list in drawer (36080)
- Disable onebox painting in reviewable queued posts (36036)
- Close chat search on Escape (36056)
- Improve template filtering with usage count and preserving tags (35881)
- Various d-otp improvements (35993)
- Add filter button to user card of deactivated account (36024)
- Redirect to homepage after completing the wizard (36002)
- Hide topic button on manage account page (35721)
- Correct previous fix (36001)
- Add border css variables for button styles (35875)
- Add exception for header indicator size (36000)
- Improve reviewable inline composer, clean up button consistency (35997)
- Show chat indicator on mobile (35973)
- Prevent page reload on admin groups search (35960)
- Switch default reviewable refresh tab to timeline, adjust spacing (35945)
- Fix height of chat index page on mobile after removing sidebar-wrapper (35967)
- Migrate core likes post action menu to show likes with DMenu (34265)
- Copy change for consolidated pageviews report (35958)
- Composer shortcut opens create new message from /messages view (35941)
- Category model styling (35889)
- Reviewable refresh design and functionality improvements (35841)
- Allow filter posts by user in user card with hidden profile (35908)
- Fix focus input for 2FA (35922)
- Fix tooltips containing multiple elements (35915)
- Add missing btn-default class to various admin area buttons (35916)
- Better svg icon contrast for lightbox controls (35862)
- Add RTL support for new lightbox (35866)
- Copy change for toggle unlisted description (35893)
- Copyedit for welcome banner text color (35891)
- Horizon banner adjustments (35894)
- Hide topic list views and posters less agressively on small screens (35852)
- Only show info btn when lightbox has image details (35863)
- Update lightbox image details style (35831)
- Improve logic for new topic and new PM composer actions (35834)
- Clarify embeddable host author field overrides meta tags (35806)
- Lightbox image behind header on closing (35790)
- Implement refreshed reviewable for chat messages (35812)
- Improvements to translation editor (35805)
- Has-topics alert fix gap + cleanup (35779)
- Improve reveiwable refresh claimable styles (35802)
- Improvements to modal animation (35740)
- Lightbox expand btn smooth transition (35765)
- Minor new reviewable layout adjustments (35776)
- Adds create PM action option in composer’s new topic mode (35764)
- Update new reviewable style, add permalink, nav, link posts (35768)
- Globally style has-topics alert + consolidate CSS (35642)
- Improve new reviewable item styles, labeling (35741)
- Hide AI gists on routes where the toggle isn’t present (35717)
- Make reviewable index full-width by making filters horizontal (35729)
- Styling tweaks to unified new nav (35670)
- Change the way we apply spacing to list-controls (35661)
- Only show 100% for AI translation completion when actually 100% (35724)
- Remove cursor on AI credit bar (35714)
- Adjustments to allow new reviewables to fit in narrower space (35681)
- Update topic card layout for bulk select mode (35644)
- Re-uses the autocomplete hashtag cache when applied to the rich editor (35532)
Performance
- DirectoryItem.refresh! daily can take an extremely long time (35860)
includes→preloadfortopic_vote_count` in discourse-topic-voting (35896)- Speed up
TopicQuery#filter_by_tagswithmatch_all_tags(35787)
Accessibility
- Add aria-label to automatically generated heading anchor links in posts (36232)
- Hide avatar link from tabindex when it’s aria-hidden (36227)
- Make user-info component headings optional (36209)
- Add title to custom link section (36198)
- Make badge ariaDescribedBy ids conditional (36204)
- Improve accessibility in the post-stream; fix navigation (35730)