# Discourse Version 2.0

**URL:** https://meta.discourse.org/t/discourse-version-2-0/73729
**Category:** Announcements
**Tags:** release-notes
**Created:** [November 8, 2017, 11:26pm UTC](https://meta.discourse.org/t/discourse-version-2-0/73729 "2017-11-08T23:26:34Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [November 8, 2017, 11:26pm UTC](https://meta.discourse.org/t/discourse-version-2-0/73729/1 "2017-11-08T23:26:35Z")

</div>

### Focus

- ✅ Redesigned admin dashboard, with @hawk in charge

- ✅ [Adding recipients to the bottom of the mail](https://meta.discourse.org/t/email-notification-recipients-unclear-when-pm-is-sent-to-multiple-users/26934/34), combined with adding group names to group PMs

- ✅ [Automatically close a poll on a given date/time?](https://meta.discourse.org/t/automatically-close-a-poll-on-a-given-date-time/79642) @zogstrip

- ✅[Deprecate user card badge](https://meta.discourse.org/t/deprecate-user-card-badge/60944); move into plugin, @neil

- ✅ Allow [requiring at least one tag](https://meta.discourse.org/t/the-option-to-enforce-tagging/69527) on all topics. @techAPJ

- ✅ Insert date/times that automagically translate to the reader’s proper time zone @j.jaffeux

- ✅ Upgrade various JS dependencies ( ~~Ember~~ / jQuery and so on) early in the 2.0 cycle.

- ✅ Add whitelist and blacklist for crawler bots to reduce unwanted traffic @neil

- ✅[Group/inbox messages not updated for new posts](https://meta.discourse.org/t/group-inbox-messages-not-updated-for-new-posts/38189)

- ✅[Store a real revision for large grace period edits - #14 by sam](https://meta.discourse.org/t/store-a-real-revision-for-large-grace-period-edits/81614/14) @sam

- ✅[Better detection of "cookies deleted" in the application](https://meta.discourse.org/t/better-detection-of-cookies-deleted-in-the-application/78800)

- ✅ [https://meta.discourse.org/t/ability-to-merge-users/9220](https://meta.discourse.org/t/ability-to-merge-users/9220) which @gerhard plans to start looking at

- ✅ [Add support for theme settings](https://meta.discourse.org/t/add-support-for-theme-settings/78103) @Osama

- ✅ Allow staff to tag PMs

- ✅ Two factor auth login support courtesy @awole20

- ✅[Search refinements](https://meta.discourse.org/t/prioritizing-content-more-effectively-in-search/63010/24) – primarily built in Postgres ranking boost for topic titles, possibly category boost as well) and refined search logs

- ✅ Passwordless login via link [Passwordless signin via email link](https://meta.discourse.org/t/passwordless-signin-via-email-link/57569)

- ✅ Paste in HTML content and it will be converted to markdown (can be turned off via site setting) @vinothkannans

- ✅ Menu toggle for different reply modes per [this mockup](https://meta.discourse.org/t/menu-toggle-for-different-reply-modes/58133) @j.jaffeux

### Codename

- ~~Aeschines v1.1~~
- ~~Andocides v1.2~~
- ~~Antiphon v1.3~~
- ~~Demosthenes v1.4~~
- ~~Dinarchus v1.5~~
- ~~Hypereides v1.6~~
- ~~Isaeus v1.7~~
- ~~Isocrates v1.8~~
- ~~[Lycurgus v1.9](https://meta.discourse.org/t/discourse-version-1-9/61289)~~
- [Lysias v2.0](https://en.wikipedia.org/wiki/Lysias) ←

### Start date

Jan 4, 2018

### Planned release date

May 31, 2018

---

<div class="post-metadata">

### Author: ![neil](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/neil/32/102150_2.png) [@neil](https://meta.discourse.org/u/neil)
#### Post date: [May 31, 2018, 10:49pm UTC](https://meta.discourse.org/t/discourse-version-2-0/73729/4 "2018-05-31T22:49:48Z")

</div>

## NEW FEATURES

- Add Bulgarian language

- SMF1 importer

- Add support for `group_name` parameter in `/new-message` route

- Ability to clear a user’s penalty history

- New design for the login / create account forms

- New login / create account form layout

- Horizontal login / create accout layout

- Allow searching in title in advanced search

- Add warning banner in email settings when mailing list mode enabled

- Allow registration of an array custom field

- Do not boot Ruby if not on 2.4 or up

- Staff action logs when creating/updating/deleting badges

- New ‘staged’ users list for admins

- Add a 30 seconds grace window for 2-factor token checks

- Hide plugins that ship with core from plugins panel

- Allow plugins to modify class statics

- Keep `EmailLogs` records without a `reply_key` for 90 days by default.

- Clearer error message when receiving a reply to an old notification

- Update avatars in posts and revisions when user gets renamed

- Replace username in notifications when user gets renamed

- Update mentions and quotes when user gets merged

- New site setting `min_flags_staff_visibility`

- Display description for group cards

- Add profile\_background fields into SSO (#5701)

- Keep formatting when quoting

- Add plugin outlet for desktop (live) notifications area

- Push notifications for Android (#5792)

- Push notifications for Android

- Rename discourse-cronos to discourse-local-dates

- Rename cronos bbcode element to date

- Remove support for legacy auth tokens

- Include participants at the bottom of PM emails (#5797)

- Include participants at the bottom of PM emails

- Discourse-cronos is now a core plugin

- Add description in ‘List-Id’ mail headers

- Theme settings in RAW hbs templates

- Automatically close a poll on a given date and time

- Rename user in mentions and quotes

- Adds emoji search aliases

- Show tags on PM list on mobile

- Add a delay on the “mention” warning in composer

- Support anonymizing a user’s IP addresses

- Suppress duplicate username/names containing .

- Index YouTube titles in search

- Include report title in PM subject and filename

- Add option to delete all replies of flagged post

- Allow [safe mode](https://meta.discourse.org/t/53504?silent=true) to be disabled

- Add staff action log for post approvals

- Move staff tags setting to tag group settings

- Enable the Web Share Target API

- If site is under extreme load show anon view

- Ctrl click on links allowed in preview

- Track request queueing as early as possible

- Group cards popup on mention clicks

- An API to help sites build robots.txt files programatically

- Provide extra signal about content age to crawlers

- Bingbot heavily throttled till it plays nice

- Webhook for flag events

- Disallow tags and categories rss feeds

- Enforce tagging on categories

- Remove topic rss from robots

- When uncategorized topics are not allowed, disable the post input until a category is chosen

- Adds support for loading existing core asset in pretty text

- Add option to have sso synchronize group membership

- Revamp full-page-search UI (#5703)

- Notify flaggers when flagged post is edited by author

- Theme settings in handlerbars templates

- Staged user moderation (#5721)

- Allow for setting crawl delay per user agent

- Implements minimum selection for select-kit

- Send a different PM when a post has been hidden more than once

- Show the current reply count of the flagged post

- Use Message-ID for detecting email replies to group

- Block bing from crawling all discourse sites

- Webhook for tag events

- Add unseen-topic and new-posts classnames to topic list items

- Webhook for group and category events

- Allow users to collapse profile after expanding it

- Bump rack-mini-profiler version

- Show sub navigation for selected PM tag

- Control web crawlers access with white/blacklist

- Option for tags in a tag group to be visible only to staff

- Add request start time so we can track queueing

- Control which web crawlers can access using a whitelist or blacklist

- Allow admin to manage group owners on group page.

- Add staff action log for ‘restore topic’

- Protect against accidental column or table drops

- Shared Drafts

- Admins should be able to view PMs of any group.

- Maintain preview theme, while previewing

- No category description in category-drop for staff or TL \>` 0

- Add `quote-modified` class if a quote has been modified

- Set ‘Retry-After’ header for 429 responses (#5659)

- Replace PM tags dropdown with a dedicated tags page

- Log Staff edits in Staff Action Logs

- Prototype of local theme directory watcher

- Support markdown rendering for embedded posts

- Allow themes to live in private git repos

- Split out max diff to 2 settings

- Filter personal messages by tags

- Upgrade jQuery to version 3.3.1

- Update CommonMark to version 0.28

- Add user-profile-avatar-flair plugin outlet

- Editing\_grace\_period\_max\_diff to force revisions in grace period

- Live updates for user’s messages page.

- Detect when client thinks user is logged on but is not

- Limit assets less that non asset paths

- We need access to settings in theme js

- Theme settings (2) (#5611)

- New “Categories and Top” homepage style

- Whitelist data for themes

- Disallow groups from being indexed

- Extract signatures from most popular email services/software

- Rake task for merging users

- IP.Board 3 importer

- Disallow login via omniauth when user has 2FA enabled.

- Begone gmail signatures!

- Automatically elide forwarded emails and signature from outlook

- Show “edit message” button on message footer for staff

- Trigger topic webhook when topic status is updated.

- Automatically elides gmail quotes

- Replaces tag-chooser/tag-group-chooser with select-kit component

- Allow staffs to tag PMs

- Add category suppress from latest

- Use HTML instead of text for incoming emails by default

- Add instrumentation for all external net calls

- Implement 2factor login TOTP

- Search within title using in:title

- New site setting ‘max\_emojis\_in\_title’

- New site setting for additional allowed filetypes for staff (#5364)

- New site setting for additional allowed filetypes for staff

- Add setting which adds group name to PM email subject (#5475)

- Add rake task for import/export of site settings

- Add goanna rendering engine to non crawler list

- Whitelist div`[data-theme-*]` (#5598)

- Displays category badge in {{category-chooser}} header

- Show avatar flair on user profile page

- New {{mini-tag-chooser}} replaces {{tag-chooser}} in composer

- Login by a link from email

- Notification API Endpoints for Admins

- Only load service worker for Android

- New site setting, `allow staff flags`, false by default

- Style new gfycat onebox

- Composer HTML pasting ul tag support for MS Word

- Improves composer-actions toggle menu

- A site setting for a minimum TL to post links

- A setting to customize the minimum TL to flag a post

- Vanilla bulk importer

- Display search on large category-drop and tag-drop

- Menu toggle for different reply modes

- Mixed text direction support

- Allow better fidelity for auto linkify, disable most tlds based linkify

- Composer HTML pasting support for complex table formats

- Invision Power Board Importer

- Log private message views

- Staff members can lock posts

- Select-kit api to modify collection header

- Allow plugins to register a new locale

- Do not restrict categories filtering to only FULL permission type

- Replaces category/tag dropdowns by select-kit

- Allow site operators to disable emoji shortcuts

- Disable service worker for all browsers except for android

- Bump rbtrace to latest

- Add topic posts count to webhook post serializer

- Allow sending invites to staged users

- Grant badges in post admin wrench (#5498)

- Grant badges in post admin wrench

- Shorten setting name to max\_reqs

- Emit external\_id field with user webhook

- New modal to show flags received for a user

- Plugins can send more data to Google Tag Manager

- Show header search results on search log term details page

- Keyboard shortcut to refocus composer (#5506)

- Much improved and simplified crawler detection

- Add collapse button

- Replace period-chooser by a select-kit component

- Add setting to display tags by tag groups

- Allow system api to target users via external id or user id

- Display force\_https warning in admin problems dashboard

- Show create new topic link on mobile

- Global rate limiter can bypass local IPs

- Allow posting via email to read-only mailing list mirror category

- Updates emojis to last revision

---

<div class="post-metadata">

### Author: ![neil](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/neil/32/102150_2.png) [@neil](https://meta.discourse.org/u/neil)
#### Post date: [May 31, 2018, 10:50pm UTC](https://meta.discourse.org/t/discourse-version-2-0/73729/5 "2018-05-31T22:50:14Z")

</div>

## BUG FIXES

- Add protection for scss removal during upgrade

- Update activation email route was returning a generic json error.

- Rake assets:precompile should be re-runnable

- Uses mixin instead of mobile file for local-dates modal

- Don’t generate an exception when trying to cleanup unexisting tmp letter avatars

- Add classes to input groups and move tips

- Update poll-builder to new modal design

- Add proper search context for personal messages

- Input tip causes modal to change width when present

- Use user account email instead of auth email when totp is enabled.

- Extra comma resulted in Github auth email result being an array.

- Show poll options when user is in a PM with a bot.

- Error when flagging to notify moderators because message title is too long

- Simplifies and corrects new collection header tag/drop behaviour

- Show none/all on cat/tag drop only when needed

- Link to pm tags when searching in personal messages

- Avoids hidding mobile keyboard on each keystroke

- Split by space to support multiple categories export

- Prevents collection header from going under rows

- Do not add invited user to automatic groups

- `topic_destroyed` web hook couldn’t find topic.

- Load post revisions in correct order

- Adds quotes around format when creating a local date

- Search server side error in rare condition

- Viewport in smoke test configured incorrectly.

- ColorScheme color missing was returning “nil”

- Korean needs no word segmentation

- Don’t publish notifications\_state when user has been deleted

- Ensure ‘notifications\_state’ is up to date after creating a notification

- Don’t 💥 when ‘FastImage.size’ has trouble with SSL

- Use the username formatter when updating cooked usernames

- Move tips into instructions div

- Flags report is now a lower is better kind of report

- Extraction of quoted posts failed in some cases

- Invalid setex expire time in `DiscourseNarrativeBot::Actions#reset_rate_limits`.

- UserProfileView: Do not log IP of logged-in users

- Destroy notifications and sync notifications count in transaction.

- Update cache times for service workers

- Forces boolean when content is only “true” && “false”

- Ensure PostAlerter is always run in sidekiq

- Make report data export more resilient to inconsistent date format

- Do not cook local date without attributes

- Align categories with menu panel links

- Safari failing to download backups from email links

- Broken ping event for web hooks due to missing payload.

- Don’t enqueue web hooks inside a deferred queue.

- In rare conditions post timing would miss the user

- Don’t silently fail if notification fails to create.

- Not found page shouldn’t include the Google search form for sites with login\_required enabled

- Paths used by PrettyText were not always initialized

- Prevents &hellip from being displayed in title attribute

- Do not show composer actions if irrelevant

- Clarify badge image field help text

- Makes sure email-preview is set

- Bbcode regex was greedy and preventing quotes

- Run deferred jobs inline in sidekiq

- Apply automatic group rules when using social login providers

- Check group names when checking username availability

- Update Indonesian translations to fix date translations

- Uses tooltip to display local dates previews

- Do not replace wrong avatars when renaming user

- Make the image field use its own help string

- Both icon and image fields used the same string.

- TopicLinkClick: do not log IP of logged in users

- If we have no logo defined use sketch in manifest

- Stop adding email to unsubscribe url

- Payload for webhooks should be current as of the time the event was triggered.

- Variable name typo

- Use avatar\_dir to import user avatars

- Revert utf-8 encode changes

- Restrict updates on `confirm_old_email` email templates

- Improves discourse-local-dates rendering in emails

- Handle invalid mailto links

- Check for blank response when polling feed

- Client not setting `TopicTimer#based_on_last_post`.

- Don’t allow duplicate watched words (#5844)

- Rescue specific error

- Wrong target user displayed for user actions in activity stream.

- Manifest.json better detection at mime type. Find size if uploaded

- Best effort at returning correct mime types in manifest.json

- Handle invalid tags

- Missing notification for watching first post users when topic is recategorized.

- Handle bad user profile website

- Handle missing users when sending push notifications

- Handle encoded mailto links when looking for upload record

- Check for existence of topic before looking for category

- Suggest name when username/name is provided

- Hyperlinks did not work in category boxes

- Destroy picker if it was loaded

- Infinite loading was broken on group activity posts/mentions pages

- Do not replace hashtags in URLs

- Do not replace twitter handles in URLs

- PostOwnerChange should update ‘topic.last\_poser’

- Don’t purge unactivated users with a message

- Keep ‘`&lt;kbd&gt;`’ formatting when quoting posts

- Puts the datepicker on it’s own line on mobile device in the feature topic modal

- Changing owner of deleted reply didn’t work

- Don’t use PMs in Incoming Links reports

- Tags in a ‘visible by everyone but usable only by staff’ group weren’t visible by everyone

- UTF-8 encode feed response body

- Message bus had corrupt internal state for first 30 secs

- Copyedit plugin to feature for built ins

- Allow editing post that belongs to deleted topic

- Transaction in UserAnonymizer prevented avatar from updating

- Changing tag group privacy setting was not consistent (#5818)

- Automatically in/decrement topic\_tags.pm\_topic\_count

- Search icon is rendered outside of tag-selector filter-input

- Scrub all settings that has ‘\_secret’ in name

- Scrub secret setting values from logs

- Automatic group membership when using SSO

- IncomingLink: do not log IP of logged-in users

- Makes report description optional

- Username update should ignore revisions without raw

- Update search index after renaming user within posts

- Update avatar in oneboxed posts when renaming user

- Anonymizing user didn’t replace uploaded avatar in posts

- Only unstage staged users

- Allow user quotes in HTML digest emails

- Staff members should see all tags

- Always unstage users when they log in

- Redirect users after signing up with a social login when using SSO provider

- Remove unneeded escape when building a Quote

- Redirect users after signing up using SSO provider

- Redirect to sso\_destination\_url after account activation

- Show a json api response when deleting a user with posts

- Format posts for embedded comments as we do for emails

- Clicking a group mention on mobile was 404ing

- Always update bounce score (instead of doing it once per day)

- Supports user/group mentions and category hashtags when quoting posts

- Prevent theme uploads from overwriting existing variables

- De-duplicate push subscriptions - ensure unique user/key

- Automatically add user to groups after updating email address

- Temporary redirect for service worker scripts

- Better handling of invite links after they are redeemed

- Use default locale for flag reason

- Deprecate invite\_passthrough\_hours setting

- Replace username in deleted posts when user gets renamed

- Exact matching should also match on title

- Add context for deactivated user logs

- Regenerate vapid keys when the public key bytes is blank

- Retrigger notification when a topic is recategorized.

- Topic search wasn’t working for unlisted topics

- Retrigger search scoped to a topic if topic changes.

- Search term scoped to topic should be highlighted in widget dom era.

- Don’t downcase group name.

- Incorrect query when removing a group owner.

- Decorate user stream should include element

- Proper category \>` subcategory order in List-Id description header

- Revert to es5 function syntax

- Recurring attribute was undefined on local-dates cooked posts

- Show a nicer message when there aren’t any flagged topics.

- Missing translation for PM mentions

- Don’t extract divs with a ‘gmail\_default’ class

- TopicEmbed.import should update title and author

- Leftover debug statement

- Dragging of timeline was flaky on iOS

- In some cases we subscribed to an invalid channel

- Only allow one user to be created per invite

- Title selector needs to flag whether title comes from badge or not

- Disallow invalid top\_menu and post\_menu and share\_links

- Don’t trigger autocomplete for tags after space is entered

- Inline `[code]` not handled properly

- Remove facebook\_request\_extra\_profile\_details

- Allow for application json to work around mac issues

- Update mail gem to fix UTF-8 parsing issue

- Opening options menu did not dismiss emoji menu

- Don’t allow a user to become TL3 if they’ve ever been penalized

- Error reporting when adding a watched word

- Merging users failed when PM was sent to source and target user

- Specify path for dosp cookie

- Exclude topics from latest in /categories on refresh

- Remove check for deprecated site setting

- Deadlock when topic with auto close topic timers exceeds `auto_close_topics_post_count`.

- Only show offline page when user is offline.

- Calculate z-index for fixed usercard on preview

- Message bus now properly detects log off

- Better error message in `GroupsController#add_members`.

- Remove auth cookie if we see InvalidAccess

- Export download link was broken

- Create upload record for exported csv files

- Don’t break when posting invalid URIs

- Localize everyone group name in default category permissions

- Error when non-staff user edits their topic after a hidden tag is added to it

- Strip emoji string from slug

- Trigger group card on a post’s primary group click

- Blacklisted crawlers could get through by omitting the accept header

- Don’t allow spaces in ‘reply\_by\_email\_address’ site setting

- Missing `Group#bio_raw` attribute for group owners.

- Sanitize click track links

- Incorrect formatter used when logstash formatter is enabled.

- Display user card background image

- Don’t add diff classes more than once

- Set notification level when changing post owner (#5616)

- Do not notify last post editor if they mention themself

- Missing action to trigger add group members modal for group owners.

- Verify filtered tags when checking for category minimum required tags

- Parameterize tag\_id

- Use `new-password` instead

- Header nav should be tabbable and have focus state

- Don’t autocomplete the password confirmation field

- Make get\_hostname more lenient to user input

- Users shouldn’t get notifications about mentions from system users

- Adds ellipsis on name of dropdown-select-box row

- Group pages should work when group name contains periods.

- Apply fa-fw on class instead of icon name

- Disable save button when new group form is empty.

- Non-oneboxed links on separate lines should stay on separate lines

- Allow lists in summary email post excerpts

- Adds incorrectly removed context checkbox

- An option in `aliasLevelOptions` was accidentally removed.

- Use root path for service\_worker\_asset and handle subfolder installs for the ‘/c’ route

- Remove duplicates in available titles

- Prevents keyboard from appearing on android when expanding

- Bulk append/replace tags was not working

- Group can’t be deleted if certain users are demoted.

- Staff users are not affected by `enable_group_directory` site setting.

- Rake task should rebake posts in descending ID order

- Preference page error when badges are disabled

- J/K keyboard shortcut misbehaving

- Differentiate one/other select-kit maximumLabel/minimumLabel

- Use safe navigation operator when checking for totp\_enabled

- Date range was inconsistent for admin dashboard reports

- Unable to save groups with mixed case names

- Binding style attributes need to be escaped.

- Broken PM title line wrapping

- Prevent group owners from editing admin only settings.

- Can’t upload backup.

- Restorer wasn’t rolling back if restore fails.

- Don’t give two errors about not being able to post links

- Scrolling was off sometimes

- If a message is _partially_ archived consider it not archived

- When uploading image newuser restrictions should not apply to staff

- Update categories topic\_count when converting topic to a PM and vice versa

- Regression where tag could not be deleted with click

- New/unread tabs should re-appear dynamically

- Update Google Tag Manager javascript

- The order of import globbing is not deterministic

- More conservative refactoring to avoid regressions in customisations

- Unable to import private themes due to key checking

- More resilient focus filter or header

- Regression preventing backspace to work on mini-tag-chooser

- Broken specs too. Quotes are fragile!

- Broken JS tests

- Manually adds tag if existing but not in returned matches

- Username uniqueness check should not happen to current user\_id

- Calling incorrect method

- Regression preventing addition of multiple tags in a group

- Add server side uniqueness validations for `Group#name` and `User#username`.

- CDN\_URL hostname should be in GlobalSetting.hostnames

- Discourse-solved plugin controls (buttons) should be in first place

- Properly hide nav items

- Silenced user wasn’t being linked properly

- Tag notification preferences were being cleared when other preferences were changed

- Show error if dashboard can’t load

- Remove unneeded and uninformative title on user notifications list

- Do not lighten color when no selection for cat and tag drops

- Reverts combobox placeholder and introduces noneLabel

- Correctly shows education text for categories

- Shared draft performance fix + missing avatars

- Ensure theme variables are unique when adding an upload

- Don’t allow links with no href

- Remove uneeded and uninformative title on user notifications list

- ‘uploads:recover\_from\_tombstone’ rake task wasn’t restoring attachments

- Missing translation key

- Correctly localizes period chooser row title

- Adds spacing between category name and text in topic timers

- Tests could get stucked in infinite loop if it fails to resolve IP of a hostname.

- Add reserved usernames for ‘/u/’ static routes

- Watched word counts always show as 0

- Lint error

- Make sure a post has replies before accessing the reply\_id

- Application request count keys not expiring in redis

- Try fixing unparsable email addresses

- Discobot fails when max\_emojis\_in\_title=0 (#5710)

- Discobot certificate description wasn’t escaped

- AuthComplete query param should carry-forward to login page

- Show private message topic count on admin dashboard reports

- Makes sure category desc is displayed as row title when possible

- Update `last_version_at` when publishing

- Publishing should update the public\_version too

- Don’t include shared drafts in global latest

- Respect nofollow settings for onebox links

- Could not create topic timers for certain locales.

- Remove scrolling jankiness

- Rails has bugs when a `has_one` has no `id` column ☹

- Allow destination categories to be set if not at first

- Unable to remove tags from topics in quick save

- Ambiguous column name

- N+1 query for shared drafts

- Fires onExpand/onCollapse when using arrows

- Prevents multiple search call when destroying multiple tags

- Minor alignments improvements to select-kit

- Event is not present here

- Select-kit refactoring

- `limit` wasn’t correctly applied to `Upload.migrate_to_new_scheme`.

- Group members dropdown not displaying when switching between groups.

- Drop unused tables with a delay

- Infinite loading more on groups page.

- Linter

- Don’t apply tags to the plugin outlet in the admin menu pills

- Not found message when trying to log in with a link, even though the email with the link was successfully sent

- Error when trying to block an IP address. Return a message when IP address matches an existing screened IP address, including ranges.

- When creating a topic in a category that only allows tags from a tag group, don’t allow creation of new tags

- Regression in tag group UI which prevented creating new tags

- Show only allowed tags on PM tags page and display correct count

- Show an error page on click tracking error

- Translation overrides for flag types didn’t expire cache

- Tags page should link to user profile we are browsing

- Use right caret for collapse state of tag and category drops

- Restorer was not extracting the patch version in dump file.

- Prevents ruby warning with circular reference

- Align suggested messages

- Color schemes not updating when remote saves

- Login redirect path was broken in subfolder installs

- Envelope link on suggested topics

- Extracting mail content from exchange emails

- Unable to delete user belonging to a group that grants a trust level

- Not logging old post contents properly

- Silencing / Suspending a user should not send a hidden message

- Explicity set username when creating new message via URL

- Correct messages displayed when reseting password

- Share selected tags between tag-chooser in preferences

- Do not show emoji menu when `:` has a letter before

- My sso\_overrides\_username assumed username was passed

- Tag input should not include tags you’ve already chosen in the search results

- Mbox importer should ignore emails without date

- Suspended login error message not showing.

- When visiting post on mobile it is not selected

- Couldn’t move a topic into the uncategorized category.

- Circular references warning in `TopicTrackingState`.

- Excerpts in summary email are too short when there are images or links

- `max topic invitations per day` should apply on PM invites as well

- Do not apply `max topic invitations per day` on email invites

- Calculation of text length for `&lt;details&gt;` in excerpt was wrong

- Error when group\_in\_subject enabled but no group in pm

- Do not log personal message view if there exists a similar log in previous hour

- Typo whipser → whisper

- Sso\_overrides\_username may inappropriately change the username if the case changed

- Safari flexbox bug in header dropdowns

- Bulk importers shouldn’t insert rows with id less than 1

- Do not show tags with 0 count on /tags page

- Create notifications for mentions in PMs

- Restore process for dump taken with `pg_dump` 10.3+.

- Bulk importers wiping all email addresses without warning or errors

- Use digest\_min\_excerpt\_length site setting in summary emails

- Not loading more messages when username has a .

- Tag filter was not selected on page load

- Converting topic to message for a second time was broken

- User should not be able to invite to PM if trust level requirment not met

- When personal messages are disabled let user invite to a public topic

- Staff should be able to updates polls when edit window expires.

- `TableMigrationHelper` didn’t clean up after itself.

- Bulk importers need to create category description topics

- Correctly allow tag creation if `this.site.get("can_create_tag")`

- `loadBefore` should include current params as well.

- Publish live messages to both team inbox and archive on update.

- User archiving message should also publish to sent section.

- User archive messages should only publish to the user.

- Missing messages incoming indicator for mobile.

- Do not show read-only cursor on mini-tag-chooser (#5653)

- Email\_domains\_whitelist prevented creation of anonymous users

- Consider live links in `&lt;code&gt;` as links when counting

- Only unsubscribe channel if it was subscribed.

- Incorrectly deleting `channel` preventing us from unsubscribing MB.

- Typo prevented extraction of email signatures

- Reset\_db (#5617)

- Don’t lock wiki posts when they’re edited

- Regression preventing the display of `replying...` in the composer

- Do not treat :: as a valid emoji

- Display keyboard on mobile when focusing mini-tag-chooser

- Inviting a group that I am part of creates a notification.

- Set first visit PM notification level to group default notification level.

- Capital bbcode tags were broken

- Make it possible to edit tags on topics on mobile

- Makes sure we recompute shouldDisplayCreateRow after request

- Disable “Make Personal Message” if they are disabled

- Translate the hover text or emoji categories

- Tag input in composer was not respecting tag group rules

- In some instances expanding hamburger menu broke layout in iOS

- ‘reply by email addresses’ site settings should allow email addresses without a ‘reply\_key’ when ‘find related post with key’ is disabled

- Do not allow invite notifications from muted user/topic

- Makes sure `[999500..999999]` is correctly shown as 999k

- Missing 2FA guards when sso is enabled or when local login is disabled.

- Don’t lock a post on edit unless the raw changes

- Sidekiq job has wrong data when post owner changes within transaction

- Merging users shouldn’t add more than 1 secondary email

- Allow changing post owner even when topic validations fail

- Associated Instagram account was missing at some places

- Emoji search was not finding aliases

- Category drop header padding when using category box style

- Improves positioning of select-kit body

- Brewfile was out of date

- `RateLimiter` max of zero or less should raise rate limit exceeded.

- Incorrect rate limit applied to topics invitation flow.

- Don’t include unlisted topic in groups/posts

- Don’t show Other Tags on /tags if there aren’t any to show

- Don’t allow other flag actions after `notify_moderator` has happened.

- Stop double counting net calls in logs

- Use 60 minutes, not 60 seconds for column dropper

- Load tag\_groups and not tags

- Prevents create row to be displayed if term is in displayed list

- Prevents selected value from hiding one item of the list

- Allow changing post owner even when validations fail

- Retry with GET request when HEAD fails with error 400

- Mini-tag-chooser was not returning a correct list of tags

- Auto re-opened topics should restore category auto close settings.

- Header icon out of bounds in tag-drop on some browsers

- Direct link to group activity page results in 400 error.

- Missing translation.

- Must be able to post in a topic in order to vote on a poll

- Handle `&lt;pre&gt;` inside `&lt;blockquote&gt;` in html\_to\_markdown

- Only likes should change the given daily likes

- Anonymous users shouldn’t see the link to new in the footer

- Local post onebox was always pointing to 1st post

- Properly render emojis in local oneboxes

- Missing translation for non-admin when editing a group.

- Do not log personal message view if user can’t see the message

- Don’t double request when downloading a file

- SimplePress importer wasn’t handling increment imports properly

- Update group user count when bulk adding users

- Incorrect caching of theme keys

- Preview theme not working consistently

- 2FA prompt incorrectly displayed on admin login page.

- Show names when available

- Social login buttons were not working

- Login buttons not working on sign up modal.

- No error displayed when 2FA token is invalid on admin login page.

- Allow customized usernames to work in this route

- Error when deleting a tag associated with a deleted topic

- Never open internal links in a new tab when user prefers opening external links in a new tab

- Can\_tag method called without guardian variable

- Include deleted topics in the post serializer

- Invalid token error incorrectly displayed on email login page.

- Links in quotes should be counted for rate limits

- Check for 2factor on change email controller

- Email controller - only show second factor errors on attempt

- Check against ‘true’ to enable second factor.

- Use the avatar of the post rather than the topic in local oneboxes

- Strip zero width spaces from topic title

- `Stylesheet::Manager.stylesheet_link_tag` cache should account for `Discourse.current_hostname`.

- Include title in local onebox when linking to a different topic

- Admin was not able to unblock screened IP address

- Cookies header didn’t have the right format

- Do not show mail-forward icon if not needed

- Ruby bench not working properly

- Binding\_of\_caller not working on Ruby 2.5

- Support old Service Worker source file path to avoid routing errors.

- Data export should fill missing dates with zero value

- Support incoming emails with just an attachment

- Oneboxing to private messages

- Allow local oneboxes to public topics/posts in PM

- CategoryTagStat queries need to exclude PMs with tags

- Makes mini-tag-chooser search more efficient

- Allow discourse app to link directly to upgrade page

- Show create new topic link in advanced search mode

- Group posts had the wrong paths in subfolders

- Couldn’t like staff when `allow_flagging_staff` was set

- Allow 404 pages to use the current theme

- Better handling of category badge when displaying sub and parent cat

- Activate user even if email token is already confirmed

- Do not translate the same string two times when rendering icon label

- Check can\_create\_tag on create and not on select

- Broken composer-actions spec

- Improves contrast on period-chooser when using dark-theme

- Regression preventing uncategorized badge to be shown

- Continue discussion when creating new topic from composer-actions

- Rate limiter text is confusing, should not say daily

- Displays an error when reaching tags limit

- Embedded topic was not found when URL contained query string

- ESlint

- Include post in staff action logs when silencing a user

- Override backspaceFromFilter only if defined

- Don’t grant new user of the month badge to suspended users or based on deleted topics/posts

- Upload fails silently if it is bigger than max allowed size

- Stop counting offline page as a page view

- Invite to message was not allowing groups

- Border issue with group inputs on high resolution displays

- Allow links from one relative uri to another

- Don’t allow silenced users to reach TL3

- Post\_destroyed webhook event not fired

- Don’t auto select ALL topics, only keyboard chosen ones

- Using cmd-f to search in a topic wasn’t restricting to that topic

- Makes sure we add ellipsis to action-title

- After deleting a post, staff can recover it

- Delete the invalid auth cookie even if you hit the rate limit

- Don’t show personal messages if disabled as a composer action

- Consider oneboxes links wrt to `min_trust_level_to_post_links`

- Don’t show the link button in the composer if linking is disabled

- Makes sure we display whisper if we don’t have a post

- Validations could prevent moving posts

- Preserve original date when moving first post

- Ensure we never send elided content via email

- Too much Javascript 🙂

- Don’t show messages setting if messages are disabled

- Customizing site texts ignored current locale for \_MF keys

- Overriding \_MF translations worked only for English

- Don’t throttle local lookups

- Count the links in the post

- Only send up to 100 selected tags in the tag search request to avoid sending a query string that’s too long

- Correctly shows link to post number when editing

- Prevents exception when opening new topic on mobile

- Desktop/mobile heatmap colors should be the same

- Size of tags input field of tag group

- Process\_post job should update baked\_at and baked\_version if it rebakes the post

- Automatically unsilence users

- Makes scrollbar always on for small dropdowns

- Prevents a regression where enter wasn’t working in inputs

- Prevent long composer overlapping controls

- Enable personal messages in tests

- If personal messages are disabled, don’t show messages for groups

- Order the homepage box in the same order as the top menu

- After moving the posts topic timestamp should be updated with newest post

- Simplify styling of category-name when using category-drop/link

- Makes sure we have a content to filter

- Improve dropdown-select-box on mobile

- Remove unused import

- Makes composer-actions toggling whisper instead of replying

- Unused import

- Admin reports charts should use same time of day as dashboard numbers

- Admin reports would sometimes return fewer than 30 days of data, causing current 30 day period counts to be too small and prev30day counts to count the wrong days

- Max-height auto is not valid

- Don’t show “Grant Badge” if badges are disabled

- Use css instead of js to fix select-kit-collection max-height

- Remove activation link from account approved email (#5548)

- Don’t return 200s when login is required to paths

- Only count ‘human’ users in group.user\_count

- Don’t blow up on badly encoding incoming email body

- System user edits should not generate notifications

- 404 page when clicking a badge notification from before changing username

- BBCode to Markdown conversion in phpBB3 importer was broken

- PhpBB3 importer imported some users as anonymous users

- Allowed href scheme link can start with a + (#5537)

- Inline oneboxer min title length of 2

- Show label beside confirm user fields, and fix spacing around them

- Time read on users directory was not rendering correctly on mobile

- Remove old text

- Missing translation

- Emoji-picker improvements

- Hides upload link on mobile

- Don’t allow username update via update route

- Select-kit category dropdown issues in IE11

- Redirect to original URL after social login

- Improves UI state when no extensions are allowed for upload

- Makes sur allowUncategorized is passed to category-selector

- Enabling verbose localization for session didn’t work

- Featured links are ‘undefined’ in suggested topics

- CTRL+mouse-left-click / CMD+mouse-left-click or mouse-middle-click should open link in new tab

- Remove all notifications of staged user during sign-up

- Show message from discobot when staged user signs up

- Application should not crash when selected locale is missing

- Server didn’t use default\_locale as fallback locale

- Uploads not working on themes admin page

- Makes sure allowUncategorized is passed to underlying component

- Force full width on mobile for cat and tag drops

- Mods should be able to grant badges in post wrench (#5522)

- Censored regex words were replacing other text that shouldn’t be censored

- Larger tag-drop

- Tweaks to tag and category drops

- Improvements to category-drop when used with a subcategory

- Better handling of collection height

- Alignment for box/bullet tag styles

- Uploads:migrate\_from\_s3 wasn’t destroying records before creating new ones

- Badge group edit modal controller is missing modal functionality

- Creating new message via link was failing for anon user

- Missing footer on groups pages

- UX improvements for system messages when PMs are disabled

- Don’t show suggested messages if private messages are disabled

- Users column too wide on tablet

- Tag alignment

- Space below post-actions

- Regression, missing 404 page

- Don’t link icon to the private messages page if they are disabled

- Disable the keyboard shortcut if private messages are disabled

- Flags notification badge becomes too narrow when menu is open

- Support for generating excerpt when nesting `&lt;details&gt;` blocks

- Category badge when using box style on long category names

- Caret clone div position for RTL locales

- Prevent users from moving whispers to new topic

- Migrate\_from\_s3 rake task not working

- Ensure proper header transfer (except for cache control)

- Preventing presence users from overflowing window

- Notify\_about\_queued\_posts\_after copyedit

- Allow plugins to register importers

- Encode image filename so ‘`[', ']`’ and ‘|’ doesn’t break the markdown

- Invalid SQL in vanilla\_mysql import script

- Margin below topic-map

- Support recovering images using ‘upload://’ scheme

- Makes sure mousedown is stopped only on select-kit element

- Jump to original post when expanded posts are collasped

- Prevent `&lt;big&gt;` nesting abuse

- Correctly log topic timings as background

- Never flush timings while in progress

- Wrap similar topic titles at narrow widths

- Increasing z-index on topic-avatar

- Cache\_file storage cleanup logic was wrong

- Don’t create new like notifications for deleted topics

- Box badges on 404 page not displaying correctly

- Allow shared CDN for s3 and assets

- Badge with box mode having incorrect background size

- Mbox importer didn’t detected already indexed files

- Validate presence of ‘top menu’ setting

- Topic and category exporters were only exporting users who created the first post

- Subfolder: top referred topics report was missing subfolder in links

- Subfolder support was broken

- Adds support for selection-indicator

- Category topic count alignment

- Graphs should go to zero for missing dates

- Invalid cache for parent category with limit\_suggested\_to\_category

- When deleting a tag, the warning modal has the wrong topic count

- GitHub auth always asking to verify email for new users (#5487)

- Return 429 when admin api key is limited on admin route

- Typo

- Rescue login required / broken images

- Suspension / Silence reasons were incorrect on save

- Fix category-link spec failure

- Category badges css refactoring/fixes

- Disable by default limitMatches

- Support for watched\_words\_regular\_expressions when censoring words

- Allow plugins to override admin component templates

- Makes rake qunit:test task work on macOS

- Show create new topic link when there are no search results

- Don’t downcase watched words on input since it can break the watched\_words\_regular\_expressions setting

- Censored words should support \* as wildcard

- Handle invalid password reset token

- Adds select-kit api to modify header computed content (#5476)

- Add guard to prevent a primary `UserEmail` from being reassigned.

- Source admin locale from cdn

- Cache admin locale file for 24 hours

- Broken test

- Google Calendar oneboxes weren’t working

- URI must be ascii only for URI.parse command

- Broken select badge as user title (#5474)

- Broken select badge as user title

- Render error message when backup download fails

- Do not validate messages sent to mailing list mirror

- Never mark emails sent to mailing list mirror as auto-generated

- Facebook deprecated facebook messenger emojis

- Correct shushing\_face name

- Do not create duplicate topics

- Don’t raise error if I18n key is not found

---

<div class="post-metadata">

### Author: ![neil](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/neil/32/102150_2.png) [@neil](https://meta.discourse.org/u/neil)
#### Post date: [May 31, 2018, 10:50pm UTC](https://meta.discourse.org/t/discourse-version-2-0/73729/6 "2018-05-31T22:50:32Z")

</div>

## UX CHANGES

- Improves local-dates modal form UI

- Adds subtitle support for modals

- Ceil dahsboard values

- The “enable 2FA” string was hard to translate

- Adds visual feedback when hovering info

- Improves dashboard UI for RTL locales

- Localizes titles in dashboard table reports

- Lower no-change trend emphasis in charts

- -2/+2% change in stats should be no-change in dashboard

- Don’t display `all groups` option if group directory is disabled.a

- Mobile watched words UI in admin needs a way to see all word lists

- Makes table report trend icons as charts

- Add category & tags in mobile topic timeline

- Refactoring/refining tables of new dashboard

- Ensure whitespace isn’t removed when playing with quotes

- Display group tabs in user’s messages tab for non-staff as well.

- Show footer on groups pages

- Don’t show ‘auto delete’ option for TL4

- Add link to /groups from Admin\>`Users

- Tooltips and improvements to new dashboard

- Show a message when more than 30 site settings matches the current filter

- Show the counts when displaying only overridden settings

- Show 30+ count when more than 30 site settings matches the current filter

- Support for multiple datasets in one chart

- Improve new dashboard

- Show an enveloppe icon when a badge is used in messages

- Disables all time col in activity metrics new dashboard

- Minor fixes to new dashboard UI

- Remove obsolete warning about changing post ownership

- Switch dashboard to be the new dashboard

- Remove ? from new dashboard

- Show close date on automatically closed polls

- Improvements to new dashboard

- Add proper titles to topic navigation links in hamburger menu.

- Mobile Nav Cleanup (#5812)

- Don’t set width to auto for select kit combo box.

- The first sentence in the line had a period but the second did not.

- Display site settings shortcut for `poll` and `discourse-nginx-performance-report`.

- Improved performance of emoji dialog

- When deleting a user, show a modal indicating that the delete is happening. User hijack so requests don’t time out.

- Reduce lines in emoji picker

- Emoji highlighting is more box shaped

- Increasing hit area of like-count & post controls

- Don’t show the group full name if it’s the same as the title

- Tag each autocomplete dialog so they can be hidden

- Use empty heart for unliked state

- Better github commit onebox

- Display staged status on user summary page

- Ensure topic progress indicator isn’t floating in very short topics

- Don’t match emails in user selector in group add members modal.

- Update placeholder for full page search

- Require an extra click to open topic draft

- Staff can see the delete button on a post that was marked for deletion by the author

- Moved posts message links to the first post at the destination topic

- Link to automatic group page on user admin page.

- Better ‘saved’ indication on group manage form.

- Align group members button/dropdown to the right.

- Use a wrench for `group-member-dropdown`.

- Replace route when users try to access invalid group management page.

- Move group delete button to details container.

- Ensure the topic progress indicator is never overlapping with post controls

- Split up group form into smaller sections.

- User preferences allows users to choose which title to use from their badges and groups

- Add an icon to indicate if a plugin is official.

- Allow admins to manage automatic groups on group page.

- New dropdowns work well on mobile for category notifications

- Add a “add members” button on group page.

- Show users who liked the post when expanding post actions

- Add a class we can use to target quotes without groups

- Add classes for extensibility

- Consistent spacing for like button on mobile

- Hide empty ‘new’ and ‘unread’ tabs for tl1 and above

- Alignment was off on likes for your own post

- Better like button

- When there is nothing new or unread to show, remove those options from the top nav.

- Make own post heart glyph grey

- Own post likes glyph margin was off

- Show heart glyph on your own likes count

- Better likes count margin

- Remove word “likes” from first post

- Remove the word ‘likes’ from the like counters on posts within topic

- Updated ‘new dot’ styling

- Tweaks to group pages.

- Don’t default title to label text for buttons.

- Editing a shared draft was confusing in the composer

- Add `groups/custom/new` route for admins to create a new group.

- Consolidation group manangement into a single tab.

- Allow admins to set users as owners while adding users.

- New group membership management workflow.

- Wrap full-size Twitter onebox images in aspect-ratio

- Occasionally getting scrollbar while loading notifications

- Wrap instagram images with aspect ratio

- Correct styling for Instagram onebox

- Add mobile template for group members page.

- Allow users to filter members on group page.

- Allow group owners to manage members from group members page.

- Limit the number of group names displayed on user page.

- Improve layout of groups filter on groups page.

- Indicate active tag sorting method

- Allow users to filter by different group types on groups page.

- Improve groups page on mobile.

- Indicate user’s group membership on groups page.

- Allow groups page to be searchable.

- Allow user\_count on groups page to be sortable.

- Css for Instagram onebox

- On topic list page for a tag, show the Create Topic button to admins too

- Add a back link to groups page on group page.

- Use topic list for displaying group messages on group page.

- Display group topics in a topic list.

- Set pmView for PM tags page

- Move Impersonate to the bottom of page

- Use the full word “cancel” on desktop composer, “X” on mobile.

- Replace composer cancel and upload with icons

- Don’t let topic progress widget dangle when preview is disabled

- Add title to user messages page.

- Improvements for theme UI (#5650)

- Improving badge page layout

- Display warning message about social logins disabled when 2FA is enabled.

- Remove fast scroll which is leading to bugs

- Hide social login buttons when requesting for 2FA token.

- When a post is blocked due to a watched word, message includes the word being blocked

- Incorrect width for webhook events. Take 2.

- Incorrect width for webhook events.

- Use ‘tel’ input type for 2FA token inputs.

- Move ‘show words’ checkbox close to the words in the Watched Words UI

- Specify pattern and maxlength for 2FA input fields.

- Invited users should watch PM topic once topic has been visited.

- Add reset password email button when confirming password before enabling 2FA.

- Don’t show admin 2FA edit icon on profile of other users.

- Improve indication of 2FA status in user’s preferences.

- Don’t disable submit button before transitioning in 2FA flow.

- Fix missing css styles on invite modal.

- Add og metadata for groups.

- Remove default focus styling from posts & topic list items

- Make the .selected class follow focus

- Use focus as the first selector for J/K navigation

- Apply hover styling to post actions on focus

- Smaller input field for preferences 2FA form.

- Display lock icon in admin user lists when user has 2FA enabled.

- Implementing a box-shadow system, cleaning up existing shadows

- Improving header scalability for large font themes

- Make mobile timeline extra short in landscape

- Restore width of composer user selector.

- Link post ids in staff action logs to the post

- Preventing usercard and profile URLs from overflowing

- Improving post-link alignment

- Better alignment of small topic statuses

- Show the footer on the user summary and preferences pages

- Allow history modal to scale down on smaller screens

- Cleaning up category badge alignment (#5561)

- Add specific classes to ip address rows on user admin

- Only crops images taller than 18:9 instead of 16:9

- Prevent anons from clearing pins in topic view

- Improve semantic of login button for better password managers compatibility

- Input and search cleanup (#5546)

- Prevent anons from clearing pins 📌

- Generic ‘no invites to show’ message

- The delete button is also a dropdown

- Adding a sticky footer to the post history modal, removing bootstrap columns

- Removing some old references to the star feature

- Trim selected text while copying to the link building modal

- Copy selected text to the link building modal

- Additional protections to prevent tag nesting exploits in posts

- White text for social login buttons, regardless of theme

- Very long tag names should truncate

- Improve description of s3\_use\_iam\_profile

- Adjustments for embedded reply collapse button

- Small adjustments to similar topics popup

- User column heading needs a width

- Implementing a z-index system (#5507)

- Modal; Moving cancel further away from confirm

- Removing width: auto; in mobile autocomplete so long strings truncate

- Button styling

- Styling embedded post collapse button

- Tag alignment and size in topic titles

- Switch to quartlerly period view for search log term graphs

- Increasing contrast on composer elements

- Line-height should be larger with single-line titles

- Increase post meta font size

- Type system rebuild (#5492)

- Don’t use a chevron when a dropdown is just an icon

- Switch back to line chart

- Put the HR in the correct place

- Adding a little space after oneboxes

- Show bar chart for admin graphs

---

<div class="post-metadata">

### Author: ![neil](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/neil/32/102150_2.png) [@neil](https://meta.discourse.org/u/neil)
#### Post date: [May 31, 2018, 10:50pm UTC](https://meta.discourse.org/t/discourse-version-2-0/73729/7 "2018-05-31T22:50:53Z")

</div>

## SECURITY CHANGES

- Remove alert dialog from local dates

- Prevent XSS when showing diffs

- Do not show private topic title on /unsubscribed page

- Escape HTML entities from topic title

- Do not disclose topic titles on /unsubscribed page to unauthorized users

- Santize tags when creating new topic via URL

- Don’t expose development route in production.

- Oneboxer should escape the URL before processing

- Sanitize topic title when staff is viewing a user’s past flagged posts and deleted topics

- Ensure users have permission when moving categories

- Don’t onebox whispers

- Correct local onebox category checks

- Prevent robots from indexing more routes

- Email domain whitelist could be bypassed

## PERFORMANCE

- Minor but we can just pass a hash to `where`.

- Destroy collapsed notifications in 1 query instead of 3.

- Avoid running the same query twice in `TopicViewSerializer#details`.

- Select distinct active web hooks at the db level.

- Don’t bloat the Sidekiq queue with `Jobs::SendPushNotification`.

- Lower the priority on user emails

- Defer user notifications (#5827)

- Use cached reports for dashboard if available

- Remove N+1 query.

- Stop using exec which is blocking for direct sql

- Make emoji picker faster

- Disables composer transitions in tests

- Improve performance once logged in rate limiter hits

- Only save site setting if values have been changed.

- Don’t join on shared drafts unless you have to

- Add missing index for akismet

- N+1 queries on badges page.

- PG queries for the `UserEmail#email` column was not using the index.

- Query for email was not using index.

- Avoid fetching a bunch of ids in polls updater.

- Remove N+1 queries on topic list page.

- Fast docking of timeline so it does not overlap

- Upgrade Oj gem

- Remove oga gem

- Have nginx cache and serve the service worker file.

- Only require the rss library if used

- A faster way to count tags used per category

- Add index on user email logs

- Optimize performance of new topics query (home page)

- Tl3Promotions job can limit the number of TL3 candidates by using some simple requirements in the query

- Ability to crawl for titles without extra HEAD req

- Slow down optimizing images per host

- Guard so we only create one optimized image per process

- Reduce memory usage for post alerter

- Run post timings in background

- Bypass theme handling on static routes

- Add frozen string literals to app controller

- Reduce queries required for post timings

- Avoid expensive OR clause query info more efficiently

- Improve perf of topic suggested query with limit\_suggested\_to\_category

- Handle debounce in redis cause SQL can be slow

- Bypass omniauth unless in an auth path

- Add frozen strings

- Calculate topic\_counts for tags in an async job so tag queries that include counts are much faster

- Cache messages so re-opening composer on same topic does not issue a req

- Use cdn for extra locales

- Enable gzip on proxied requests

- Defer message bus on hidden tabs so only one in 1.5 seconds happens

- Add some minimal caching to javascripts folder

- Conserve memory while rebaking posts

---

<div class="post-metadata">

### Author: ![neil](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/neil/32/102150_2.png) [@neil](https://meta.discourse.org/u/neil)
#### Post date: [May 31, 2018, 10:56pm UTC](https://meta.discourse.org/t/discourse-version-2-0/73729/8 "2018-05-31T22:56:19Z")

</div>


