3.0.0.beta15: Closing into Discourse 3.0 (with Sidebar, Chat, New Menus and more)

:dizzy: What’s new in Discourse 3.0.0.beta15?

This beta moves us from 2.9.0.beta14 → 3.0.0.beta15, as we are planning a major version bump in January to consolidate various exciting changes into Discourse:

:new: Sidebar + new user menu (significant change to the way Discourse looks)
:new: Discourse Chat (now included in the Discourse source tree)

The upcoming major version upgrade to 3.0 will also mark tons of other additions we’ve been working on in 2022. As things stand, note that these upgrades do not bring any incompatibility concerns with the backend API.

Hashtags got a #makeover!

Chat and Sidebar are now enabled by default

Through this change, Chat and Sidebar are now enabled via site settings on all new Discourse instances! While there are no changes to existing sites, admins can enable them via the chat enabled and sidebar site settings or by running the Setup Wizard (discourse.example.com/wizard).

Improved Admin Experience

Besides various other improvements in Discourse 3.0, you’ll see helpful new toggles every time admins run the Setup Wizard:

Another change was to send admins a new notification when the site gets new features after an upgrade/deploy:


Simplifying DnD, User Status, and Notifications

Do not Disturb mode was integrated with User Status and renamed to “Pause Notifications”.

  • User Status is now shown on group pages
  • Show live User Status on inline mentions on posts
  • Allow user_status scope for UserApiKey

More :new: features!

  • Warn admins about private group name’s exposure to anonymous users
  • Add user toggle to mask/unmask passwords
  • Onebox for Embed Motoko
  • Add support for desktop push notifications in core
  • Sort hashtags starting with term higher priority
  • Differentiate notification type for directly vs indirectly watched topic
  • Allow category moderators to set auto deletion topic timers
  • Show similar users when penalizing a user
  • Optionally allow a separate s3_asset_cdn_url to be specified
  • Allow showing hashtag autocomplete results without term
  • Better UI to manage 2fa
  • Enforce mention limits for chat messages
  • Show live user status on inline mentions on posts
  • Youtube Short onebox support
  • Allow user_status scope for UserApiKey
  • Improve composer warnings for mentions
  • Channels can allow/disallow @all/@here mentions
  • Add experimental plugin API to register messages nav dropdown
  • Separate notification indicators for new PMs and reviewables

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 describe. For a full list of new features, bug fixes, UX improvements, and more, be sure to review the Additional Features and Fixes listed below.

Security Updates

This beta includes one security fix for issues reported by our community and HackerOne:

  • Restrict unlisted topic creation

Plugin improvements


New Features
  • Allow always-animated avatars


New Features
  • Do not suggest users on vacation
  • Make plugin compatible with redesigned user messages
UX Changes
  • Update small actions to use sentence case


Security Changes
  • Fix allowed font names


New Features
  • Add option to bump topic


UX Changes
  • Use checkboxes as bullets in unordered lists


UX Changes
  • Don’t include encrypted posts while searching group messages.


UX Changes
  • Prevent long strings from causing overflow


Bug Fixes
  • Category setting create_as_post_voting_default is not working as expected.
  • Treat replies to first post via email as answers.
  • Copyedits


Bug Fixes
  • Category setting create_as_post_voting_default is not working as expected.
  • Treat replies to first post via email as answers.
  • Copyedits


Bug Fixes
  • Add idp_cert_multi in hash format with signing key.


  • Toggle spoiler via keyboard and improve screen reader support

Additional Fixes and Improvements

Click to expand

