3.2.0.beta5: add groups to DMs, mobile chat footer redesign, passkeys enabled by default, and more!

New features in 3.2.0.beta5

This is the 5th beta release, coinciding with the 3.2 major version release! Read on for the highlights and a full change log.

You can now add groups to DMs

We’ve made it easier to start a chat conversation with just the people you want. You can now select one or more groups when creating new DMs or when inviting people to an existing DM. All members of the group with chat enabled are added to the DM, and there is no difference between adding a group or adding its members individually. Learn more

Mobile chat footer redesign

We improved the chat mobile interface with cleaner navigation between channels, threads, and DMs, as well as from within a thread to the main channel and from chat to the forum itself.

Enable passkeys by default

Passkeys authentication is a quick, safe and convenient alternative to traditional passwords, and it is now supported in Discourse. To use it, site members register a passkey in their User Preferences > Security screen. Once that’s done, they can use their passkey to log in (and their browser will automatically suggest the passkey as a way to log in). Learn more

Security Updates

This release includes fixes for this security issue reported by our community and HackerOne.


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


Bug Fixes

  • Manually scheduling posts should only be possible with First Post (63)
  • Ensure process transaction errors are logged (60)


New Features

  • Allow excluding tags and categories from LLM report (447)
  • Add support for new OpenAI embedding models (445)
  • Support gpt-4-0125 which was just released (443)
  • Setting to control per post embeddings (439)
  • Even smoother streaming (420)

Bug Fixes

  • Add table name to remove ambiguous column reference in SQL (449)
  • Include provider in automation models (446)
  • Typo in Automation::AVAILABLE_MODELS (442)
  • Automatic embeddings index could fail if it existed in the backup schema (441)
  • Misconfigured OpenAI API for embeddings shouldn’t spam logs (440)
  • Don’t try to generate embeddings of posts in deleted topics (433)
  • Typo (432)
  • Truncate content for sentiment/toxicity classification (431)
  • Always ensure #generate gets a valid input (427)
  • Scrub invalid prompts when truncating (426)
  • Clean unicode usernames when adding messages through prompt’s contrstuctor (425)
  • Set ivfflat.probes using topic count, not post count (421)

UX Changes

  • Validations to LLM-backed features (except AI Bot) (436)
  • Start progress dot animation instantly if it’s the only content (437)


Bug Fixes

  • Do not run job if the plugin is absent (114)


Bug Fixes

  • Avoid accessing/mutating internal SafeString properties (25)


New Features

  • Support upcomingDays parameter on the upcoming events list (524)

Bug Fixes

  • Convert emoji to unicode on event title (530)
  • SafeString conversion under latest Ember (535)
  • Update Malaysia holidays for 2024 (527)


New Features

  • Add a keyboard shortcut to approve commits (204)


New Features

  • Allow topic URL without post number for post_id param (275)


Bug Fixes

  • Typo (58)


Bug Fixes

  • Do not attempt to fetch user JSON if URL is not set (94)


Bug Fixes

  • Customize New Button Compatibility with Post Voting Plugin (186)
  • Correct can_flag_post_voting_comments? (187)


New Features

  • Add database label to active_record_connections_count (84)


  • Avoid hammering the database with pg sequence check queries (83)


Bug Fixes

  • Render votes RSS feed (180)

All Features and Fixes

New Features

  • Support silent internal links (25472)
  • Mobile Chat Notification Badges (25438)
  • Display last message on mobile (25384)
  • Add option to sort topic query result via plugin. (25349)
  • Enable passkeys by default (25340)
  • Trigger app event for click tracking (25381)
  • Add support for custom site name in Open Graph metadata (25373)
  • Save/retrieve scroll position in chat channel (25336)
  • Implements dates separators for threads (25335)
  • Allow users to DM groups in chat (25189)
  • Add hot as a homepage option (25325)
  • Improvements to hot algorithm (25295)
  • Experiment with hot sort order (25274)
  • Mobile Chat Footer Redesign (25161)
  • Add username header to global-rate-limited responses (25265)
  • Allow sorting group members by custom field via API (25061)
  • Option to sort user and group private messages. (25146)
  • Prefer topic_embed’s cached content when summarizing (25190)
  • Add loading spinner on categories page (25171)

