3.1.0.beta3: Search optimizations, Resizable chat drawer, New API scopes, and more

New features in 3.1.0.beta3

Search optimizations

We have improved our search feature with new optimizations. See the linked topic for full details!

Resizeable chat drawer

We’ve updated the chat draw to be resizable. To adjust the size of your draw, grab the top left corner with your mouse and adjust to taste. The size of the drawer will be stored on device, and remembered when you visit Discourse in the future.

Kapture 2023-02-03 at 00 52 13

Additional chat improvements

We’re continually iterating on chat. In this beta, we’ve added support for inline audio players, as well as the editing of channel slugs (admin only). We’ve also added a new user preference for the chat header icon. Users can configure the following options:

  • All New Messages (default) - This maintains the existing behaviour where all new messages in the channel show a blue dot on the icon
  • Direct Messages and Mentions - Only show the green dot on the icon when you are directly messaged or mentioned, the blue dot is never shown
  • Never - Never show any dot on the chat icon, for those who
    want tractor-beam-laser-focus
    image image

New API Scopes

We’ve added additional API scopes to allow developers to ensure API keys they generate only work on specific endpoints. New API scopes include:

  • Listing topics in a category
  • Listing, adding, and removing group members
  • Listing, creating, deleting, and updating groups
  • Deleting a topic or post
  • Listing tags
  • Updating topic status

Push notifications on macOS Ventura

We’ve added support for push notifications on macOS, via service workers. This is supported on Ventura and later. We anticipate Apple adding support for push notifications in iOS on iPhones and iPads later this year.

Insert date/time improvements

Did you know you can insert a date/time into a post which automatically displays in the user’s timezone? Below I’ve inserted the date 2023-03-01, at 12:30pm EDT. Users in California will see 9:30am, while users in Germany will see 17:30pm.


For quickly adding the current time to the composer, users can type the following:

  • On Windows/Linux: Ctrl + Shift + .
  • On macOS: + Shift + .

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.

Security Updates

This beta includes 9 security fixes for issues reported by our community and HackerOne.

Plugin improvements


Bug Fixes
  • Prevent deadlocks while communicating with ClamAV.
  • Improve scanning and error handling under different scenarios.


Bug Fixes
  • Missing actions icon
  • N+1 in search result
  • Use same limit as default for user search
UX Changes
  • Clearer assign messages on first post
  • Fix status alignment after core change
  • Improve custom icons for group assign
  • Remove whitespace in assign tag
  • Class for small posts when assigns are private


Bug Fixes
  • Disable invitation notifications for recurrent events
  • Add backward compatibility for reminders


Bug Fixes
  • Always use parent thread_ts for slack threads


Bug Fixes
  • Special attributes not working
  • Clear state when reports are changed
  • Maintain editing state after saving query changes
UX Changes
  • Reduce the table height


UX Changes
  • Remove condition for new user nav, remove old nav


UX Changes
  • Update badge icon


Bug Fixes
  • Jump to first post (pre-glimmer)


Bug Fixes
  • Use “cursor” pagination param to fetch all the records from API.
  • (File|Dir).exists? is deprecated


Bug Fixes
  • Prevents inline span to be forced into blocks


New Features
  • When creating policies, enter canned accept text


Bug Fixes
  • Display timestamps as UTC
  • Ensure end timestamps are shown correctly
UX Changes
  • Ensure local-dates popover is not clipped
  • Only show horizontal scrollbar when required
  • Improve behavior on small-width screens


Bug Fixes
  • Fix scroll from being always visible
  • Fix width
UX Changes
  • Adjust styling
  • Update reaction badge icon


New Features
  • Add a new site setting to set case origin.
UX Changes
  • Drop unneded comma in a string


New Features
  • Add API Scopes
Bug Fixes
  • Add title to solved notifications
UX Changes
  • Tweak ‘Solution’ button design


  • Screen readers should read spoiler contents after expanding


New Features
  • Support custom endpoints for Microsoft provider


Security Changes
  • Update old username when the user is anonymized.


New Features
  • Restore long lost auto-refresh of ps
  • Add Upgrade tab to the admin nav
  • Refresh the page on transition after upgrade
