New features in 3.5.0.beta2
Review queue
We have begun making a series of improvements to the review queue, where moderators can review and handle flagged content.
A popup is displayed after completing a review action, as a success indication and to prevent accidental multi-clicks.
If a post is flagged due to matching watched words, the responsible words are listed now so it’s easier to immediately know the reason for the flag.
Welcome banner
We have added a new welcome banner feature, to welcome members and allow them to search site content. To turn it on, select the Enable welcome banner
site setting.
Admin interface
We continue to make improvements to the admin interface at a rapid pace. Three improvements to highlight:
Uploading and managing your site’s logos has become easier with the newly redesigned and reorganized branding page. The logos we think every site should have are highlighted, while optional logos have been tucked away.
When editing your theme’s color palettes (formerly known as color schemes) you can now specify color hex codes in addition to the usual color picker.
If you like to get into your theme’s code to edit HTML and CSS, you will enjoy the newly improved theme editing interface. We hid seldom used fields behind a toggle, added better descriptions, and always display descriptions at the top rather than behind tooltips.
Security Updates
This release includes fixes for these security issues reported by our community and HackerOne .
11 Likes
tgxworld
(Alan Tan)
March 26, 2025, 2:46am
3
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
New Features
Add support for Service actors (196 )
Add ActivityPub about route with basic actor listing (191 )
Bug Fixes
Improve base_object_id parsing (198 )
Incorrect actor attributes (194 )
Always prevent AP publishing from a read restricted category (181 )
Don’t show publish all posts when topic is first_post publish type (180 )
discourse-ai
New Features
Allow specifying tool use none in completion prompt
Silent triage using ai persona (1193 )
Allow disabling of top_p and temp for thinking models (1184 )
Add ability to disable search discoveries (1177 )
Add persona-based replies and whisper support to LLM triage (1170 )
Automation triage using personas (1126 )
Implement thinking token support (1155 )
Full support for Sonnet 3.7 (1151 )
Bug Fixes
Prevents to call Object.keys on null (1217 )
Unable to click doughnut when no filters (1213 )
Bump system prompt limit (1210 )
Remove incorrect full-page-search app event (1209 )
Ensure that we shutdown thread pool (1207 )
Prevents fields in Object to re-render (1205 )
Failing image caption spec (1195 )
Need to create model when testing new embedding (1192 )
Various issues with llm and triage management (1186 )
AI triage support and refactor search functionality (1175 )
Prevents double escaping of filters (1179 )
Use route
for admin sentiment sidebar links (1160 )
Subsequent results in full page search should re-trigger discovery (1156 )
Legacy reasoning models not working, missing provider params (1149 )
UX Changes
Convert sentiment analysis overview to horizontal bars (1216 )
Try AI search to side on large screens (1196 )
Add links to sentiment to admin sidebar (1158 )
Update Sambanova LLM templates (1157 )
Smoother streaming for discoveries (1154 )
Add description to configuration nav (1153 )
Improvements to sentiment analysis report (1150 )
Performance
Move sentiment analysis to “low” sidekiq queue (1173 )
discourse-akismet
New Features
Send email to deleted user (167 )
discourse-algolia
UX Changes
Remove old Algolia forum link from README (118 )
discourse-assign
New Features
Add “assigned:<name>
” filter (in the /filter page) (648 )
Bug Fixes
Incorrect ussage of prioritize_full_name_in_ux replaced by prioritize_username_in_ux (645 )
Ensure assign plugin respects prioritize_full_name_in_ux
site setting (632 )
Allow user to be assigned to post and topic (638 )
UX Changes
Add class to assign topic list items (649 )
Following 08d99dc, we can remove the separate color assignment (647 )
Update for new core tag separator (639 )
discourse-authentication-validations
Bug Fixes
Broken specs due to admin path change (34 )
discourse-cakeday
Bug Fixes
Respect user’s hide profile when showing their birthdate & cakeday (152 )
discourse-calendar
New Features
Add plugin outlet in modal/post-event-builder (693 )
Bug Fixes
Decrease height of the calendar scroller. (709 )
Border-radius fix (696 )
Performance
Fix N+1 problem on DiscoursePostEvent::EventsController#index
(698 )
discourse-chat-integration
Bug Fixes
Sharing to Discord forum channels requires a thread_name (251 )
discourse-codebytes-plugin
Bug Fixes
Update decorator for core change (44 )
discourse-data-explorer
Bug Fixes
Ensure dates passed in query params are parsed in the local timezone. (365 )
Discourse automation reports with parameters (363 )
discourse-livestream
UX Changes
Scope livestream styles to livestream topics (48 )
discourse-lti
Bug Fixes
Add Content-Type header to explicit tell the browser to parse the resubmitted response as HTML (70 )
discourse-microsoft-auth
New Features
Support Single Tenant for the Microsoft auth plugin (67 )
discourse-reactions
UX Changes
Apply optional core border-radius to button (358 )
Reactions user activity page shows names on mentions when site setting is true (355 )
discourse-solved
New Features
Show ‘marked solved by’ in OP when topic is solved (343 )
Bug Fixes
Migration was only done for first batch (344 )
UX Changes
Better alignment and gaps for marked solved by (346 )
discourse-tooltips
Bug Fixes
Align topic link with topic statuses (88 )
discourse-translator
New Features
Better translation parsing via structured outputs (257 )
Add hidden settings to limit automatic translation scope (255 )
Allow untranslated posts in inline-translation mode to be manually translated (230 )
Bug Fixes
Use is_a? instead of is_a for detecting class (260 )
Split content for translation before sending (249 )
Use specific prompts for topic titles (252 )
Revert translating raw for translator providers as they strip newlines (250 )
‘Show original’ button only shows in topics where there are translated content (240 )
Incorrect lang mapping using non-symbols (238 )
Allow user to be deleted (236 )
Do not let show up when the post is by a bot (228 )
Absent scope in serializer will cause reports to fail (225 )
Ensure translated content is safe for rendering (220 )
Fancify titles when using experimental topic translation (224 )
Do not return AI content if not in <output>
(223 )
UX Changes
Squarify the Show Original Content button in mobile (239 )
Filter only content-translated languages for the language switcher (235 )
Prevent users from wondering why backfilling is not happening (233 )
Remove flash of when the post has yet to have its language determined (229 )
discourse-user-notes
UX Changes
Update emoji, better icon match (122 )
All Features and Fixes
New Features
Enable full page login by default (31771 )
Tight lists by default on rich composer (31969 )
Send email to deleted user (31947 )
Sync Reviewable Status (31901 )
Add setting to prevent anonymous users from using chat (31842 )
Allow adding members to new 1-1 DM channels (31948 )
Add automation statistics tracking to Automation (31921 )
Introduce warning banner for Safari 15 deprecation (31928 )
Enhance post created edited trigger in automation (31900 )
Allow typing/pasting colors in palette editor (31811 )
Display a toast popup after completing a review action. (31786 )
Add welcome banner to core (31516 )
Add horizontal_rule rich editor input rule (31788 )
Introduce new color palettes config area (31742 )
Add details (plugin) rich editor extension (31718 )
Add spoiler (plugin) rich editor extension (31717 )
Add check (plugin) rich editor extension (31716 )
Add poll (plugin) rich editor extension (31715 )
Add local-dates (plugin) rich editor extension (31714 )
Add trailing-paragraph rich editor extension (31713 )
Add onebox rich editor extension (31691 )
Improve post_created_edited automation triggers (31694 )
Customizable tag separator with value transformer in proper HTML (31674 )
Add typographer-replacements rich editor extension (31182 )
Add html-block rich editor extension (31181 )
Add html-inline rich editor extension (31180 )
Add code-block rich editor extension (31179 )
Handle youtube live url format (31673 )
Store composer version and device info on post stat (31600 )
Add table rich editor extension (31153 )
Add strikethrough rich editor extension (31152 )
Add quote rich editor extension (31151 )
Add link rich editor extension (31150 )
Add image rich editor extension (31146 )
Add emoji rich editor extension (31144 )
Add mention rich editor extension (31142 )
Add hashtag rich editor extension (31141 )
Add underline rich editor extension (31139 )
Display the Watched Words that caused a post to be flagged. (31435 )
Rebranded admin logos settings (31554 )
Experimental admin search refinements round 1 (31441 )
Allow admins to access group chats (31440 )
Add search field to header (31447 )
Limits post created edited trigger to a group (31523 )
Allow chat incoming webhooks to work without .json
extension (31497 )
Bug Fixes
Looking at wrong period in statsText (31986 )
Avatar, profile & card backgrounds url in DiscourseConnect (31956 )
Make dark mobile logo fallback to dark desktop logo (31953 )
Tag revisions need an empty wrapper (31938 )
Redirect user activity drafts route (31949 )
Destroy automation not working (31945 )
Bookmark search input can’t be cleared with backspace with ?q=
present (31919 )
Stop non-rgb header background colors crashing DiscourseHub (31929 )
Prevents fields in Object to re-render (31916 )
Add value transformers for welcome banner and search (31917 )
Increase uploads.origin column length to 2000 to accommodate longer S3 pre-signed URLs for user uploads. (31803 )
Force pagination only if more than 1000 subcategories (31507 )
Paste url on rich editor with partial paragraph selected (31906 )
Restore old admin themes/components page (31887 )
Safely restart Sidekiq when mem usage is high (31883 )
Don’t error out after destroying first post with webhook configured (31902 )
Updating a group without e-mail domains (31896 )
Twitter_summary_large_image is renamed to x (31870 )
Amend broken group automatic member dialog (31854 )
When displaying a reviewable, don’t append the title to the content (31851 )
Uploader lightbox preview for new images (31762 )
Use theme screenshot names in theme fields (31852 )
Remove abandon draft dialog (31828 )
Replace positive lookbehind on checklist inputrule (31827 )
Ensure ordering is enforced in PostsController#replies
(31826 )
Double wait timeout for mail deliver in email_change_spec.rb (31818 )
Incorrect chat DM group user count (31813 )
Copy image from cooked to rich editor (31804 )
Ensures chat context is given to emoji picker (31794 )
Make SmallUserList change backwards compatible (31790 )
Disable composer editor switch when uploading (31789 )
Use virtualElementFromTextRange on emoji autocomplete more (31783 )
Ensure auth completes correctly when going via /user-api-key/new
for new users (31759 )
Add metadata to /hot
RSS feed (31766 )
Notification email CTA by system user (31726 )
When testing multiple flagged words, ensure test matches expected word order. (31758 )
Limit referrerUrl redirect to topic URLs (31751 )
Show total members count when deleting a group (31699 )
Use filename as alt for hotlinked image uploads (31651 )
Remove admin_sidebar_enabled_groups setting (31693 )
Redirect to parent tag when synonym page visited (31688 )
Dont allow channel non-members to write messages in threads (31697 )
Zlib may raise BufError during asset:precompile (31398 )
Loop detection works as expected and does not need logging (31686 )
If a tag has a description, use it for the meta description. (31689 )
Authenticated x.com oneboxes failing (31690 )
Ensures emoji picker loader is centered (31676 )
Ensure the reviewable.type_source migration is run post-deploy. (31663 )
Ensure queued posts with watched words are processed correctly. (31641 )
Only show small user list if users has length (31631 )
Handle href
admin sidebar links better (31575 )
Correct translation key for admin color palettes page heading (31587 )
Cross origin opener policy should apply to public error responses (31559 )
Duplicate error for chat messages for upload-only messages (31539 )
Error when leaving group DM channel (31537 )
Don’t attach images that aren’t rendered in the digest e-mail (31525 )
Revert “DEV: delete PasswordValidation mixin (#31520 )” (31536 )
Allow oneboxes with no description (31518 )
Exclude links from hidden posts in user summary (31504 )
Do not add _pm
suffix to locale key when email is from system user (31505 )
Exclude bots of inaccessible/unreachable mentions (31458 )
Use []`()` Markdown syntax for links instead of
<>`` for narrative bot (31496 )
No method error in WebhooksController#sendgrid
(31495 )
Include silence_reason when admin sees user (31493 )
Discobot onebox step sometimes not working (31472 )
Falls back to username if name is empty (31481 )
Include locale in extra-locales URLs (31480 )
Include hostname in extra-locales URLs (31477 )
Delayed chat summary email (31255 )
Ensures multi-like notifs respect prioritize_full_name_in_ux
setting (31292 )
UX Changes
Apply changes live when editing currently active palette (31874 )
Adjust code editor height when maximized (31971 )
Adjust border radius for reply-where buttons (31978 )
Improve nav fade css (31975 )
Add missing border-radius variable (31952 )
Show upload progress percentage for better feedback (31923 )
Improve naming for anonymous mode settings (31832 )
Improve UX of 2FA token submission page (31918 )
Fix various search shortcut UX issues (31903 )
Add mini z-index to welcome banner to fix overflowing result pane… (31927 )
Editor-specific getCaretCoords to position emoji picker on autocomplete’s more (31884 )
Add separator for “Learn more…” on admin pages (31898 )
Themes & components I18n adjustments (31897 )
Remove bg color on search info (31895 )
Avoid autocomplete/input rules on rich editor inline code (31836 )
Keep existing marks when pasting a url to make a link in rich editor (31814 )
Header search adjustments (31863 )
Re-hide hidden upload field (31861 )
Improve loading state when changing admin user list (31856 )
Refactor, removal, cleanup (31839 )
Remove bg color on presence indicator (31835 )
Strip partial :emoji when adding emoji from picker (31810 )
Tweaks to the theme/component pages when using admin sidebar (30953 )
Make an em-dash from en-dash plus hyphen on rich editor (31787 )
Add title and aria-label to md/rich editor toggle (31784 )
Remove auto-conversion from .. ->` … (31770 )
Remove forced block display in dmenu (31768 )
Restore CSS tag comma separator for Discourse oneboxes (31756 )
Scope btn states to touch devices (31731 )
Improve image upload component (31668 )
Show scope mode in API key list (31605 )
Show timeline when composer preview is hidden (31708 )
Hide tag separator for box/bullet styles (31709 )
Adjust progress bar position when composer preview is hidden (31679 )
Removes per channel context of favorites emojis (31671 )
Remove fa- prefix in svg_icon_subset setting description (31581 )
Remove padding in admin card section (31666 )
Card section toggle (31644 )
Add left border to indented field and update caret for consistency (31643 )
Display html tags in silence reason (31598 )
Tweak footnote button styling (31595 )
Rich text for review_process_description (31594 )
Fix notifications tracking buttons styling (31592 )
Simplify admin theme editor (31561 )
Add recommended image size for category logos (31574 )
Search dropdown layout improvements (31568 )
Evenly distribute nav-space for drop-downs & buttons (31545 )
Add automation script description for pm sender (31478 )
Fix flags config page translations (31476 )
Security Changes
Mutex around adding users to a group DM
Respect allow private messages prefernce for DMs
Performance
Skip lazy-loading images in composer preview (31955 )
Remove caches from Category.subcategories & Category.descendents (31829 )
Optimize Category.subcategories
(31802 )
Optimize topic-tracking-state subcategory calculation (31801 )
Improve performance of username mover (31517 )
Set cluster_concurrency
for Jobs::UpdateUsername
to 1 (31492 )
Move extra-locale digest from query-param to path (31479 )
Accessibility
Improve contrast for FormKit help text and optional text (31645 )
Read who liked/read a post when count clicked (31549 )
Retain focus on highlighted post to avoid scroll jump (31547 )
Add aria-hidden="true"
wrapper around zero width space character in buttons (31544 )
7 Likes