Bug Fixes

  • Chat messages exporter (25461)
  • Hide ‘My Threads’ if no followed channels have threads (25470)
  • Make long thread titles readable (25456)
  • Do not show quote copy button to anon (25471)
  • Missing ampersand in input class selector (25464)
  • Avoid flash-of-unstyled-content in Safari with bug workaround (25462)
  • Allows to translate yesterday (25446)
  • Global selector needed to avoid clicks registering on other elements (25445)
  • Remove excess margin after title (25444)
  • Export csv file failed message (25443)
  • Deprecate NumberField, use <input> instead (25434)
  • Auto-populate group field in invite modal on group route (25431)
  • Set allowUncategorized SelectKit option (25440)
  • Remove css that should not have been added (25425)
  • Computed property override error for webhook.categories (25418)
  • Allow category to be set on topic model instances (25416)
  • FinalDestination::HTTP: validate address argument (25407)
  • Use site setting to show my threads chat footer tab (25277)
  • Renders channels-list wrapper only once (25383)
  • Minor bookmark issues (25358)
  • Allow sanitized-HTML in GH issues and categories oneboxes. (25374)
  • Clear db_backup_port default value
  • Radar chart not widely available. (25368)
  • Search escape handler should be on keydown (25364)
  • User-tips regression in #25361 (25367)
  • Ignore invalid images when shrinking uploads (25346)
  • User group check should return true for system user for auto groups (25357)
  • Correctly save scroll position in channel (25345)
  • Correctly exclude muted channels from thread unreads (25339)
  • Fixed a bug where keyboard on ios was broken (25338)
  • Ensures active message is cleared on threads opening (25337)
  • Localize text in github oneboxes (25327)
  • Rake task executed wrong method (25323)
  • Account for moderators in group to TL mapping (25326)
  • Errors when loading My Threads and Channel Threads (25310)
  • Prevent popup when thread count request fails (25308)
  • Allow staff to change group members visibility level for automatic groups (25281)
  • “Action Logs” button on user admin page (25300)
  • Set channels tab as default on mobile chat footer (25296)
  • Correctly support safe-area-inset-bottom in footer (25276)
  • Use category hashtag instead of link in guidelines_topic.body (25253)
  • Update global rate limiter keys/messages to clarify user vs ip (25264)
  • Trigger search app event being triggered multiple times (25250)
  • Use getter and setter for computed properties (25259)
  • Enforce proper max for clean_orphan_uploads_grace_period_hours (25235)
  • Set microdata schema for topic on missing first post (25195)
  • Exclude empty posts from microdata schema for topic (25198)
  • Ensure consistent datePublished on follow-up pages in topic microdata schema (25130)
  • Admin sidebar on mobile was still showing forum panel (25236)
  • Admin sidebar fixes and custom link registration (25200)
  • Respect creation date when paginating group activity posts (24993)
  • Delete topicNotificationLevel from transformed post before creatingRecord in post widget (25229)
  • Convert the route to Ember Octane to fix the dependency issue. (25221)
  • Don’t use joins to filter (24904)
  • Hide deprecated site setting that was missed out (25220)
  • Logs api scope not working (25215)
  • Do not show themes list filter unless there are 10+ items (25202)
  • Serialize categories when viewing a topic (25206)
  • Chat summary email link in subfolder setups (25188)
  • Correctly rewrite script/link tags in the proxy (25204)
  • Incorrect admin sidebar setting migration (25192)
  • Hide deprecated site settings that were missed out before (25180)
  • Refactor calling of timed backup deletion

UX Changes

  • Add bg style to input field type number (25460)
  • Improve mobile table editor button location (25426)
  • Fix and improve topic title badge spacing (25441)
  • Chat >` channel info: show member count on tab (25439)
  • Overflow fix for add participants to PM on mobile (25437)
  • Improve featured link positioning in topic titles (25427)
  • Simplify education message layout on empty /new route (25412)
  • Fix spacing for about page headings (25410)
  • Add spacing in new topic draft text - timestamp (25403)
  • Add “filter for more” to icon picker (25263)
  • Remove legacy option copy in nav menu setting (25382)
  • user.account_possessive was impossible to translate (25331)
  • Hide draft post notice on mobile chat (25297)
  • Show the SSO options when creating an account on mobile (25260)
  • Chat composer dropdown styling mobile (25244)
  • Adjust onebox styles for chat, title line-height (25249)
  • Cleaning up some invite page styles (25247)
  • Remove lock icon positioning (25241)
  • Chat header size and alignments (25239)
  • Change chat back button to btn-transparent (25184)
  • Ensure links styled as buttons don’t get visited color (25199)
  • Remove specific href styling (25183)
  • Add max width for c-navbar on mobile to prevent horizontal scroll (25182)
  • Add title attr to thread titles (25178)
  • Fix review queue category and tag alignment, whitespace (25166)

Security Changes

  • Properly escape user content within <noscript>


  • Eliminate some slow CSS selectors (25392)
  • Better query performance for user avatar consistency check. (25342)
  • Avoid loading the whole record when we only need id (25301)
  • Skip validations when hotlinked images are replaced in posts
  • Prefer subquery instead of two queries (25167)


  • Show focus state in user PM topic list (25313)
  • Allow keyboard users to scroll help modal (25226)
  • Add role=“button” to composer cancel button (25228)
  • Add describedby associations in create account modal (25227)
  • Fix sidebar toggle icon color contrast (25225)
  • Better contrast for lightbox overlay links (25208)