Bug Fixes
  • Remove ruby memory flags
  • Incorrect use of d-icon params
  • Make find repos a class method
  • Make find_repos public
  • The dialog service usage
  • Repo status link
  • Support git submodule plugins
  • A syntax error
UX Changes
  • CSS cleanup
  • Restore and adjust the animated progress bar
  • Improve non-essential upgrades banner css
  • Make upgrade-show heading better translatable
  • Improve headings
  • Fix the nav tabs styling
  • Update “Upgrade” button styling
  • Tweak some styles

Additional Features and Fixes

Click to expand

New Features

  • Hook for suggested topic customization
  • Only list watching group messages in messages notifications panel
  • Configurable auto-bump cooldown
  • Tooltip for disabled new topic button
  • Add new tags from edit tag synonyms page
  • Allow external links in custom sidebar sections
  • Chat header icon indicator preference
  • Log to STDOUT using Rails 5 env var
  • Update topic/comment embedding parameters
  • Add API scope for listing topics in a category
  • Adding some more api scopes
  • Add API scopes for group endpoints
  • Add word count and indicator when exceeded max
  • Roll out new search optimisations
  • Use feature detection for showing push notification in iOS
  • Chat side panel with threads initial skeleton
  • Add shortcut to insert current time in composer
  • Create SQL-only backup if there are no uploads
  • Automatically create chat threads in background
  • Support collapsing array sections in JSON Schema field types
  • Allow embedded view to include a header
  • Allow DTooltip interaction
  • Inline audio player for chat uploads
  • Resizeable chat drawer
  • Use similarity in user search
  • Prioritize_exact_search_title_match hidden setting
  • Allow restricting duplication in search index
  • Enable service worker for Apple devices
  • Move metadata user results to list bottom
  • Hidden site setting to disable search prefix matching
  • Allow editing channel slug
  • Rate limit anon searches per second
  • Add separate api scope for topic status

