# Discourse Version 1.9

**URL:** https://meta.discourse.org/t/discourse-version-1-9/61289
**Category:** Announcements
**Tags:** release-notes
**Created:** [April 19, 2017, 11:03pm UTC](https://meta.discourse.org/t/discourse-version-1-9/61289 "2017-04-19T23:03:53Z")
**Posts on this page:** 7
**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 19, 2017, 11:03pm UTC](https://meta.discourse.org/t/discourse-version-1-9/61289/1 "2017-04-19T23:03:53Z")

</div>

### Focus

- ✅ Update Emoji sets to latest, plus [Unicode 9.0 additions](http://emojipedia.org/unicode-9.0/) and skin tone support

- ✅ Watched words feature for blocking, censoring, or requiring approval for certain words appearing in posts

- ✅ Add required user fields to invite accept form

- ✅ Finally integrate CommonMark 🎉 plus table support

- ✅ new Emoji selector derived from Twitter’s emoji picker

- ✅ Implement mini-onebox for internal and possibly whitelisted domain links (replace with title)

- ✅ Offer actions based on word list hits: block posting, require approval, auto-flag, censor, etc.

- ✅ Make it [easier to message groups](https://meta.discourse.org/t/make-it-easier-to-send-a-message-to-groups/65065)

- ✅ Make it so [group owners can invite people to groups](https://meta.discourse.org/t/group-owner-cannot-send-an-invite-to-a-group/60617/5)

- ✅ Badge for visiting 10 days, 100 days, and 365 days consecutively (only awarded one time each)

- ✅ Specify email address in PM to field

- ✅ Support for lang specific defaults for site settings

- ✅ Add support for “disallow all PMs to me” user setting, also self-remove from PMs

- ✅ Support multiple emails per user account (courtesy @LeoMcA)

- ✅ Redesigned, improved flag handling

- ✅ User selectable home page (latest/categories) via @sam and community

- ✅[Basic search stats](https://meta.discourse.org/t/effectively-logging-search-queries/63838) in the admin dashboard

- ✅ Live indicators of who is currently replying to a topic, both in the editor and at the bottom of the topic (courtesy @david)

- ✅ Select all posts below a certain point when selecting posts, also select all children of a certain post

### Codename

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

### Start date

June 1, 2017

### Planned release date

Jan 3, 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: [January 3, 2018, 10:10pm UTC](https://meta.discourse.org/t/discourse-version-1-9/61289/2 "2018-01-03T22:10:50Z")

</div>

## NEW FEATURES

- Allow Forums to disable the Backups feature
- Warn if attempting to mention a group with too many members
- Trigger user webhook when a user logs in/out.
- Search log term details page (#5445)
- Serbian translations (#5443)
- Converting code tags to Markdown while pasting
- Keep supported HTML tags in HTML to Markdown conversion
- Upload images and fonts in themes via hijack
- HTML to Markdown conversion using native JavaScript ES6 classes (#5425)
- Full rebake of all old posts
- Store twitter supplied email for auditing
- Added ‘select +below’ and ‘select +all replies’ options to selecting posts
- Optional default off global per ip rate limiter
- Add global rate limiter for admin api 60 per minute
- Site setting enable\_mentions to turn on/off mentions
- New site setting show\_inactive\_accounts
- Catalan Translations (#5404)
- Live reply indicators at the bottom of topic
- Convert plain text emails to markdown
- Replace SimpleRSS with Ruby RSS module (#5311)
- Show a button to Staff for “Moderation History” on posts/topics
- Convert HTML to Markdown while pasting in composer
- Paste plain text table as Markdown table
- Adds poll\_allow\_staff\_to\_create
- Introduces minimum trust level for polls (#5391)
- Link to meta release notes tag in version release email text
- Log clicks on full page search
- Support search click through tracking for user, category and tags
- Omit images from og and twitter description tags
- Replace GUID in image name uploaded from iOS (#5370)
- Add service worker registration method to plugin API
- Avatar proxy happens in background
- Uploads are processed a faster
- Update rack-mini-profiler to latest
- Upgrade message bus
- User card shows staff if a user is staged and lets them check the email address
- `group_removes_trust_level` setting
- Remove a featured link by editing the topic
- User directory returns staged users during search
- Show topics viewed on user summary
- Category setting for mailinglist mirror
- Track and show time read recently
- Show read time in last 60 days
- Allow plugins to dynamically add seed fixture paths
- Allow plugins to easily detect if running in Rack
- Allow plugins to easily add defaults to GlobalSetting
- Option to export multiple categories using export\_category method
- Escape HTML when cooking plaintext emails
- Search logs page (#5313)
- Support an end date for user silencing
- Add overflow-y auto to Markdown tables
- Update rails multisite so we error out if RAILS\_DB is invalid
- Accept incoming email with reply\_key mismatch when original email was forwarded
- Do not send notification emails to users who are included in the To and CC header of an incoming email
- Replace admin flags modal by a select-box
- Allow the user to select a custom home page (#5268)
- Support for multi-combo-box
- New API to search for a user by email
- Update rails multisite
- Show read time on user cards
- Retain the latest 30 days of WebHookEvent records by default.
- Add a Dismiss link to user menu that dismisses all notifications
- Allow Unicorn logs to be JSON formatted.
- Allow multiple html builders to be registered via plugins
- Custom setting for large square site icon
- Rake task to export and import category structure
- Remove obsolete settings ga\_tracking\_code and ga\_domain\_name. Use ga\_universal\_tracking\_code and ga\_universal\_domain\_name instead.
- Support filtering of groups page by category if in url
- Allow widgets to call `_super()` when reopened
- New API to create a custom formatter for displaying usernames
- Use ACE for badge queries (#5269)
- Add longer suspension defaults
- Group handling
- Discourse-prometheus is an official plugin
- Category and topic importer can support data from different sources using IMPORT\_SOURCE
- Raise an event when a sidekiq job runs
- Add event for scheduled\_job\_ran
- Add events when web and sidekiq forks start
- Site Setting to determine whether flags defaults to topics
- Allow users to disable new PMs.
- Allow user to leave a PM.
- Allow registration of detailed request logger
- Cache https redirects per hostname
- Add :before\_post\_process\_cooked hook
- Allow specifying s3 config via globals
- The hide\_email\_address\_taken setting works with the change email address form in user preferences
- Support regex in rake post:remap (#5201)
- Forgot\_password\_strict setting also prevents reporting that an email address is taken during signup
- Rake tasks for uploading assets to S3
- Reduce API key permission to TL0
- Flexible crawler detection
- Support regular expressions for watched words
- Use new WebShare API on supported platforms
- Add ability to claim topics on flagged topics page
- Site Setting to hide suspension reason on the public profile
- View flags grouped by topic
- Automatically handle flags and posts that have been waiting in a queue for a long time. Flags will be deferred. Posts waiting for approval will be rejected. Control how old the records need to be with the auto\_handle\_queued\_age site setting.
- Improves keyboard handling of select-box
- New badges when visiting the forum for 10, 100 and 365 consecutive days
- Uses select-box for topic-notifications-button component
- Add placeholders to broken and large image files (#5113)
- Allowed\_iframes site setting for allowing iframes
- Use Glimmer compiler for widget templates
- Allow API to mark accounts as approved on creation
- Display subcategories when filtering on parent name
- Set purge\_unactivated\_users\_grace\_period\_days to 0 to disable purging unactivated users
- Add Thai language
- Show tags in search results
- Rake db:stats
- Improves select-box to support category selection on new topic
- Import Github profile picture
- Unlisted _only_ means not listed in topic lists
- Image uploads now have short urls
- Allows to disable automaticPositioning of emoji-picker (#5074)
- Server side support for upload:// markdown
- Bbpress importer can import private messages
- Allow ctrl+shift+s to open search
- Use `a` when search result is focused to add to composer
- Up/down arrow will highlight search result
- If full search returns no results, show google search form
- Add full editing access to queued posts (#5047)
- Add Latvian language
- Add custom open graph tag for ignoring canonical url
- Initial implementation of an ember native select
- Add RSS feed for badge pages
- Force user to enter reason when requesting for group membership.
- CTRL+/ to trigger search even from composer
- Option to enable inline oneboxes for all domains
- Site settings defaults per locale
- Search posts by filetype
- Add group settngs to allow users to leave a group freely.
- Support inline bbcode blocks eg: `[quote]`test`[/quote]`
- Plugins can overwrite and add support for new icons
- Watched Words: when posts contain words, do one of flag, require approval, censor, or block
- Use Markdown for image pasted in as opposed to IMG tags
- Allow bisect and rspec seed
- New ‘strip image metadata’ site setting
- Remove the timecop gem
- Whitelists for inline oneboxing
- Send rejection email for unrecognized errors
- Inline (Mini) Oneboxing
- Phase 1 of supporting multiple email addresses
- Introduces new emoji-picker
- Rake plugin:install\_all\_official
- Libv8 upgraded to version 5.7
- Change markdown engine to markdown it
- Log Search Queries
- Cross-domain tracking for Google universal analytics
- Allow tutorials to declare prerequisite before it starts.
- Support image dimensions via Markdown image
- New site setting to limit message recipients
- Emoji generation now uses emoji-db
- Add support for group visibility level
- Optimize invite js code
- Resending invite should include original custom message
- Remove all invites
- Add default Referrer Policy header
- Site setting for Markdown typographer
- Twitter is the new default emoji set
- Use current table styles for markdown-it tables
- Add table support
- Used strict sanitizer by default
- Post\_process\_cooked event
- New rake task to delete all likes
- Consistent bbcode inline and block rulers
- CommonMark support
- Setting to only use the key when finding the related post of…
- Allow truncated group posts to be expanded
- Expand truncated posts in the user stream
- Setting to only use the key when finding the related post of an email reply
- Offer help on forgot password modal
- Add a user’s primary group class name to the body tag
- Advanced search supports logical AND of multiple tags
- Whitelist hosts for internal crawling
- New ‘allow\_staff\_to\_upload\_any\_file\_in\_pm’ site setting
- Add required user fields to invite accept form
- Pull onebox images
- New setting to prioritize open topics in search
- Add DiscourseEvent trigger when a user logs in.

---

<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 3, 2018, 10:12pm UTC](https://meta.discourse.org/t/discourse-version-1-9/61289/3 "2018-01-03T22:12:00Z")

</div>

## BUG FIXES

- Bounced email can contain multiple status codes
- Handle missing user records
- Missing post/topic created web hooks due to race condition.
- Wildcard webhooks could send duplicated events.
- Select single choice as default when building a poll
- Don’t display the `@mention` message if disabled
- Canceling upload on mobile did not work
- Return regular notification level for categories when not set by user
- Respect ‘topic page title includes category’ client side
- Use different variable name for referer record
- Validation of website failed in base importer
- Check for existing translation keys before replacing blocked with silenced
- Add migration to replace ‘blocked\_by\_staff’ with ‘silenced\_by\_staff’
- Catch all server-side error when uploading a file
- Ignore if the default localization node is not an object (#5439)
- `[constructor]` bbcode would cause markdown crash
- Don’t preload json on static routes
- Only attempt old rebakes a maximum of 3 times
- Allow upto three url redirects in onebox (#5457)
- Don’t show moderation history option to TL4
- SCSS variable regex wasn’t working in JS
- Do not apply i18n if already done
- IE not supporting regex negative lookbehind
- Verify presence of ‘sso url’ before enabling ‘enable sso’
- Whitelist oneboxed iframes
- Don’t set properties on destroyed components
- Pluralization rules for Serbian language (#5453)
- Don’t start discobot poll tutorial if polls are disabled.
- Google oauth flow should automatically update the google account used for login when appropriate
- Invalid logo in discobot’s certificate when `SiteSetting.logo_small_url` is blank.
- Error when an invalid date is passed to certificate generator.
- Load the route format before discourse
- `RouteFormat` is a better class name than `RouteFormats`
- ProcessPost job failed for posts that have no user
- Regex should behave the same in Ruby and Postgres
- Unicode titles missing when visiting topic from topic list
- Only staff highlight main post, not embedded replies
- Keyboard shortcut allowed you to open composer on closed topics
- Links inside quotes not opening in new tab
- When leaving PM tab revert to user scoped search
- Create topic keyboard shortcut not checking permissions
- Stop forking regular backup jobs
- Don’t disable details when below truncate limit
- Refreshing Gravatar didn’t work
- External links in whisper ended up in a white page
- Clicking a link in a onebox wasn’t properly extracting the post\_id
- Load tracked/watched/muted categories on screen loading
- Prevent loading of invalid locales from plugins
- Data loss on update of single user\_field.
- Broken spec
- ESlint
- Details tags broke excerpts
- Validates ‘ThemeField’ name when used in a SCSS variable
- Correct issue with search omitting words with multiple dots
- `moderators` group wasn’t being updated to be messagable by everyone.
- Properly omit inactive and silenced users from directory
- Publish presence to allowed groups as well
- Load the appropriate file for AlternativeReplyByEmailAddressesValidator
- IE syntax error in regular expression
- Add ‘SiteSetting.port’ to ‘Onebox.allowed\_ports’ in development mode
- Prevents global input width to impact input inside emoji picker filter
- Don’t count users as replying long after they are done typing
- Use hijack for emoji uploads
- IE compatability issue in clipboard files array
- Reset scroll position when switching tab in edit category modal
- Wasn’t able to recover a post
- Disable New Topic button if filtered to a tag and a category that you don’t have permission to post in
- Inline head tag html pasting
- Prevent 💥 when selecting replies to posts quoting themselves
- A topic should be visited when you’ve read everything and there’s deleted posts at the end
- Incorrect pending\_users\_reminder user count
- Do not onebox flagged post link
- Do not display used categories as selectable in categories notifications preferences
- Make sure scrollbar don’t appear
- Not permitted theme params when importing theme
- Constant lookup error when exporting theme
- Set a default color scheme when creating a new one
- `User#user_avatar` may be nil.
- Save whisper drafts (#5417)
- Post.reply\_ids should also handle quotes
- Wasn’t redirected to group inbox
- Ensure we’re always changing 1 post ownership
- Rake task for updating posts received by email should not crash
- Empty uploads and blank filenames caused errors during validation
- Links with query params to external sites fail to load if ga universal auto link domains is used
- Make sure we don’t show scrollbars on toolbar-popup-menu
- Replace invitee\_name to inviter\_name in translation overrides
- Make sure new badges have a default type
- Correctly count participants when more than 24
- Do not send mailing list emails to unapproved users
- Ensure staged accounts are always inactive
- Path whitelist for embedded comments didn’t work with non-ASCII chars
- Moderation History wasn’t working from timeline admin button
- Text indent on twitter oneboxes
- Save registration\_ip\_address for staged users logging in via social auth
- Wasn’t able to use the same username when taking over a staged account
- View was getting rendered twice for rate limiting error
- Translation for site setting enable\_rich\_text\_paste
- Prevent ‘rack.input’ missing error.
- Replace curly quotes to regular quotes in search terms
- `Topic#featured_link` may contain more than a URL.
- Strip webhook payload\_url
- ‘redirect\_to :back’ is deprecated
- Remove other whitespaces except the line intents
- Keep all the indenting in the text
- Pasted text removing if server unable to parse HTML to Markdown
- Rendering %lt;/div noscript in header
- Remove mentions filters from user and groups
- Choices input layout bug in IE11
- Rescue if default\_current\_user\_provider raised an error
- Don’t show the email from the suspension on the user profile
- Only show the full suspension reason on the admin side
- Current\_user should be called only if controller have that method
- New topic composer layout in iOS10
- Image pasted twice when it copied from browser
- Topic timer offset applied two times
- Spam posts get blocked, not silenced
- Load balanced servers do not share monotonic clock
- Handle CORS in hijacked requests
- Composer preview-area plugin layout
- Logging in after an anon ❤ does not count the ❤
- Don’t show trust level if the API didn’t return it
- Desktop notifications weren’t formatting the username
- Adjusted the composer preview to avoid odd scroll issue
- Script for pulling translations ignored exit code
- Update translations job was aborting at discourse-presence
- Correctly print html entity when used in a locale for none
- IE compatability issue in clipboard data types array
- Makes sur we have polls before validating
- Global event variable is not compatible with all browsers
- Drive spreadsheet table not converting to Markdown table
- Broken variable
- Staff should always be allowed to create polls if they are enabled
- Don’t create featured link if title includes more than a url
- Removing horizontal scrollbar in category modal
- Disappearing tag input border on hi-res devices/when scaling
- Mobile composer layout for PMs
- Poll new\_post\_manager spec
- Resolve from URL when using /new-topic route
- Regression around rate limiter
- Correct use of invitee vs inviter in email templates
- `Topic#featured_link_root_domain` extracts URL before parsing.
- Don’t include `null` class when rendering the pinned dropdown
- Reply to tab was not using the username formatter
- Skip pasting files if plain text available in clipboard
- Export admin reports to csv would have 0 rows in the csv file
- Allows select-kit to search by null value
- Composer not properly centered in IE11
- Flexbox composer issue in IE11, bad flex-shrink default
- Translation for “destroy\_reasons.same\_ip\_address”
- Positining of search spinner in tablet-sized viewports
- Do not give any element focus when creating topic
- Password required flag should be cleared whenever clearing the raw password (#5384)
- Extraneous mobile CSS, flagged badge color in dropdown
- Save drafts of new topics with titles but no body
- The user summary wasn’t using the username formatter
- Infinite loop when poll step is zero (#5380)
- Increasing overridden label contrast in settings
- Unable to remove existing user title (#5386)
- Password required flag should be cleared whenever clearing the raw password
- Don’t run job if topic timer has already been deleted.
- Re-enable invalid interpolation keys check and allow default key…
- Increased composer width to match preview, border width fix (#5379)
- Editor and preview does not sync when scrolled to the bottom.
- Don’t fail silently when updating a record.
- Use parseable date format
- Future date input selector was not respecting timezone
- Link from flagged topics to user was broken
- Error if queued post not found while updating
- Can’t load `service-worker.js` in production.
- Handle more cases where HTTP status is not correct
- Displaying wrong avatar and letter avatar
- More resilient allowInitiatlValueMutation implementation
- Pick date and time was not reseting state
- Removes auto sizing and touchstart support for now
- Reflects discourse icons naming scheme s/d-icon-_/d-_"
- Regression preventing to set number of hours before closing
- Makes allowInitialValueMutation more restrictive
- Invite-list expects initial value mutation
- Avoids test failing at some times of the day
- Various issues when editing category permissions
- Missing likes count on top topics in user summary
- Youtube playlist videos were not functioning properly in fullscreen
- We also need a base key for `admin_js`
- Should skip the loop if the image src is blank
- Re-enable invalid interpolation keys check and allow default keys to be left out of translation overrides.
- Quote dropped when replying as new topic
- Various sizing issues on select-kit
- Admin strings in plugins should fallback to english when untranslated
- Incoming and outgoing emails got lost when post was moved
- Missing i18n key
- Invited users were not granted trust level based on their group
- Updating topic stats failed silently for invalid topics
- Do not move small post actions
- Ensure discobot always has a primary email
- Don’t store state of composer’s preview in mobile view
- Tweak alignment of select-kit in navigation bar
- Make uploads safe for block that can run later
- Use current\_user.id in onebox instead of param
- Avoid touch on select-kit causing instant closing of it
- Don’t convert an object using EachProxy to an array
- Adds support for name changes tracking
- Cast integer on truthy value and not only true
- Makes sure keyboard is disabled on mobile
- Simplify keyboard handling
- Future-date-input-row lost datetimes
- Don’t enqueue onceoff job in migration.
- Allow login required sites access to attachements
- Tab should select and focus next tabindex
- Times showing as `\< 1m instead of blank
- Make sure the element exists before calling `off`
- Force focus input only on expand
- Some badge routes were still working even with badges disabled
- Makes typing indicator visible when possible
- Close on click outside
- Category descriptions should display html
- Fix bugs with keyboard events
- Reflects discourse icons naming scheme s/d-icon-_/d-_
- DisplayCategoryDescription was not working correctly
- Delete upload records when sha is null
- Be more lenient when deleting a custom emoji
- Cap posts\_read\_count in user\_stats to 50 posts per topic\_entered
- Error applying quotes with blank lines in front
- Support for long suspension emails
- Presence bug (#5329)
- New activity was not triggering cleanup
- Stop counting PMs, deleted topics and whispers in directory and user stats
- Incorrect group path.
- Sometimes quote button did nothing on Firefox
- More accurate counting of posts read. Skipping to the end of a topic does not count all posts as read in user stats.
- Missing word boundaries when non-regexp
- Allow regular expressions to specify boundaries
- FinalDestination’s small\_get method wasn’t using proper request headers
- Try a GET for error code 406
- Avoids view jumping on mobile
- `severity_name` was being logged incorrectly.
- Support client locales defined in plugins
- If there is an invalid locale in the site setting, default to en
- Properly handle too large & broken images in posts
- Only save custom fields if they actually change
- This class is no longer required and leaves the state as `hidden`
- Don’t load other locales in test mode
- Moderators couldn’t delete spammers via flag modal
- Duplicate a tag if image url is same to href
- Notification dropdown was not visible for group archive
- Disable `rails_multisite` formatter if lograge is enabled.
- Current user serializer consistently returns {} for custom\_fields
- Expansion of user posts was broken
- Don’t crop iPhone X screenshots
- Counting invites didn’t work
- Always clean up uploads with no sha1
- Add error for suspended users attempting to login via sso
- Import/export theme should work with uploads
- Child theme component vars not resolved in parent
- Mutate value if numeric in enums
- Changing misattributed Mahatma Gandhi’s quote
- Don’t delete uploads referenced in drafts or queued posts when using the short\_url
- Stop stripping “undefined” from fullpage search
- Error setting tombstone bucket when set to old version
- Missing short image resolution on queued posts
- Redirect /admin/users to Admin Users List
- Ignore\_by\_title should match case-insensitive
- Removes clip causing UI glitches on safari
- Makes fixed positioning more resilient
- Makes sure fixed positioning is correctly applied and removed
- Don’t show Create Topic button on full search page to users who can’t create topics
- Missing yml file
- Be consistent with how first posts in topics are counted. do like DirectoryItem.refresh\_period :all
- Sometimes viewing a user’s action logs would reset to view all
- Topic counts after converting topic to/from public and private
- CheckUsername, delete and dismissBanner not working with users with .
- Use `offset` to calculate eyeline, which is safer than `position`
- SSO email match should be case insensitive
- Don’t skip validations when updating user’s email.
- JSON custom fields incorrectly being converted to an array.
- Lint error
- Change password form validation should instruct admins to use min password length for admin accounts
- Validates attachments against current authorized extensions
- Topic links onebox differently if end in /
- Undefined method before unicorn boots.
- Remove scope in SW register, avoid duplicated SWs
- Do not generate multiple detail blocks when the selected input (#5290)
- Allow group members to freely exit group option incorrectly disabled.
- Brittle, order dependent spec
- All groups were redirecting to posts
- Unable to invite groups that are not public visible into pms.
- Dashboard posts report was including posts in daily data, but not in totals
- Post counts in user stats when changing post owner
- Only count regular posts in user stats when deleting
- Don’t count whispers in user stats post\_count
- When a topic is deleted, update the post count stats of all user who replied
- CSS class names changed on group posts
- Normalizer wasn’t working with attributes without values
- Clicking on button label didn’t close popup
- Better match when searching for groups.
- Can’t edit membership request template on group page.
- Subcategory filters were not respecting the current category
- Rescue error when importing category structure
- Improves icon alignment
- Coalesce properly logos for the mobile manifest
- Update mobile logo resolution
- Support /my routes with subfolders
- Unused variable is tripping up linter
- Badge description links broken on subfolder
- Deleting staged user of rejected email shouldn’t delete incoming email
- Offline controller regression
- Html links in text part of summary email
- Link to about page on subfolder
- Unsubscribe links in summary emails were missing subfolder
- In case that `category` is `nil` it should not throw an error
- Couldn’t disagree with “notify moderator” flags
- Makes sure the combo-box selects the first value
- Badge selector showing up for anon
- Broken link in new user of the month post.
- Don’t hardcode the path into translations.
- Ensure we have no dangling db connections on threads
- Grant admin on subfolder
- Set minimum values for topic title length settings
- ‘config.serve\_static\_files’ was renamed to ‘config.public\_file\_server.enabled’ in Rails 5.1
- `Topic#title` were being parameterized when encoded slug is
- Bypass all site setting work for shadowed method
- Couldn’t agree with a custom flag type
- `post:rebake_match` rake task
- In readonly mode don’t double count pages
- Undefined variable in `post:rebake_match`
- Rendering of block style tags in search results
- Search couldn’t find tags from before 2017-08-25
- Read time was not displaying the unit
- Don’t offer the “Something Else” flag reason to TL0 users since they don’t have permission to send private messages
- Removed a line by accident, broke tests
- Compare imported ids as string instead of converting to integer, same as LookupContainer
- Show the deleted icon if the quote expands a deleted topic
- Groups were not being displayed in the map of private messages
- You needed to click twice to expand a hidden post
- DistributedCache without namespace mode wasn’t working.
- Defer wasn’t working on all flag types
- Don’t rotate session in reaodnly mode.
- Postprocessing ignored cook method
- Use a distributed cache to store failover state.
- Post Action Type 6 is not a notify type
- Custom flags didn’t work when flagging a topic
- You can’t notify a user on a flag topic
- Topic link extraction shouldn’t fail when the parsed URL has no path
- Fancy topic title must fit into column
- `Topic#fancy_title` should not write in readonly mode.
- Images aren’t lightboxed anymore (partially reverts 646c6eb7cd781b47663d104de4f37cdd99b465bf)
- Render secure category topics in RSS if the user can view the topics
- Prevent infinite ‘pull\_hotlinked\_images’ jobs when a oneboxed image has a different scheme
- Use computed properties instead of manual HTML for buttons
- Couldn’t boot Discourse app with a readonly postgres.
- Set PG `connect_timeout` to 5 seconds.
- Headings must begin with `heading--` to avoid some griefing
- Restrict classes allowed for img tag in Markdown
- Don’t show the up arrow to jump to posts in different topics
- TL0 users’ messages to moderators were not being posted when flagging private messages
- With\_email method won’t support hash param (#5236)
- Don’t flag watched words when rebaking posts
- SSO avatar downloads were broken
- Delete staged users when the incoming email is rejected
- Exception has to be wrapped in the connection as well.
- Ensure that we revert back to default connection after running jobs.
- We can not namespace eval automatically, it is impossible
- Don’t attempt to schedule if there is no next run
- Sort icons were not showing up
- Sidekiq hot reloading wasn’t working in dev.
- Clicking on quote button was tricky
- Invited staged users would sometimes not get notified of replies
- If you can manage a post you can wiki it
- Moderators couldn’t see flagged topics list
- Deleting category background images sometimes has no effect
- User fields in invite signups were broken
- `deletePost` action was incorrect called `delete`
- Redirect to top wasn’t working
- Properly encode string literals in hbs compiler
- Adding a public topic timer deletes a private topic timer.
- `d-header` in common is `z-index: 1001`
- Header primary color was too dark in dark mode
- Respect email domain whitelist/blacklist when creating staged users
- Don’t create staged users when incoming email is rejected
- Don’t send subscription mail to new users
- Username autocomplete in assign modal wasn’t working
- Not serving non brotli cdns from cdn\_url
- Better flagging CSS on mobile
- Frequent posters wasn’t displaying the correct information
- Exporting admin dashboard reports were broken
- More fixes for `Group#mentionable` and `Group#messageable` feature.
- `Group#mentionable` and `Group#messageable` not fully working.
- Don’t raise error when trying to download avatar from URL.
- Don’t raise an error when post has been destroyed.
- Only allow intergers for page params.
- Missing attribute.
- Js error when logging in using another Discourse site as sso provider
- Use different method name for topic rake task
- Remove unused mixin
- Compatibility between Client and Server routing.
- Okay, try going back to the old way. Too many exceptions.
- Wasn’t able to save watched/tracked/muted categories/tags
- Update message bus
- Update group.has\_messages field weekly
- Hack our title retriever so that it parses YouTube URLs
- Add user option/profile fields that were not permitted
- [Https://meta.discourse.org/t/bulk-deletion-of-topics-not-logged/50407?u=osama](https://meta.discourse.org/t/bulk-deletion-of-topics-not-logged/50407)
- Display json response when `Discourse::InvalidAccess` is raised for
- Correctly raise errors when downloads fail
- Missing template error when rendering `topics#show` error message.
- Use exact patht to ensure we always redirect with the right format.
- Test failures
- Don’t count private content in New User of the Month
- Wasn’t able to change default theme
- Show error message when keys are missing in email template
- Log email template changes in the Staff Log
- Don’t raise an error if reading from URL timeout.
- Wasn’t allowed to set a user’s title anymore
- Wasn’t able to update user options anymore
- Support for menu glyphs that are optional
- Missing “no activity” message.
- Onebox fails on encoded URL.
- Do not include non-human users on suspected users list.
- Do not escape already escaped chars in URL
- Typo on flags page
- Broken word wrapping on flags page
- Don’t include flags on non-human users
- Make sure `Post` records have access to `Site`
- Linting and broken test
- `Object.assign` is not fully supported
- Fix ActiveRecord API that was removed in Rails 5.1.
- Incorrect notification state being published.
- Handle URL encoded email addresses
- Do not display uncategorized as a possible parent category
- Notify about whispered reply
- Composing a message to a group via URL didn’t work
- Regression preventing display of custom emojis in the picker
- More CSS regressions with notifications in non-english
- Don’t try to send a rejection message when the sender was not detected
- Better error handling for incoming emails
- Broken notifications in non-english locales
- Don’t leak whisper count in user card
- Don’t mute topics when dismissing unread
- Makes sure select-box is under header and over avatar on mobile
- Use default locale for edit reason when owner of post gets changed
- Use default locale for moderator post when posts are moved
- Do not create new email token if there already exists a confirmed one
- Link to sub-categories in group activity feed wasn’t working
- Makes state of select-box more resilient to model changes
- Don’t include last\_wiki\_edit when there’s no revision
- Only show participants the user can see
- Small fixes to enable better testing of components
- Better alignments of categories/tags in .topic-category
- Reason paragraph styling broken on mobile
- Add missing option to apache bench.
- Prevents click on select-box to close timeline-container on mobile
- Don’t write `wget` response to file.
- Send the queued posts reminder as a message to moderators instead of an email to the contact\_email
- Handle incoming emails without email address in From header (#5177)
- No notification was being sent when a post is hidden by community flags
- Users should be able to activate their emails even if unapproved
- Don’t activate un-confirmed email on omniauth authentication (#5176)
- Don’t append `.no-results` if there’s nothing to display
- Use a distrbuted cache for site locale.
- Move check to right serializer.
- Output css for category backgrounds only if uploads have a url
- Icon showing as null
- Pinned-button sometimes not shown when unpinned is null
- Memoization in PostAnalyzer.raw\_mentions (#5172)
- Display email validation error messages
- Missing color on queued posts dropdown
- Makes sure the select-box doesn’t go over header
- Cross browser issues on safari and edge
- Queued posts had a red background
- Bookmark icon was not coloured on mobile
- Duplicate class name
- Display localised title when using notifications-button
- Positioning issues with notifications-button
- Keeps as much as possible the same api for select-box components
- Categories admin menu was missing
- Select-box width was incorrect on mobile
- Adds correct spacing between footer buttons
- Css regression on category-dropdown-button
- Only enable the controller when the plugin is enabled
- Presence was broken with a null array
- Makes sure we only autocomplete valid emoji tones
- Redirect loop for new users visiting /new-topic using full screen login
- Topic-notifications was taking too much space on mobile
- Topic-notifications taking too much space in timeline
- Consecutive\_visits query wasn’t properly setting ‘granted\_at’ (3rd time’s a charm)
- Default select-box-row should be aligned vertically
- Keys were incorrectly set to category
- Component height computation was wrong
- Supports emojis in pinned topic excerpt
- Consecutive\_visits query wasn’t return only the first result per user
- Stop moving notifications on large screens
- Stricter check on presence of notification\_level\_change
- Remove duplicate event typo
- Don’t allow staff to approve users with unverified emails
- Don’t bind events in `defaultState`
- Correctly resets user\_themes template
- Disable follow in topic summary links
- Error when rebaking posts
- Linting errors in Ruby
- Wizard tests don’t need `Discourse` defined
- Use proper `iconNode` when compiling virtual dom templates
- Visual regressions on title-wrapper
- Minor css tweaks to title-wrapper
- Use maximum z-index for select-box when expanded
- Test was failing on high DPI monitor
- Broken acceptance test
- Linting error
- Use `CASCADE` when dropping function.
- Drop function first before removing trigger.
- Tests helper do not use es6
- Css regression on select-box
- Select-box broken spec
- Disable highlighting when no value set on select-box

---

<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 3, 2018, 10:12pm UTC](https://meta.discourse.org/t/discourse-version-1-9/61289/4 "2018-01-03T22:12:37Z")

</div>

## Bug Fixes continued

- Improves uncategorized support for category-select-box
- Make .eslintrc file compatible with eslint 4
- Group name was being reverted to non-localized version.
- Only show topic timer to staff
- Staged users should get emails on must\_approve\_users sites
- Don’t refresh notifications in a tight loop
- Make /new-topic redirect survive full screen login (#5105)
- Select-box improvments
- Do not show full name field when accepting invite if full names are disabled
- Don’t re-render if you find composer messages after destroying
- Html not showing in select-box header
- Select-box fragile specs
- Un-revert the btn class added to the topic post menu
- CastInteger on initial value
- Some button classes
- More consistent filter from keyboard on select-box
- Category badge style of none was causing errors when rendering
- Avoids select-box being over composer popup
- Better headerText handling on select-box
- Modify select-box orientation when composer resizes
- Duplicated categories in select-box
- Bump default max for int site settings to a much higher number
- Removed the duplicated staged users without posts
- `store:main` error when running QUnit tests checking disabled plugins
- Wrongs counts on tags with deleted topics
- Broken badge show page
- Transfer posts by duplicated staged users to original
- Do not create topic link reflection for unlisted topics
- Topic timers being incorrectly `trashed!`.
- Don’t set topic timer for close topics when changing category.
- Broken suspect user lists.
- Move before post count outlet inside the link
- Skip trigger match should be case insensitive.
- Ip lookup not working
- Avoids user-selector having no width
- Sidekiq wouldn’t start up in development mode
- Exception in excerpt parser for null nodes
- Queues posts broken for multiple posts
- Footer message was missing the class
- Can’t reset AR schema cache due to versions table.
- When registering custom\_field types, ensure we’re casting them before checking for equality
- Reloading issues with classes
- Rebuild index when engine replaced (#5021)
- Add additional email to tests and clean up resulting mess
- Avoid publishing a gigantic payload.
- Fails loud if default setting is not set
- Unlinked topic search model (#5044)
- Display emojis (set, custom and native) in bio excerpt
- Staff count on invites step of wizard should only include real users
- Not splitting words correctly for search tokenizer
- Handle spaces better within emphasis tags in html\_to\_markdown
- Handle line breaks at beginning of emphasis tags in html\_to\_markdown
- Multichoice poll with more than 25 votes
- Digest emails should not include posts that are still in the edit grace period
- Scroll position is tracked on search page
- Ensure we always reload TopicView and TopicList in dev
- More cases of case sensitive group membership in sso
- Wizard should only include human admins and system user as the site contact username options
- Staged users were incorrectly created multiple times with same e…
- Don’t enforce newuser\_spam\_host\_threshold on private messages
- Navigation item counters weren’t updating properly
- Staged users were incorrectly created multiple times with same email.
- Return 404 if API access is invalid.
- Don’t raise an error if URL timesout.
- Staged users are still missing primary email.
- You can’t cache the files here, plugin translations won’t work
- User directory didn’t update stats of users with no recent activity
- In development mode on OSX, plugin stylesheets were not reloading
- `updated_at` needs to be set in migration as well.
- Ensure that post action moderation post uses the site’s default locale.
- Handle missing parent category when exporting user archive
- Title prettify shoundn’t downcase all non-ascii titles
- Handle topics without excerpt for meta description tag
- Allows onebox to force GET hosts returning wrong headers on HEAD
- Don’t break the site when adding a navigation item without a ‘name’ field
- Couldn’t upload SVG with a DOCTYPE
- SiteSettings defaults cache leaking across multisite.
- Make `DbProvider#table_exits?` work with multisite.
- `default_locale` cross talk in multisite setup.
- Allow an admin to click on blank errors (#5027)
- Allow an admin to click on blank errors
- Site setting previews were not rendering
- Wasn’t able to remove a user’s primary group
- Always trigger the ‘:user\_updated’ event
- Show rejected emails with unrecognized errors (#5026)
- First load of embed comments would always fail on WebKit
- Prevent Cloudflare from obfuscating emails
- The ellipsis should be a `flat-button`
- Generate valid markdown from `<br>``</b>` in an email (#5022)
- Generate valid markdown from `<br>``</b>` in an email
- Don’t generate markdown for empty `<strong>` or `<em>` tags in emails
- Inline oneboxer not applying to lists
- Use case insensitive group name search when applying group rules from SSO
- Change email success message container was too narrow
- Plugin outlet in user preferences nav needs to be li tag
- Adding group owners returns 400 error.
- On desktop, anon topic reply btn too far over
- Non tag/category # searches should be passed through
- Return a UTF-8 string in tag notifications
- Limited search results
- Staff cannot manually activate accounts after 48 hours has elapsed
- Extra ``\<` character after icon refactor
- Add slight delay when enqueuing activation email
- Restore running statement of BulkImport::VBulletin
- `Group#visibility_level` isn’t shown in admin group edit page.
- Staged users did not have a `UserEmail` record.
- Always validate presence of user’s primary\_email.
- Preserve fragment identifier when escaping url
- Pull last emoji-db revision
- Remove unused test
- When quoting add a newline
- Deleting own post results in error
- Notifications dropdown had incorrect spacing
- Badge icons disappeared
- Precompile errors for wizard tests
- We need to precompile the wizard test helper
- Wizard was broken
- Onebox for dropbox video links not working
- Exclude `www` in topic map links.
- Search by topic\_id should not be restricted by `SiteSetting.min_search_term_length`.
- Explicit error when category description post is bad
- Specs failed if discourse-push-notifications booted
- Don’t escape html of poll options
- Block all emails associated to a user when destroying their record
- Run sidekiq command documentation
- Broken topic invite button.
- Emoji-picker do not reload all everything when changing diversity
- Emoji-picker broken and skipped specs
- Allow bbcode to be unquoted for default
- Don’t re-scheduler correctly scheduled daily tasks
- Saving profile preferences removes name in account preferences
- Smart quote edge case with quotes
- Oops, real fix for change email instructions
- Wrong position for change email instructions
- VBulletin bulk importer: emails and stats
- VBulletin bulk importer
- Handle existing users in imports
- Improves efficiency
- Wasn’t unfreezing time in email processor spec
- Keep newlines between paragraphs when quoting a post
- Makes emoji filter case insensitive
- Make sure there are meaningful titles on the picker
- Empty lines should be selected for block quotes
- Do not restore scroll on successive click on the same first emoji
- Keep scroll position when adding first recent emoji
- Emoji-picker filtering false positive
- Show emoji in inline oneboxes
- Do not store scroll position in local storage
- Filtered emojis now correctly include custom emojis
- Group owners should be able to invite users to their groups.
- Faster successive loading of emojis
- Makes sure we don’t track when clicking on recent emojis
- Dot not close emoji-picker when click is inside picker
- Oneboxes were not being previewed
- Object.assign is not supported in all browsers
- Broken specs
- Only highlight exact word matches in results
- Emoji-picker positioning glitches on few edge cases
- Improves emoji-picker handling of its different states
- Don’t error out when an unsubscribe key isn’t associated to a user anymore
- Emoji-picker works with dark theme
- Make sure the emoji picker is hidden
- Infinite rebinding when filtering emojis
- Escape URL before attempting to resolve it.
- Medium URL with @ incorrectly handled as mention
- Internal oneboxing wasn’t working when login was required
- Concurently loading deferred loading of a script incorrectly resolves the promise.
- User is nil in populate command
- Don’t include images in the topic map top links
- Set a max height for the tag input field
- Discobot’s certificate shouldn’t blow up on non 200 response.
- Post with multiple polls containing votes can not be edited.
- User card contents can go up out of the bounds of the card when user has a title and full name
- Report discobot messages as system messages instead of user-to-user
- Don’t raise error when inviting existing user to private topic via email
- Multi option poll not working (new engine)
- Missing `model` binding
- Remove unneeded code
- Wait for CSS transition to end before attempting to focus.
- Only trigger callback for parent transition events.
- Translation should return overrides first before attempting to fallback.
- Allow discourse app to link directly to wizard
- Only show search if there are more total posts than the chunk size
- Smarter newline handling for `<img>` tags on line alone
- Invited user should not be able to redeem invite as admin
- Fix orientation even for small JPEGs
- New sign-ups via google are added to groups
- Support non-english tags in tag input field
- Don’t create tags autolinks inside links (new engine)
- First @mention/#hashtag is not a hyperlink in Twitter onebox
- Mention not working after a newline (new engine)
- Translation overrides were not cached by locale properly.
- `Jobs::PullHotlinkedImages#is_valid_image_src` returns true for a generic string.
- S/google\_blob/google\_classic
- Disable topic status info when no category has been selected.
- Select topic timer’s category by default in edit modal.
- Do not override 🦗 with 🏏
- Prevent thumbsup/down to appear in custom emojis
- Add new emojis into correct groups
- Adds new emojis into correct groups
- Ensure we clear emoji cache before recompilation
- Duplicate topics and posts in summary email because user has muted tags and topics contain multiple tags
- Summary email excludes all untagged topics if user has muted some tags
- Naving to root URL was broken
- Regression with woman\_shrugging emoji
- Do not show “Send Activation Email” button if `must_approve_users` setting is enabled
- Translation fallback was not using fallback’s translation override.
- Stop highlighting single l which is used for sorting
- Handle moving first post to a closed/archived topic
- Include canonical meta tag on category pages
- Make `omit_default_port` the global default
- Omit the default port in the `Host` header
- Log when push notifications fail
- Topic Entrance wasn’t showing up on some suggested topics
- `Group.search` should look up `Group#full_name` too.
- Display Google search form when 404 page is rendered by Ember.
- Don’t show the admin menu if the progress bar is hidden
- Populate the Email Digest preview with the current username
- Move Referrer Policy header to right location
- Make sure censored words are on boundaries in topic titles
- Generate multiline details instead of inline
- Plugin outlet should be wrapped under `d-editor-preview-wrapper`.
- When quoting always ensure we are on a new line
- Blockquote button implementation
- Stop using inline quote for local onebox
- Mentions in category boxes are too big
- Can’t cook queued posts when markdown-it is enabled.
- `/u.json` should return 404 instead of 500.
- Support for skipping redirects on certain domains (like steam)
- Wrench would incorrectly on wide browsers with composer up
- Automatic PNG to JPG conversion wasn’t working
- Reset likes in user directory
- Use default parameter in method.
- Letter avatars in quotes on subfolders installs are broken
- Always try to convert PNG to JPG when pasting an image
- Image orientation wasn’t properly working
- ‘uploads:migrate\_from\_s3’ rake task
- Notification backdrop does not display when user menu has been toggled.
- If the progress bar is docked, set the progress to 100%
- Double header rendering issues, redux
- Uploads:recover\_from\_tombstone rake task
- Use ‘jpg’ instead of ‘jpe’ extension for ‘image/jpeg’ content type
- Full page search was removing advanced search terms
- Dirty keys should become to a widget, not global
- Some stream items don’t have post\_id, so expand by topic id / post number
- Replace site\_name with email\_prefix in subject when use\_site\_subject is true
- Can’t update status\_type of topic timers.
- Foward requests to `/u/new` to our Ember router.
- Discourse hub calls
- Start filesystem watcher when running under rails s
- Add path to cookies so sessions on the same domain but different subfolders don’t log each other out
- Incorrect way to use Excon in `DiscourseHub`.
- Docking of progress component on iOS was a bit off
- Topic list wrapping under category list on some screens
- Version check
- Use username in bot’s certificate.
- Discourse\_hub\_spec stub\_request should include query params
- RTL digest emails
- Recover post tutorial does not work when `SiteSetting.delete_removed_posts_after` is 0.
- Remove dependency on `rest-client`.
- Validate interpolation keys used in translation overrides.
- Try a GET for error code 409 too – (Medium posts)
- Fail to send email notification if post has img tag with no src attribute
- Only invite admins when automatic backup fails.
- Send request membership PM to last 5 active group owner.
- User’s default group should only be set once
- Create group membership request on behalf of user.
- Create notification for group users when group has been invited.
- Don’t show emoji selector when ending a line with a colon
- Autocomplete wasn’t showing up for PM user selection
- Show invite validation error message in response
- Don’t fail seed if avatar can’t be downloaded
- Always allow the host the forum is hosted on
- Don’t use `target=_blank` for local oneboxes
- Onebox wasn’t using correct uri
- Support for cookies in onebox redirects
- If HEAD is not supported, try GET. Also set cookies
- Pull hotlinked images even when they have no extension
- If forcing a refresh, don’t return a onebox preview
- Oneboxing root domains could stop previewing
- Strip zero-width characters from search terms.
- Raise the right error when email params is missing.
- Wrong reset password link for zh\_CN locale
- Replace `/my/` URLs before fixing the prefix
- Don’t raise an error cleaning up uploads if a path is nil
- Return `nil` when the `reply_key` is missing
- Bot mentioned check should be case insensitive.
- Allow tar to finish if files change during backup
- Always confirm emails when SSO says so
- The ‘clean\_up\_uploads’ jobs would delete images used in site settings
- Invalid path for new user of the month badge with subfolders
- Don’t redirect to wizard when resetting password
- Copy custom fields when moving first post of a topic.
- Better error message when username change fails.
- Lounge category security settings won’t be reset after an upgrade
- Ensure we never collide ids in the JIVE API importer
- Track should only continue if user is alone with bot in a PM.
- Don’t animate the progress bar unless scrolling
- Timeline was wrong sometimes on iPad
- If a topic is really long, show the timeline
- Set max width and prevent wrapping on composer submit button on mobile
- Topic flagged message squeezed into a small column
- Ensure that we cancel any timeout jobs when terminating a track.
- Bot should only respond to regular posts.
- Groups that do not have any owners should not allow membership re…
- Groups that do not have any owners should not allow membership requests.
- Do not show website name on TL0 profile
- PNG-to-JPEG conversion should only be done to images with at least 1 megapixels
- Automatic PNG-to-JPEG conversion should use a default white background
- Improved Amazon oneboxing for some URLs
- You should always be allowed to see actions you created
- Don’t run in testing mode
- Improper error message
- Narrative bot on subfolder installs
- Publish group’s categories to user when adding user to group.
- Disable request membership button if user does not have sufficient trust level.
- Post mover not clearing reply\_to\_user\_id
- Don’t allow moderators to save category tracking settings
- Restrict wizard staff count to human users
- Delay Discobot welcome post should start counting on user’s firs…
- Discobot welcome post delay should start counting when a user logs in.

---

<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 3, 2018, 10:12pm UTC](https://meta.discourse.org/t/discourse-version-1-9/61289/5 "2018-01-03T22:12:56Z")

</div>

## UX CHANGES

- Adjusting color on composer box-shadow
- Removing double underline from abbr
- Add missing `btn-icon` class to edit icons
- For numbers greater than 100k allow 0 precision
- Always show a message to the user whenever an error happens on the server when uploading a file
- Show ‘{count}+’ when not sure about exact search count
- Fixing font-size issue on /categories
- Fixing an issue where category names were too large on /categories
- Use tight list by default in HTML to Markdown conversion
- Cleaning up a few admin styles
- User menu-panel icons too large
- Fixing mobile post action size
- Reducing number of font-sizes used in common
- Better centering in presence plugin
- Reducing number of overall font sizes
- Reducing number of font sizes used in mobile view
- Reducing number of different fonts used in Admin
- Allow for iPhone X in iOS Hacks
- Only publish presence when typing a message
- Removing px font defintions and replacing with em
- Don’t shown the ‘staff-counters’ div when there’s no counter
- Increasing line-height for headlines in all post content
- Mobile user profile button adjustment
- Cleaning up staff counters on user profiles
- Making button on advanced search page match input height
- Cleaning up user profiles on mobile
- Clearer ‘user left PM’ system message
- Replacing some PX font definitions with EM based units
- Add link to “Moderation History” to flagging interface
- Removing staff highlight from .name so it only applies to .user-title
- Add a class name to target the embedded post controls
- Eliminating a “sweet spot” at 870px viewport where the topic-body exceeds 690px wide
- Iconize compose reply title
- New style for staff highlight
- Use the same 404 page for the `unknown` route and exception handler
- Mobile post control button color was too specific, overriding solved plugin
- Add onebox favicon styling in email
- Updating the edit post title layout
- Fixing code highlighting color issue in dark themes
- Add new classes to make user creation more targetable
- Adjustments to composer uploading message
- Hiding composer preview reduces width of composer overlay
- Removing an old font declaration
- Add tooltips for messages and notifications in header
- Better help text for composer collapse / discard
- Show error message when no gravatar is associated
- Preloaded gravatar was appearing on the right instead of the left
- Replace heuristic solution root domain extraction for topic featured link.
- Replace heuristic solution for extracting root domain.
- Sync input and preview when user is typing.
- Remove another plugin outlet container we don’t need
- Add tooltip to unique on search logs page
- Stop warping tiny onebox images
- Adjustments for topic title editing
- Show staged users’ email addresses to staff without requiring a button press
- Composer textarea should always start at the top.
- Improve editor and preview scroll syncing.
- Handle super tall images in onebox respectfully.
- Hide ‘dismiss’ in notifications dropdown when there are no unread notifications
- Add targetable class
- Auth complete page/modal has a link to continue to the site to accomodate auth methods that can’t automatically redirect to Discourse
- Use date picker on full page search
- Make onebox timestamp consistent with header
- There were many places where username formatters were not applied
- Better tooltip for read time on user cards
- Use `no_ember` styling for omniauth error page
- Large image placeholder alignment fix
- Sort search logs results by unique searches
- Cap likes 2 (#5237)
- Support for custom error pages and headers in plugins
- Make flag dropdown actions more clear
- Add class for targeting
- Support for custom 404 pages
- Collapse button displayed in the wrong place
- Expand parent category in full screen search results
- Warn that something must be selected with [safe mode](https://meta.discourse.org/t/53504?silent=true)
- Generic onebox treats all square images as avatars and renders them smaller
- Fix user bio & category topic template editors
- Widget options to disable FAQ and About
- Change composer button text to ‘whisper’ when whispering
- Add an outlet to the user admin page
- Include the flagged person’s username on the flagged post
- Make flagged topics details button more clear
- Allow collapsing of group posts after they’ve been expanded
- Oneboxes with avatars now display consistently
- IOS 11 modals now hide all background
- Use down chevron button instead of “show more” text to link to full list of notifications
- Increase max length of topic titles in summary email html by 40 characters
- Missing element id
- Add more classes for customization purposes
- Dynamic margins on flexbox categories-and-latest
- Wrap columns on categories/latest if the browser is too small
- Plugin outlet for group nav
- Convert Group Posts to Flexbox
- Hide category badge colors if the style is none
- Add new targetable class in staff-action-logs
- Support onebox labels
- Correct regression with twitter onebox
- Autobiographer badge description should link to profile preferences
- Onebox images no longer cause jiggle
- Various admin class and structure improvements for styling
- Semantic form on login modal
- Better title on search page
- Move disable PM option under notifications in user preferences.
- Remove triple css class
- Don’t hardcore height for margins below a title
- Make admin user list easier to style
- Give a class name to the container of the `#bulk-select`
- Show title in search results
- Buttons needn’t have a `block` style in this modal
- Better flex for the bulk actions modal
- Remove 🔥heading and ruler button from composer toolbar
- More flag modal improvements. Remove `!important` class
- Improve markup for flag modal
- Switch global search trigger to ctrl+alt+s
- `break-all` looks a bit weird. Removing for now.
- Improve Delete Tag Confirm Message
- Delete Tag Warning Improvement
- Discourse restore – sort by date
- Do not display non-human users on group page.
- Restore missing border at the end of topic list.
- Allow users to remove a remind me topic timer.
- Allow for customization of the heart icon
- Title in JS must match title on Server
- Perform icon replacements before calling icon renderer
- Allow customization on header dropdown sizes
- Only include tag hashtag postfix when necessary.
- Add a two week suspension timeframe
- Label should toggle checkbox.
- Round instead of ceil for time gaps
- Mess with iPad and iPhone sizing to compensate for keyboard
- Visited style wasn’t applied to PM on mobile
- Pending Posts at the bottom of topics looked wonky
- Round up dates
- Cancel button looked ugly on post warning modal
- Weird alignment issue on flags
- Improve interface for flagging with many flaggers
- Nicer selection of suspend duration
- Topic links were all grey to anonymous users (regarding of their visited state)
- Reduce height of textarea for flags of type “Something Else” on small mobile devices
- Placeholder images color changed & tootip added
- Show date of last edit on wiki topics
- ‘.visited’ wasn’t applied in categories view and suggested topics
- Move `.visited` to entire row, not just the link to a topic
- Flags lost their red color on dropdown
- Convert bookmark icon from CSS to a proper icon using our helper
- Use a template for the `d-modal` component
- Add another div to aid in styling via flexbox
- Large topic creation area on mobile
- Add missing `btn` class to `flat-button`
- Move buttons into the nav section of the topic map
- Move close button to bottom and add esc hint.
- Make 404 page look better on dark theme
- Setup wizard won’t offer pre-existing users with reserved usernames
- Keep emojis in excerpts in flag queue
- Fix category badge style on 404 page
- Add a divider line between regular user fields and custom user fields
- Placeholder text in watched word input field
- When staff change their email address, show a message saying an email has been sent to their current address, not their new one
- Exclude irrelevant search filters for anonymous users
- Support for `none` style of category badge
- Show proper HTML for category preview in site settings
- Convert buttons to `d-button`
- Add consistent classes to buttons
- Move watched words to the Logs section of admin
- Add new plugin outlet before reply count
- Discobot advanced tutorial certificate does not work with dark theme.
- Remove `hidden` from the `#discourse-modal` when the modal is shown
- Display button to message group on group page.
- Change group membership requests icons on groups pages.
- Better group creation workflow.
- Don’t show empty user list for groups without members.
- Include group name in email when group is invited to a PM.
- Apply `btn-flat` class to flat buttons on posts
- Use flat button style for bulk selection
- Refactor composer buttons into flat buttons
- Use down chevron icon to expand “show more links..”
- Allow site settings to display as textareas if they like
- Add validator for `SiteSetting#sso_overrides_email`.
- Reply button was offset improperly when anonymous
- Allow CTRL+ENTER to save topic title edits
- Always show topic progress on mobile
- Do not show “Message” button on user’s own profile page/card
- Add a `span` to d-button so text can be hidden via CSS
- Add unique class to “most liked” section on user summary page
- Don’t hide the reply button by default
- Make the edit wiki button more prominent
- Include a link to change email preferences at the bottom of summary emails as an alternative to unsubscribing
- Support for displaying wrench alongside progress bar
- Hide help button after click
- Make font size consistent on password reset modal
- Move optional to the description text for the password field
- Don’t send emails for discobot notifications.
- Better accept invite page on mobile
- Make “accept invitation” page consistent with sign up modal
- Add email to ‘/email/unsubscribed’ page
- Show user email when unsubscribing
- Don’t hide the subcategory filters when subcategories are listed below
- Show column headers on user topic lists
- Add more glyphs on /about page
- Add admin/moderator icon on /about page

---

<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 3, 2018, 10:13pm UTC](https://meta.discourse.org/t/discourse-version-1-9/61289/6 "2018-01-03T22:13:30Z")

</div>

## SECURITY CHANGES

- Don’t pass email backup token to sidekiq as a parameter.
- Any group can be invited into a PM.
- Prevent staged accounts from changing email
- Signup without verified email using Google auth
- Verify that inviter can invite new user to a topics
- Fix XSS on unsubscribed page.
- Update Nokogiri.
- Prevent users from updating to blacklisted email domains
- Only publish PM reply messagebus notifications to allowed users
- Do not include links from whispers in topic summary map
- Do not show latest/top topics on 404 for login\_required sites
- Remove disposable invite feature
- Theme key should be an anon cache breaker
- Vunerability in mail gem

## PERFORMANCE

- Cache service worker for 1 hour
- Add option to limit how many categories are processed in one call to CategoryFeaturedTopic.feature\_topics (#5446)
- Better handling of headings in HTML inline pasting
- Improve speed of rate limiter
- Hijack onebox requests so they do not use up a unicorn worker
- Stop running background work between requests
- N+1 query when fetching search\_logs
- Exact email match bypass
- Move oneboxing from cook method “email” to postprocessing
- Code not correctly caching git commands
- N+1 when generating not found page.
- Only send down suggested payload when loading last chunk.
- Reduce number of topics to filter while querying for unread.
- Bypass AR and just use raw SQL.
- Remove N+1 query when generating posters summary.
- Avoid unnecessary expensive joins if possible.
- Avoid `NOT IN (``\>`` which can get really slow.
- Bypass AR and execute SQL directly.
- Avoid calling expensive `PostGuardian#can_see_post?` multiple times.
- Remove `Object#present?` check introduced in [Fix the build. · discourse/discourse@e0d5d96 · GitHub](https://github.com/discourse/discourse/commit/e0d5d9670ab2d0fb923fef54e3bdcbbcfc524fb1).
- Use `pluck` instead of enmurating through all the records.
- Reduce number of Redis hits per requests.
- Add an index on slug to make sure that slug lookups are quick
- Reindex search data without loading large post counts
- Update message\_bus to latest
- Allow plugins to preload custom fields for topics in `CategoryList`.
- Terminate scheduled job earlier if badge is not enabled.
- Fetch users in batches in grant anniversary badge job.
- Speed up slow tests in our test suite.
- Reduce allocations in `Emoji.unicode_replacements`.
- Reduce memory allocation by `Emoji.unicode_replacements`.

---

<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 3, 2018, 10:14pm UTC](https://meta.discourse.org/t/discourse-version-1-9/61289/7 "2018-01-03T22:14:11Z")

</div>


