Discourse 2.2.0.beta5 Release Notes

New features in 2.2.0.beta5

Font Awesome v5.5.0

A frequent request, we’ve upgraded Font Awesome from version 4 to version 5, supporting many new icons, including a personal favorite of mine. In addition to all the new icons, this update now uses SVG icons instead of a font,

Due to the large number of icons, we no longer ship all FA icons by default. Additionally, custom themes and plugins which use FA icons will need to be updated. For the complete technical details, see Introducing Font Awesome 5 and SVG icons.

Site Settings image uploader

Previously when updating a logo for your site a URL pointing to an image was required. We’ve long supported image uploads in posts, and supported uploads in the setup wizard since it was introduced earlier this year. We now support image uploads in site settings - no URLs required.

At the same time, we recognize that admins have used the URL method for years, and have procedures in place that assume a URL. For more discussion and some suggested new procedures, see this topic.

Mobile improvements

Beta5 includes a number of mobile focused improvements. Previously topic titles were only visible on mobile when scrolled completely to the top, or by opening the timeline. We now show titles in the header when scrolling, just like on desktop. Due to the limited space we’ve hidden the menus from the header. To access them simply scroll up a small bit.
Additionally, we’ve added a new site setting short title that is used on mobile home screens and app drawers when using a PWA, making it clear for users which site it is instead of a cut off title like Disco...

Edit conflict warning

If two users attempt to edit the same post at the same time, one edit will overwrite the other. To help prevent this, we now show an edit conflict warning in the composer.

Bounced PM email whispers

If you use Discourse like we do as our primary communication tool, chances are you communicate with users “via email” in a group inbox. This works great, but email isn’t perfect and sometimes messages bounce. Bounced emails are logged in /admin/email/bounced, but there’s no notification. Now, if whispers are enabled, a whisper reply will appear right in the PM, along with the full error details.

Updated Terms of Service Template

Discourse ships with default terms of service that govern your site’s users. They were originally adapted from the WordPress Terms of Service, but have now been rewritten from the ground up. If you previously modified your ToS, they have not been modified by this change. You can see the new terms in our translation file if you wish to copy them to your site.

Limit consecutive replies

Do your users like to reply to themselves in a topic over and over again? Or reply to different users each as a new reply instead of quoting? Discourse now limits users to no more than 3 consecutive replies. If the user attempts to post more the reply will not be posted, and they’ll be instructed to edit their last post instead. The maximum number of consecutive replies can be modified via the max consecutive replies site setting.


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

  • Enforce hostname to match discourse hostname
  • Update rack from 2.0.5 to 2.0.6

Plugin improvements


  • Bug fixes
  • Experimental editing UI

Docker Manager

  • Fix “reset upgrade” button not working
  • Improve upgrade log output


  • Improved Google photo and video oneboxes
  • Bug fixes


  • Bug fix


  • Bug fixes
  • Improved re-rendering on assign/unassign

Data Explorer

  • Bug fixes
  • Search is case-insensitive

Additional Features and Fixes

Click to expand

New Features

  • Multisite support for S3 image stores
  • Reimplement SiteSetting.max_oneboxes_per_post.
  • Make uploads:missing task compatible with s3 uploads
  • Refactoring and better handling of special cases
  • Allows html tooltips
  • Allows plugins to register no module files
  • Use translated name for ‘your email has been authenticated by’
  • Allow logo URLs to be overridden easily using reopenWidget()
  • Show post approvals in Moderation History
  • Show change name of user in staff logs
  • Do not switch to JPEG unless you meet 75k byte savings
  • Plugin outlets on about page
  • Compute distance between logins to generate login alerts
  • Log password changes in UserHistory
  • Allow expanded posts to return user custom fields
  • Add button to delete unused tags
  • Better handling of quotation marks in site text search
  • Additional “related messages” section

