Discourse 2.5.0.beta5 Release Notes

New features in 2.5.0.beta5

Topic Thumbnails and Theme Modifiers

The ability to display topic thumbnails for topics has been a long requested feature. Historically to display such images a plugin was required. In beta5 we’ve added support for theme modifiers, including topic thumbnails, svg icons, and topic excerpts. Theme developers can take advantage of these new options when developing or updating there theme. For more details on Theme Modifiers, see: Theme modifiers: A brief introduction.

App Shortcut Support

Discourse now supports the new App Shortcut Menu, which is a upcoming browser feature regarding installed PWAs. App Shortcuts are currently supported on Android and Windows.

Right clicking, or long pressing in touch platforms, your Discourse instance PWA icon will bring a quick access menu with useful shortcuts:


For more details and screenshots, see App Shortcut Menu support

Remove Deprecated Webhooks

Last year (Discourse 2.3.0.beta7) we released the Review Queue, a single view for all reviewable items like flags, users, posts, and topics. Existing webhooks, including flag and queued post remained, but were duplicated by the reviewable webhook. We’ve now removed the older webhooks in favor of the single reviewable webhook.

Avatar Flair Icon-picker and Image-uploader

To make adding avatar flair even easier, we’ve replaced the image URL field with options to select a font awesome icon, or upload an image directly.

Personal Message when Group Membership is Accepted

Users currently receive a notification when their application to join a private group is accepted. We now instead send a PM, so users who do not access the site will also receive an email. Default PM text is:

Your request to enter @group_name has been accepted and you are now a member.

As with all text is Discourse this can be customized by site admins as needed.

PostgreSQL 12 Support

Our base image has been updated to support PostgreSQL 12. PostgreSQL 12 brings lots of improvements that will be automatically leveraged by Discourse. To upgrade your site to PostgreSQL 12, two consecutive rebuilds will be needed. For more details, including information on disk space required, upgrading two container installs, and manual upgrades, see PostgreSQL 12 update.

Releasing Discourse 2.5 later next month - End of IE 11 support

Internet Explorer 11 support will be ending shortly. We plan to release Discourse 2.5 later this month, allowing sites with users still stuck on IE11 a full release to transition. Discourse 2.6.beta1 and future releases will not support IE11.


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 4 security fixes for issues reported by our community and HackerOne.

  • Re-adds accidentally reverted commit:
  • Ensure embed_url contains valid http(s) uri
  • ERB execution in custom Email Style
  • Updates juqery to 3.5.0

Plugin improvements

Many Plugins

  • Add rubocop-discourse
  • Bug fixes
    • We’ve patched numerous bugs in many of our plugins


  • Remove reply-by-email instructions from encrypted PM notifications - replying isn’t supported


  • Policy reminder notifcations are now high priorty - use green notification icon instead of blue

Font Awesome Pro

Chat Integration

  • Add GroupMe as a supported chat provider

Knowledge Explorer

  • Display if a topic is closed on unlisted


  • Add support for search URLs

Data Explorer

  • Add additional queries


  • Assign notifications are now high priorty - use green notification icon instead of blue
  • Display assigned avatar in button and dropdown


  • Use models to store data
    • This enables the plugin to show only subscription information which was generated on Discourse. Subscription data storage is limited to the external identifiers Stripe generates so we can interact with the API.


  • Add option to use join url instead of SDK
  • Add ability to update title/date of past webinar entries


  • Move archived votes when merging topics

Code Review

  • Add option to default mute new categories created by the plugin
  • Add option to set a parent category for new categories created by the plugin

Discourse Hub App (Android and iOS)

  • Adds support for new high-priority notifications (i.e. bookmarks with reminders)
  • Improves button accessibility
  • Fixes an issue with a blank screen in some rare cases when returning to app from background

Additional Features and Fixes

Click to expand

New Features

  • Add setting to disable automatic CORS rule install in S3 buckets
  • Permalinks for tags
  • Category setting for default list filter.
  • Update the topic excerpt when the OP is rebaked
  • Add topic excerpt max length site setting
  • Add same site cookie ‘None’ option to make cross domain systems possible
  • Expose Composer.serializeToTopic in client side plugin api.
  • Extend duration allowed for download
  • Add endpoint for individual SVG icons
  • Add structured data to follow Google’s guidelines
  • Introduce a staff only override key for discourse-presence.
  • Add noindex header to tags pages
  • Allow parameter authentication for UserApiKeys
  • Allow plugins to register a callback to ignore DraftSequence.
  • Default canonical URL
  • Pass instance of revisor to post_edited DiscourseEvent.
  • Add noindex header to badges, groups, and /my pages
  • Let Google index pages so it can remove them
  • Add no_index header if robots is disabled
  • Filter settings by plugin
  • Tighten rate limiting rules for forgot password
  • Exclude muted categories from the “top” topics list.
  • Optionally delete bookmark when reminder sent
  • Include category position when exporting categories
  • Reddit video onebox
  • Facebook video onebox
  • Nokogumbo

