3.1.0.beta5: Customizable Community section, Improvements to Admin Notifications, Topic Merge and more

New features in 3.1.0.beta5

Customize the “Community” section of the navigation menu

Admins can now edit the Community section (image) of the header dropdown navigation menu to set defaults that suit their communities. They are free to add / remove / re-order items, and change icons and links. In this release, the navigation menu also has support for adding sub-subcategories.

User tips now enabled by default

User tips were introduced in Discourse 3.0, but are now enabled by default to continue supporting users new to Discourse.

Updated hashtag styles for categories, tags, and chat channels

To make the new hashtag system consistent across Discourse, we unified styles across categories, tags, chat channels and the autocomplete system. After positive feedback to the feature, we enabled it across all Discourse sites.

Option to merge topics chronologically

To help site staff merge topics/PMs and support various use cases for their sites, Discourse now offers the option to preserve chronological order in the resulting topic/PM before a merge.

Streamlined admin notifications

We replaced the “1 message in your admins inbox” PM with a simple notification in the notification menu that takes admins to the information they need, directly on the admin dashboard.

Other features

There’s more! Feel free to go through a longer list of features in the 2nd post below.

Security Updates

This release includes fixes for these security issues 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


UX Changes
  • Introduce min-height for responsive ads


New Features
  • Disable smart commands on Claude and GPT 3.5
  • Improve search prompt
  • Add support for GPT <-> Forum integration
  • Basic StableDiffusion text2img support
  • Less friction for starting a conversation with an AI bot.
  • Hide various api keys in site settings
  • Update summarization token count and add Claude 100k
  • Handle invalid media in NSFW module
  • Multi-model support for the AI Bot module.
  • Allow excluding closed topics from semantic related
  • Introduce the ai-bot module
  • Add a table to audit OpenAI usage
  • Add internal support for streaming mode
  • Topic summarization
  • Add a basic tokenizer API
Bug Fixes
  • Support multiple command executions
  • Missing localization
  • Ensure embeddings database outages are handled gracefully
  • Give up trying to reuse the DB connection and rely on pgbouncer
  • Guide GPT 3.5 better
  • Ensure we only attempt embedding once every 15 minutes
  • Results will be nil for invalid queries
  • Hide summarization button from anons
  • Non instructor OSS embeddings was broken
  • Toxicity automatic flagging should be disabled by default
  • Pass correct API Key to summarization service
  • Only send supported image types for classification
  • Chat-composer is now using glimmer
UX Changes
  • Improve drop down menu for enabled bots
  • Improvements to the AI Bot header shortcut
  • Add missing label translation
  • Add a custom sparkles icon for AI action buttons


New Features
  • Add comment_date_gmt for additional signal


New Features
  • Skip group invite if all members can see topic already.
  • Invite user/group to PM if not a participant already.
  • Allow adding note when bulk assigning topics
Bug Fixes
  • Don’t invite user when already a member of an allowed group.
  • Reassigning to a group creates an incorrect mention’s link
  • Properly check key values for shortcuts
UX Changes
  • Constrain avatar size due to core change


New Features
  • Support subcategories in post_created_edited and after_post_cook
  • Adds user_first_logged_in trigger
  • Adds new script for user_added_to_group
  • Allow post trigger to be limited to create or edit
  • Add auto tag topic script
  • Script to update category notification level for group members.
Bug Fixes
  • Allow choices components to be reset


New Features
  • Auto-tagging topics when experts post
Bug Fixes
  • Wrap action in parentheses


New Features
  • Trigger follow rules when category changes
Bug Fixes
  • Stop ‘tag_added’ rules from firing for normal posts


Bug Fixes
  • Show “false” and “0” in query result
UX Changes
  • Fix parameters inputs spacing


New Features
  • Add setting to show tags by group
  • Site setting to control search menu tip addition
Bug Fixes
  • Toggling categories was requiring two clicks
  • Incorrect plugin name in requires_plugin
  • Icons not appearing


UX Changes
  • Fix height issues with inline footnotes


New Features
  • API for custom score events
Bug Fixes
  • Names were blank on the leaderboard when the user does not have full name
  • LikensGiven was awarding to wrong user
  • LikesReceived was using post date instead of Like date
  • Skip serializing gamification_score when plugin is disabled


Bug Fixes
  • Retrieve the creator’s access token using the “token” property.


