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-ai
New Features
- Triage rule can skip posts created via email (775)
- Single click proofreading (769)
- LLM Triage support for systemless models. (757)
- Allow specific groups access to summary feature on PMs (760)
- Stream other post helper options (745)
- Make emotion analysis enabled by default (732)
Bug Fixes
- Malformed message in systemless + inline img scenario (771)
- Triage’s search_for_text should be case-insensitive (767)
- UrlEditable must be true for all providers except Bedrock (766)
- Tool editing code editor resetting on every keypress (765)
- Mobile composer helper trigger should work on Android and iOS (763)
- Add original upload markdown on caption failure (762)
- Clicking on summary links breaks summary (759)
- Modals in composer helper menu not working (755)
- Triage-flagged posts didn’t have a score. (752)
- Prevent AI caption setting from showing unless all criteria is met (753)
- More robust summary implementation (750)
- AI helper not being shown on mobile view (749)
- Gemini 0801 tool calls (748)
auto_image_caption
not always present for current user. (746)- Correctly save provider-specific params for new models. (744)
- Handle nil reply_to_post in AI Bot event handler (743)
- LlmModel validations. (742)
- Add tool support to open ai compatible dialect and vllm (734)
- Use correct date for cached summary (733)
- Properly pass errors to client (731)
UX Changes
- Topic summary UI improvements due to DMenu changes (772)
- Add dark-light mixin for better visibility in dark themes (764)
- Style & position AI helper in composer (758)
- Summary fixed positioning (740)
- Use stacked line chart for post sentiment (737)
- Clarify purpose of OpenAI API key setting (739)
discourse-assign
Bug Fixes
- Prevents column reference “id” is ambiguous (590)
discourse-cakeday
Bug Fixes
- Move birthdays and anniversaries links to more section (131)
discourse-calendar
Bug Fixes
- Removes clean title codepath (600)
Performance
- Removed N*2+1 in availability topic (599)
discourse-chat-integration
New Features
- Added Power Automate as a new provider (204)
- Add topic tags changed trigger to chat integration (208)
discourse-data-explorer
New Features
- Allows CSV file result to be attached in automated PMs (318)
Bug Fixes
- Fix double validation (314)
- Fix
user_id
validation (312) - Param should be displayed when the default value is invalid (313)
- Empty param-inout form should reject submit (309)
- Use with_deleted only in topic and post (308)
- Wrong type in category_id param input (304)
- Create parameter input boxes after save (303)
UX Changes
- Rewrite date/time param-input using FormKit (316)
- Use GroupChooser in
group_id
param input (315) - Rewrite param-input using FormKit (307)
- Using CategoryChooser for param param_input (306)
discourse-deprecation-collector
Bug Fixes
- Update config reference after a core change (29)
discourse-doc-categories
New Features
- Report extraneous items on indexes (11)
- Add report with topics not indexed (9)
- Add advanced search filter
in:docs
(8)
UX Changes
- Add doc icons to sidebar items (10)
discourse-follow
Bug Fixes
- Update user-profile-secondary outlet usage (122)
discourse-fontawesome-pro
UX Changes
- Remove discourse-bookmark-clock because there’s no pro alternative (55)
discourse-global-filter
Bug Fixes
update_category_stats
erroring on bad column lookup (154)
discourse-group-tracker
UX Changes
- Normalize disabling checkboxes when turning off group tracker (64)
discourse-instant-search
New Features
- Add tags refinement list and…
Bug Fixes
searchType
typo, switch to constants- Linting
- Error when opening filters after switching search type
- “Invalid Date” text appearing after two mins
- Embeddings should not be fetched again if load more is pressed
- Hyde/Hybrid/Semantic working
.search()
call breaks show more results in hits- Sort mode persisting results
- Posts links
- Broken links
UX Changes
- Fix highlight dark mode colors
- Use dimmer highlight color for search highlight
- Include categories in controller so we can assign category badge colors
- Lock icon for closed topic results
- Improve styling and structure for chat results
- Style post results, add PM envelope to titles
- Style user results as a table
- Adjust positioning and styles for search, topic results
- Topic/PM refinement list and conditional refinements
- Improve search layout and styles, grid user results
discourse-jira
New Features
- Add tags to topics based on issue status. (71)
- New category setting to automatically create a Jira issue. (69)
discourse-livestream
New Features
- Add relation between
TopicChatChannel
andChat::Channel
(29)
Bug Fixes
discourse-math
Bug Fixes
- Adds katex support for chat (88)
discourse-multilingual
Bug Fixes
- Correctly set type/code on serialize (17)
discourse-policy
Bug Fixes
- Solve log noise when scoped order is ignored. (134)
Performance
discourse-preset-topic-composer
Bug Fixes
- Add
createTopicDisabled
check to new topic button (26)
discourse-ratings
Bug Fixes
- Prevent DestroyOldHiddenPosts from failing when there are orphaned posts (9)
- Use proper action function (8)
discourse-reactions
Performance
- Static id for like post action type (305)
discourse-solved
Bug Fixes
- Don’t allow TL4 users to unconditionally accept solutions (305)
discourse-subscriptions
Bug Fixes
- Pricing table for one-off purchases (228)
discourse-templates
UX Changes
- Shortcut help should show lowercase i (81)
discourse-theme-creator
Bug Fixes
- Ensures user can save theme setting (87)
discourse-topic-voting
New Features
- Allow order:votes on /filter (204)
Bug Fixes
- Care for nil counts when ordering (205)
discourse-translator
New Features
- Add translator error ProblemCheck for Microsoft (161)
Bug Fixes
- Handle same language translations (164)
All Features and Fixes
New Features
- Allow showing site text search in selected locale (28453)
- Allow plugins to specify keyboard shortcuts for hidden toolbar items (28456)
- Add estimated number of global and EU visitors to the about page (28382)
- Change default for push_notification_time_window_mins (28431)
- Unseen feature indicator in admin sidebar (28397)
- Add
system_user_max_attachment_size_kb
site setting (28351) - Always show full page “New Features” to admins (28383)
- Allow completely custom score reasons. (28348)
- Bring plugin:create to core from
create-discourse-plugin
gem (28350) - Add delay to native push notifications (28314)
- Participating users statistics (28322)
- Change tags sent in topic_tags_changed trigger in automation plugin (28318)
- “Hot” replacing “Top” as default in the top menu (28252)
- Add option to immediately delete stub topics upon merge (28228)
- Absolute Numbers in Poll (28240)
- Add
live_slots_(start|finish)
for Sidekiq perf logging (28260) - Added trigger for topic tags changed (28176)
Bug Fixes
- Endless loading post history (28425)
- Correctly shortcut format on mac (28556)
- Respect the End key when last post is already rendered (28524)
- Allows to manually remove error for virtual fields (28555)
- Allows selectText to take a scroll position as opt (28554)
- Destroy draft when clicking the Discard button (28552)
- Add users to user directory on account activation (28505)
- Return properly interpolated translations for flags
- Prevents topic hot scope error on future topics (28545)
- Prevent group requests from loading infinitely (28544)
- Prevents exception when showing replacements (28543)
- Fix incorrect check for required custom fields (28541)
- Prevent desktop notification callbacks on mobile (28527)
- When replacing text in composer maintain history (28537)
- Bookmark reminder was clearing incorrectly (28506)
- Video uploads sometimes hang indefinitely (28523)
- Refresh the edit tag section when navigating to another tag (28519)
- Prevents creating post from impacting the app (28518)
- Correctly reset form before destroying it (28516)
- Videos not uploading due to thumbnail generation error (28493)
- Adds chat-draw-expanded class to body (28490)
- Trigger user_logged_out event when the user logs out (28482)
- Hide heading when there’s no custom description (28470)
- Skip 1:1s when chat search returns users (28464)
- Ensures href is not set two times (28466)
- Subfolder account activation (28463)
- Lost outer context in
#each
block in hbr (28461) - Specify
@type
arg for the image uploader in the about config area (28460) - Write stylesheet cache atomically (28457)
- Use correct subtitle for Site contact name field (28448)
- Don’t show silence button on staff users and display similar users (28423)
- Broken mentioned users with capitalized usernames (28421)
- Translation overrides didn’t work for search orders (28404)
- Make poll voter list expansion persistent (28352)
- Bypass highlighths for long code in auto mode (28399)
- Make cancel and reset buttons work for
file_size_restriction
settings (28347) - Allow chat sound when notifications are disabled (28385)
- Delay chat notify watching job (28386)
- FormKit: Allow 0 in required number input (28368)
- Don’t show blank space when there’s no banner image (28366)
- Ensure we dispose of MiniRacer::Context before forking daemons (28361)
- Serialize Flags instead of PostActionType (28362)
- Access correct name and description (28353)
- Set overflow-x to auto to prevent scroll bar from always showing (28294)
- Do not continue list inside codefence (28346)
- Correctly render sql checkboxes (28328)
- Serialize Flags instead of PostActionType (28334)
- Poll when config is on_close only show results when poll is closed (28299)
- Poll ranked choice voter list corrupting on expand (28315)
- Stop injecting uneeded margin (28335)
- Not hit Redis cache in seeds (28329)
- Serialize Flags instead of PostActionType (28259)
- Display new DM button when public channels are disabled (28306)
- Site setting category titles (28281)
- Don’t log an error when rendering a 404
- Flaky flags specs when moving up or down (28272)
- Unescape URI properly when redirecting to a category
- Ensure do-not-disturb icon updates correctly (28253)
- Return additional message types properly
- Use CheckboxGroup for admin badges form (28239)
- Limit the number of custom flags to 50 (28221)
- Backup_restore.rb wants db user from user, not username (28229)
- Cache all flags multisite-safe (28204)
- Set sane default for
Net::HTTP
when processing a request (28141) - Ensures tags/categories are present (28230)
- Don’t clear inline problems when loading admin dashboard (28220)
- Make the check better for drawer router (28212)
- Further improvements to
//
handling (28211) - Do not strip
//
from the middle of URLs in discourse-url (28210) - Update do-not-disturb icon in real-time on glimmer header (28200)
- Poll ranked choice result algo majority check (28191)
- Update voter information upon remote change (28168)
- Correct return isForever value (28194)
- Badge image uploader (28188)
- Remove chat default channel setting (28170)
- Video thumbnails for missing videos (28152)
- System badges can be disabled (28169)
- Don’t count draft views towards topic view stats (28162)
- Double reviewable items bug (28161)
- Move downloading of Maxmind databases to after
assets:precompile
(28157) - Return properly interpolated translations for flag types
- Perform topics merge in a background thread (28114)
- Poll: Clickable, hoverable avatars (28121)
- Race condition in Discourse.cache.fetch (28124)
UX Changes
- Highlight the chat channel/DM only when chat is expanded (28488)
- Explain choices priorities (28574)
- Fix overflow usercard (28558)
- Flag settings tab to follow UI guidelines (28479)
- DMenu fixes (28551)
- Make keyboard shortcut styling more subtle (28522)
- Centralise DMenu mobile styling + fixes (28469)
- Adjust software update banner for headerless pages (28496)
- Don’t use split subcategory color in docked header (28494)
- Fix textarea height on mobile (28495)
- Add title token for What’s New admin page (28476)
- Apply new admin UI guidelines to What’s New (28454)
- Show topic map in topics without replies by default (28468)
- Improve mention colors for dark color schemes (28462)
- Fix restore info link on admin backups page (28452)
- Apply admin UI guidelines to custom flags (28433)
- View count in topic map should always be at least 1 (28447)
- Apply admin interface guidelines to Backups page (28051)
- Improve mobile view for the new /about page (28406)
- Omit fav badges count if max is 0 (28402)
- Do not check for dimensions in video filename (28349)
- Style reviewables in the user menu when avatars are enabled (28388)
- Only
scrollIntoView
if sidebar items are not already visible (28372) - Tweak styling for the new /about page (28367)
- Remove baseline alignment from chat timestamp (28345)
- Remove poll button bg color to avoid highlight issue (28319)
- Small topic map improvements and fixes (28215)
- Set “topics” link in sidebar as active for hot, unseen, and my posts filters (28305)
- Add sidebar DM list back when public channels are disabled (28301)
- Add plugin outlet to embeddable hosts (28264)
- Smaller modal headings, shorter flag mdoal title (28278)
- Do not delete narrative bot PM when skipping user tips (28265)
- Change bookmark menu label from “Custom…” to “More options…” (28266)
- Fix issue with long usernames wrapping in mobile user cards (28256)
- Fix user profile button wrap, clean up styles (28255)
- Remove extra margin from flag description links (28251)
- Break long words to prevent overflow in activity stream (28250)
- Link edit text to search in badges form (28248)
- Respect current locale on topic map views date format (28199)
- Move admin flag form to form-kit (28187)
- Hide/show preview button title attribute fix (28155)
Performance
- Ensure suggested topics is only loaded on last page of topic view (28507)
- Defer button actions to improve interaction-next-paint (INP) (28019)
- Delete
I18n._overrides
after they have been applied (28405) - Automatically join users to channels more efficiently (28392)
- Reduce mem allocation of
Chat::AutoRemove::HandleCategoryUpdated
(28393) - Reduce memory footprint of
Chat::AutoRemove::HandleCategoryUpdated.call
(28381) - Reduce memory footprint of
Chat::AutoRemove::HandleCategoryUpdated
(28332) - Do not expire cache when PostActionType is saved (28337)
- No redis calls when running migrations (28336)
- Skip reset flag callbacks on seed (28333)