Bug Fixes

  • More resilient whisper state between composer states
  • Call onSelect plugin callbacks for noop rows
  • Always prepend watching user timezone to previews
  • Error with tags enabled and no tags created
  • Fix query selecting users not accepting PMs.
  • Use File.join for relative_base_url, fix spec
  • Map discord/patreon FA5 icons for login buttons correctly
  • Restrict logo width for small screens
  • Throw error when link in reason for grant badge is an external link
  • Positioning issues with local-dates\
  • Add FA Discourse icon, update setting instructions
  • Get email address from email_log if bounced with verp
  • Script was missing newlines when generating hosts
  • Create whisper post in PMs when bounces with verp and user is staged
  • Title was repeating on about page
  • Static page title should be consistent on client side and server side
  • Makes sure we have a zone
  • Fix editing built-in badges after removing _.include
  • Revert to using _.each
  • Better handling of same offset timezones
  • Set overridden param for customize site text query only when checkbox value changes
  • Popular posts font weight in summary email
  • Compares timezones on utc offset and not name
  • Removes country from timezone indicator
  • Resets timezone default after callback
  • Randomly failing QUnit test.
  • Do not agree flags by default when deleting posts
  • Enable caching on SVG sprites
  • Uses appropriate z-index for tooltips
  • Notify only invited users about mentions in PMs
  • Upwards scrolling occasionally broken
  • Fix mentions for mixed case group names
  • Bug and typo in admin user badges
  • Group mentions missing after post processing.
  • Incorrect “rel” used for apple icons in <head>.
  • Alignment issue in PM inbox when bulk selecting
  • Validate topic deletion when acting on a flag
  • Properly migrate polls/votes stored as array
  • Fix routes ending in :username for usernames containing periods
  • Auto-closing poll wasn’t working
  • Fix broken theme field URLs.
  • Couldn’t delete users who voted on a poll
  • Ensure poll options keep their order
  • Don’t trigger header:hide-topic at the bottom on desktops
  • Categories/delete_categories can be undefined
  • Improves code, tests and utc handling of local-dates
  • Broken badge groupings modal UI
  • Use Discourse.deprecate instead of Rails.logger.warn
  • Better alignment of badge selector and edit btn
  • Better alignment of groups header filters
  • Failed to delete post belonging to non-existent topic
  • Remove unneeded keys from failed response
  • Mention lookup should be case insensitive.
  • Check whether group is mentionable by user when cooking post.
  • Assign default value for category.findByIds method
  • Staged users should not be mentionable.
  • Wizard icons step fields have incorrect values.
  • Give up migrating url site setting if endpoint doesn’t return data.
  • Give up migration of URL site settings if there is an SSL error.
  • Setting DISCOURSE_S3_REGION env variable had no effect
  • A search term containing '& could lead to errors
  • Make danger locale warning work with plugin locales
  • Raise Discourse::NotFound unless the user is present
  • Respond with proper error message if user not found
  • Raise Discourse::NotFound unless the topic is present
  • Browser infinite recursion when editing post
  • Never attempt to log invalid post numbers
  • Handle nil topic value when removing allowed users
  • Properly disable serializable attributes when poll plugin is disabled
  • Handle nil user value on password reset
  • Escape sso_secret string when migrating to sso_provider_secret
  • Use count variable for pluralized string.
  • Skip gsub for normalizing whitespaces when text is nil
  • Remove site settings override for deprecated url site settings.
  • Clear theme cache when restoring
  • Adds support for missing reports from old dashboard
  • Do not show nested user cards
  • Show Google video preview on iOS devices
  • Convert relative image url to absolute url
  • Don’t show the Quote popup if posting is disabled
  • Clear uploads cache on SiteSetting.refresh!.
  • Job to clean up old URL settings when new setting has been set.
  • S3 CDN for markdown it bundle
  • S/save/finish for wizard exit early button
  • Select-kit items shouldn’t have flex-grow
  • Improves category/tag drops header shortcuts
  • Avoid using absolute positioning for box category style in emails
  • Only use blockquote which is immediate child of aside
  • Better handling of missing welcome topic in wizard
  • Make Discobot image tutorial accept URL that points to images.
  • Only check for conflict on edit drafts
  • Makes sure an hex is always at 6 chars
  • Change ‘max_consecutive_replies’ default to 3
  • Reset bump date resets bumped_at to the last regular post in topic
  • Only send originalText when we need to
  • Don’t hide information from the card that is visible in the topic
  • Change title when primary group changes
  • Category row title
  • ‘migrate_from_s3’ rake task should respect max sizes
  • Update logster to handle logging of invalid encoding strings
  • Prevent uploads used in site settings from being deleted.
  • Stricter window.opener checks
  • Cache url data for failed inline oneboxes
  • Translation improvements for unused tags (d89ffbe)
  • Opts is a hash in ‘log_on_user’
  • Do not check for suspicious login when impersonating.
  • Handles not found reports in bulk loading
  • Improve performance for Group.posts_for
  • Don’t enqueue topics if the user can’t create them
  • Fix/removes broken elements of old dashboard
  • Fix vertical scrolling in modals
  • Never redirect back to /sso it will cause a loop
  • Ensure we never cache login redirects by mistake
  • Relative links in translations should work with subfolder
  • Do not display broken image on crawler/print view
  • Relative links in templates should work with subfolders
  • Correct svg handling for images
  • Clarify User.group_locked_trust_level.
  • Search within topic not working correctly in CJK
  • Edit category tags select-kit inputs width were wrong
  • Disable flagging hidden posts
  • Uses hex to compare images

UX Changes

  • Strip class when link is not oneboxed due to site setting limits.
  • Use aspect ratio to calculate width and height precisely
  • Style group flair in /groups same as in topic avatars
  • Topic stats were hard to translate
  • Category images have no sizes
  • Better handling of logo size
  • Add height attribute to logo on error pages
  • Ensure unstyled .btn-social elements have a contrasting background
  • Improving theme upload modal alignment, markup
  • Contain site setting uploads within the div.
  • More consistent category setting layout
  • Leave room for floated radio input on mobile
  • Fixes display issues in split to existing topic modal
  • Better related messages condensed layout
  • Shows a save changes for intermediate steps
  • Improve category reordering functionality
  • Maintain aspect ratio of cropped image thumbnails
  • Don’t show 0 vote count in crawler or print view
  • Switch to neutral background color for image uploader in site settings.
  • Improve copy for tag upload
  • Condense layout when suggested and related messages are available
  • Use header top to calculate docking position
  • Minor tweaks to theme components selection UI
  • Take custom markup into account when docking header
  • Improving group directory layout for small screens
  • Rename Most Disagreed Flaggers report to “User Flagging Ratio”
  • Inform users old dashboard is going to b removed
  • Trash icon displaying when there is no upload take 2
  • Trash icon displaying when there is no upload.
  • Make long sign-up forms scrollable in modal
  • Make the edits indicator a real link for accessibility
  • Adds new categories layouts to the wizard
  • Minor copyedit.


  • Use JSONP for SVG sprites so they are served from CDN
  • Move processing of inline onebox out of V8 context
  • Move mention lookups out of the V8 context.
  • Fix N+1 for non-staff users when tagging is enabled.
  • Cache path for svg-sprite in upcoming FA5
  • Try to match users before groups.
  • Avoid left joins and distinct on posts_for query
  • Speed up migrate_to_s3 rake task.
  • Exclude tables when remapping in migrate_to_s3 rake task.
  • Reduce number of database queries for DbHelper.remap
  • Use mini_sql for the query