Discourse 2.3.0.beta7 Release Notes

New features in 2.3.0.beta7

New Review Queue

This is a large refactor that merges all types of reviewable items in core Discourse (Users, Queued Posts and Flags) into one consolidated review queue.

New Features

  • One convenient place to review all content
  • Reviewable items are scored and the highest scored items are shown first. Staff members and higher trust level users score items higher than new users.
  • You can filter the review queue by status, score, reviewable type, category
  • The API for reviewables returns the list of actions that can be performed on an item, which means the front end application can be simpler and not duplicate all the logic.
  • Data structures are built to enable non-staff level moderation of items in the near future

Software Design Notes

The Reviewable model uses single table inheritance (STI), and each type of reviewable must declare a subclass, serializer and ember component. Three types currently exist: ReviewableQueuedPost , ReviewableUser and ReviewableFlaggedPost . Developers are encouraged to look at how other reviewable items are implemented and build their own.

Post Actions (such as flags) must now be created using the PostActionCreator service object. It has a much friendlier API now and returns a result object which will return the associated reviewable.

Backwards Compatibility

REST API is maintained with the old endpoints, however deprecation warnings are logged. Third party code that is pointed at the old APIs should be updated to the new review queue API. All of the Ember.js/front end code for the old user approval / flagging interface / queued posts is removed.

In a future release we will remove the old APIs and backwards compatibility.

Delegated authentication via user api keys to be used with Apps (like the DiscourseHub mobile app that will be released soon)

This adds a new capability to the user API: delegated authentication via a one time password mechanism. This allows apps to request a one-use password and use that to authenticate the user in an isolated browser session (like SafariViewController, for example).

Let users delete their own topics

Allow end users to tombstone and close the topic if it has no replies (waiting 24 hours till actual deletion).

Introducing new UI for tracking User’s ignored or muted states

  1. Add ignore duration selection for user notifications preferences page
    Introducing new UI for tracking User’s ignored or muted states
    Ability to Ignore a User

  2. Introduce ignore duration selection

Ability to restrict some tags to a category while allowing all others

A new checkbox has been added to the Tags tab of the category settings modal
which is used when some tags and/or tag groups are restricted to the category,
and all other unrestricted tags should also be allowed.
Default is the same as the previous behaviour: only allow the specified set of
tags and tag groups in the category.

Allow users to customize bonuses for reviewable types

A new settings section in the review queue allows admins to specify that
certain types of flags should be weighted higher than others.

Bug and UX Fixes

Update the reviewable count before the message bus

In certain edge cases, the message bus won’t send the message to the
user about the updated review count and it can go out of sync.

This patch synchronizes the review count every time:

  1. The user visits the “Needs Review” page

  2. Every time the user performs an action

Don’t trigger notifications when changing category/tags of unlisted topics

When topic is unlisted it should not notify a user if it is moved to a new category in any scenario

Hide post replies content for ignored users

This is part of the Ability to ignore a user feature.


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

Logster Transporter

  • Remove logster_transporter_ignore_regexps site setting #1
  • Now that Logster ships with UI for ignoring logs, we no longer need this setting.


  • Fixed Issues


  • Only include fields with non-null value
  • Explicitly setting counter value

One Box


  • Update imagemagick patch version

Mini Scheduler

  • Add some basic gem infrastructure
    • Support for guard
    • Support for rake tasks
    • Support for travis


  • Fixes and Updates

Additional Features and Fixes

Click to expand

New Features

