# Discourse Version 2.8

**URL:** https://meta.discourse.org/t/discourse-version-2-8/182818
**Category:** Announcements
**Tags:** release-notes
**Created:** [March 10, 2021, 9:49pm UTC](https://meta.discourse.org/t/discourse-version-2-8/182818 "2021-03-10T21:49:19Z")
**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: [March 10, 2021, 9:49pm UTC](https://meta.discourse.org/t/discourse-version-2-8/182818/1 "2021-03-10T21:49:19Z")

</div>

### Focus

- Show “last visit” line within topics, as we already do on topic lists ✅

- introduce light bubble PM style to help visually distinguish PMs from regular topics ✅

- Tagging is now on by default! Add [description to tags](https://meta.discourse.org/t/add-title-and-description-to-tags/125187/4) and improve tag management UI. ✅

- Show draft counts in user drop-down, user page, and sidebar @nbianca✅

- merge the concept of “new unread” and “unread” @tgxworld✅

- Enable [automatic dark mode switching](https://meta.discourse.org/t/automatic-dark-mode-color-scheme-switching/161593) by default (site setting `default dark mode color scheme id`) @pmusaraj ✅

- Improve “blank page syndrome” for user menu (notifications, assigned, bookmarks), user activity, user messages, and invites @andrei✅

- Add counts per group to suggested messages on group PMs @tgxworld ✅

- Impersonation should require a second factor @techAPJ ✅

- Add username (and full name?) matches to full page search results @Roman / @pmusaraj ✅

- Beef up accessibility @j.jaffeux @awesomerobot ✅

- Wildcard block for email addresses per [topic](https://meta.discourse.org/t/suggestion-wildcard-block-email-address/123552/25) @nbianca✅

- Direct to S3 uploads, retire jQuery file uploader replacing with Uppy @martin✅

- Improve the experience for users who have [pending posts](https://meta.discourse.org/t/end-user-pre-approval-queue-experience-can-be-much-improved/68307/11). @loic ✅

- show posts awaiting moderation [on your user page](https://meta.discourse.org/t/can-i-view-my-own-topic-that-is-awaiting-moderation/187532) @loic ✅

- Improve error handling for theme/plugin `decorateCooked` APIs @david ✅

### Codename

- ~~[Strowger](https://meta.discourse.org/t/discourse-version-2-7/166607) v2.7~~
- [Audion](https://en.wikipedia.org/wiki/Audion) v2.8 ←

### Start date

May 19, 2021

### Planned release date

January 26th, 2022

---

<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: [January 27, 2022, 3:25pm UTC](https://meta.discourse.org/t/discourse-version-2-8/182818/9 "2022-01-27T15:25:39Z")

</div>

### New Features

- Store dismissed state of topic nav popups
- Export topics to markdown
- Add missing emojis
- Search screened IP address in blocks
- Show warning if user won’t be mentioned
- Customizable rules and plugins for `PrettyText.markdown`.
- Decorate username in email-group-user-chooser-row
- Date-range tag for local dates
- Update emojis
- Make the draft error exclamation in composer red
- Catch decorateCooked errors from themes/plugins
- Use raster image and autofill in 2FA input
- Scheduled group email credential problem check
- Allow topic pin toggle when header is docked
- Before consolidation callbacks.
- Automatic admin editor dark mode
- Allow sending message via a link to multiple users
- When suggesting usernames skip input that consist entirely of disallowed characters
- Hide\_email\_address\_taken forces use of email in forgot password form
- Scheduled problem checks for admin dashboard
- Allow to modify topic-backed static pages
- Add topic-navigation plugin outlet and popup component
- Save scroll position on bookmarks page
- Extend plugin API to add multiple poster icons
- Add Apple plugin to the official list
- Use Tab for indenting text in composer
- A notification consolidation plan for keeping the latest one.
- Delete previous reviewable reminders.
- Experimental support for group membership via google auth
- Restrict link invites to email domain
- Introduce API scopes for badges.
- Pre-setting user locale via bulk invite
- Add the ability to go back and forth between PM and New Topic
- Ability to add description to tags
- Show user cards for ‘replying…’ users
- Replace `Crawl-delay` directive with proper rate limiting
- Display pending posts on user’s page
- Show recent searches in quick search panel
- Send a ‘noindex’ header in non-canonical responses
- Support i18n in Ember CLI plugin tests
- Highlight changed tags in post revisions
- Notify responders of post removal
- Add email normalization rules setting
- Mention here to notify users in topic
- Show browser search tip when discourse search shows up in a topic
- Local chunked uppy backup uploads with a new uploader plugin
- Adds uploads scope for API keys
- Allow theme settings to request refresh
- Log only topic/post search queries in search log
- Apply rate limits per user instead of IP for trusted users
- Show a confirmation modal when “Dismiss all” would dismiss an important notification
- Display warning when sharing a topic in a restricted category
- Move sticky avatars into core
- Direct S3 multipart uploads for backups
- Add read-only scope to API keys
- Add pagination to API keys page
- Allow users to edit alt text from the image preview in the editor
- Use uppy for tags uploader
- Small action post accepts href
- Use uppy for watched word uploader
- Move avatar uploader to uppy
- Move emoji uploader to use uppy
- Add setting to disable notifications for topic tags edits
- Pull hotlinked images in user bios
- Bypass topic bump when disable\_category\_edit\_notifications is enabled
- Mark omniauth failures as HTML safe.
- Add fullscreen-tables to post
- Include user custom fields in base exporter
- Allow recovery of deleted small action posts
- Add a hidden setting that enables using email as a source for username suggestions
- Change all core to use uppy-image-uploader
- Add setting to disable notifications for topic category edits
- Add reversed and type to allowed attributes
- Cache CORS preflight for MessageBus
- Cache CORS preflight requests for 2h
- Add downloadCalendar to plugin api
- Allow admins to permanently delete posts and topics
- Stop using email as source for username and name suggestions for Single Sign On
- Shortcuts for quote (q) and fast edit (e)
- Adds an API to exclude a tag from a TopicQuery
- Save local date to calendar
- Return subcategories on categories endpoint
- Allow users to remove their vote
- Make username suggester suggest `user1`, `user2` etc. for input that contains invalid characters only
- Enables fast edit by default
- Humanize file size error messages
- Add update banner to the categories and latest topics view
- Go to last unread for topic-level bookmark links
- Topic-level bookmarks
- User/category/tag results in full page search
- Local dates range on click
- Improve blank page syndrome on the activity/topics, activity/read and group messages pages
- Improve blank page syndrome on the user activity pages
- Experimental fast edit
- Remove duplicated messages about new advices
- Use second factor for admin confirmation
- Cook drafts excerpt in user activity
- Make the multisite config path configurable
- Add game consoles to unsupported browsers
- Publish read topic tracking events for private messages.
- Display new/unread count in browse more messages for PMs.
- Enable users to choose unseen as a default view
- Hide suspended users from site-wide search to regular users
- Allow plugins to extend Groups
- Enable auto dark mode on new instances
- Option to update default notification level of existing users.
- Create notification for redeemed invite
- Improve “blank page syndrome” on the user notifications page
- Allow admin to delete all posts by a user irrespectively
- Display unread and new counts for messages.
- Uppy direct S3 multipart uploads in composer
- Make allow\_uploaded\_avatars accept TL
- Allow adding small action codes dedicated to groups
- Improve “blank page syndrome” on the user bookmarks page
- Order pinned topics by their `pinned_at` column
- Rate limit exceptions via ENV
- First pass of using uppy in the composer
- Show the incomming topics banner on the Unseen view
- Allow linking an existing account from invite acceptance
- Add Unseen view
- Allow linking an existing account during external-auth signup
- Revert disallowing putting URLs in titles for TL0 users
- Disallow putting urls in the title for TL-0 users
- Dismiss new and unread for PM inboxes.
- Send user-card:show event
- Attach backup log as upload
- Add post edits count to user activity
- New and Unread messages for user personal messages.
- Onebox can match engines based on the content\_type
- Initial implementation of direct S3 uploads with uppy and stubs
- Show draft count in user menu and activity
- New style for personal messages
- Per-category default slow mode duration for topics.
- Add input name so 1password ignores input
- Add new plugin API to allow plugins to extend `Site#categories`
- Add filter box to the themes/components list
- Stop checking referer for embeds
- Enable client-side image optimization by default
- Add assistant to quick search widget
- Add ‘users.list’ API scope
- Update existing users when group default notifications changed.
- Add option to grant badge multiple times to users using Bulk Award
- Setting to allow moderators to change post ownership
- Uppy image uploader with UppyUploadMixin
- Penalty history improvements
- Add title tag for group detail page
- Let users select flair
- Make invites work with existing users
- Add period filter in top topics route for tags.
- Warn if invited user cannot see topic
- Add last visit indication to topic view page.
- Reencoding is safe, trigger it on files \>` 500Kb
- Pass supported file extensions to the system file picker
- Use native file picker in composer
- Add staff action logs for watched words
- Add multiselect user custom field
- Add slow\_mode\_prevents\_editing setting..
- Use group SMTP job and mailer instead of UserNotifications change
- Render emojis on GitHub labels when oneboxing an issue.
- Staff can receive pending user reminders more frequently.
- Accept the flag modal on CTRL + ENTER and CMD + ENTER
- Optimize images before upload
- Split Add Members into Add Users & Invite
- Make max number of favorite configurable
- Add more columns to outbound EmailLog
- Improvement to history stack handling on server errors
- An API key scope for editing posts.
- Use responsive image sizes in post stream
- Open the edit bookmark modal when clicking on the topic level bookmark button
- Add last updated details to SMTP/IMAP group settings UI
- Upload to s3 in parallel to speed up backup restores
- Blocking is optional when deleting a user from the review queue.
- Make date pickers in the bookmarks UI and topic timer UI consistent with all other pickers
- Add a messages view for all official warnings of a user
- Add type=website OpenGraph meta tag
- Add upgrade-insecure-requests to CSP when force\_https is enabled
- Add group filter to user directory
- Don’t show the draft checkmark when drafts are saved
- Add user custom fields to user directory
- Enable tagging by default
- Add global admin api key rate limiter
- Use group SMTP settings for sending user notification emails (initial)
- Censor Oneboxes
- Stage post edits immediately
- Lets users favorite 2 badges to show on user-card
- Extend widget-dropdown to accept disabled option
- Show all categories in composer
- Automatically timed delete stub topics after entire topic is merged into another topic
- Improve group email settings UI
- Enable pausing images from Giphy and Tenor
- Show an error message if regex is invalid
- Silence watched word
- Use path from existing URL of uploads and optimized images
- Flarum import script
- Navigate to an approved queued topic from the review queue.
- Show stale reviewable to other clients
- Allow selective dismissal of new and unread topics
- Normalize the service worker route
- Change “Preformatted text” shortcut
- Add on\_preload for TopicView
- Correctly convert topic title to uppercase and lowercase for Turkish default locale
- Add tasks to export and import site structure
- Support tag and replace in watched words in test modal
- Allow for notification of up to 20 group owners
- Add support for “skip\_validations” option in UploadCreator
- Constrain post\_excerpt\_maxlength
- Increase daily edit limits proportionally to trust level

---

<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: [January 27, 2022, 3:26pm UTC](https://meta.discourse.org/t/discourse-version-2-8/182818/10 "2022-01-27T15:26:17Z")

</div>

### Bug Fixes

- Allow staff to reset passwords by username
- Client should be able to route ID-less topic URLs
- Single line emojis has emoji metadata indexed twice.
- Improve top links section from user summary
- Restore outlet in mobile views
- Tests should never cloak posts
- Select topics instead of posts
- Select best link from Atom feed
- Handle malformed URLs in `TopicEmbed.absolutize_urls`.
- The service observer was using `this` incorrectly
- Add another method to check binary file
- Possible ReDOS in markdown newline rule
- Allowed URLs for API scopes added by plugins
- Display composer popovers over dropdowns
- Correctly access last poster username
- Create email token with correct scope
- Ensure that login does not fail for users with invite records
- Prefer email when resetting password
- Respect blocked domains list when redirecting
- Hide excerpt of binary files in GitHub onebox
- Tag watching for everyone tag groups
- Disable service worker proxying in chrome 97-97.0.4692
- Mark invites flash messages as HTML safe.
- Ensure floating quote button is not positioned under sidebar
- Quick-quote on Safari
- Ensure method exists before calling
- Add `/session/sso` service-worker workaround for chrome 97
- Attempt to fix flaky test by using a shorter topic
- Autocomplete incorrectly replacing text if used mid sentence.
- Origins\_to\_regexes should always return an array
- Broken GitHub folder onebox logic
- Correctly uses the name helper for selected content
- Improve emoji upload UI
- Ensure floating quote button is distanced from iOS selection
- Emoji group not actually saving
- Pass category and tag IDs to the emit webhook event job.
- Limits pre-line impact to tweet text
- Selected group cleared between emoji uploads
- Attempts to compensate for first line spacing with pre-line
- Prevents tweets to lose format in onebox
- Bypass service worker on the SSO path
- Navigate to topic/PM regardless of Shift key press
- Handling of `/p/###` URLs within Ember
- LOAD\_PLUGINS=0 in dev/prod, warn in plugin:pull\_compatible\_all
- Allow slug-less topic URLs to work within the same topic
- Don’t display duplicated emoji in picker
- Update recent emoji list when selecting from it
- Don’t trigger `topic_created` event for reply posts via email.
- Disable cast votes button for multiple polls with no min.
- Regression in topic list kbd navigation
- Append /all to URL if default list is ‘none’
- Actually save fields on themes:update
- Refresh logic in discovery topic lists
- When composing a message do not suggest deleted posts users
- New-topic feature was broken when ‘Default List Filter’ was set to ‘no subcategories’
- When loading more topics, `showFooter` was not updated properly
- Jittery topic progress on some window sizes
- Clean flagged queue when response to flagged post deleted
- Error when voting on a multiple poll without the min/max attrs.
- Use font-down
- Smaller pencil icon for edit tags
- Hide user’s bio if profile is restricted
- Small adjustments to topic progress position on desktop
- Tone down admin dashboard critical problem messaging
- Don’t allow NULL values for `notification_level` in `category_users`
- Improve the way magnific popup is loaded
- Uploads were broken in old Safari
- Save draftSequence when it is 0
- Predict draftSequence on draft save
- SiteSetting.title was being polluted in StaticController
- Gives composer options to post:highlight trigger
- Remove length constraint of `fancy_title` in `topics`
- Fallback to `anonymous` not `user` when suggesting usernames for anonymous users
- Use correct argument name in pending reviewables translation
- Menu panel position adjustment
- Use basic meta description if other description tags are missing
- Translation overrides from fallback locale didn’t work on client
- “Customize Text” showed compiled MessageFormat string for overridden `_MF` translations
- Translation precedence was different on client and server
- Incorrect header offset calculation
- Add smooth scrolling polyfill
- Uses new format for search tag endpoint to prevent issues
- Notify group members when someone quotes or replies to their post.
- Add more actions to the uploads API key scope
- Correct email\_tokens\_token\_to\_nullable migration
- Ensure theme names are escaped in HTML attributes
- Check if invite domain is valid
- Allow OAuth2Authenticator to handle existing associations
- Blurry onebox favicon images
- Only consider it handled by composer when a composer
- Defer topic/post created events until emails have been added
- Make tests work with higher starting upload id
- Select correct topic draft for user
- Update has\_topic\_draft when draft is updated
- Ensure MessageIdService can handle hostname changes and multisite
- –header-offset didn’t account for overscroll
- References header leading to broken email threading
- Make thumbnail tests start with a clean slate
- Display pending posts in a moderated category
- Edit tag test
- Tag transition only if tag name changed
- Missing allowed urls when displaying granualar API key scopes.
- Auth incorrectly handles duplicate usernames
- Updating a consolidated notification should bump it to the top.
- When using external auth disallowed characters weren’t removed from username
- Make user themes sort order case insensitive
- Add random suffix to outbound Message-ID for email
- PWA badges were not updating
- Match for indeterminate depth in URL during upload tests
- Allows more precise placement strategy on mobile
- Don’t redirect XHR/JSON requests when login is required
- Extract and fix overriding of usernames by external auth
- Set `auto_update` to false for non-git themes/components
- Skip themes that have blank URL in the `themes:update` rake task
- Native File object was not passed to uploadHandler
- Broken css in #15141
- Do not suggest “user1” as a username to invited users
- Adds 422 status code to bootstrap json
- Allow staff to upload when they should and authorized\_extensions is blank
- Ensure widget hooks always call the correct instance
- Treats ipad as mobileView for popper positioning
- Global log notice regressed in #15000
- Setting bookmarks in some cases was broken
- Don’t throw errors on duplicate keys in Yaml
- Software update prompt position on themes with extra header
- Use CDN URL for internal onebox avatars
- Delete unconfirmed AND expired email tokens only
- Don’t crash the browser when tapping autocomplete suggestions on Android/Gboard
- Strip Auto-Submitted email header from group SMTP emails
- Do not fail-stop if theme update fails
- Git should not prompt for credentials
- Keep existent tags when editing tag topics
- Don’t hit permalink-check if not authorized
- Allow invites if must\_approve\_users is true
- Don’t publish polls on message bus when there are no polls
- Don’t publish notifications to MessageBus for inactive users
- Allow poll feature to be disabled in discourse-markdown
- Remove ‘Open Draft’ label after topic draft deleted
- Ensure mobile topic-list links are treated as Ember transitions
- Infinite recursion when calling a refresh() action on routes
- Add a confirm and cancel button when editing alt text
- Validate number of votes allowed per poll per user.
- Don’t overwrite computed property for loading spinner fix
- Topic list separator fix
- Exclude moderator\_action post for reply count in user summary.
- Incorrect title and chevron when filtering by post number.
- None and all categories filter
- Cache all watched words
- Clear previous errors on second factor form display
- Register customOptions as select kit filter
- Convert URLs embedded topics to absolute form
- Error when SMTP enabled in PostAlerter with no incoming email
- Clean up emoji name which is file name
- Include all categories in sortedCategories
- Adjust topic list header alert
- Ambiguous column in `downsize_uploads`
- Additional fixes for last-visited on topic list
- Fix regressions introduced in ae16b0a
- Adds missing class for last visit separator
- Redirect to homepage if no posts exist
- Exclude topics from muted tag in category featured list.
- Emoji uploader not using data.name on uppy upload
- Use correct group out of multiple for SMTP sender
- Drop malformed CC addresses in GroupSmtpEmail job
- A screen-track/appEvents regression in #14929
- Composer education message for group mentions were broken
- Use previous chunk to check if local backup chunk upload complete
- Set `null` to group if `groupAttrs` param is not available.
- Use the same hljs version in prod and tests
- Prevent `PreloadStore` from calling the finder when value is falsy
- Use Map instead of Object for caching
- Ensures minimum tags logic is correct and shared
- Display top posts from private categories if the user has access.
- Topic queryParams are removed from history state when scrolling.
- `LocalJumpError` in rake tasks
- Call `_clearFlash()` when displaying a modal
- Don’t fail if `s3_install_cors_rule` is off
- Use `127.0.0.1` instead of `localhost` for ember CLI
- Disable scroll events while on full screen
- Allow bulk invites to be used with [DiscourseConnect](https://meta.discourse.org/t/13045?silent=true)
- In Ember CLI some plugin tests were referring to the wrong container
- Make PostRevisor more consistent
- Show perma-delete in menu without refresh
- Remove xlink:href to favour href due to deprecation
- Use correct attribute method to get post id from dataset.
- Regression introduced in #14715
- Keep topic context when redirecting to full search
- Generate valid heading ids
- Restore animation for like action on mobile
- Persist notifications in OS X
- Include admins in presence reply channel permissions
- Rename action\_code\_href to action\_code\_path
- Skip post validations for system revisions when author deletes post
- Ensure CORS rules exist for S3 using rake task
- Canonical URLs may be relative
- Stop saving bookmark on modal press ESC
- Ensure required\_tag\_group\_name is null if no value present
- Exclude suppressed category topics in digest even if unmuted.
- Rake categories:move\_topics shouldn’t move category description topic
- Display Instagram Oneboxes in an iframe
- Use mouse down event when cancelling search
- Insert commas even when field value is null
- Prevent duplicate search requests to backend
- Deleting a for\_topic bookmark caused JS error
- Use the same mode for chinese search when indexing and querying.
- Resolve responses of 103 should be retried using small\_get
- Include topic details when PMing
- Allowed\_theme\_ids should not be persisted in GlobalSettings
- Do not replace words in hashtags and mentions
- Hide links to muted topics and in categories list
- Avoid another N+1 query in `Site.json_for`
- Update flair group of all members if primary group setting changed.
- Should not receive topic invites from ignored users.
- Do not perform link lookup for replaced links
- Include new tags in validation if user can create one.
- Cleanup PresenceChannel instances when composer closed
- Prevents a circular json error in tests
- Vanilla importer fixes
- Avoid N+1 query in `Site.json_for`
- Correctly avoid concurrent requests in PresenceChannel get
- Do not send presence leave beacon if not present in any channels
- Show right message when permanently deleting topic
- Correct tracking context for some category routes
- Include the Vary:Accept header on all Accept-based responses
- Allow every tag for watched words
- Remove superfluous topic allowed users on group invite
- Correct site setting name
- Don’t leak unhashed user API keys to redis
- 2N+1 sql in admin /api/keys endpoint
- Make the `verbose_auth_token_logging` setting off by default
- Show search context only in topic routes
- Broken quick search on iPadOS
- Reset sso email and payload when user navigates away
- None row doesn’t have a value, use class to target it
- Topic timeline not updating in megatopics.
- Do not query backend when searching “in this topic”
- Remove ‘crawl\_images’ site setting
- Only replaces double quotes and uses unicode
- Do not show recipient user in email participants list
- Clarify None Needed option when editing bookmarks
- Hide full screen toggle button when textarea is disabled
- Category and tag picker alignment on mobile
- Correct api version after minor bump
- Improve quick search speed and result highlights
- Allow staff to view pending/expired invites of other users
- Also track textContent mutations
- Decorate posts that are loaded after the initial render in post stream
- Improvements for download local dates
- Ensure embedded replies/reply-to links open in \_blank
- Groups using users icon were lacking margin in search
- Attempts to observe preview mutation asap
- Attempts to enforce caret position in filter
- Use absolute URLs in search shortcut
- `BackupRestore::DatabaseRestorer` failures with Ruby 3
- Show group filter only when user is logged in and groups are present
- Extract filter pm and categories from UserAction
- Nil the baked version after moving the posts.
- Use category’s default sort order in latest & unseen filters only.
- Missing excerpt for post small actions in topic timeline.
- Remove List-Post email header
- Move check if user is suspended later
- Update translation key to match flag reason.
- Phpbb import - attachments not embedded in posts
- Handle separately invite to topic and forum
- Topic\_tracking\_state not erroring when missing user\_stat
- Ruby 3 does not freeze interpolated string
- Fix local-dates in non-post contexts, and in long topics
- Correct password change path for password managers
- Resolve quoting issues by reverting new shortcuts
- Disable previews if diffhtml is enabled
- Apply quote selection workaround to all browsers
- Selection going missing in Safari
- JS error when showing topic search results
- Strip `discourse-logged-in` header during `force_anonymous!`
- Do not persist tags query param
- Tooltip in quick search didn’t work
- Check env for multisite config path even if config file exists
- Disable Show results if nobody voted
- Hide form after password reset
- Parse address lists in embedded emails
- Local date trim when no time available
- Select all button on group assigned page
- Reenable global setting HTML support.
- Display embeddable host’s post to category.
- Support Ruby 3 keyword arguments
- Ember CLI was always loading the admin payload in dev mode
- Vimeo private video oneboxes were broken
- Use addresses to compare email header
- Stop tracking incoming message after navigating away take 2.
- Stop incoming message tracking after navigating away.
- Make score’s reason link building more explicit
- Empty state message on the user bookmarks page
- Exclude PMs that user sent to themselves.
- `Topic.similar_to` results in invalid query for certain locales.
- Do not show ‘new or updated topics’ for mobile categories page
- Follow the canonical URL when importing a remote topic.
- Error loading suggested topics for anon users.
- Notify incoming to categories and latest topics view specifically.
- Restrict other user’s notification routes
- Incorrect interpolation was limiting to 1 dispatch / component
- Do not publish post for PM topic tracking if not new for user.
- Support Ruby 3 keyword arguments for DiscourseRedis
- Workaround Safari 15 createImageBitmap bug
- Do not display userColorSchemeId in the UI
- Make update banner always available on the categories view
- More robust tabindex restriction on preview
- Ensure subcategory list is hidden when not required
- Do not error \_removeDeleteOnOwnerReplyBookmarks on navigate
- Don’t try to boot the ember app on old browsers
- Correctly defines data-attributes used by local-dates
- Feature detect globalThis
- `include_` serializer methods must end with ?
- Use unread post excerpt for topic-level bookmark excerpt
- Use active record `update_attribute` instead of mini sql.
- Do not reload card if already loaded
- Handle forwarded email quotes around Reply-To display name
- Return empty array when no parent for range
- Rss gem is bundled gem since Ruby 3
- Empty state message on the group messages pages
- Update only passed custom fields
- Hoisting linebreaks shouldn’t fail for HTML5 elements
- Offer site\_logo\_dark\_url as an option for dark mode themes
- Add locales for group mention PM variants
- Remove incoming messages for read events.
- Address ArgumentError to support Ruby 3 keyword arguments
- Prevents extreme cases to overflow in selected content
- Do not suggest Emoji when in open code blocks
- Update only present fields in request
- Optimistically fix topic timeline state issues
- Use `<textarea>` for theme translations
- Do not error mobile upload button if !allowUpload
- Mobile nav styling
- Give the topic timeline unique keys for state
- Make sure S3 object headers are preserved on copy
- Don’t publish PM archive events to acting user.
- Don’t attempt to migrate multisite test db while holding the mutex
- Resolve short URLs after diffHTML was loaded
- Correct the play icon position
- Do not replace in mentions and hashtags
- Display unread/new PM links only when viewing own user.
- Remove dismissed new topics from PM topic tracking state.
- Remove dismiss read topics from PM topic tracking state.
- Better positioning for “Skip to main content” button
- Ember CLI was being hijacked before potential errors
- Composer height issue in Safari on iOS 15
- Ignore canonical link for [medium.com](http://medium.com) oneboxes
- Do not show spoiler content in RSS
- Always show the creation date of posts in crawler view
- Correct highest post number for read topic tracking state.
- Better filter for groups search
- Error in Ember CLI environment
- Capture CC addresses for forwarded emails
- Perform `agree_and_keep` action only if possible.
- Correct the forwarded by user small post for group inbox
- Use random file name for temporary uploads
- Search was not being initialized properly.
- We weren’t properly resetting the mobile state between tests.
- Don’t attempt to migrate concurrently with other migrations
- Allow single string values on custom multiple select fields and not just arrays
- Increase chunk size to fetch title tag correctly
- Bug with navigation to the activity/topics and the activity/read pages
- In test mode, initializers were modifying classes over and over
- Make bindMobileUploadButton explicit for upload mixins
- Downgrade oj
- Visible “skip navigation” link on some themes
- Use named params correctly with dir-span
- Jump to reply button in post stream was not working
- Ensure id sequences are not reset during db:migrate
- Update PresenceChannel#present to work for redis 6.0
- Allow PresenceChannel to work on Redis 6.0
- Correctly apply unusual padding to profile dropdowns
- Capture S3 metadata when calling create\_multipart
- Correctly display GitHub code oneboxes
- Do not send emails to mailing\_list\_mode subscribers for PMs
- Topic reset\_new unscoped causing huge queries
- Do not prefix temp/ S3 keys with s3\_bucket\_folder\_path in S3Helper
- The `LogsNotice` service was never unsubscribing from the mbus
- Remove spacing from GitHub oneboxes
- Add plugin event to topic list user lookup
- Make user-card-metadata plugin outlet tagless
- Order outputted theme stylesheets
- Restructure temp/ folders for direct S3 uploads
- The empty state message was appearing in wrong moments on the user bookmarks stage
- Do not allow negative values for LIMIT
- Use original from address when forwarding to group inbox
- Minor SK3 styling issues in Safari
- Discard old search results if search term changes when moving posts to a different topic
- Sk3 wizard regressions
- Do not focus after search if dropdown is collapsed
- Close emoji autocomplete when the opening colon `:` is removed
- Reset preProcessorStatus state correctly for composer-upload-uppy
- Use file.id instead of file.name for media-optimization resolvers
- Adding debugging and fixing media-optimization-worker issues
- Always reload post’s raw when editing a post
- Pick-files-button component
- Make themes:update work with multisites
- Deprecated method should still behave the same.
- Revoking admin or moderator status doesn’t require refresh to delete/anonymize/merge user
- Do not show default locale option on site text customization
- Bookmark delete button alignment in modal-footer
- Include tags in quick search suggestions
- Add a string for the Unseen view tab tooltip
- Remove markers from all translated languages
- Log proper error message when SSO nonce verification fails
- Make site tasks work with duplicated uploads
- Unread group PMs should use `GroupUser#first_unread_pm_at`.
- If the category slug is not present then search via ID
- Move bookmark modal buttons into modal-footer
- Uses keyUp as widgets dont handle bubbling
- Do not display the color scheme ID in interface dropdown
- Allows paste from context menu to work
- Pass fileName to error handler for media optimization
- Clean up upload events properly in composer
- Composer Processing/Uploading status not clearing on cancel and trash
- Paste event not propagating from composer using Uppy
- Button alignment on messages
- Query the items in the queue to calculate a user’s flagged post count.
- Unescapes hash section with present to account for url-encoded chars
- `TopicTrackingState.report` not including unread for staff posts.
- Notification menu broken on older browsers
- Category group moderators can read flagged post meta\_topics
- Check if BasicBadge is enabled for TL1 welcome message
- Fix rtl style for pull right
- Prevents exception on malformatted messages
- Do not show private group flair on user avatars"
- Reuse avatar-flair component in group preview
- Errno::EXDEV when across filesystem boundaries
- Prevents s shortcut to generate an error
- Don’t swallow an error if we can’t run `yarn ember build`
- Do not show flair bg color if flair is not visible
- Update iframe url for simplecast onebox
- Update oEmbed URL for simplecast onebox
- Group inbox new filter not accounting for dismissed topics.
- Remove limit on dismissing unread and new messages.
- Restore server side route for tag messages filter.
- Wrong default notification level shown for group
- Remove Nokogumbo references
- Update draft count when sequence is increased
- Make rake site:export\_structure export uploads
- Use search message context on group message page
- Use `update_attribute` method to trigger callbacks.
- Remove ‘reply above line’ marker
- Consistently show history modal when clicking edit notifications
- Inline secure images with duplicated names
- Adjust poll buttons
- Use reply-to address for incoming emails if present
- Upload placeholder was missing line break
- Make search work with sub-sub-categories
- Do not show private group flair on user avatars
- Better composer placeholder handling during media optimization
- Validate value of custom dropdown user fields - dropdowns and multiple selects
- Remapping of uploads could fail during restore of backup
- Do not offer to save draft if invalid
- Typu in intercept-click
- Update draft count after creating a post
- Add users-directory-controls outlet to mobile template
- Allows authentication data to be present in bootstrap
- Avoid creating a post revision when topic tags have not changed.
- PM tags route should work for usernames with a period.
- Reduce input of to\_tsvector to follow limits
- User can change name when auth\_overrides\_name is enabled.
- Remove additional setting check for uppy-upload
- Changing the post owner didn’t update the `reply_to_user_id` of replies
- Don’t grant sharing badges to users who don’t exist
- Use correct URL in schema markup for post images.
- Do not raise exception when svg path is nil
- Show Uncategorized when unsubscribing
- Clear `Site#categories` cache when git sha changes.
- Don’t show the Tis Weekend option in date pickers on Sundays
- Don’t show the Later This Week option in date pickers on Sundays
- Better and more secure validation of periods for TopicQuery
- Show bulk button on PMs for all users
- Long poll if window becomes active
- Ensure browser history contains correct URLs
- Update the list of users after user joined group
- Validate email\_accent\_bg\_color color
- MyBB importer exposes deleted posts
- Manually adds frowning\_face\_with\_open\_mouth for apple
- Don’t proxy `/qunit` URL when using Ember CLI
- Force timeline/progress to re-insert into DOM on topic change
- Show user filter hints when typing `@` in search
- Allows to use icon-picker in wizard
- Allow only groups with flairs to be selected
- Consider 100 years suspension as permanent (instead of 500-years suspension)
- Display warning when SSO email is different from invite email
- User directory - correct variable names
- Serialize flair group ID for preferences page
- Change email from to not have via site\_name for group SMTP
- Toggle search menu when click the same button
- Remove hardcoded value when displaying incoming messages count.
- Alignment of user badges in user card
- Don’t allow category and tag tracking settings on staged users
- Media optimization setting was misnamed
- Disable the post submit button during image processing properly
- Clear stale status of reloaded reviewables
- Use correct setting for [DiscourseConnect](https://meta.discourse.org/t/13045?silent=true) card background overrides
- Ascending/descending sorting in the group membership requests page
- When updating timestamps on topic set a correct bump date
- Simplify and improve choosing favorite badges
- Debounce group name validation correctly
- User’s “Top badges” grid
- Add order to outputted stylesheet link tags
- Problems with choosing favorite badges
- Assets for the theme tests page are not compressed
- Issues with custom icons in themes
- Remove button to dismiss theme error messages
- `user/badges` grid fix
- A memoization bug in UserLookup and refactor
- Use array to keep best link for each onebox
- Use Terser for minification even if uglify-js is not available
- Don’t try to load badges if there none left
- Email threads sometimes not grouping for group SMTP
- Use rem for font sizes in post headings
- Don’t use `user_generated` images as avatar images in Oneboxed Twitter content
- Don’t downcase “all groups” in dropdown
- Allow uppercase letters in automatic group names
- Do not show invalid option in flair chooser
- Set user flair group to primary group
- Various translation string fixes
- Suggest current username for staged users
- Admin\_user\_response schema
- Use created\_at if last\_posted\_at is null
- Show correct dates in topic timelines
- Scroll to top on badge pages
- Let staged users choose their username
- Switch logos live when changing color schemes in user prefs
- Let user clear their flair group
- Can\_admin\_group should be true when creating a new group.
- Handle storage providers not implementing ACLs
- Do not interpret backreferences in email content
- Do not wrap flair title in chooser
- Do not prevent other topic timers running on error
- Check type of existing reviewables when new reviewable is created
- Fix error message for fix\_missing\_s3 rake task
- Set CSP base-uri to `self`
- `fix_missing_s3` task fails on failed upload (take 2)
- Do not stop `fix_missing_s3` task if saving an upload failed
- Maintain order when updating notifications
- Handle SMTPServerBusy for group smtp email
- Multiply ratelimiter leniency for own discobot certs
- Poll wasn’t showing all voters
- Handle edge cases for group SMTP email job
- Respect personal\_email\_time\_window\_seconds in group SMTP
- Build quote share URL using post number, not post ID
- Load the category when the category\_id attr is present.
- Do not reload whole directory table on username input change
- Invalid link definition in bootstrap-json
- Update locale keys for watched word logs
- Delete old reminder topic timers
- Show empty search results sets
- Make non-transactional migration idempotent
- Set class on color scheme links in bootstrap
- Reorder and hide topic timer options
- Child themes being precompiled multiple times take 2.
- Rename ninja edit terminology to grace period
- Detect decode failures earlier in image optimization pipeline
- Detect resize failures in the client size image optimization
- Don’t translate TrustLevel name when generating links
- Typo in discourse
- Reintroduce add group user by email
- Do not close the merged topic if the first post wasn’t merged
- Clear appropriate cache when updating font settings
- TL4 users cannot delete others posts
- Do not redirect to a topic user cannot see
- Ignore canonical link to localhost
- Child themes being precompiled multiple times.
- Problem when `[]` custom field is send
- Always render topic counts
- Use absolute URL when redirecting SVG sprite path.
- Ensures we don’t apply charts options to other modes
- Include user\_field\_ids in pagination URL for directory items
- Some admin reports (notably backups) were not showing up
- Do not call ‘set’ in destroyed directory table component
- Get all groups for user directory dropdown
- Flaky search-spec
- Remove legacy topic timer code
- Handle image decoding failure in composer image optimization
- Remove extra margin from share topic modal
- Only delete the word/phrase when the ‘x’ icon is clicked
- Topic level bookmark button
- Do not show In Reply To for group SMTP emails
- Missing category edit icon.
- Improve participant display in group SMTP emails
- Backfill topic\_id for EmailLog
- Nil-filled CF arrays were not being deleted
- Translation of plugin directory column on mobile
- Follow redirects for inline/mini onebox
- Always serialize the correct attributes for DirectoryItems
- Increase max favorite badges to 6
- Table header translations on admin users list
- Manually update DirectoryItemSerializer attributes on directory column change
- Check all migrations for dropped columns/tables during restore
- Load more users URL respect group param
- Make favorite work with multiple grant badges
- Ignore missing uploads in theme settings
- Absolute path for directory-columns.json
- Ignore posts needing approval when calculating reviewable counts.
- `fix_missing_s3` rake task could fail due to missing upload
- ShrinkUploadedImage was broken since cb12a721
- Ensures average is applied on last incomplete segment
- Set random values for digest\_attempted\_at
- Previewing theme components broken when component has no SCSS.
- Remove duplicate add\_unsubscribe\_link hash key
- Render detailed\_404 page from 403 responses
- Show link count only once for oneboxes
- TL4 users can see their deleted posts
- Downsize image last when saving uploads
- Correctly implements average for reports
- Multiple links being generated for non-theme targets.
- Color scheme stylesheet not loaded when no default theme is set.
- Prevent resurrecting old topics via email reply for group inboxes with SMTP enabled
- Remove List-Unsubscribe header if using group SMTP
- Do not display twice a user who changed vote
- Do not check for duplicate links in Onebox
- Add word boundaries to replace and tag watched words
- Update post’s raw from server response
- Mobile layout for watched words admin UI
- Ensures validValues is an array
- Do not add mailing list headers to group SMTP emails
- Dismiss new keyboard shortcut not working
- Drop and recreate column properly for directory\_columns
- Use correct property for jump-up embedded post link
- Allow SVG uploads if dimensions are a fraction of a unit
- Broken DB issue following a reverted migration
- Adding multiple auto tags in watched words admin UI
- Translations of table headers in group members directory
- Prevents mode to be forced to unexisting mode
- Resend only pending invites
- Destroy invites of anonymized emails
- Ensure we dont collapse data multiple times
- Move allow\_unknown\_sender\_topic\_replies outside SMTP/IMAP box
- Make sure reset-new for tracked is not limited by per\_page count
- Ember CLI was losing some preloaded data
- Sort filelists to ensure consistant asset precompilation hash
- The topic level bookmark button stops working if choose ‘No’ on the clearing all bookmarks confirmation modal
- Make avatar-flair component fail gracefully group info missing
- Skip failing tests for composer
- Update raw and cooked immediate after edit
- Make sure topic\_user.bookmarked is synced in more places
- Validate upload is still valid after calling the “before\_upload\_creation” event
- Respect nofollow exclusion setting in topic featured links.
- Refresh post stream after in-place post updates
- Some absolute links were causing full page reloads
- Show group Email settings if just SMTP enabled
- Adjust styling of first notification
- De-prioritize composer category on navigation
- Do not render user-avatar-flair element when user has no flair
- Flaky javascript tests with fake timers
- Clicking on a URL with a different url prefix did not work
- Do not reload post if raw is present
- Can’t bootstrap with ember-cli when login\_required is enabled
- Link up reply to post correctly when emailing group
- `count` is not defined lint error
- Lots of plugin tests were using old, non-Ember compat CLI APIs
- Do not block SVG sprite bundle if a file is missing
- Theme tests should work in production
- Errors loading secure uploads when secure uploads is disabled
- Hide image resize controls in staged edit content
- Search menu regression
- Handle timeout errors when sending push notifications
- Quoting Oneboxed content should exclude formatting
- IMDb links were being oneboxed as posters
- Do not enqueue :group\_smtp\_email job if IMAP disabled for the group
- Size of emoji in poll options
- Use newly created PushSubscription object for push test message
- Allow any other tag to be a synonym
- Composer doesn’t show an error message in case of a network issue and stops updating draft after
- Misspelling in associate\_accounts\_controller\_spec.rb
- Ensure images in polls don’t cause abrupt scrolling
- Clear post action types application serializer fragment cache.
- Return `naturalWidth` and `naturalHeight` for Composer image sizes
- Redirect non-staff user to homepage when deleting own topic
- Escape periods in current user’s username before generating `RegExp`
- Change order of topic\_tracking\_state SELECT SQL
- Dismiss topics keyboard shortcut not working
- Ignore `allowlistgeneric` Onebox image sizes
- Add check for if element doesnt exist on ensureDropClosed
- Show required tags to staff by default and override limit
- Active record annotation of topic model
- Do not require trust level to invite to group
- PG::StringDataRightTruncation when linking posts
- Moderator actions and small actions shouldn’t prevent fully merged topics from closing
- Split link watched words from replace
- Return an empty result if response from Amazon is missing expected attributes
- Don’t store translated trust level names in anonymous cache
- Delete internal links when moderator deletes a post
- Translation issue on the bookmark modal
- Update non-Ember CLI ember-buffered-proxy
- MessageBus would stall after 20 minutes of inactivity
- TL4 users cannot unhide posts.
- Errors that’re triggering by too long excerpts
- Maintain notification order by priority
- TL2 promotion message from discobot didn’t use user locale
- Giphy oneboxing when the response is an image
- Support pausing GIFs for giphy/tenor oneboxes
- One-by-off error in topic show action
- Do not mark badge image uploads as secure
- Don’t update `allow_title` column of existing badges in seed.
- No error when double save post with poll
- We can’t use `?.` yet
- Automatically expire bad push channels
- Close hyperlink modal on ESC key
- Make poll options tabbable
- Add body class and remove jQuery usage in footer-nav component
- Use a better default for the low\_priority\_threshold setting.
- Use max\_category\_nesting when importing categories
- Make UI match server behavior for external-auth invites
- Hide a post’s pending flag count from TL4 users.
- Show inviter name in email’s from field
- Better focus support for modals
- Properly break overflowing long links in topic map
- Sort user bookmarks by reminder date
- Simplify post and topic deletion language
- Ignore max excerpt length for div excerpts too
- Do not call :post\_edited webhook twice when editing OP
- Slow mode dialog doesn’t remember Enabled Until value
- Allow add email to group if user can invite
- Update upload secure status when revising posts
- Disable lightboxing of animated images
- Review Queue Query parameters were not refreshing in Ember CLI builds
- Correctly publish messages unconditionally to admins
- Specificity and other fixes for WCAG colors
- Do not validate uploads when running `uploads:fix_missing_s3` task
- Backtracking re-render" assertion in future-date-input
- Do not include contact url & email in client site settings payload

---

<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: [January 27, 2022, 3:26pm UTC](https://meta.discourse.org/t/discourse-version-2-8/182818/11 "2022-01-27T15:26:48Z")

</div>

### UX Changes

- Fix composer popup placement
- Apply new quote-button spacing behavior to all mobile devices
- Fix layout issues with long category names
- Center emoji picker when limited space
- No border-radius on textarea
- Animate the movement of the quote button on selection change
- Flat-btn should also respond to Enter
- Use https protocol for markdown help link
- Adjust invite and related form spacing
- Change text of public\_topic action code in login required sites.
- Tweak emoji picker css
- Updated “accept invite” error page
- Prevent crawler view topic-list overflow
- Better invite accept form
- Post action spacing refactor & consistency
- Improved invite accept page layout
- Maximize the preview space in composer
- Update navigation-container scaling & wrapping
- Correctly handles escape on emoji picker
- Always show avatar on mobile topic lists
- Let mobile post controls scroll on overflow
- Show group card with animated loading state
- Prevent timeline overflow in extreme cases
- Extend user hyperlink in staff action logs
- Fix topic status icon size in mobile search results
- Only apply link formats on paste to selections that do not contain bbcode-like tags
- Make toggling to filtered replies mode less jumpy.
- Improve composer presence-display positioning
- Scroll row to top of container in select-kit
- Fix flair dropdown styling in user account
- Remove style that breaks composer on pm page
- Reduce composer jumpiness on android
- Prevent overflow on mobile timeline dates
- Improve tag info style
- Fix alignment in group navigation bar
- Only apply link formats on paste to selections that do not contain links
- Tweak mobile composer styling
- Tweak composer styling
- Add title attribute to reports cells
- Closes multi-select on selection when maximum=1
- Fix extra indent on lists when supporting mixed text direction
- Add additional tests for pasting a link on a selection
- When pasting a link use linkify rules
- Pasting links on a selection will apply a link format
- Timestamp should not hide handle of topic timeline in mobile.
- Fallback to regular title if screen-reader title is unavailable
- Make banner full-width
- Lower digest suppress period from a year to 6 months
- Fix fast edit save button color in dark schemes
- Move share topic warning to modal flash alert
- Add more search aliases for emojis.
- Launch full page search on second `Enter` hit
- Mobile topic list fixes follow-up to 0e371d4
- Fix share/notify modal styles
- Number steps in cloud installation README
- Layout fixes for admin permalinks page
- Remove tags chooser on PMs for non-staff users
- Fix several issues with topic progress refactor
- Fix bar-style category dropdown
- Better accommodate PM composer with tags
- Fix short post width on mobile
- Show quick search hint more consistently
- Remove animation in admin theme list
- Change login tabindex, follow-up to 6aa6275
- Change tabindex on login to skip email login link
- Apply tags during PM creation
- Make PresenceChannel changes more responsive
- Never show back button if less than current position
- Don’t show anchor icon on touch devices
- Re-order auth-related site settings for clarity
- Add special case for user search when in a topic
- Sometimes the footer would show up while refreshing a list route
- Adjust quick search input width
- Better topic search experience
- Show fewer toolbar icons in mobile composer
- Display full-page user search in a grid
- Better visibility for context search
- Add `Enter` hint to search dropdown
- Add missing translation
- Remove `aria-label` for buttons when `title` attribute exists.
- Improve route hierarchy in for user-invites
- Restore new messages button on mobile on PM route.
- Adds shortcuts for quote (q) and fast edit (e)
- Add keyboard shortcut for fast edits
- More consistent shortcut labels for macOS
- Fix alignment of composer when tags are disabled
- Revamp quick search
- Change layout of invites page to match other user pages
- Global notice no longer accepts HTML.
- Capitalize unsubscribed email locale
- Use consistent category badge font size in dropdowns
- Fix label in search when tagging is disabled
- PM inboxes being expanded incorrectly when viewing tags.
- Don’t display group messages link for group with no messages.
- Show scrollbar only when needed in dropdowns
- Adjust mobile spacing for full page search
- Ensure sticky elements don’t overflow header
- Better placement for bulk select actions button
- Move fast edit before sharing
- Adjust quote button position on mobile
- Add second Search button on mobile
- Share button margin consistency
- Fix profile button spacing
- Improve composer button bar on mobile
- Prevent invite form fields from resizing
- Fix date input icon display issues
- Minor fast edit tweaks
- Improves fast edit fallback handling
- Optionally show a “Summarize” button in topic timeline
- Fix tab groups editing layout issues on mobile
- Use standard font size for buttons at the end of /top page
- Fix mobile styling for admin color schemes
- Fix alignment for admin controls on mobile
- Fix date input display in iOS
- Minor layout tweaks to dropdowns
- Normalize sizing for inputs, buttons, dropdowns
- Adjust button spacing
- Limit select-kit tag chooser width
- Remove `:empty` on topic-statuses, clean up
- Comma separate public custom field lists
- Select-kit update alignment fixes
- Better login/signup styling for small desktop windows
- Use existing guardian method to check messageable group.
- Display correct replies count in embedded comments view.
- Improve blank page syndrome on the user messages page
- Add Styling step to wizard
- Update “get a room” composer message
- Do not show selected composer education messages on whisper post
- Add a title to the user filter input
- README logo SVG that supports dark mode
- Add margin to share input
- Add data-topic-id to featured topic items
- Fix mobile PM nav for regular users
- Show flair help text for private member visibility only
- Indicate capped history revisions only when they’re actually capped
- Update member visibility help text to include flair information
- Fixes sidebar settings border and active styles
- Missing translation for title attribute for PM tag route.
- Disable “Queue For Review” button if user can’t perform action.
- Append ellipsis to actions that have follow-up screen
- Ensure external login icons are visible on hover
- UX Fixes
- Adds hover title with full date to admin users columns
- History controls should use nav-pill styles
- Improve copy when a group member search returns no results
- Use share modal in dominating topic msg
- User bookmark page style adjustments
- Update styling of readonly values in signup form
- Remove theme-specific css, fix space
- Prioritize moderator bg color in PMs
- Improve quick search suggestions
- New text and style for dominating topic message
- Suspend forever time period messages
- Tweak groups page css
- Consistent share modal & popup, refactoring
- Stop imgur/google photo mobile onebox overflow
- Make sure there’s always a margin on badges page
- Improve share modal consistency
- Move the skip auth confirmation spinner inside the modal body.
- Add copy button to theme public key
- Improve the link to the preferences page on the new and unread tabs
- Add success state to copy button
- Fix z-index for new topic alert
- Translate the action type in watched words regex error
- Layout issues with topic last visit line.
- Remove background image after image has loaded
- Remove top border on small action after last visit line.
- Use topic list bulk select toggle for user messages list.
- Make emoji size consistent for oneboxed GH issues with short tags.
- Make poll content selectable
- Tweak spacing in the admin dashboard
- Adds ‘Processing Upload’ to the composer status area during upload optimization
- Horizontal scroll bar on top of user directory (when needed)
- Tweak the timestamp line in Twitter onebox
- Improve blockquote styling in emails
- Add notice when watched words are regexes
- Margin improvement for mobile alerts
- Make bulk select checkbox easier to target
- Fix mobile alert spacing
- Make it easier to hide the emoji on signup
- Hide email columns when `Hide Emails` is selected
- Improve lightbox gallery zoom/navigation
- Fix jump-to-post layout on mobile
- Fix mobile progress bar button alignment
- Daily automatic grouping for less than 34 days instead of 30
- Use button instead of anchor in filtered replies bar
- Remove reference to contact form in setting
- Improve user delete error message & return correct post count.
- Improvements for reordering categories
- Add a hint that tags can be included in tag groups
- Fix search topic titles wrapping
- Fix bulk-select icon and button alignment
- Group dropdown filter height should match
- More consistent mobile spacing
- Improve tag truncation in scrolled header
- Copy edit
- Revert some search dropdown styles
- More consistent setting/edit buttons
- Adjustments to tag groups layout
- Update search panel styles, consistency
- Use icons as bulleted list in invite modal
- Fix “last visit” line overlap in Chrome
- Fix PM header title alignment
- Fix the PM title icon alignment
- Align the bulk-select icon
- Improve style of GitHub PR body in emails
- Don’t show reply prompt if current topic is closed
- Change color of focus & hover on user menu tabs
- Show grandparent category badge in sticky header on desktop
- Alert screen readers when there is an issue saving a post
- Twitter onebox layout adjustments
- Unconditionally focus modals
- Make search result styles more consistent
- Add auto focus to hamburger and user menu dropdowns
- Align list-controls & topic-title top margins
- Consistent padding on mobile/desktop `.wrap`
- Adjust list and onebox margins
- Change categories page dropdown to a wrench
- Improve navigation on topic lists for screen readers
- Provide a region for various topic actions
- Users can postpone discobot’s tutorial.
- Search result link title color change
- Make discobot flag tutorial copy clearer
- Add ARIA region role to posts
- Show Update button instead of Enable button when slow mode is already enabled
- Improve positioning of controls in lightboxes
- Fix theme upload width, remove class clash, prettier

### Security Changes

- Do not sign in unapproved users
- Advanced group search did not respect visiblity of groups.
- Hide user’s bio if profile is restricted
- Only show user suggestions with regular post
- Disable MessageBus::Diagnostics.
- Remove ember-cli specific response from application routes
- Only show tags to users with permission
- Strip unrendered unicode bidirectional chars in code blocks
- Ensure \_forum\_session cookies cannot be reused between sites
- Disallow caching of MIME/Content-Type errors
- Improve validation of SNS subscription confirm
- Escape watched word in error message
- Escape cat name
- User’s read state for topic is leaked to unauthorized clients.
- Sanitize d-popover attributes
- Destroy `EmailToken` when `EmailChangeRequest` is destroyed
- Don’t leak user of previous whisper post when deleting a topic.
- Do not reveal post whisperer in personal messages.
- Validate period param for top topic routes
- Sanitize YouTube Onebox data
- Onebox canonical links bypassing FinalDestination checks
- Ensures timeouts are correctly used on connect
- XSS in bookmarks list
- Do not allow unauthorized access to category edit UI

### Performance

- Turn common test prefixes into contexts in topics\_controller\_spec
- Make tests faster by prefabricating more things
- Prefabricate more parts of users\_controller\_spec
- Speed up the tests by pre-fabricating more things
- Prefabricate posters in topics\_controller\_spec
- Prefabricate more of topics\_controller\_spec.rb
- Redis snapshotting during tests
- Speed up tests
- Add index on email\_tokens.token\_hash
- Shave off some test-suite time
- Migrate normalized\_emails in a migrations
- Update widget hooks to avoid global scroll-blocking events
- Update scrolling mixin implementation
- Disable ember touchstart listener
- Use passive event listeners for touchstart, touchmove
- Set --header-offset property only when changed
- Updating first unread PM for user not respecting limits.
- Use more efficient text-direction check in select-kit init
- Reduce records queried in `UserStat.update_first_unread_pm`.
- Move `preload` hints to the `<head>`
- Improve JS app boot speed by optimizing `customResolve()`
- Update like count in visible posts without an extra GET per like
- Use different column for better query plan
- There was a large performance regression in Logster
- Optimize search in private messages query
- Reduce work when external sources are allowed in `InlineUploads`
- Use a subquery when excluding a tag from topic query.
- Avoid running ignored users DB query for anon users.
- Revert all inboxes from messages route.
- Improve database query perf when loading topics for a category.
- Fix N+1 queries in SiteSerialier.
- Improve query performance all inbox private messages. (#14304)"
- Improve query performance all inbox private messages.
- Avoid running query unnecessarily when updating bookmark.
- Avoid additional database query when viewing own user.
- Improve query perf when fetching unread for PM topic tracking state.
- Make `TopicViewSerializer#requested_group_name` more efficient.
- Remove redundant post\_timings\_summary index
- Generates dates tooltip on demand
- Reduces rendering time of local-dates
- Add scheduled job to delete old stylesheet cache rows
- Improve topic\_user.liked update performance when moving posts
- Improve post\_timing performance when moving posts
- Optimise backfilling of topic\_id
- Cache categories in Site model take 3.
- Remove n+1 in user directory
- Update post uploads secure status in a job
- Eager load Theme associations in Stylesheet Manager.
- Cache categories in Site model take 2.
- Cache categories in Site model.
- Remove extra PG query.
- Perform user filtering in SQL
- Avoid running a pointless PG query when theme has no variables.
- Animate request animation frame
- Preload client settings json while booting app.
- Switch ActiveRecord PG connection active check to use empty query.
- Preload `Post#image_upload` in `TopicView`.
- Defer setting of distributed cache in category.
- Defer setting of distributed cache in more spots.
- Preload settings, groups and badge icons in SvgSprite.
- Defer setting of distributed cache in performance critical paths.
- Remove N+1 query in `SiteSerializer#user_color_schemes`.
- Warm up caches in `SiteSerializer` while preloading app.
- Cache categories query in `Stylesheet::Manager.color_scheme_digest`.
- Memoize core svgs in memory to avoid expensive XML parsing.
- Precompile child theme stylesheets.

### Accessibility

- Tag should be “role” not “aria-role”
- Do not use duplicate IDs
- Focus last viewed topic in topic lists
- Move focus to highlighted post when visiting a topic
- Remove dupe label on signup confirm field
- Set modal widths with EMs; improves scaling
- Add prefers reduced motion"
- Don’t output aria label identical to title
- Use shorter label for hamburger menu
- Fix several minor issues
- Add labels to some search fields, category notification selector
- Add more descriptive labels for some dropdowns
- Use listbox role for dropdowns
- Do not default to label for aria-label
- Improve create account modal for screen readers
- Add “skip to main content” link
- Add labels where needed
- Adjust heading rules on topic lists
- Don’t mark multiple form labels as applying to the same element
- Improve topic details toggle button label
- Add aria-label to modal close button
- Include aria-label for avatar images in widgets
- Add heading role for post titles.
- Fix post control and user-menu focus styles

---

<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: [January 27, 2022, 3:27pm UTC](https://meta.discourse.org/t/discourse-version-2-8/182818/12 "2022-01-27T15:27:00Z")

</div>