Bug Fixes

  • More stable system tests
  • Correctly uses request_uri to generate load_more_url
  • At this point in time component can be destroyed
  • Correctly always return a promise from loadMore
  • Ensures loading more doesn’t erase filter on browse
  • Update nginx config for v1.23
  • Do not show push notification banner for MacOS
  • Add missing email template for user_watching_category_or_tag
  • Various fixes to channel archive status
  • Show status on mentions on just posted posts
  • Avoid race conditions when toggling presence state
  • Cancels fetching messages when pane is destroyed
  • DButton ellipsis argument
  • Show topic titles in deleted-posts
  • Gracefully handle DNS issued from SSRF lookup when inline oneboxing
  • Removes missed chat_channels legacy paths
  • Correctly allows admin to visit a user chat’s preferences page
  • Correctly handles navigating to a message
  • Whisper tooltip shows the allowed groups
  • More reliable archive channel spec
  • Ensures recovering network doesn’t create unread mentions
  • Workaround a bug in the R2 gem
  • Admin can’t see user sidebar preferences of other users
  • Flakey spec due to autocomplete
  • Increment wait to prevent a specific flakey spec
  • Autocomplete fadeout arrow key chat fix
  • Allow for nested chat transcripts
  • Ensure we have a patched version of CGI gem
  • Re-enables using_session tests
  • Prevents playing chat sound when in DnD
  • Styles of user status on mentions
  • Autocomplete arrow scroll for mention
  • Prevents creating a null User object
  • Sidebar preferences link shown when navigation menu is legacy
  • Triggers update last read when message is not staged
  • Prometheus plugin expects webrick in production
  • Corrects a regression with last_read_message_id
  • Allows an admin to access users preferences
  • Correctly sorts public channels
  • Better chat-api error handling
  • Prevents chat-api to generate double slash URLS
  • Quoting a mention with status emoji breaks the mention
  • Hashtag autocomplete scrolling arrow keys with fadeout
  • Include tags inside tag groups for hashtag search
  • Responsive buttons and wider content container
  • Do not return muted child categories termless hashtag search
  • TL0 could not message group with everyone messageable_level
  • Don’t assume a clean slate in tests
  • Don’t validate channel slug if it hasn’t changed
  • Box-sizing for avatars
  • Discourse-follow notification types
  • Add missing user_id args for ChatMessage.cook
  • Access to category chat only when user can create post
  • A string usage that was lost during git merge
  • Remove magic time ranges
  • Allow backspace into hashtag autocomplete
  • Scroll autocomplete container on arrow press
  • Remove user_option saving for bookmark auto delete pref
  • Correctly parse Mandrill webhooks
  • Add REPLACEMENTS icons to styleguide
  • Email summary subject order should be consistent
  • Use correct plural rules for Russian
  • Unable to change homepage style via wizard
  • Do not duplicate check when editing chat message to remove uploads
  • Invalid route path for staff info warnings link
  • Properly count DistributedMutex locking attempts
  • Remove console warning for “nohighlight”
  • Reset search controller state
  • Make sure user status on mentions doesnt fail in plugins
  • GitHub onebox ellipsis styling regressed in 9d03f20
  • Restore missing text for read_more and read_more_in_category
  • More specific class name to avoid collision
  • Make sure generated tsqueries are valid
  • Multipart uppy upload regression in 80e422c
  • Ensure hashtag autocomplete is not behind keyboard in chat
  • Do not return channels for hashtags if user cannot chat
  • Broken images on subfolder installs
  • Broken emoji url on password reset w/ subfolder
  • New pm notification should take precedence over mention
  • Server-side hashtag lookups of secure categories for a user
  • Correctly hides admin settings in channel settings
  • Show last match time of screened IP address
  • Admin webhook regression in 321b14d
  • Do not provide advice regarding GDPR compliance
  • Add translation for setting
  • Duplicate hashtag lookup results based on permissions
  • Use correct property for theme’s color_scheme_id
  • Do not reset seen popups when skip_new_user_tips is false
  • Profile page is not loading
  • Error when opening a previously deleted post
  • Webhook should touch channel’s last_message_sent_at
  • Uses CDN when available for chat mp3 sounds
  • URL fragments not purging
  • Update match_count of screened IP address
  • New message brings a direct message channel to the top
  • Nullify active channel only when not on a chat channel
  • Only modify secured sidebar links on user promotion/demotion
  • Don’t force show topic map on non-first posts
  • Ensures chat channel metadata date is updated
  • User menu bug when transit from narrow screen
  • Deactivate is not called in every cases
  • Include CDN in result of avatarUrl helper
  • Change drupal permalink creation to use /node/
  • Ensure chat channel slug uniqueness at DB level
  • Add MessageBust.last_id to chat channel subscriptions
  • Relative URL routing on ember-cli only page
  • Watched words replacement emoji render
  • Don’t update url in GitImporter
  • Observe unlisted topic creation restrictions in post creator specs
  • Email hashtag-cooked text replacement error
  • Do not replace hashtag-cooked text with WatchedWords
  • Handle null svg class for excerpt parsing
  • Exclude claimed reviewables from user menu
  • Horizontal scrolling was not working correctly
  • When following redirects before cloning, use the first git request
  • Validate unsubscribe key has an associated user
  • ScrollingPostStream regressed in #15313
  • Show chat channel info on reviewable items
  • Allow reviewable-item components to be template-only
  • Margin for sidebar and revamped user menu on iPad
  • Allow svg in oneboxer in certain cases
  • Improve message when posting a duplicate link
  • Don’t notify of post deletion when agreeing with automatic flags.

UX Changes

  • Improve copy for contact email and url description
  • Switch webkit to pseudoelement for fadeout
  • Setup wizard copy changes and vertically stack logo fields
  • Temporarily revert autocomplete highlight change
  • Update classname to something non-conflicting
  • Wizard Step Enhancements
  • Redesign and refactor penalty modals
  • Hashtag autocomplete styling
  • Rename “Do Not Disturb” to “Pause Notifications”
  • Add tooltip why file upload is disabled
  • Change color of preview card in channels
  • Update small action text to use sentence case
  • Add new boxshadow variation
  • Change highlight colour
  • Include space between elements in kbd tag
  • More consistent style for the new topic banner
  • Add lightbox information to max image width/height settings
  • Exclude child catgegories of muted category in similar to search
  • Omit instruction note when email_time_window_mins is off
  • Improve nav for user messages on small screens
  • Adjust emoji size in mentions
  • Exclude search ignored and user muted categories in similarity search
  • Refactor & update small post styles
  • Add target to start discussion link
  • Improve UI of group delete dialog
  • Removes silence from chat message actions
  • Chat index refactor


  • Avoid running redundant bookmarks query for anon viewing topic
  • Memoize topic level checks in PostGuardian
  • Remove redundant DB queries from TopicView
  • Make chat mention notifications async.
  • Ignore repeated PresenceChannel leave/join calls
  • Optimize the performance of TopicLink.topic_map query
  • Fix N+1 queries problem on topic view page
  • Fix N+1 queries on /categories route
  • Remove unnecessary query from TopicQuery.remove_muted_tags
  • Fix N+1 queries when serializing topic posters
  • Stop serializing user in ChatChannelSerializer#current_user_membership
  • Use MessageBus.last_ids instead of MessageBus.last_id for chat
  • Remove unnecessary SQL UNION query when search public channels
  • Add index for chat unread counts query
  • Remove unnecessary DB queries when preloading for chat
  • Perform only one category update when creating a new topic
  • Improve Accept header handling for stylesheets and theme-js
  • Add GlobalSetting to redirect avatars instead of proxying
  • Do not cancel debounce and prevents popper on scroll
  • Update Group#user_count counter cache outside DB transaction

A post was split to a new topic: User Preferences still references “do not disturb” in 3.0.0.beta16