Bug Fixes

  • Improve image downsizing script
  • returns false if the upload url is an invalid mailto link
  • Copyedit for the dominating topic warning
  • Concurrency bug when creating topic thumbnails
  • Don’t responde with error 500 if domain is invalid when adding automatic membership domain
  • Do not allow tag with name ‘none’
  • Properly ban non human users from draft system
  • Include lazyYT-container in cooked post HTML
  • Documentation was using incorrect function
  • Email Styles were evaluated out of order
  • When creating new PM username/groupname should be case-insensitive
  • No need for downcasing second time
  • Skip onceoff job for groups with invalid flair URL.
  • Do not fallback to flair_url column
  • Keep composer title and reply when switching to PM
  • Destroying a user failed when it had title
  • Group card not showing if user can’t see its members.
  • Call getURL method explicitly to prevent this context override.
  • Double Button Alignment Mobile
  • Better cross browser topic footer buttons alignment
  • We don’t create a Post object if the queued post gets rejected. We need to count review items directly.
  • Live reloading of css in development
  • Remove access control post FK from uploads
  • Tag input says tags are optional when they’re required
  • Allow GitHub app client_id to be used for OAuth configuration
  • Ensures category chooser is case insensitive
  • Adds missing tags to published page header
  • Badge granter was disabled by default.
  • Sidekiq is using _forim_session
  • Show staff counters if the rejected posts count is the only value to show
  • Requests were not being logged correctly
  • Path should be addon not app
  • Allow deprecation to work with Ember CLI
  • Select-kit was in the wrong place
  • Update default_template.html
  • guidFor is not part of Ember.Object
  • Do not parameterize tag_id
  • Don’t blow up when trying to parse invalid or non-ASCII URLs
  • Emit web hooks for flags
  • Do not set a default value for web hooks with no events
  • Migrations should not fail when db is part migrated
  • Switch discobot to pull avatar from gravatar.
  • Purge all associated data on user delete
  • S3 store has_been_uploaded? was not taking into account s3 bucket path
  • Restoring backups could fail for database dumps >` 8GiB
  • Check backtrace and backtrace_locations before trying to print an error
  • Description for ‘uncategorized’ category was blank
  • Show a useful message when starting a plugin fails without a backtrace
  • GroupArchivedMessage belongs to Group, not User
  • Applies flex on topic-footer-main-buttons
  • Join bookmarks migration on users to avoid missing user records
  • Randomize file name when created from fixtures
  • Use /tmp/pid folder to keep fixture files
  • Bump rack version from 2.0.8 to 2.2.2
  • Restoring backup didn’t clear cached translation overrides
  • Reverting multiple translation overrides didn’t clear cache
  • Improves and fixes a regression with category-selector
  • More resilient/consistent date-picker loading
  • Ensure no image downloads during topic thumbnail serialization
  • Allows to remove a topic timer with delete_replies as type
  • Ensures hide is called when card is destroyed
  • Do not remove stop words when using English locale
  • Extract reset_last_seen_cache! in user_spec
  • Switching composer action does not refresh composer actions content
  • Component was still used by data explorer
  • Include plugin CSS assets when previewing themes
  • Displays a title on sk header if no selected name
  • Correct plugin api version bump.
  • Use CDN URLs for topic thumbnails
  • Allow post migrations using #change to carry out unsafe migration
  • Always return 0 for non-human user current DraftSequence.
  • WebAPK minting was broken due to shortcut icons
  • Randomly falling user_spec
  • Workaround WebAPK server bug with images without sizes
  • Don’t compute draft for bots on categories index route
  • Apply code quoting with no syntax highlighting
  • Use proper icons for App shortcut menu
  • Run cookie tests only after logging in
  • Allow lazy-yt thumbnails to fetched by pull_hotlinked_images
  • Deleting old migration
  • Don’t compute draft for (ro)bots :robot: in topics list
  • Specific email error for replies to digest emails
  • Detect Wayback Machine using user agent
  • Load locale first in wizard app
  • Update mini racer to correct heap dumps
  • Never save draft while it is saving
  • Don’t publish typing presence if composer isn’t opened.
  • Prevent Safari from scrolling when closing composer
  • Prevents SvgSprite.bundle to query ThemeField two times
  • Composer presence shows user as editing when replying.
  • Throttle typing function in discourse-presence.
  • Change /bookmarks URL back to topic list and add bookmark poster avatars
  • Handle missing provider return sso url
  • Prevent column name conflicts in reviewable code
  • Ensures preview is correctly computing timezone for current user
  • Add type to shortcut menu icons
  • Don’t raise an exception if a TopicLink cannot be created
  • Add missing rss routes to parameter api whitelist
  • Show Settings button if plugin has settings
  • Saving drafts unconditionally increases sequence
  • Remove unnecessary forward slashes in regex
  • Add tabindex=-1 on tabLoc post links
  • Improve mobile footer nav accessibility
  • Sets a title for notifications button
  • Multiple schema.org improvements
  • Title should attempt to fallback to label before name
  • Handle a deleted topic in thumbnail generation
  • Show category name in badge preview on edit
  • Prevents rendering topic-category if empty
  • Stop clearing title by mistake
  • Default to blank title on open
  • Resolve issues with Next Monday for bookmarks not working in certain locales
  • CurrentUser now must be passed to resolveTimezone and user card local time issues
  • ESC to dismiss empty draft topic composer
  • Bookmark Modal Input
  • Support transpiling js in plugins with a root admin folder
  • Some adjustment for the UI of the table
  • Don’t trigger user_updated event for bot users.
  • Remove deprecated URI.escape
  • Do not allow null options for bookmark manager
  • Migration to set column NOT NULL for delete_when_reminder_sent on bookmarks
  • Incorrect CSS class
  • Parenthesis were wrong, resulting in an always true expression
  • preload-store was removed
  • Improves positioning of sk in mobile when inside a modal
  • Show the Bookmark button for PM topics
  • Improve topic timeline calculation logic
  • Correct edit notification username for PMs
  • Using the default_locale in locale fallbacks caused problems
  • Make can_invite_to_forum robust against plugin interference
  • Displays poll’s close date in local time
  • Preload-store was moved
  • End date of ranges in html preview was incorrect
  • Change user digest email total unread notification calculation
  • Discobot has not been created with our custom avatar.
  • Preserve code blocks when quoting
  • Flaky tests. Due to CSS transitions opacity might not be 0 yet.
  • Fixes wrapping of buttons with larger buttons
  • Avoid using a temporary table in image url database migration
  • Resolve Schema.org validation issues
  • Apply sameWidth from 450px screen width
  • Pre-select Later Today on bookmark edit if the time is the same
  • PostgreSQL fallback was broken due to Rails masking exception
  • Improve digest email styling on Outlook 2016
  • Reverts to use an observer to support loading more notifications

UX Changes

  • Remove live theme previewing in favor of refresh
  • User name instead username for profile link title
  • Add title for user profile link
  • More consistent mobile banner/alert styles, css cleanup
  • Moves editFirstPost in taggable Pms in dropdown on mobile
  • Strip text from PM bookmark and share buttons
  • Rename “Edit Message” to “Edit”
  • Remove bold from category badge text
  • Improves topic-notifications-button loading behavior
  • Adds visual feedback when changing topic notifications level
  • Remove caret from notifications-button.
  • Allow secure media URLs to be cached for a short period of time
  • Show caret only in topic footer buttons dropdown select boxes
  • Allows dropdown-select-box to display a caret
  • Fetch higher-resolution youtube thumbnails where available
  • Focus category name when editing category
  • Add copied text upon copy button click
  • Better composer-action icon when creating new topic.
  • Add symbol in TL3 report if topic reply count is capped
  • Do not use small onebox images as post/topic images
  • Limit iOS modal keyboard changes to composer
  • Introduce composer-actions when editing a post.
  • Don’t disable “create account” button & display error message for required fields.
  • Fix hard coded value in Crazy in Love badge description
  • Improve display of site setting validation message.
  • Remove underline from del & ins elements
  • Prevent timeline overlapping topic footer buttons
  • Improve banner & alert close button alignment and consistency
  • Fix modal positioning when iOS keyboard is visible
  • Adjust admin menu to better fit short (horizontal) viewports
  • Remove top padding from reddit onebox description
  • Remove bold to de-emphasize category names on visited topics
  • Fix time alignment on user activity pages
  • Add prefixed property so Firefox also gets 4-space tabs in code
  • Attempts to have a better use of available space with sk
  • Bookmark removal tweaks
  • Improve second factor UI


  • Avoid traversing DOM in loadScript
  • Remove foreign keys from bookmarks
  • Ensure we run full GC on contexts
  • Dematerialize topic_reply_count
  • Avoid race conditions when creating topic links
  • Avoid executing the same query twice.
  • Avoid hitting DB when fetching draft sequence of bot user.
  • Reduce exclusive locking when changing tables
  • Move fetching of avatar into hijack for discobot certificate