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-activity-pub
UX Changes
- Use
shortduration for toast on URI copy in ActivityPub (267)
discourse-akismet
Bug Fixes
- Remove reviewable_ui_refresh SiteSetting (193)
discourse-deprecation-collector
Bug Fixes
- Use correct frontend path for dir references (94)
discourse-development-auth
Bug Fixes
- Convert URI to string before redirect (38)
discourse-doc-categories
Bug Fixes
- Do not show urls in sidebar but show topic titles instead (68)
- Do not reassign trashed topics as index (67)
discourse-follow
Bug Fixes
- Prioritize watching notifications over follow notifications (163)
discourse-jira
Bug Fixes
- Enqueue sidekiq job to sync jira projects on jira server instance (116)
discourse-livestream
UX Changes
- Update background variable (70)
discourse-prometheus
Bug Fixes
- Expand Histogram buckets for
http_requests_queue_duration_seconds(157)
All Features and Fixes
New Features
- Add category ignore list for GitHub linkbacks (35921)
- Introduce
set_topic_timerautomation script (36660) - Add granular API scope for changing post ownership (36835)
- Add site setting to force old reviewable UI (36774)
- When moving posts to a PM also add acting user (36789)
- Add site settings for spam scanner thresholds (36780)
- Introduce tag localizations with API, without UI yet (36754)
- Create tags inline on the /tags route (36645)
- Format eval comparison results into a table (36724)
- Respect user presence when chat is on screen (36652)
- Share Rewind reports publicly by default and allow for making them private (36587)
- Add thinking animation when thinking blocks are in progress (36673)
- Inline and block wrap nodes rich editor support (36591)
- Add current_user_id parameter type to Data Explorer (36655)
- Store rewind dismiss state in database instead of localStorage (36625)
- Discourse ID setting page (36316)
- Reset the ‘show original content’ status when the user changes content language (36620)
- New automation for emailing specific users when a post is flagged (36580)
- Add upcoming change CSS classes to
<body>(36586) - Enhance onebox descriptions with URL fragment/anchor context (36536)
- Enhance screenshot support for themes with dark/light modes (36422)
- Unhide Discourse Rewind (36578)
- Add scrub action for rejected reviewable users (36556)
- Native support for attachments in llms (36415)
- Support topics filter UI when ordering on votes (36516)
- Resolve reviewables when author deletes post (36471)
- Add “changes requested” status to GitHub PR oneboxes (36531)
- Enhance onebox titles with URL fragment/anchor context (36515)
- Automatic promotion of upcoming changes (36211)
- Bundle discourse-rewind plugin in core (36409)
- Allow pie chart colors to be overridden with CSS (36495)
- Add reasoning to spam detection (36431)
- Log staff actions when creating and updating automations (36458)
- Add support for retrying a completion (36450)
- GitHub PR live status icon (36313)
- Use a log based heuristic to check for LLM problems. (36432)
- Ability to star chat channels (36142)
- Add modifier hook for tags being saved (36400)
- Accept tags param when opening a /new-message (36421)
- Improve bulk selection in search (36373)
- Implement ad impressions tracking (35797)
- Show gists in suggested and related topics (36303)
- Add claim history to reviewable timeline (36243)
- Add new configurable moderation guide (36287)
- Run eval comparisons against a dataset (36223)
- Include IP info in refreshed reviewable insight tab (36273)
- Add support for “updating” an application on discourse id (35384)
- Chat channel emojis (36288)
- Use GET /health for DNS SRV availability checks (36300)
- Log admin’s choice to backfill when updating a default site (36296)
- Add reviewable link to user notes (36190)
Bug Fixes
- Update topic excerpts when the first post is localized (36885)
- Ensure upload reference is available before cooking (36887)
- Dismissing admin notices fails with 422 when tracker has NULL target (36878)
- Poll plugin breaking when local-dates plugin is disabled (36889)
- Respect sidebar panel set by destination route when leaving AI Bot (36868)
- Calendar not refreshing on navigating between categories (36851)
- Render hashtag icons in category descriptions (36867)
- Make LLM triage review items visible to moderators (36881)
- Removes an N+1 in channel with user options (36773)
- Respect persona’s vision setting in LLM triage automation (36871)
- Don’t show edit indicator when only hidden tags changed (36870)
- Translation selector not visible on mobile (36861)
- Respect custom date format selection in local dates (36860)
- Warn moderators before group changes that would lock them out (36811)
- Filter restricted email template keys from site text search (36857)
- Preserve all date attributes in rich text editor (36781)
- API key scopes display and navigation issues (36844)
- FinalDestination ignoring all URLs on domain for subfolder installs (36785)
- Remove flair, title, when user is removed from automatic group (e.g. admin, moderator) (36842)
- Retrying with thinking could cause strange errors (36841)
- Plus encoding (+) was not handled correctly in onebox and UI (36822)
- Disable load_more_replies button until more replies are loaded (36816)
- Remove topic voting custom field from category logs when there is no change (36832)
- Only save post if post content changed when editing title (36817)
- New DM channels not being published (36799)
- Correct
primary-very-lowvalue (36809) - Also show the ‘post language indicator’ when the post gets updated to translated content (36806)
- Reduce deadlocks in Topic.reset_highest updates (36805)
- Extract polls correctly when post contains multiple quotes (36802)
- Restore bold usernames on the about page (36803)
- Delete other posts in a topic shouldn’t unanswer the answer post (36800)
- Skip failure tracking for unsaved LLM models (36735)
- Skip topic bump when date is in the past (36784)
- Properly terminate chains of tool calls across multiple providers (36750)
- Persist default reaction when toggling reaction (36778)
- Legacy-array-like-object in listTags (36775)
- Add local date support in poll options and improve rich editor date formatting (36718)
- Ensures moderators can see category permissions (36772)
- Support escaping checkbox syntax with backslash (36763)
- Strip quotation marks from names in quote BBCode (36666)
- Edit sidebar tags navigation model “selected” filter not working (36765)
- Live update upcoming change body classes (36748)
- Also check if user can see post or topic prior to letting them localize it (36749)
- Add version number to Rewind cache key (36745)
- Address race condition in
PostStreamwhile loading posts (36744) - Rewind: replace currentUser with user (36742)
- Ensures scrollable-list is passing scroller element (36736)
- Use event timezone for Google Calendar export (36727)
- Do not use public IP address space for tests
- Various SMTP timeouts should be used as floats
- SMTP: explicitly disable STARTTLS when TLS is enabled
- Prevent unread threads notification on non threaded channels (36719)
- More Rewind visibility fixes (36713)
- Do not use private categories for Rewind best posts or topics (36712)
- False permission change logs in non-English forums (36676)
- Preserve model/feature dropdown options when filtering on AI usage page
- Missing locales for the automation plugin due to lacking fallback logic for missing locales (36497)
- Attribute automation-triggered AI usage to system user
- Render emojis in topic titles on reactions pages
- Flaky DST handling tests in post_event_spec
- Require login for AI bot conversations page (36669)
- Show error highlighting on password field in finish installation form
- Unable to save a new persona with RAG uploads (36667)
- AI search discoveries user preference not saving
- Use group IDs instead of names for “everyone” group checks (36656)
- Preserve padding parameter through user API key authorization flow (36640)
- Related setting toggle on what’s new page for admins (36646)
- Add fix all target to lefthook to support bin/lint --fix (36644)
- Rewind’s urls missing subfolder path (36632)
- Silent option not working for bulk category moves via PostRevisor (36626)
- Sort by topic activity when searching in:title (36630)
- Copy-paste html block by increasing its parsing priority (36617)
- Login redirect to root path in subfolder setup (36609)
- Remove ItemList schema from linkbacks in crawler view (36608)
- Allow Enter key to work inside select-kit within modals (36596)
- Add OAEP padding option for user API key encryption (36592)
- Do not prepend #fragment with https:// on link modal (36619)
- Better handling of syllables in rewind writing analysis (36616)
- Avoid dangling base64 images on rich editor (36615)
- Exclude muted and ignored users from FBFF calculation (36610)
- Can’t paste text when upload authorized extensions is empty (36601)
- Rewind subfolder paths (36612)
- Don’t publish small_action event for removed PM user (36606)
- Rack middleware dev warnings (36460)
- Handle missing heading when traversing DOM in onebox anchor enhancement (36598)
- On edit, ensure community section remains at top of sidebar (36597)
- Hide rewind profile link when user has opted out (36594)
- Topic-navigation crash when viewport crosses mobile/desktop threshold (36590)
- Correctly place select-kit dropdown in RTL mode (36593)
- Redirect to channels list when no starred channels exist (36575)
- When rejoining a chat channel dont overwrite membership settings (36528)
- Ensure regeneration always uses the correct llm (36585)
- Unhide rewind from plugin list too (36581)
- Skip notifications when rebaking chat messages from GitHub webhooks (36577)
- Skip rebaking posts with inline GitHub PR oneboxes (36576)
- Inline ids in responses api (36572)
- ReFix the loading loop when a topic is removed. (36410)
- Default to starred channels only in mobile/drawer modes (36569)
- Avoid intermediate state when rebaking posts with oneboxes (36567)
- Rebake chat messages when GitHub PR status changes (36561)
- Replies not syncing to Zendesk for linked topics (36560)
- Make sure user is present before checking for starred messages (36538)
- Unstar channel when unfollowing (36520)
- Allow moderators to unhide posts using acting_user context (36512)
- Bulk select overlap with avatar in search results (36553)
- Filter bot LLMs to only those assigned to enabled personas (36545)
- Handle missing sketch logo during backup restore (36541)
- AI usage reports unable to filter by seeded models (36540)
- Remove nameless uploads from deleted posts (36484)
- Event not found after being edited to earlier date (36481)
- Normalize dates without leading zeros in local-dates plugin (36539)
- Support onebox cache invalidation in chat messages (36529)
- Displays max level of readability score (36525)
- Rewind was not dismissing when clicking callout (36518)
- Bottom margin for last rewind report (36514)
- Add support for default title in localdates (36511)
- Consider all eligible notification types when notifying about a post (36472)
- Revert composer-open body style to #36253 to fix reply box flicker on IOS devices (36449)
- FoldContent#truncate was reversing parts of the content by mistake (36498)
- Prevent sending chat/PMs to bots when LLM has exceeded credit limits (36496)
- Pass user to Discovery BotContext for usage tracking (36493)
- Chat unread indicators shouldn’t be right aligned (36492)
- Handle cancelled completions before issuing HTTP requests. (36489)
- Regression causing sidebar counts to not be right aligned (36485)
- Rich editor getSelected.value to return markdown (36483)
- Spacing between second factor CTA and form (36480)
- Login input placeholder overflow (36468)
- Unhide the “lazy videos enabled” site setting (36478)
- Assign URL to group was pointing to topic, not group (36477)
- Failed to load the next page in discourse-reactions (36451)
- Regression causing missing chat unread indicators (36466)
- Regression causing missing indicator in sidebar (36447)
- Correctly filter out event attendees (36459)
- Pushing replies to topics already in zendesk (36424)
- Ensure tag diffs use persisted topic tags (35187)
- Discord Bot crash due to missing BotContext in PersonaReplier (36429)
- Missing LLM options on Azure (36448)
- Regression in channel list and make improvements (36436)
- CategoryModerationGroups import step query (36392)
- Update rack sendfile middleware for x-accel-redirect (36354)
- Show AI gists on tag routes when enabled (36402)
- Also merge topic votes when a user is merged (36416)
- Don’t show empty switcher (36407)
- Ensures user-threads are scrollable (36401)
- Allows float-kit to accept a portalOutletElement (36259)
- Migration issues of HouseAd records from the plugin-store-rows table when they reference non existing categories (36380)
- Retranslate topic excerpts and avoid using post versions to indicate change (36382)
- Rich editor spoiler on firefox (36378)
- Allow entering 0.002 in number inputs (36374)
- Chat-settings/member list failed to scroll on IOS/iPadOS (36331)
- Fix migration of HouseAd records from the
plugins-store-rowstable whenvisible_to_logged_in_usersand/orvisible_to_anonsoptions are not set in the DB (36362) - Add space to onebox category badges (36355)
- Related topics causing page render issues (36357)
- Emoji.exists? should be consistent with Emoji
[](36347) - Topic Notifications User Tip wasn’t properly anchored (36356)
- Check for pgvector before CREATE EXTENSION (35070)
- Distinguish queued post from topic in refreshed review queue (36330)
- Edit theme navigation link should be in active state (36350)
- Correct semantic related age penalty (36327)
- Allow streaming 2 posts concurrently (36311)
- Don’t look up IP if user doesn’t exist, adjust whitespace (36326)
- Don’t wrap email log subject in a link if there’s no link present (36324)
- Ai design fixes (36320)
- Add area attribute to
must_approve_users(36317) - Update rack sendfile middleware for x-accel-redirect (36279)
- Lightbox failed to start in components due to null imgEl element. (36310)
- Remove ellipsis in “assigned to” copy inside assign extend menu (36314)
- Fallback to upload URLs when SHA1 doesn’t match (36299)
- Modals should not leak keypresses outside of the modal (36268)
BadgeQueries.sharing_badgenot counting unique visitors (36281)- UserDestroyer should unclaim any claimed reviewables. (36277)
GlobalSettingshould treat negative integers as integers (36276)- Blocks post action merge for duplicated flags (36265)
- Drafts page category name overflow (36262)
- Update PM tracking state when marking messages as unread (36258)
- Closed recurring events (36255)
- Limits hidden overflow to composer open and chat (36253)
UX Changes
- Require confirmation for clean_up_inactive_users_after_days setting (36898)
- Use correct syntax for selected (36891)
- Styling fixes (36888)
- Display all tool names for disabled select kits (36883)
- Styling changes to header-actions button (36877)
- Update period display when custom date range is selected in dashboard (36858)
- Improve user API key authorization page (36777)
- Modernize composer UI (36838)
- Use inline title editor instead of composer when editing translation (36847)
- Fix edit reason button position when localization is enabled on small screens (36839)
- Alignment fix for edit reason on small screens (36837)
- Prevent header search flash when welcome banner is visible (36834)
- Improve lightbox btns in RTL layout (36826)
- Add animations to closing DMenu content (36737)
- Clarify ‘Unassign on close’ behavior in site setting description (36798)
- Fix placement of “new new” menu (36808)
- Further fix for show more topics alert (36807)
- Add hover state for selected items in dmenu and select-kit (36776)
- Moves chat search to its own tab (36787)
- Style mismatches when emoji exists in chat-onebox mention links (36801)
- Add render check for multi-select caret icon (36796)
- Minor what’s new card improvements (36797)
- Fix misalignment of “See x new or updated topics” (36767)
- Add admin sidebar icons for preinstalled plugins (36764)
- Fix full width background (36790)
- Use English as language label where appropriate (36762)
- Prevent nav-pill items from wrapping (36779)
- Sort admin sidebar plugin links alphabetically (36674)
- Warn moderators before they lock themselves out of a category (36663)
- Show currently selected locale in header dropdown (36756)
- Use positive intent for rewind preferences checkboxes (36723)
- AI settings: add missing button classes, update button name (36741)
- Update header language switcher style (36738)
- Localize badge form section titles (36729)
- Add ids to badge section titles (36725)
- Animate new topic alert (36726)
- Show reorder buttons on touch devices for emoji-list settings (36695)
- Change code font-size to REM (36559)
- Makes rewind private by default (36717)
- Prevent
HorizontalOverflowNavcomponent from scrolling viewport (36715) - Enable refreshed review page (36711)
- Prevent title edit icon from wrapping onto its own line (36709)
- Remove background and adjust position (36710)
- Replace advanced search filters with multi-select
- Wrap chat thread title to nearest word (36698)
- Adjust composer-popup styling to allow close button to always appear (36700)
- Topic timeline minor fixes (36589)
- Horizon >` z-index (36692)
- Add missing hover state to review buttons (36651)
- Add missing btn-default class to activation page (36671)
- Fullscreen desktop and replaces discourse logo (36661)
- More tweaks to scope chat channel icon (36654)
- Apply default button styling to review buttons (36648)
- Show contextual dates on GitHub PR oneboxes (36637)
- Allow moderators to see admin sidebar AI sentiment links (36635)
- Chat channel icons v2 (36634)
- Minor style adjustments for rewind on mobile (36633)
- Add review queue link to admin sidebar (36611)
- Preserve formatting in solution excerpts (36552)
- Rewind feedback and fixes 2 (36614)
- Handle frequent stemmer words in Rewind (36584)
- Fix chat appearance of subcategories with emoji (36579)
- Starred chat channel icons (36568)
- Moves rewind link inside profile tab (36564)
- Default to starred channels when opening chat (36562)
- Reduce GitHub PR status icon size on mobile (36558)
- Rewind feedback and fixes 1 (36555)
- Add compatibility w livestream plugin (36534)
- Show specific review actions in timeline (36524)
- Show the user status next to the username in the group’s view (36482)
- Various visual fixes to rewind plugin (36535)
- Remove old css rules (36533)
- Fix input width wrapped in detail-tags to use full width (36530)
- Add radius to chat notices + alignment for dismiss btn (36527)
- Fix replies number wrapping (36526)
- Change status pre-alpha to experimental for upcoming changes (36517)
- User status in sidebar should have gap (36490)
- Fix the status on pr in github oneboxes (36488)
- Improvements to styleguide (36457)
- Improvements to starred chat channels on mobile and drawer (36470)
- Keep email / username between signup and login pages (36442)
- Trim chat channel description (36454)
- Fix buttons that are supposed to have a bg color (36446)
- Make reactions given/received consistent with likes (36430)
- Chat channel emoji size in DM channels (36427)
- Fix blank space for discourse-subscriptions plugin on user-main-nav (36408)
- Review queue refresh - add missing translation, avoid undefined counts (36393)
- Update heading style in review queue refresh (36391)
- Avoid showing empty state before content loads on user activity pages (36390)
- Ensure credit limit tooltip css is correctly applied (36389)
- Display moderation history in review insights (36370)
- Improvements on Welcome banner config page (36301)
- Display user’s email in review queue insights (36344)
- Improvements to flow when credit limits are exceeded (36360)
- Change visibility warning flair when creating a hidden group with an icon or an image (36304)
- Adjust styling of own avatar link on user card (36297)
- Switch ‘Allow user locale’ setting to be true by default (36244)
- Update user notes text formatting to follow guide (36280)
- AI usage users column needs a little more space when the sidebar is shown (36264)
- Transparent button modifiers (36252)
- Remove “Getting Started” button in header when in bootstrap mode (36231)
- Tiny polish for the chat thread message info layout on narrow view (36250)
- Update lightbox quote icon to apply shadow (36247)
Security Changes
enable_namesshould be respected in Search- Private category channels are not included (36716)
Performance
- Use SQL COUNT for chat_enabled_user_count in group serializer (36893)
- Reject anonymous requests with 503 upon aggressive queuing (36519)
- Optimize GitHub PR onebox rebaking (36739)
- Use fixed-height textarea in note form (36650)
- Improve performance of DiscourseTagging.hidden_tag_names (36636)
- Optimize reviewable queries by eager loading (36618)
- Load rewind reports asynchronously while scrolling (36563)
- Cache rewind for longer, and remove disabled report (36532)
- Optimize
CategoryList#relevant_topics_querySQL query (36476) - Avoid materializing
eligble_usersCTE inChat::Mailer.users_with_unreads(36473) - Remove unused MessageBus subs to PM unread indicator channels (36376)
- Cache LlmModel lookups in backfill jobs (36359)
- Fix memory leak in server-side plugin outlets (36284)