New Features
  • Introduce http_application_duration_seconds summary metric


UX Changes
  • Constrain avatars to container for core change
  • Replace pluck with a select


New Features
  • Prioritize_solved_topics_in_search to prioritize solved topics
  • Solved topic auto close setting per category
Bug Fixes
  • Take enable_names setting into account
  • Respect “display name on posts” site setting


New Features
  • Capture cardholder address fields for Stripe customer
  • Skip product listing if only one product is present
Bug Fixes
  • A few more syntax fixes for button actions
  • Fix syntax for some buttons following recent updates


Bug Fixes
  • Use correct action name for showAdvanced
  • Saving theme settings
  • Include ‘value’ for serialized ThemeFields for remote themes
UX Changes
  • Fix theme settings layout
  • Fix empty space in the share URL
  • Fix theme actions buttons position alignment


New Features
  • Restrict translations by poster group
  • Added restrict_translation_groups to limit posts translation by groups
Bug Fixes
  • Fix for anon users visiting posts when the plugin is enabled


Bug Fixes
  • Incorrect PLUGIN_NAME


New Features
  • Adds support for git tags
Bug Fixes
  • Upgrading was broken when repo uses master branch
  • Update compatibility file for v3.1.0.beta1 and below

All Features and Fixes

New Features

  • Dynamic chunk size with uppy
  • Add new site setting type for tag-group lists
  • Add Mailpace webhook
  • Support sub-subcategories in new edit sidebar categories modal
  • Image grid in posts (experimental)
  • Use new hashtag autocomplete system on all sites
  • New dismiss button for combined new and unread view
  • Allow S3 ACLs to be disabled
  • Offline indicator
  • Add API Scope for latest posts
  • API Scope for latest.rss feed
  • Allow expanding hidden posts for groups in SiteSetting.can_see_hidden_post
  • Serve RTL versions of admin and plugins CSS bundles for RTL locales
  • Reduce avatar sizes to 6 from 20
  • Display PM participant group names in the topics list.
  • Chat thread header indicator improvements
  • Improving thread list item and header
  • Modal for admins to edit Community section
  • Support for chronologically merging posts into existing topic
  • Initial chat thread unread indicators
  • Apply hashtag styles to autocomplete
  • Create legal topics for set company name
  • Add support for AVIF images
  • Add user status to inline mentions in chat
  • Allow searching for oldest topics
  • Fuzzy search in site settings and raise limit to 100 matches
  • Show user cards for inactive users
  • Create and update thread memberships
  • Chat-replying indicator for threads
  • Default to subcategory when parent category does not allow posting
  • Thread list initial UI
  • Enable user tips by default
  • Allow for longer membership domains
  • Add new notification for admin problems
  • Search_rank_sort_priorities modifier
  • Offline indicator controlled by message-bus connectivity (#21324)"
  • Offline indicator controlled by message-bus connectivity
  • Reimplement offline indicator
  • Service to track message bus connectivity + offline indicator(#21259)
  • Add support for figure and figcaption tags in embeddings
  • Add support for user badge revocation webhook events
  • Reintroduce better thread reply counter cache
  • Allow admins to delete reviewables via API
  • Add new don’t feed the trolls feature
  • Allow drafts to be deleted via the API
  • Detect current git “branch” even when a tag is checked out

Bug Fixes

  • Change dismiss new button label
  • Use _presentChannels.size instead of _presentChannels.length
  • TOC anchors in a subfolder setup
  • Scroll top after chat activation
  • Various mobile optimizations
  • Make serialized watched word regex Javascript compatible
  • Correctly re-conciliate message bus backlog
  • Prevents long press to hijack reaction event
  • Json_schemer no longer allows nil keys
  • Create new PM notifications for watching_first_post groups
  • Disables pointer events while showing menu
  • Prevents lightbox to close chat on escape
  • On iOS PWA prevents touch to click
  • Prevents back history loop
  • Do not allow blank chat messages
  • Pasting files into chat was not working
  • Correctly set value on textarea interactor
  • Send TL2 promotion message to correct user
  • Add category colors back to categories pages
  • Add removed image that may still be used
  • Non-Interfering Backdrop Clicks
  • Apply chat header icon indicator style to urgent only
  • Use a default hashtag icon color for user with no permission
  • Toggle topic pinning for user only if thumbtack icon is pressed.
  • Restore sidebar footer background
  • Attempts to exit lock-on early
  • Hide delete button to invite as user are unable to delete anyway
  • Simplify review community section link
  • Prevent undefined on isSafari capabilities test
  • Ensure mention autocomplete box doesn’t go off-screen in RTL locales
  • Correctly set last message bus ids on resync
  • Delete synonym tags if other synonyms are already exist.
  • Change Community icons
  • Use fixed dimensions for user card avatar
  • Correctly resubscribe after restart
  • Do not add mentioned groups as mentioned users
  • Prevents admins to be silenced
  • Elements floating away on overscroll in Safari
  • Uses DiscourseURL.routeTo for drawer transitions
  • Applies getURL on both app and chat URLs
  • Correctly uses getURL to open full page
  • Remove unneeded RTL-specific CSS rules
  • Removes destroyed mentioned used
  • Recover by showing drawer index on 404
  • u/:username/deleted-posts route regression
  • Call composer reset with correct params
  • Show Privacy Policy or ToS when they exist
  • Page size edge case for null last_read_message_id
  • Create original message user thread membership
  • Auto fill was not happening on first load
  • Ensures chat-thread is not overflowing
  • Move thread storage out of chatApi.thread() call
  • N+1 query for chat message serializer on mentions
  • Hashtag CSS class color specificity
  • Do not attempt to mark as read a staged message
  • Chat deleted last read message and tracking state issues
  • Include more_topic_url in the response to /categories_and_{latest, top}
  • Serialize thread membership for user
  • Prevents saving draft in incorrect channel
  • Correctly nullifies active message
  • Flakey spec in sidebar with new font size
  • Don’t run validations when invalidating invites
  • Improves draft for channels
  • Do not preview chat channels to read-only users
  • Skip iframe URLs with relative paths in pretty text sanitizer.
  • Do not error if admin/owner checks target message
  • Improve chat membership update on deleted message
  • Allow published pages to be added to sidebar
  • Removing arbitrary limit in a Discuz importer script query
  • Ensure sidepanel size is correctly applied when showing
  • Update client lastReadMessageId on trashed message
  • Keeps panel size when changing content
  • Video thumbnails can have duplicates
  • Cancel fetching messages after channel change
  • Page size check for thread messages
  • Consider users.created_at for inactive cleanup
  • Do not cook icon with hashtags
  • Allow admin to change topic notification level via API
  • Consider users with trashed topics/posts for inactive cleanup
  • Correct replying indicator padding
  • Anonymizing a user clears their user status too
  • Fix for Default to subcategory when parent category does not allow posting
  • Improve mailman email parsing
  • Clicking on edited notification should open edit history modal
  • Adds missing margin on desktop draft message
  • Ensures message has been added before scroll
  • Update category tag stats with new or deleted
  • Show gif upload size limit error straight away
  • Prevent Email Processor errors when mail is blank or nil
  • Various fixes to chat styleguide
  • More resilient bottom of message check
  • Ensures replying indicator has limited height
  • Ensures chat composer docks to topic composer
  • Remove obsolete references to lounge category
  • Searching for svg sprite icons connecting to default database
  • Clear topic list cache after archiving a PM
  • Compensate for lack of replying indicator on draft
  • Sync channel tracking state properly on presence change
  • Followups to composer notch adjustments
  • Allows notch to have composer bg color
  • Show scrollbars under firefox in chat
  • Don’t show duplicates in styleguide
  • Drawer styles for chat thread icon
  • Add new chat threads icon and move thread list button to right
  • Ensure modal alert is hidden when empty
  • Hide d-modal during page load
  • Miscellaneous tagging errors
  • Chat height fixes
  • Hides global notice on chat
  • Moves chat height computation to a mixin
  • Various fixes following channel height changes
  • Limits max height to viewport on channel only
  • Handle all UTF-8 characters
  • Sidebar custom sections rendering perf degrades over time
  • AddNavigationBarItem api example
  • Composer should be sending metaData
  • Do not set VH while zooming
  • Always listen on window resize
  • Refresh site when enable_user_tips changes
  • Ensures all_mentioned_user_ids is not used as identifier
  • Thread reply indicator overflow
  • Incorrect PLUGIN_NAME for “poll”
  • Avoid double-encoding featured topic title in user profile
  • Prevents subscribing with an old id
  • Close panel earlier
  • Allow integer group_ids for create invite api
  • Messages selection with shift + click
  • Keyboard on android
  • Rely only on one keyboard computation solution
  • Chat NotificationLevels extension breaking in prod
  • Excerpt overflow and children click events
  • Handle deleted original message for thread index
  • Don’t autojoin users when they have ready-only permissions
  • Show 404 on new category page for moderators when Site Setting disabled
  • Fallback to composer for non ascii characters
  • Do not allow title stuffing to dominate search
  • Prevents fast channel switching to cause an error
  • Minor thread changes on mobile
  • Create invite api docs
  • Likes received count in digest email
  • Service worker for Safari
  • More precise chat-replying-indicator
  • Fast-edit should fall back to composer for non-ascii characters
  • Change the limit on badges description
  • No event when threading is disabled
  • Makes mouse events passive
  • Ensure order when moving chat messages to another channel
  • Correct link on original message
  • Attempts to reconciliate tracking state
  • Jumpy more sidebar section
  • Update test limit for email domain
  • Flaky sidebar-user-community-section-test
  • Resolve timezone issues with date-time-input
  • Service worker should cache only 200 requests
  • Incorrect unread count shown in channel when message deleted
  • Thread mention read state and notification links
  • Remove double escaped Vimeo titles
  • Ensure expand table works regardless of click event target
  • Do not log ‘personal message view’ when sending webhook
  • Allow re-flagging of ninja-edited posts
  • Blank user messages inbox dropdown on subfolder setup.
  • More resilient dates separators computation
  • Ensure user admin button is present on mobile
  • Email receiver should ignore x-auto-response-suppress
  • Add thumbnails for Vimeo unlisted lazy videos
  • Ensures page height is correct on ipad + hub
  • ChatComposerMessageDetails icon was always edit
  • Disables send btn while uploads in progress
  • Correctly use types for reviewables type
  • Quoted images should be lightboxed
  • Disallow invisible Unicode characters in usernames
  • Rename notify_about_flags_after to notify_about_reviewable_item_after
  • Empty video thumbnails
  • Correctly differentiates channel/thread upload inputs
  • Allows youtube embeds to respect the t param
  • Correctly homogenizes panels min width
  • Chat height was incorrect on ipad
  • Include group flair in homepage category topic lists
  • Ensure group-filtered group user event webhooks fire
  • Ensures thread is cleared when closing it
  • Cancels saving draft when composer is destroyed
  • Correct border color of message actions
  • Show large image placeholder for image onebox
  • Improve chat route cleanup
  • Properly respects chat_minimum_message_length
  • Attempts to make cooking less order dependent
  • Generates markdown from pasting link
  • Require date db_timestamps_mover script
  • Safely return from missing post on check_dont_feed_the_trolls
  • Safeguard in case the message is active during transition
  • Allows composer to expand
  • Bbcode URLs not handling paths correctly
  • Don’t display destroy reviewable button on client
  • Show auto-group flair according to user preferences
  • Blank video thumbnails
  • Ensure skip-module JS is transpiled correctly
  • Ensure reviewable counts are updated correctly for new user menu
  • Error when trying to bump a topic with no category
  • Do not delete old chat messages if chat disabled
  • Include liked_consolidated and reaction types in the likes tab unread count
  • Do not overwrite existing thumbnails
  • Better detect text selection in search input
  • Increase reorder sidebar delay for desktop
  • Don’t render error for bad-sequence
  • Send notifications after a chat message was updated with new mentions
  • Chat publisher publishing to thread when threading disabled
  • Revert “DEV: Add overflow-x: hidden to chat message containers (#21030)”
  • Hashtag subcategory ref incorrect when not highest-ranked type
  • Resetting user directory columns
  • Quote button doesn’t press on mobile
  • Chat composer shortcuts should respect context
  • Do not count thread messages for channel unreads
  • 500 error when adding restricted category tags
  • Nil exception in chat notifier
  • Add missing translations strings for lazy-videos

UX Changes

  • Better alignment for experimental grids
  • Remove rounded border on hover lightbox
  • Make user tips more visible
  • Dark color palettes need darker shadows
  • Chat unread indicator refactor
  • Small spacing fix for grid items
  • Minor #mention style adjustments
  • Increase contrast of “more” sidebar dropdown
  • List group label indicator should match existing design
  • Remove ‘Create Topics’ notice
  • Show tooltip for global nav section icon
  • Correctly adds spacing for selection-management
  • Improves chat message long press and touch
  • Allow users to filter categories in edit sidebar categories modal
  • Don’t block render of user messages secondary nav for tracking state
  • First pass at edit categories navigation modal for sidebar
  • Fix number cutoff in header chat indicator
  • Improve /print rate limit description
  • Remove title and description block if blank
  • Remove sidebar background color
  • Fix greyed out add button in chat composer when focussed
  • Correct educate message when there are no new topics
  • Adjust frequent poster size in topic map
  • Chat channel header icons
  • Add show more btn to reviewable item
  • Adjust various avatars due to size changes
  • Style adjustments for sidebar edit modal
  • Followups to #1f37fe5
  • Tweak user deleted posts items
  • Chat composer buttons refactor + emoji
  • Fix post history raw view
  • Deletes a message when editing to blank
  • Add support for flagged chat message in reviewqueue
  • Closes drawer on esc if input is not focused
  • Minor spacing adjustment in message details
  • Drop display of short_site_description site settings in sidebar
  • Long unsetyled category names need truncation
  • Minor active state fix for sidebar
  • More style adjustments for larger sidebar font
  • Increase sidebar font-size
  • Add show password on mobile login modal
  • Improve edit history display
  • IPad footer nav now included in header offset
  • Improve tags spacing
  • Chat composer step 2
  • Add indicator for msg from currentUser
  • Add custom section button should not be shown to anon users
  • Tweak on logo size to make sure it’s not too small on small screen
  • Remove welcome topic admin tip and tweak copy
  • General chat composer tweaks
  • Minor fix with new composer and reply/edit
  • Improve display of short site description in header dropdown
  • Include custom headers in --header-offset
  • Show fast edit at top of window on mobile
  • Add more mass to thread icon
  • Sections not collapsable in “header dropdown” navigation menu
  • Chat composer styling on focus
  • Removes thread margins
  • Implements new composer design
  • Better copy for generic error msg
  • Update copy of badges granted to others
  • Opens side panel early to avoid jitter
  • Hide settings btn when disabled
  • Various improvements to welcome topic CTA
  • Thread panel sizing/spacing on mobile
  • Loading slider for select-kit filter
  • Groups deleted messages
  • Scroll to bottom when message is staged
  • Preloads a thread when hovering thread indicator
  • Implements draft threads
  • Use fixed colors for admin stacked chart reports
  • In sidebar dropdown mode expose ‘more’ items
  • Fix color scheme setting reset position
  • Fix color preference layout
  • Resets active message when scrolling
  • Two column dropdown sidebar layout
  • Cook message before sending edit
  • Fix user onebox layout
  • Composer use BEM + small tweaks to enabled/disabled styling
  • Add a warning that updating min_trust_level_for_user_api_key will disable users from using DiscourseHub
  • Use dvh for sidebar height
  • Onebox/blockquote/chatreaction slight accent colour change
  • Displays channel title in document title
  • Fix space position in badge counts
  • Minor installation success style adjustments
  • Include subcategories in crawler view
  • Improves composer and thread panel
  • Chat thread hover
  • Better digest centering in event of truncation
  • Fix time pickers input width on mobile
  • Fix kbd tag text’s color in the composer full screen prompt
  • Improve layout and styles for solo preferences
  • Update ring animation to avoid scroll
  • Remove new message element from chatpane
  • Slight design changes to chat timestamp
  • Ensures cursor is pointer over custom sections


  • Drop throttling from resize node
  • Improve workbox loading strategy
  • Cache ToS and Privacy Policy paths
  • Avoids eager pluck in posts controller
  • Prevents eager pluck in post alerter
  • Avoid rendering a component that isn’t required most of the time
  • Preload user information when visiting user messages routes
  • Client side triggering multiple requests when opening composer
  • Sends publish_new_channel only when not followed
  • Creating a post would cause an N+1
  • Strict loading for SidebarSection queries
  • Avoid triggering TopicTrackingState change callbacks unnecessarily
  • Remove unnecessary queries from Theme#set_field
  • Don’t serialize value for theme_fields unnecessarily


  • Improve select-kit accessibility (take 2)
  • Improve select-kit accessibility
  • Select kit close on focus out
  • Use correct structure for badge headings