# Discourse Version 2.1

**URL:** https://meta.discourse.org/t/discourse-version-2-1/86339
**Category:** Announcements
**Tags:** release-notes
**Created:** [April 27, 2018, 8:21pm UTC](https://meta.discourse.org/t/discourse-version-2-1/86339 "2018-04-27T20:21:40Z")
**Posts on this page:** 5
**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: [April 27, 2018, 8:21pm UTC](https://meta.discourse.org/t/discourse-version-2-1/86339/1 "2018-04-27T20:21:40Z")

</div>

### Focus

- ✅ add “welcome to our community” PM for users who successfully transition between TL0 (new signup) and TL1 (15 mins reading, 5 topics entered, etc)

- ✅ Improve [handling](https://meta.discourse.org/t/disclosure-of-s3-secret-access-key/87221/22) of site setting secrets @techAPJ

- ✅ [2FA Backup codes](https://meta.discourse.org/t/2fa-backup-codes/87038) @maja

- ✅ allow selecting a tag when moving posts to a new topic, if tags are enabled (right now you can only pick category) @maja

- ✅ Upgrade ImageMagick to ImageMagick 7 (6 is getting old) @tgxworld

- ✅ List social accounts on user prefs page and allow revocation. [Possible to show users what platforms are linked to their account?](https://meta.discourse.org/t/possible-to-show-users-what-platforms-are-linked-to-their-account/87940) @david

- ✅ Send an automatic PM to users who have too many email bounces letting them know they should fix their email @zogstrip

- ✅ show drafts in user profile thanks @pmusaraj

- ✅ Better handling of site settings with large amount of content (big lists). See [Auto-Linkify Words - #38 by sam](https://meta.discourse.org/t/linkify-words-in-post/82193/38) @j.jaffeux

- ✅ [Auto expire](https://meta.discourse.org/t/apps-collect-display-last-usage-information/87842/5) unused user API keys. @nbianca

- ✅ Big increase in performance for megatopics (more than 10k replies) @tgxworld

- ✅[Optimize disk space usage of `EmailLog` table](https://meta.discourse.org/t/cleaning-up-e-mail-logs/39132/19) @tgxworld

- ✅ Improve PM participants UX

- ✅ Reply without bumping and auto-bump per category settings

- ✅ Ship multiple color themes in the wizard, not just “dark” and “light”

### Codename

- [~~Lysias v2.0~~](https://meta.discourse.org/t/discourse-version-2-0/73729)
- [Bhimbetka](https://en.wikipedia.org/wiki/Bhimbetka_rock_shelters) v2.1 ←

### Start date

June 1st, 2018

### Release date

September 10th, 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: [September 11, 2018, 1:47pm UTC](https://meta.discourse.org/t/discourse-version-2-1/86339/2 "2018-09-11T13:47:18Z")

</div>

## NEW FEATURES

- Let users see their user auth tokens. (#6313)
- Charts will now use tertiary color (#6342)
- Adds support for seconds in local-dates (#6339)
- Displays “today” if event is… today (#6336)
- Allow specifying locale via SSO
- Zendesk importer that uses its API to get data
- Erode bounce score every time an email is sent
- Correctly store width and height on uploads
- Add Content-Type header to CORS
- Hide enable\_personal\_email\_messages and min\_trust\_to\_send\_email\_messages
- Use S3 dualstack endpoints
- Makes reports loadable in bulk (#6309)
- Pop revise modal on post edited notification (#6287)
- Themes and components split
- Clean up `PostReplyKey` records.
- Make initial admins TL1
- Improve API error reporting for invalid records
- Discourse-checklist is now an official plugin
- Automatically expire keys if not used for a configurable amount of time. (#6264)
- Make links indexable. (#6285)
- Automatically correct extension for bad uploads
- Emoji 11.0 “recently added” update (#6275)
- More context for error reporting on jobs fails
- Use `display: browser` in webmanifest for iOS devices
- Silenced users should not be allowed to edit posts
- Do encodeURI on share links
- Group error message regarding image optimization failures
- Group warnings about IP level rate limiting
- Add import script for Telligent
- Add “Reset Bump Date” action to topic admin wrench (#6246)
- Allow admins to reply without topic bump
- Ability for plugins to whitelist custom fields for flags
- Backend support for user-selectable components
- Include excerpt in HTML view for pinned topics
- Add link to see new commits when updates are available for themes (#6233)
- Add link to see new commits when updates are available for themes
- Introduces list/compact\_list components
- Automatic PM when a user’s email is revoked
- Allow ruby tags in Markdown
- Display out of date themes on admin dashboard
- Disaply out of date themes on admin dashboard
- Whitelist lang attribute
- Bump default max size of uploads from 3072K to 4096K
- Added method to get multiple values at once from PluginStore. (#6225)
- Drafts view in user profile
- Adds revision\_count to moderators\_activity (#6218)
- Rake emails:test add debugging
- Show last updated date for wiki topics
- Allow revoke and connect for Instagram logins
- Include published\_time in metadata
- Allow revoke and connect for GitHub logins
- Revoke and connect for Yahoo logins
- Revoke and reconnect for Twitter logins
- Webhook for post approval events
- Allow auth plugins to have a site setting for full screen login
- Displays a notice if report has no data (#6178)
- Uses category-chooser for report filtering (#6174)
- Add revoke and reconnect functionality for google logins
- When a post is deleted because a moderator agreed with flags, send a message to the post author
- Allows tag editing on mobile (#6148)
- List, revoke and reconnect associated accounts. Phase 1 (#6099)
- Webhook for user destroyed event (#6124)
- Retry web hook when it is failed
- Make the login error message more informative if cookies are disabled
- Land on specified category page when creating topic via URL
- Differentiates pms in moderators activity report (#6117)
- Part 2 of dashboard improvements
- Allows to jump to a date in a topic
- Show modal when user without permissions tries to delete their own topic (#6086)
- Add a Top Categories section to the user summary page, showing the categories in which a user has the most activity
- Selectable avatars
- Support filter\_auto\_bump\_topics event
- Adjust autobump system
- Update TwitterApi for prettifying like/retweet count
- Navigate to first post and auto bump category settings
- Add custom S3 Endpoint and DigitalOcean Spaces/Minio support for Backups (#6045)
- Secondary emails support.
- Add users:disable\_2factor rake task
- Per-category approval settings (#5778)
- Add data-username on user-info blocks
- Groundwork for user-selectable theme components
- Event on topic merge (#6057)
- Update libv8 to version 6.7
- Allow selecting a tag when moving posts to a new topic (#6072)
- Allow selecting a tag when moving posts to a new topic (#6074)
- MauiBot is abusive and is now blocked
- Support disabling tag creation for non-staff users.
- Add a rake task to recalculate user stats post\_count and topic\_count
- Create hidden posts for received spam emails (#6010)
- Create hidden posts for received spam emails
- Shows remaining backup codes in user preferences
- Add search not operator for tags.
- Responsive admin pages
- Drops with-email-link and replaces it by with-email-button
- Add swipe detection for dismissing mobile topic scroller
- New settings to control posts deletions rate limit
- Rate limit post deletions to 50 per day
- Second factor backup
- Allow author to delete posts irrespective of post\_edit\_time\_limit
- Simplifies the same day hour to hour use case in local dates
- Add website field to SSO
- Support referrerPolicy on embed iframe
- Send message when a user reaches tl1
- Differentiate total and total for period on admin table report
- Unconditionally consider TL0 users as “first day” users
- Display report total value when showing report
- Forced summary mode for megalodon topics.
- Allow large icon to be uploaded in wizard
- Adds a add\_report method accessible in plugin.rb
- Adds a /admin/reports route to list all reports
- Script to merge two discourse sites
- Show category page options on wizard ‘homepage’ step
- Add jump to post modal on mobile
- Update the webmanifest
- New site setting, whitelisted\_link\_domains
- Adds plugin sharing api
- Block top level /my/ routes
- Log user merge in staff logs
- Remove more PII during user anonymizing
- Add an option to create undismissable modals
- Support disabling emails for non-staff users
- New ‘min ratio to crop’ site setting
- Improve handling of site setting secrets
- StackOverflow importer
- Add staff action log for post rejections

---

<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: [September 11, 2018, 1:47pm UTC](https://meta.discourse.org/t/discourse-version-2-1/86339/3 "2018-09-11T13:47:35Z")

</div>

## BUG FIXES

- Don’t raise an error on integer usernames in user\_name\_suggester
- Allow `rake destroy:topics` to delete topics in sub-categories
- Sets trends to 7 days instead of 3 (#6379)
- `S3Helper#list` creates incorrect prefix.
- Corrects top-referred and trending-search dates (#6372)
- Wrong category links on subfolder install in rss feed for a category topic list
- Tooltip should use format option instead of defaulting to “LLL”.
- Check admin theme cookie against user selectable
- Remove user fields when anonymizing user
- Do no reset tags selection on category selection (#6369)
- Make route to tag more robust
- Link post to uploads in `PostCreator`.
- Do not automatically route all actions to hovered posts
- Deactivate chart trends for now (#6364)
- Zero is a valid value for the page parameter
- Reset tags on category change (#6363)
- Incorrect/missing extension in short\_url fails to map to upload.
- Wizard didn’t change locale when Enter key was used in drop-down
- Wizard didn’t load translations correctly
- Notifications shouldn’t use user locale unless allow\_user\_locale is enabled
- Correct urls in uploads table to point at dualstack
- Detect {{foo}} as interpolation key
- Redirect to original URL after social signup
- Keep db and job correctly in multisite logs
- Don’t rate limit admin and staff constraints when matching routes.
- Skip keypress event if alt key is down
- Ignore invalid usernames in incoming link tracker
- Return a 400 error instead of 500 for null injections
- Replying to deleted post via email should create new reply to topic
- Respect invalidate\_oneboxes option for inline oneboxes
- Validation of params should restrict to max int
- Send status 400 when “page” param isn’t between 1 and max int
- Ignore OneBox blacklisted domains.
- Escape regex chars when searching site texts
- Maintain theme preview when refreshing (#6356)
- Resetting site setting didn’t remove “overriden” state
- User agent browser detection (#6352)
- Deleting backup failed after uploading backup
- Precompile `desktop_theme` and `mobile_theme` stylesheets
- Exclude `UserAuthToken` and `UserAuthTokenLog` in user webhook.
- Set old last modified date for invalid avatars
- When uploads are destroyed clear up avatar refs in user table
- Revert diacritic stripping
- Escape regex pattern variable before using it
- Return 422 for an invalid group name on category create
- Changing component settings should trigger refresh for parent theme CSS (#6340)
- Use tight list format for GDocs html to markdown
- Allow user actions to be saved even if the post has nil user
- Reset email preferences controller. (#6316)
- Changing tag name class to data attribute (#6326)
- Poll avatar spacing too large
- Don’t try to send invite email when invite was deleted
- Prevents remove user btn to overflow parent (#6329)
- Keep emojis and remove clicks count on html to markdown
- Keep emojis and remove clicks count
- Queue heartbeats in readonly modes
- /rules route showed error page
- Mobile admin menu iOS rendering bug
- Drop title updates through RSS feeds
- Links in rss feeds are sometimes wrong on subfolder installs
- Use proper markdown syntax for image urls
- Term should be handled as text (#6321)
- Find tags with non-latin names (#6312)
- Second factor input for username password is disabled when hidden.
- Redirect to wrong URL after account creation on subfolder install
- Update TopicEmbed’s title and user correctly
- Improve last\_modified date returned for avatars
- Remove diacritics instead of transliterating
- Remove diacritics when tokenizing html for search
- Prefills username for new message on first post (#6305)
- Create `BaseDropper` functions in a different schema.
- Post time query filter not set correctly when loaded from params.
- Avoid race condition creating posts
- Don’t allow inviting more than `max_allowed_message_recipients`
- Don’t allow inviting more than `max_allowed_message_recipients` setting allows
- Tag intersection not populating (#6296)
- Uses localized string for 429 in reports (#6302)
- Better handling of no prev30Days (#6301)
- Don’t send email when the post was deleted
- Handle rate limiting from nginx (#6300)
- Counters were showing future instead of past (#6299)
- Better message if request for report is rate limited (#6298)
- Defer actions in a static method
- Client duplicate registration should be cleaned up
- Improve support for subfolder S3 CDN
- Flagged Post custom fields were not respecting type
- Upload URLs from S3 on subfolder installs
- Only allow printable characters in uploads filename
- Doesn’t translate group permission keys
- Disable\_2fa fix method selection
- Do not hide YouTube embeds inside details tag
- If user is logged off return 404 instead of 500
- Handle concurrently creating post reply keys
- User profiles didn’t work when API keys exist
- Do not show an empty modal when an IP address is allowed or blocked. (#6265)
- Subfolder support for S3 CDN
- SpamRulesEnforcer should use default locale
- HTML lang attribute expects hyphen instead of underscore
- Load more on groups page does not account for params.
- Search does not retrigger when context has changed. Take 2.
- Incorrect title on new user narrative cert.
- Make Discobot certificate route require login.
- If we have not target available do not redirect
- Avoid lograge error when controller doesn’t respond to `current_user`.
- User can’t save gravatar as profile picture after refresh.
- Always test and coerce to image on upload
- Smiling face with three hearts emoji typo (#6286)
- Allow silenced users to like / bookmark, just not flag.
- Quality/bugfix dashboard/reports pass (#6283)
- `FileHelper#download` should return nil if max size is exceeded.
- `Guardian#post_can_act?` shouldn’t raise an error if user of post has been deleted.
- Converting PNG to JPEG does not set the correct extension.
- Raise an exception when 'downsize’git st fails
- Don’t trigger ‘flag\_reviewed’ when no flags were reviewed
- Simplify so we ban all auth paths
- Validation of min\_posts and max\_posts didn’t work
- Automatically correct bad avatars on access
- Z-index fix for tag input on mobile
- Don’t throw exception if welcome topic cannot be found
- Refreshing auto groups when min\_username\_length is long
- Add gif to list of allowed decoders
- Update application\_controller\_spec.rb.
- Going from /categories to /latest on mobile might break infinite scrolling
- Validation of topic params broke discourse-assign
- Silenced users shouldn’t be able to act on posts
- Bulk deleting topics should ignore already deleted topics
- Bulk updating category failed when topic title was too short
- Uses touchstart/mousedown for selected tags (#6268)
- Store the topic links using the cooked upload url
- Add a basic validator for topic params
- Use BasicUserSerializer for user\_badge.granted\_by (#6266)
- Missing extensions for non-image uploads due to [FIX: Upload's content is the only source of truth for the file type. · tgxworld/discourse@2b57239 · GitHub](https://github.com/tgxworld/discourse/commit/2b5723938920647c45f7fc526e1edd19e8fad09e).
- Importers failed to import avatars
- Parsing non-existent feed should not fail
- Allow selecting site’s default theme from preference
- Ember click event not reliably working on fx (#6256)
- User-deleted posts with deferred flags can be destroyed
- Permalink redirects with subfolder
- Simplifies mini tag chooser events handling (#6252)
- Prevents focus of input on mobile (#6251)
- Checks on parent visibility instead of filter itself (#6250)
- Check permalinks for deleted topics
- Ensure URLs include subfolder in admin emails UI
- Subfolder redirects to wrong URL if the subfolder appears in the slug
- Search does not retrigger when context has changed.
- Don’t require device capabilities when calculating login methods
- Include parameters in function call
- Wrong order for `S3Helper#copy_file`.
- Support Arrays with Marshal dump in distributed cache
- Create tmp if it doesn’t exist when creating tmp/pids
- Subfolder digest emails have incorrect URLs
- Fixes last backup/last\_update dates (#6242)
- Include auth\_providers for anonymous users when login\_required
- Move Jobs::CreateAvatarThumbnails to low priority queue.
- Upload’s content is the only source of truth for the file type.
- Do not use `lib` for requires
- Staff should be allowed to agree and keep post
- Imrpoves alert-error styles in counters reports (#6240)
- Improves reports resilience (#6239)
- Store welcome topic id in custom field
- Email summary expansion button should use theme colors
- Display select kit body if no choices (#6237)
- Hamburger menu category alignment
- System messages not sent via email don’t have a prefix
- Don’t require auth providers to set full\_screen\_login\_setting
- `UserAvatar#update_gravatar!` does not update `User#uploaded_avatar`.
- Always store topic links using the upload url
- Set existing lists to compact when appropriate (#6234)
- Ensure the ‘email\_revoked’ PM template is customizable
- Wrong links to subcategories in top categories section of user summary
- Discourse\_merger: skip collisions on join models when both objects were merged
- Formats topic report only if we have one (#6231)
- Use the right URL when downloading the file from S3
- Improves report-show mobile UI (#6229)
- Removes ellipsis from activity-metrics report cells
- Improves number/percent support in reports
- ‘migrate\_from\_s3’ rake task wasn’t handling short urls
- Error with debouncing mentions
- Clicking admin wrench in topic footer didn’t hide post select box
- Moving posts to existing topic didn’t update topic metadata
- Remove unused import
- Allow non-english usernames in autocomplete
- Disk\_space refresh is now on demand
- More resilient/consistent dashboard caching (#6223)
- Wraps any query with the slow query guard (#6222)
- Try respecting charset in HTTP header of RSS feed
- Try detecting encoding of RSS feed
- Nav item missing for plugins that don’t include a custom filter.
- Prevents crash if flagger doesn’t exist (#6219)
- Check for group name availability should skip reserved usernames.
- Makes dashboard more resilient to errors (#6217)
- Onebox images are not downloaded locally without css class
- We loosened username restrictions some time ago
- Use hidden setting for max export file size
- Add rake to bundle install command
- Don’t break restore if function does not exist
- Top site categories are displayed in random order
- Prevents mini-tag-chooser to catch unwanted focus
- Should not be needed as we have itemprop=‘url’
- Should not include regular categories in top\_category\_ids array
- Hide muted categories from hamburger menu top categories block
- Preserve whitespace between uploads when the process is complete
- Add onceoff job to fix incorrect extension for gravatar uploads.
- `FileHelper` should prioritize response content-type.
- Prevents exception when loading old dashboard (#6196)
- Remove null value from categories list
- Welcome topic should not be a private message
- Simplify filters on admin-report component (#6193)
- Fix broken restores.
- Missing variable outside of `begin` block.
- Fixes regression with category filtering (#6190)
- Shows disk usage even if no backups taken (#6189)
- Don’t send PM if flagged post is deleted but flags were deferred or cleared
- Don’t break browser history on dashboard visit (#6186)
- Remove return statement from inside block
- Remove `plugin.enabled?` checks at initialization time (#6166)
- Destroy session between omniauth callbacks controller tests
- Makes disk\_space computation more resilient (#6172)
- Refreshes disk\_space on backup create/destroy (#6169)
- Filter open-id logins by identifier
- Don’t rely on setting data type read from database
- Translation for default (light) color scheme was missing
- Email template for “Queued Posts Reminder” was not found
- Add User Api Key headers to CORS
- Categories page crawler view had incorrect URLs
- Popup-menu instantly closing (#6147)
- Multiple select-kit fixes on mobile
- Removes system from user to user report (#6144)
- If exclude\_category\_ids is specified pass it through
- Display tag related actions only if tagging is enabled. (#6136)
- Discourse\_merger: many foreign keys were not being updated
- Fix dead link present in admin account registration instructions.
- Takes old dashboard out of caching job
- Takes dashboard-next out of caching job
- Lazy load more reports in dashboard
- Notify staff about whispers in watched categories (#6128)
- Various select-kit corrections on mobile
- Do not automatically infere date type (#6127)
- Improves trending-search and top-referred on mobile
- Topic owner should watch the new topic when moving posts to a new topic
- Improves moderation tab on mobile (#6122)
- Improves moderation tab reports alignments
- Makes top dash titles clickable (#6120)
- Removes uncessary reports loading (#6119)
- Makes reports take full width (#6118)
- Exceptions raised when editing replies were not displaying their error messages
- Smaller sort buttons
- Set uploads sequence after copying uplaods in discourse\_merger
- Clean URLs in SMF1 importer
- `[img]` BBCode tags might have parameters
- Don’t suggest groups when inviting to a topic (#6105)
- Raise a better error in `SiteSettings::TypeSupervisor`.
- Smf1 importer was swallowing some data
- Allow Twitter videos to go fullscreen
- Not checking for 0 correctly
- Do not add a moderator post when post is flagged via direct message (#6100)
- Stop race condition when topic notification jobs are scheduled during a database transaction
- Discourse\_merger: copied topic\_link records had wrong url, and update all internal links to use new topic URLs in copied posts
- Copy uploads quickly in discourse\_merger.rb, and fix user avatar upload id for copied users
- Do not update `last seen` time for suspended users
- Do not show links with 0 click on topic map
- Theme JS should only run when needed global objects exist (#6098)
- Never block /srv/status which is used for health checks
- Avatars in discourse\_merger.rb
- Errors when copying post\_uploads in discourse\_merger.rb
- Inaccurate tracking of current topic
- DROP NOT NULL instead of changing all the rows in the table.
- Count subcategories in breadcrumbs
- Category list should set category on topic
- Set default on theme.key, if it has not yet been dropped (#6095)
- Use email color settings consistently in notification emails
- Create empty user\_avatar row if not exist
- Grammar/spelling error in server.en.yml (#6089)
- Infers time from tz creator to ensure day shown is the one expected
- Delay panning until we can determine direction
- Support amazon S3 upload urls in discourse\_merger.rb
- Wrong url for default logos in header on subfolder installs
- Do not validate topic deletions
- Returns provider\_not\_enabled error even if enabled
- `jumpToPost` no working on megatopics.
- Select+below will ask server for post ids on megatopics.
- `/t/:topic_id/last` route did not return any posts.
- Selecting & moving posts not working on megatopics.
- Badges for merged users don’t get merged by discourse\_merger.rb
- Personal messages not being copied by discourse\_merger.rb
- Change megatopic threshold to 10,000 posts
- Hidden tooltip was preventing clicks on category settings input field
- On initial load category subcategories were not mapped correctly
- Display error message when upload fails in wizard
- Display tables in posts history diff (#6032)
- Datepicker will now default to monday as first day
- Don’t attempt to bump draft sequence if no editor
- `ignored_columns` was called twice.
- Wrong site origin in message bus header
- Invisible images and incorrect css on password reset and accept invite pages
- Broken image on password reset page on subfolder installs
- Wizard emoji images on subfolder installs
- Ignore self-quotes from the same post when saving (#6082)
- Rename `User#usernames` that clashes with `Group#name`. (#6069)
- Also count sub categories in hamburger when needed
- If s3 set via global setting bypass config check in UI
- Mixed texts when mixing rtl/ltr text in topic tile on categories page
- Mobile /admin/users style fixes
- `Discourse.S3BaseUrl` did not account for subfolder bucket names.
- `Upload.get_from_url` not respective subfolder in s3 bucket names.
- Update mini\_racer corrects erratic segfaults
- Removes UTC conversion when date and no time
- Mobile /admin/users page adjustments
- Responsive admin adjustments
- Mentions broken after adding an `<abbr>` tag
- Uses a non cooked to emoji arrow for local dates ranges
- Only show the sequential replies warning for regular posts
- Less aggressive gmail eliding
- Properly delete files in the download cache
- User topic and post counts can become negative when staff deletes posts in personal messages
- Mobile topic-timer adjustments
- Do not use scheduler for uploading csv file for invite
- `BackupRestore::Backuper#remove_tar_leftovers` not cleaning up files.
- Unable to add new webhook if the webhooks list is empty
- Move crawler blocking into anon cache
- Move crawler blocking to app controller
- Allow multiple secondary emails
- Update test to match new admin layout
- Update test to match admin layout changes
- Removes inline styles applied to “all categories” in category dropdown
- Only change to time format when dealing with today’s time
- Add pan direction data, do not activate pan when event is not vertical
- Disabled topic timeline panning on desktop
- Fix badge count of other users. (#6016)
- Avoid `destroy_all` in `Jobs::CleanUpUploads`.
- Makes large images in polls responsive
- Composer popup close link overlaps with text
- Ensures correct icon is displayed on mobile upload shortcut button
- Discourse\_merger halts when topic has nil category
- Minor micro data fixes
- Purge unactivated users with a message from non-human users
- Low contrast issues for dark themes in edit history modal
- Use `logo_url` settign when present for mobile layout instead of site name
- Recovering a post does not insert it back into the stream correctly.
- Prevent ambigous column errors when joining `TopicView` queries.
- Raise invalid params for bad callback
- Return status 400 for invalid member params
- Don’t replace the wiki button if the user can’t edit
- Scope the `cn` to the subfolder
- Post deletions rate limit per day was not working
- Invert from and to user id in smf1 import script
- Use the correct notification levels titles for PMs
- Allow staff to remove tags from queued topics
- Scroll to top when accessing admin dashboard
- Makes select-kit match searches with accents (filter and content)
- Missing translations for mobile flag modal
- Megatopics forced into summary mode when loading posts.
- ListItem can’t have itemprop=url and itemprop=item together
- Allows more chars than a-z in select-kit
- Makes sure category and tag drop headers have a title
- Rails.logger isn’t always available when loading plugin locales
- Users can’t “show all posts” in forced summary topics.
- `Post#summary` returning posts from other topics.
- Participants may not be in topic maps’s attributes.
- Cubot android devices were detected as crawlers
- Improves durability display check
- Hides durability section in dashboard if backups are disabled
- Margin on `post-info` should be present in mobile and desktop
- Don’t add `undefined` as a class name
- Properly display error when post action fails to create.
- Crashes with date conversion in reports
- Nav-pill dropdown overlaps category-selector when both are open
- URL with params for svg images should not be light boxed.
- Correct display for unlocking on tl0
- Add time retention limit to search logs
- SearchLog: Do not store IP of logged in users
- Alignment of user dropdown menu icons
- Consider staged users mature (no spam checks) after 1 day
- Reference [example.com](http://example.com) instead of [somesite.com](http://somesite.com) in examples
- `Discourse.keep_readonly_mode` does not work for multisite.
- Don’t try to dequeue an empty queue.
- Remap shouldn’t fail silently when an error occurs
- Don’t clear active connections in defer queue.
- `Discourse.keep_readonly_mode` spins a new thread each time it is called.
- Staged users are still tl0 but do not trigger spam if 1 week old.
- Don’t punish a user for being previously staged for spam flags.
- Duplicate\_emails get overridden in new batch of import
- Let user fields respond when their labels are clicked
- Adds a title to composer actions header
- Error if decorateCooked is called without a helper for a post with a poll
- Displays correct upload icon when only images are allowed
- Improve context when user deletes self
- Desktop pin-topic modal not wide enough for date-picker
- Show time on activity column instead of random number
- Start\_url was wrong in non-subfolder
- Remove unwanted space in user notification items
- Use the correct notification levels descriptions for PMs
- Theme CSS should recompile when theme uploads change
- Properly avoid n+1 query on flagged posts
- Correct pool reaper
- Pool drainer to use Rails 5.2 implementation
- Stop using Rails connection reaper in multisite
- Properly retrieve user custom fields
- Improves micro data support
- Staff see the wrong message when changing another user’s email address
- Focusing input displayed after clicking on a link more reliable
- Correct group membership on cards for admins
- Properly handle invalid auto close date for polls
- Add members button wasn’t working on mobile for non-admin group owners
- Do not show SSO external\_email to moderators
- Don’t clear connections on the same process.
- Clients get stucked in readonly mode if messageBus fails.
- TopicViewItem: do not store IP of logged in users
- PM participants listed inline
- Add check for missing assets file in development
- `Discouse.keep_readonly_mode` incorrect extends expiry.
- Be more aggressive in checking master when trying to fallback.
- PostgreSQL fallback thread doesn’t run server starts in readonly.
- Notify all processes to fallback when PostgreSQL recovers.
- Can’t boot Discourse app with read-only PG connection take 2.
- Can’t boot Discourse with a read-only PG connection.
- Ensure we have proper timeout for MiniRacer.
- Adjust 2FA input width in mobile login form
- Adjust max-width of social login buttons for non-English locals
- Broken mailto href’s in emails
- Don’t delete profile views during user anonymization
- Do not show email disabled notice to staff when they can receive emails
- Add support for string avatar\_type values in PHPBB3 importer
- String in server\_plugin\_outlet needs to be mutable
- Uploading JPEG files didn’t work anymore
- Do not use number helper for charts Y value
- Incorrect backup and update times on dashboard
- Slightly safer rounding
- Makes format number round the value before using parseInt
- User-fields layout in desktop create account form
- Db:create was failing due to site settings
- Removes buggy/unnecessary local-dates margin
- User-fields layout in mobile create account form
- Avatar\_url includes upload\_path twice when local storage used
- Permalink route matcher should always be last.
- Disconnects all connections in the pool before forking.
- Do not verify group visibility when checking for mentionable/messageable
- Import comments of 1st post in SE importer
- Unable to add new poll to post with a public poll
- Clean up stale `UserExport` records daily.
- Sharing popup not showing on macos/chrome
- Protection against dangling category group records
- Always delete invalid upload records
- Keyboard shortcuts didn’t work on subfolders
- User merge should not fail when primary email address is missing
- Alignment for instructions on change email and 2FA fields
- Allow a user to remove their title

---

<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: [September 11, 2018, 1:47pm UTC](https://meta.discourse.org/t/discourse-version-2-1/86339/4 "2018-09-11T13:47:45Z")

</div>

## UX CHANGES

- Join dates in tooltips using line breaks.
- Prevent long names from overflowing post
- Primary & danger buttons should lighten on hover in dark themes
- Hide associate accounts if second factor is enabled
- Remove auth token log from user page
- Primary button didn’t have hover effect anymore
- Add padding between fa-chevron-up/down and heading for groups page
- Avatar on collapsed user profile was the wrong size
- Show Rollback and Backup buttons on same line
- Improve email testing admin tool. (#6308)
- Reserved\_usernames should be a compact list (#6330)
- More compact polls on mobile
- Show only the expand icon in lightboxes on mobile.
- Improve copying from IP lookup component.
- Do not show the groups directory if disabled.
- Styles for user-cards should the same with badges on / off
- Super short tags shouldn’t display on same line as title
- Youtube embed title overlaps with select-kit
- Show full name on /latest page
- Keyboard shortcuts will automatically select hovered post
- Blue “Resend Activation Email” button in wizzard
- Don’t show the whisper toggle when replying to a whisper
- Wizard resends activation email when user exists
- Allow admin to copy IP address details of a user. (#6270)
- Stop putting usernames in edit reason when changing post owner
- Show static page title. (#6273)
- Improving tag topic list navigation consistency
- Replace Google search with Discourse search on not found page
- Replace Google search with Discourse search on not found page.
- Topic-timer modal style fixes
- Show anchor icon instead of text when topic bump is disabled
- Improve category filtering and include subcategories
- Prevent text from wrapping below notification icons
- Admin permalink form can fit on one line
- Improves edit reason contrast in dark themes
- Better rejection message when reply via email is too short
- Include a flag reason in the post-deleted-by-staff-because-of-flags message
- Add ‘when’ to autobump messages
- Allow emojis to be displayed in nav-item.
- Changes in top categories of hamburger menu (#6200)
- Gives wizard language selector more room to expand
- More categories link alignment
- Display only top categories in hamburger menu (#6146)
- Add a route /rules as an alias for /faq and /guidelines
- Clear topic timer text when manually closing/opening (#6123)
- Clear topic timer text when manually closing/opening
- Open the change avatar modal when clicking the profile picture
- Preview multiple color schemes in wizard (#6151)
- Auto fix order when reordering categories (#6149)
- Drop ‘fix order’ and auto re-order subcategory
- Don’t show the avatar section when overriden by SSO
- Skip the modal and refresh the app when selecting an avatar
- Use future date input instead of date picker on feature topic modal (#6096)
- Use the pointer cursor when hovering over a selectable avatar
- Reload the page when changing avatar
- Adjust positioning of auto complete vertical
- Clicking admin menu does not hide select posts box.
- Don’t repeat category name in topnav
- Make sure autocomplete does not render off screen
- Focus on new topic link that appears on the page via keyboard. (#6081)
- Timeline lookup on mega topics should use date of current post.
- Show custom footer on user activity and preferences pages (#6080)
- Category description display issue
- Adds flexbox to topic user name fields on mobile
- Keyboard shortcuts (j/k) should work with /categories
- Don’t display an empty participants section.
- Don’t display participants count if it is zero.
- Refactor topic metadata’s many floats into flexbox (#6018)
- Rate limiter message will say to wait “a few seconds” instead of 0 to 3 seconds
- Don’t add light box for SVG images.
- Show quote button at end of selection on Opera
- Reworks dashboard problems section to be in line with new style
- No need to warn about username changes anymore
- Makes sure close modal icon is aligned with title
- Experimental ranges for local dates

## SECURITY CHANGES

- Correct edge case when SSO provides unvalidated emails
- Prevent users from modifying custom fields
- Prevents XSS in local-dates
- Prevent use of X-Forwarded-Host to perform XSS
- Force IM decoder based on file extension - part 3
- Force IM decoder based on file extension - part 2
- Force IM decoder based on file extension
- Consider `0.0.0.0` a private IP
- Extra CORS headers should be set on correct host
- Do not allow authentication with disabled plugin-supplied a… (#6071)
- Category badges should HTML escape names
- Prevents XSS when showing tooltip
- Update sprockets for CVE-2018-3760

## PERFORMANCE

- Add fast path to find uploads before resorting to `LIKE` query.
- Memoize `EmailReceiver#sent_to_mailinglist_mirror?`.
- Restrict number of skipped email log for `Jobs::UserEmail`.
- Memoize `SkippedEmailLog.reason_types`.
- Only log the first skipped email when user exceeds daily limit.
- Add missing index on `EmailLog#bounced`.
- Split loading of posts to speed up user renames
- Move `EmailLog#reply_key` into new `post_reply_keys` table.
- Split skipped email logs into a seperate table.
- Tune indexes to speed up lookup for bounced email.
- Store `EmailLog#reply_key` as `uuid` data type.
- Store `EmailLog#bounce_key` as `uuid` data type. (#6093)
- Store `EmailLog#bounce_key` as `uuid` data type.
- Add missing index on `user_id` for `user_second_factors` table.
- Make mega topics work without a stream.
- Do not carry post ids in memory when rebaking all posts
- Reduce querying when creating notifications
- Drop support for gaps in mega topics.
- We have no use for topic percent rank
- Do not calculate gaps for `TopicViewPostsSerializer`.
- Scanning the `id` for this is signficantly slower in production
- Update `TopicView#participant_count` to use `Topic#posts_count`.
- Don’t pluck all the columns just to retrieve a single value.
- Send down gaps as the relevant posts load instead of front loading.
- Don’t include entire post stream when we’re loading more posts.
- Help postgres make use of index in `Post.summary`.
- Memoize `TopicView#gaps` results.
- Add index\_topic\_id\_percent\_rank\_on\_posts.
- Mega\_topics get no post counts per user
- Don’t display days ago on timeline for megatopics.
- Stop counting participants on very large topics
- Faster Screened IP Address roll up
- Release results in a couple of cases
- Prefer `exists?` instead of loading AR object.

---

<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: [September 11, 2018, 1:47pm UTC](https://meta.discourse.org/t/discourse-version-2-1/86339/5 "2018-09-11T13:47:58Z")

</div>


