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
- Add missing btn-default (255)
- Fix ActivityPub naming (247)
- Fix locale capitalization and formatting (242)
discourse-brightcove
UX Changes
- Add missing btn-default classes (75)
discourse-category-experts
UX Changes
- Add missing btn-default classes (207)
discourse-doc-categories
Bug Fixes
- Redirect spec (55)
discourse-follow
UX Changes
- Add default button class to follow button component (157)
discourse-group-tracker
UX Changes
- Add missing aria label character and title to timeline nav button (98)
Accessibility
- Add aria-labels to timeline nav buttons (97)
discourse-livestream
Bug Fixes
- Only show livestream chat button if channel is present (66)
UX Changes
- Switch to chat modal based on viewport width (65)
discourse-signatures
Bug Fixes
- Saving preferences wasn’t working (93)
discourse-theme-creator
Bug Fixes
discourse-zoom
UX Changes
- Add missing btn-default classes (128)
docker_manager
UX Changes
- Update
tests-passed
→
All Features and Fixes
New Features
- Bulk select posts and delete drafts (34972)
- Auto-trigger uploads for
<img>
s with src=data:* content (35012) - Open the discourse-id gates (34949)
- Add api scope for user create (34921)
- Promote Discover to a dedicated feature. (34846)
- Force refresh translations (34904)
- Do not bump topic on post edit (34681)
- Show themeable site settings in site setting lists (34666)
- Add configurable age penalty for semantic related topics (34842)
- Ability to re-order objects in site/theme setting type objects form (34828)
- Disable chat DM threads by default (34840)
- New topic button always enabled (34603)
- Allow hiding user fields on signup form (34672)
- Managed auth can override avatars (34123)
- Allow picking first day of week in calendar (34670)
- Add run query param to group data explorer reports (34673)
- Add option to flag + delete for llm triage (34590)
- Introduce max attendees for events (34313)
- Enable new color palette edit page (34566)
- Add run query param to automatically run data explorer reports (34565)
- New rake task to remap topic titles (34608)
- Add support for google image model (34570)
- Create AI tagging automation (34587)
- Update US Holidays (34558)
- Also allow language switcher to be shown when users are logged in (34578)
- Ability to set palettes as default on theme (34480)
- Add Discourse ID registration service with challenge endpoint (34326)
- Re-introduce quick test validation when selecting embeddings model (34524)
- Better composer controls for “Save & close (X)” and “Discard” (33510)
- Allow choosing custom emoji in reaction (34312)
- Add support for -user and unseen filter (34506)
- Use embeddings to find similar topics to the one being composed (34448)
- Append locale to links in crawler view if present (34466)
- Use an
area
for experimental settings (34454) - Disable user tips + narrative bot welcome post for all sites (round 2) (34373)
- Preserve the query when redirecting to login/signup (34363)
- User and group filters (34400)
- Move theme site settings config page to a tab in the customize page (34376)
- Dynamic poll support (34368)
- Add support for Groq as a pre-configured LLM (34402)
Bug Fixes
- Add support for subfolder in discourse-id registration (35011)
- Do not hide time when overflowing in month view (35016)
- Ctrl/Cmd + Enter search results should open in new tab (34989)
- Escapes
account-created
routes on Welcome banner page visibility (34951) - Publish the topic instead of the post to refresh topic titles (34961)
- Ensures user notes routes are correctly defined (34960)
- Respect query language when searching for discoveries (34958)
- Allow passing custom id to create topic btn (34952)
- Also translate topic title if ‘Translate Post’ is on the first post (34947)
- Include TOS and Privacy Policy URLs in signup when login required (34926)
- Always show the translation post menu (34927)
- Force composer markdown mode in email template editing (34668)
- Limit tool usage in AI Discover (34923)
- Disable category calendar when post event are disabled (34897)
- Check conditions for mobile /filter bulk select btn (34887)
- Horizon topic activity username sometimes blank (34679)
- Handle deleted users in solved topics gracefully (34880)
- Add finished to modal animateBackdropOpacity promise (34879)
- DiscourseConnect provider redirect to forum instead of the sso_redirect_url in the payload (34580)
- Supports description for post events in rich editor (34873)
- Don’t store return path in the session
- Allow reverting topic revisions with only tag changes (34169)
- Check for label arg in create-topic-button component (34844)
- Stop double encoding URLs when pasting via link UI (34834)
applySurround
should detect both sides when deleting surrounde… (34243)- AI usage doesn’t refresh custom date ranges correctly (34816)
- Do not send empty content when detecting language (34825)
- Welcome banner: excludes all admin routes (34822)
- Reset hashtags when pressing return in composer (34579)
- LLM config must be valid before running a test (34806)
- Ensures event serializer has tags info (34801)
- Ensures quick reactions usage shows in frequently (34798)
- Removes custom fc-past-event (34796)
- Update ‘modern mobile’ regex following iOS 15 support drop (34792)
- Validate email length (34786)
- Check if _cardClickListenerSelectors selector exists before adding listener (34779)
- Define the typical AFL Grand Final date. (34768)
- Ensure base_path is correctly inserted into LLM triage messages. (34778)
- Ensures category calendar is querying a date range (34764)
- Can not click any reaction on ios (34730)
- Make web_hook_events#id a bigint (34620)
- Add ld+json VideoObject to each lazy video (34678)
- Allow draft auto save after escaping modal (34703)
- Reset category styles for ancestor recursion (34702)
- Display a generic message when email is auth’ed without a provider (34691)
- Ensure ember version in cache key is coupled to compiler (34694)
- Do not directly import
admin
module from main app (34689) - Correct user deletion wording (34680)
- Use user timezone when creating new events (34675)
- New features git hash version tweaks (34671)
- Include subcategories in upcoming events list, add
after
param (34640) - Unnecessary “Show more” link in categories modal (34636)
- In chat messages, filter uploads by
UserUpload
, not byUpload.user
(34596) - Compute correct date with local time (34623)
- Exclude non-text user fields from watch word check (34646)
- Add delete button to themes grid (34606)
- Use an integer, not a float, in the AI tagging automation (34622)
- Ensures events have correct duration (34621)
- Add missing translation for stop_impersonating (34616)
- Lazy load category badge color (34613)
- Removes support for include_expired param (34582)
- Client based chat message timestamp (34592)
- Supports html entities in chat (34591)
- Don’t show setting save/cancel buttons when selecting the current value (34552)
- Prevent group chat when cannot see group members (34571)
- Exclude deleted posts and topics from assignments lists in various places (34564)
Default Locale
site setting not included in admin search (34562)- Use CDN url for chat (34541)
- Correctly order events in upcoming events list (34526)
- Correctly start weeks en Monday (34536)
- Do not show toast if draft not saved (34535)
- Show ‘Show more’ link in categories modal after intersection observer loads (34516)
- Use CDN url for chat (34507)
- Respect long_polling_base_url setting for message bus configuration (34477)
- Required confirmations not showing up (34504)
- Truncate long names for autocomplete results (34479)
- Sites with form templates had broken uploads (34455)
- Update associated accounts report to handle Discourse Connect (34462)
- Improve color mode selector visibility logic (34434)
- Respect database prefix param in SMF2 importer (34446)
- Remove text added by mistake (34447)
- Timeout issue when updating a large collection of users when changing the default_categories_* and default_tags_* SiteSettings (33665)
- Default prompts have to be explicit about the expected format. (34442)
- Handle lower case dark (34444)
- DiscourseConnect & SiteSetting.auth_immediately = false (34424)
- Support
light-dark
on older browsers (34438) - Filter UI overlapping with INPUT on small screens (34426)
- Broken base_scheme_id migration when base is default (34430)
- Allow creating new color palettes based on custom palettes (34351)
- Relax Matrix room ID validation (34399)
- Handle auxclick event on topic list (34408)
- Don’t leave blank additional_tag_ids param after removing dups in intersection (34423)
- Restore styles in finish-installation route (34420)
- Update i18n key for toggle localization button (34405)
UX Changes
- Remove
<b>
tag from move post modal to avoid double-bolding (35048) - Enable ‘viewport based mobile mode’ by default (35036)
- Improve AI translations chart colors in dark mode (35042)
- Horizon search adjustment (34909)
- Fix new topic btn reappearing in Horizon (35017)
- Show a helpful error when theme preview fails (35034)
- Prevent icon and text wrapping in breadcrumb (35008)
- Use search padding for discoveries (35005)
- Redesign 404 (34999)
- Use new --danger modifier in dropdown (34981)
- Update emoji size (34494)
- Remove hover effect (not consistent) (34881)
- Polish the new user first post notice (34965)
- Replace btn-danger with modifier class for bookmark dropdown (34941)
- Timeline fix (34953)
- Adjust welcome banner search-menu when there are AI discoveries (34957)
- Add welcome banner text color setting (34657)
- Use admin table classes for Calendar Holidays list (34942)
- Update copy (34944)
- Fix emoji size in post excerpts (34924)
- Horizon >` add same state styling to danger btn (34922)
- Improve progress styling on mobile (34886)
- Horizon >` sidebar NT btn state styling (34918)
- Horizon >` button styling tweaks (34912)
- Add translation button changes tooltip over icon color (34901)
- Horizon >` increase z-index for list controls (34902)
- Remove shadow, implement space variables (34885)
- Disabled restore backup title included link HTML (34894)
- Fix padding for no-ember pages (34884)
- Mobile user card fixes (34883)
- Make add_email.email uppercase (34876)
- Keep “Themes & Components” admin sidebar link active on components (34869)
- Improve user card badge wrapping for higher max_favorite_badges setting (34860)
- Overhaul of GroupSelector with Floatkit (34685)
- Adds a start new dm link when no dms present (34820)
- Improve layout for reviewable flagged post in new UI (33534)
- More consistent use of d-hover in menus (34794)
- Apply htmlSafe to topic titles in bookmark notifications (34826)
- Fix user profile wrapping on smaller screens (34817)
- Remove margin from navigation-controls children in favor of gap (34771)
- Make admin list item headings clickable (34772)
- Polish for topic list controls (34714)
- Control event display through a site setting (34795)
- Use more specific language for dynamic polls (34769)
- Ensure all blockquotes handle long word wrapping (34748)
- Minor improvements to the admin email log layout (34735)
- Glimmerize CreateTopicButton, make btnType class variable for Horizon (34733)
- Only remove paragaph margin in banner if it’s the last child (34695)
- Replace horizon spacing vars with new core ones (34701)
- Horizon >` badge fixes (34700)
- Some translation progress chart refinements (34674)
- Horizon >` bring back unread number (34662)
- Layout adjustment for sidebar customisation modal on mobile (34665)
- Composer discard button styling + position (34638)
- Close autocomplete menu on space but allow for continued search of user full names (34611)
- Show a bit more information on translation progress chart (34643)
- Keep new nav underline visible (34612)
- Fix brand capitalization in locale (34631)
- Do not include PWA/mobile app footer nav on some routes (34619)
- Fix for border-radius on welcome banner (34609)
- Horizon compatibility fixes (34577)
- Welcome banner background image text color modes (34519)
- Only show AI persona dropdown with multiple options (34527)
- Use ColorPalettePicker in base palette modal (34560)
- Improve color palette layout with proper spacing (34559)
- Improve search and filter experience on mobile (34554)
- Horizon >` unhide create topic btn (34546)
- Prevent unnecessary safari auto-sizing in filter dropdown (34533)
- Restyling of the solved popup (34518)
- Primary button styles on Discourse ID social button (34465)
- Add class to inline-footnote to display as inline-block (34515)
- Remove chat and message buttons on currentUser profile (34513)
- Remove height limit when showing preview on mobile composer (34485)
- Remove “(Sign in with Apple)” as suffix as we’re already including it as prefix (34481)
- Improve default badge positioning on admin themes/colors index (34456)
- Always apply post content classes for replies (34468)
- Improvements to rich editor spoiler (34149)
- Change “Open AI” to OpenAI (34459)
- Fix cmd-k bottom padding (34440)
- Fix the ‘default_dark_badge’ locale (34432)
- Display loading indicator on user impersonation button (34431)
- Tweak min-height of elements in toast to align close icon better (34416)
- Creating a new theme/component should redirect to theme edit route (34353)
Security Changes
- AI helper suggestions based on a topic should check user has access to it
- Use nonce-based restrictions during restore
- Rich editor chat transcript XSS
Performance
- Optimize translation progress dashboard with batch query (34861)
- Correctly index event dates (34877)
- Removes N+1 when loading events list (34841)
- Do not fetch thread data when we have it (34799)
- Add
index_web_hook_events_on_created_at
(34594) - Do not hydrate all candidates in big relation (34553)
- Improve performance of SiteSetting.humanize_name + all_settings (34404)
Accessibility
- Fix toolbar keyboard navigation with d-menu items (34615)