Bug Fixes

  • Do not send emails when channel-wide mentions are disabled in a channel
  • Latest post created_at on topic-timeline not updating
  • Update LoadMore selector for user tables
  • default_list_filter = none navigation and preloading
  • TopicQuery for NULL category.topic_id
  • Broken topic-timeline summarize topic button
  • Anonymous users cannot load topics with mentions with a user status that has an end date
  • Avatar upload error
  • Welcome topic banner showing after general category is deleted
  • Ensures edited message is correctly re-decorated
  • More consistent scroll to bottom
  • Tag dropdown not working with default_list_filter
  • Ensure form_template_ids is defined on new category records
  • Improves unread state precision
  • Review q issues
  • Don’t send image sizes for emojis/avatars
  • Ensure required_tag_group is defined on new category records
  • Uploading multiple files to chat could cause canellations
  • UploadReference order by tiebreaker for UploadSecurity
  • Set external flag before validation
  • Broken sticky date on firefox
  • More precise unread message detection
  • Correctly syncs current user message in multiple sessions
  • Display a proper error when user already exists and email addresses are hidden.
  • Don’t email suspended users from group PM
  • Do not show infinite loading state on draft with new users
  • Class for section link when name has space
  • Anonymous FAQ link to external URL
  • Handle null values in category settings relative time pickers
  • Trim whitespace on email field for invites
  • Prevents mouseover to gain focus on sk row
  • Deleting security keys was not working
  • Do not refresh when accessing loaded reply
  • Use the default value correctly for theme settings of type uploads
  • Leaking callbacks to synchronize state
  • Incorrect topic tracking state count when a new category is created
  • The default inbox label if username is not all lower cased in the url
  • Prevents duplicate reactions
  • Prevents exception on required login sites with chat
  • #present ->` #presence typo in TopicRetriever
  • No small action created when a non-author removes itself from a PM
  • Allow floats for zoom level in Google Maps onebox
  • Don’t set categoryId on PM drafts
  • Recalculating trust levels was not working
  • Only show approved users in search_user results when site setting enabled
  • Mark posted as true for post authors in the TopicUser table during ensure_consistency task
  • Copy & Fullscreen button edits in codeblocks
  • Autocomplete failing for :frowning:
  • Do not escape slash for category text description
  • Correct issues in admin-embeddable-host
  • Correct issues in admin-styles-editor (#20435)
  • Use category description for sidebar link title
  • Correct issues in admin-theme-editor
  • Make sure regular users can delete their PMs
  • Fast edit doesn’t work on content with certain characters
  • Blank dialog when auto-join selected in channel creation modal
  • Text selection breaking with hashtag SVG in Firefox
  • Override navigation menu to “legacy” via query param not working
  • Add support for Europe/Kyiv timezone
  • Allow changing default DNS query timeout of 2s via GlobalSetting
  • Wrong interpolation key
  • Do not enqueue update_post_uploads_secure_status unnecessarily
  • Glimmer component arg access
  • Correctly update _subscribedTo* props
  • Allow HTML in category read-only dialog
  • Correctly add user info data to message serializer
  • Chat member user card rendered out of view
  • Removes uneeded footer-nav-height subtraction
  • Ensures staged message are set with channel id
  • Correctly account for ipad footer nav height
  • Removes stored scroll position in drawer
  • Unsubscribing via key associated with deleted topic
  • Correct sidebar and chat height on DiscourseHub
  • Don’t fallback to original implementation for linkTitle in the custom type
  • Ensures chat-message is recomputed with model
  • Regression with chat shift+select messages
  • Correctly open channel info
  • Overflowing chat content in main-chat-outlet grid
  • Dominant color not working for 16bit images
  • Reset admin theme controller on modal cancel event
  • Reverts part of thread css
  • Do not notify admins on suppressed categories
  • Edit custom section title
  • Category settings migration failing on ‘’ integer
  • Error anonymous when tl4_delete_posts_and_topics setting
  • Correctly listens to chat notifications
  • Account for cursor drift when completing terms
  • IconPicker option to display only available icons
  • Replace hard-coded string with translation
  • Chat’s user autocomplete threw errors
  • Add index to sidebar_section_link
  • Stop youtube autoplay on scrollups
  • Return valid JSON when a post in enqueued
  • Changed classname for YT images
  • Hide add section button
  • Improvements for user custom sections
  • Apply max-height on the outer container
  • Ensures non existing user/group cards are not stuck
  • Redirecting to download backup from S3 could fail
  • Remove action buttons if post has already been reviewed
  • Ensure ColorScheme#resolve falls back to base for missing color
  • Avoid race condition when setting user status
  • Fix dragging in horizontal overflow component
  • Use / for start_url in webmanifest on non-subfolder installs
  • Autocomplete showing under keyboard on android
  • Delete associated notifications when trashing chat messages.
  • Allow keyboard navigation when searching emojis in chat
  • Category hashtags weren’t always found for sub-sub-categories
  • De-prioritize archived topics
  • Domain searches not working properly for URLs
  • Correctly filters input with pre-filled value
  • Add support for PG 14 and up
  • Back button action and position on glimmer topic timeline
  • Emoji autocomplete “more” button not working in chat
  • Better ordering of similar user search suggestions
  • Use username_lower in user menu router lookup
  • Extend username updates to self-mentions
  • Sync user’s reviewables count when loading reviewables list
  • Search index duplicate parser matching is too restrictive
  • Emoji preview showing incorrect preview on keyboard focus
  • Update flag URL in auto silence PM to moderators
  • Reverts value check when reseting composer value
  • Corrects a regression hiding avatar in user selector
  • Replace R2 gem with rtlcss for generating RTL CSS
  • Allow non-persisted color-scheme colors to be edited
  • Category permission change not creating a log
  • Vimeo iframe url when data-original-href is missing
  • Reword generic site policy defaults
  • Don’t spam presence requests when getting 429
  • Error calling LazyYT from chat when disabled
  • Update bookmark topic copy
  • Add support for multiple TikTok aspect ratios
  • Uses popper for cards
  • Preserves avatar size inside onebox
  • Correct various mistakes in chat-notification-manager
  • Truncate existing user status to 100 chars
  • Validate asset url before replacing base url
  • Better UX for timezones selector in date modal
  • Intercept old channel URLs in drawer mode
  • Failing system spec for rate limited search
  • Limit user status to 100 characters
  • Ensure soft-deleted topics can be deleted
  • Fixed getting badges from inviting youself
  • Remove link to site with inappropriate content
  • Use specified limit option in user search
  • Ensure anon-cached values are never returned for API requests

UX Changes

  • Change JPEG to JPG for search consistency
  • Improve menu panel height fallback for older browsers
  • Improve safe-mode copy
  • Avoid overflow clipping descenders
  • Some admin theme list style adjustments
  • Improves site setting description for discourse_connect_url
  • Position of group user table dropdown, border
  • Tweak last-visit/date separators
  • Fix chat-reply overflow
  • Ensure header logo has dimensions, style clean-up
  • Fix width for top embedded reply, post notice
  • Style improvements to new user tables
  • Remove visual chat msg staging effect
  • Remove old group directory template, CSS
  • Makes last visit stand out less
  • Fix banner overlapping issue at breakpoint of around 1260px width
  • Update user chat preference link for new nav
  • Switch My Posts link in sidebar to My Drafts when drafts are present
  • Skip applying link-type watched words to user custom fields
  • Update badge icons
  • Fix large onebox avatars in img chat messages
  • Fix tag & category clicks on mobile topic list
  • Only allow scroll grab if nav is scrollable
  • User badges tweaks
  • Restore wider search dropdown width
  • Highlight vars updates
  • Release new user profile navigation for sidebar compatibility
  • Apply skeleton animation on content only
  • Add h1 tag to user page
  • Badge page styling update
  • Remove fixed width from buttons
  • Hide hamburger dropdown when enable_sidebar query param is used
  • Contains overscroll in channels list
  • Move vertical admin plugin nav to horizontal overflow nav
  • Prevents scroll in chat to propagate to parents
  • Userstatus limit handling in UI
  • Catch edge cases in tooltip
  • Update chat draft icon colour
  • Style edits
  • Fix remove-user-from-pm hover styling
  • Add transparent border for header icon
  • Hide chat button on user card when suspended
  • Warn about consequences of group deletion
  • Allow sidebar to appear inline down to 768px
  • Fix confusing error message
  • Add missing backtick to string
  • Add flex alignment for form actions
  • Easily toggle badges in admin badge list
  • Improve layout of keyboard shortcut modal
  • Fix timeline-handle positioning
  • Implements a random and auto generated skeleton
  • Allows drawer to take most of height space
  • Allow tags to wrap under categories on mobile
  • Orders public channels by slug instead of title
  • Show full topic title for reply-where
  • Apply same style for highlight mention span
  • Move data export to preferences page for new user nav
  • Add transition to glimmer-topic-timeline fullscreen view
  • Add timezone aliases for IST, KST and JST
  • Calculate missing hover/selected colors from existing colors
  • Flex horizontal form controls
  • Remove chat-specific font declaration
  • Brings back URL on chat icon when in full page
  • Improve emoji alignment for text
  • Highlight var refactor
  • Add staff action log text for permanently_delete_post_revisions


  • Remove request for PM topic tracking state initiated from sidebar
  • Various perf improvements of chat-live-pane
  • Reduce height of the load more past message area
  • Applies optimisations on chat-live pane
  • Skip metadata routes for mini_profiler
  • Eager load linkables when loading custom sidebar sections
  • Add index to speed up ReindexSearch job
  • Refactor slide-in menu sizing for improved performance
  • Remove ember-link-component-extension to enable Glimmer LinkTo
  • Remove custom Sidebar::SectionLinkTo implementation
  • Move user-tips and narrative to per-user messagebus channels
  • N+1 queries on /tags with multiple categories tags


  • Allow header logo/title to hide, if needed
  • Header icons should be buttons, not links
  • Add aria-label to header notification counts
  • Share label needs corresponding ID on input
  • Add aria-label to embedded jump link
  • Aria-label for the post edit history button
  • Add aria tags for topic map expansion
  • History modal mode toggles need aria-labels
  • Embedded posts need disclosure widget attributes
  • Post avatars should not be tabbable
  • Add accessible label for bookmark name input