*Add scheduled job to ensure s3 uploads existence

  • Change layout when default page is category to tabular for _… (
  • Bump onebox version, add styling for new reddit image onebox
  • Ensure consistency of post uploads in cooked content
  • New ‘Reviewable’ model to make reviewable items generic
  • Show replies to the post, not the topic

Bug Fixes

  • decoratorHelper.widget is not always present
  • Layout was off in single-page user-preferences
  • Migrated flags should be reviewable by moderators
  • Skip some checks for CJK locale in TextSentinel
  • Recover from migration failure
  • Make sure the site setting works and fix build
  • Computed is not used
  • Only perform logic on create commits
  • Reviewable counts were not updating properly
  • The option to delete replies was missing from the new review queue
  • Set missing count in redis even if zero
  • Rewrite old /admin/flags links to use the review queue
  • Do not raise exception if the file is missing
  • Use unfiltered URL when viewing all badges.
  • Linting
  • Deleting Users should work nicely with Reviewable Users
  • URL to user profile in poll results.
  • Protected method called, I’ll fire myself now
  • Don’t create two reviewable scores for a user
  • Reviewables should not be created for users until they are active
  • Reverts href removal from user/group cards links
  • Allow queued posts from deleted users to be rejected
  • Add more links to bandge cards.
  • Links in badge summary were not clickable.
  • Clean up user export csv upload records in scheduled job
  • Letters between words incorrectly highlighted within post.
  • Avoid penalizing long documents too much in search.
  • Grant first quote at the date post was created
  • On rebakes should not recreate quoted_posts records
  • Restrict scope of old scheme upload migration.
  • Regenerate optimized images instead of migrating from old scheme.
  • Ensures click on emoji in picker doesn’t propagate
  • Restricted site text better error
  • Category id wasn’t stored when enqueueing a topic
  • Inconsistent user card position in Safari
  • Do not allow invite_only and enable_sso at the same time
  • Allow us to serialize reviewables with deleted topics
  • Only staff can banner topics
  • Uncategorized pm not allowing edit
  • UploadRecovery should look through posts for img src and bbcode.
  • Handle more cases in UploadRecovery.
  • Double render error with delegated authentication
  • Don’t reindex posts belonging to a deleted topic for search.
  • Don’t attempt to reindex posts that have an empty raw.
  • Don’t log a second pending action
  • Don’t refer to pending review items as flags
  • Ensures popover is hidden when changing route
  • Handles boolean with popupMenuOption
  • Don’t enqueue TruncateUserFlagStats job when not needed
  • Whitelist ‘feGaussianBlur’ and ‘filter’ svg elements
  • Improves DST support of dates when recurrence is used
  • Keep alt and title in lightbox when indexing for search.
  • Relevance search will now consider document length in ranking.
  • Don’t index posts with empty Post#raw for search.
  • Better display if the topic is deleted
  • Let users delete topics.
  • Apply min_score_default_visibility to reviewable topics list
  • Missing translations for agree/disagree details
  • Allow users with posts to be rejected
  • Reset embedding settings when no embeddable host, log host changes
  • Check if user is already allowed before adding to topic allowed users
  • Avoid the deleted_at scope when recovering a topic from a recently recovered post
  • Ensures score is 0 and not null if no associated reviewable_scores
  • Correctly uses woman version of previously genderless emojis
  • Avoid error on ajax.abort() when client has not opened the request.
  • Safari needs a max-width to prevent modal overflow
  • Admin chart y axis labels being rounded up/down when value is small.
  • Admin search logs should filter by date instead of timestamp.
  • SearcLog.term_details generating incorrect data because of case.
  • Remove :term from admin/search_logs/term/:term route.
  • Expire theme cache after remap
  • Approved is status 1
  • Missing events for ReviewableUser migration
    *Approved should not be assumed in the migration
  • ReviewableUser is not created yet
  • Incorrect API in narrative bot
  • Add missing strings.
  • Regressions in JS test suite
  • Broken spec
  • Remove old flagging scss, fix more linting
  • Lint on JS

UX Changes

  • Displays exact date on title attribute of topic timer info
  • Adjust layout, allow additional responsiveness
  • Show user fields when reviewing a user
  • Slightly improved reviewable user display, plus link to admin if possible
  • Reduce specificity of reviewable item styles
  • Remove extra border on old mobile post notices
  • Improve posts layout for crawler
  • Add awaiting-approval class to login modal
  • Get rid of preview_for
  • Reviewable spacing adjustments
  • Reviewables fixes
  • Restructure queued posts to match flags, fix text
  • Reviewable layout improvements
  • Gives aria-label to topics count in category-row
  • Ensures only <li> are used as top level in breadcrumb
  • More compact local-dates preview (#7305)
  • Wrap title on search log term page with a proper div.
  • Pass period params when looking at search logs for a given term.
  • Consistent profile image positioning on desktop and mobile
  • Link directly to the post, not to the topic
  • User-card adjustments for users with hidden profiles
  • Show which groups are missing permissions for parent category
  • Always use relative age for post notices.
  • Better display for deleted users in the review queue
  • Improve ignore button alignment on user profiles
  • The text “Count” is clearer than “Reviewable Count”
  • Minor profile page restructure
  • Unified emoji escape regex
  • Use a step size of 1.
  • USe bar chart for admin search logs details page.
  • Use the same default period for search logs index and term.
  • Collapse advanced search on mobile when searching.
  • Prevent mobile nav from collapsing while content loads
  • Improves local-dates form


  • Speed up suggested unread
  • Add index for (action_type,created_at)onuser_actions` table.
  • Speed up home page unread+new query
  • Keep track of when a users first unread is
  • Delete search data of posts from trashed topics periodically.
  • Better use of index when queueing a topci for search reindex.
  • Improve quality of PostSearchData#raw_data.