2.9.0.beta3: Pasting GIFs, New Category Page Style, Muted Category Improvements, and more

New features in 2.9.0.beta3

Allow pasting of GIFs into the composer

Previously if a user copied a gif from a website into their clipboard and tried to paste it into the composer, we would only paste a static single frame (image) of the original gif. We now properly detect when a gif is in the clipboard and paste it into the composer as expected.

New category page style: subcategories with featured topics

Highlight expired bookmark reminders

Bookmark reminders that fired in the past are now highlighted in red on the user’s bookmarks tab.

Upload an avatar option for uploading avatars with selectable avatars

Allow staff or users at or above a trust level to upload avatars even when the site has selectable avatars enabled. Everyone can still pick from the list of avatars. The option to upload is shown below the selectable avatar list. Admins can configure who can upload their own avatar via the selectable avatars mode site setting.

Only selectable avatars:

Selectable avatars and uploaded avatars

Centralized 2FA UI

2FA support in Discourse was grown significantly since it was first added. Originally only TOTP (the ever changing 6-digit codes) were supported, and only for login. Today, we support TOTP, security keys (including biometrics), and backup codes, and 2FA is used for verification for other actions beyond login. These changes each increased the technical complexity of the 2FA system, to the point that there were 5 different UI implementations :exploding_head:. In beta3 we’ve standardized and centralized 2FA, with a single UI used for all 2FA methods. This new UI will be rolled out to all the various places 2FA is used over the next few betas.

Mute subcategory when parent category is muted

A long requested community feature, muting a category now mutes all subcategories as well. Users can override this for specific subcategories as needed.

Scale daily flag limits

Similar to likes and edits, the maximum flags a user can cast per day is now increased as the user increases in trust level.

Updated share post modal

We’ve updated the modal that appears when clicking on a post timestamp.

Additional features

  • Add link to original image in lightbox
  • API to create user’s associated account
  • Prioritize group search order based on prefix match
  • Add fullscreen button for code blocks
  • Automatically select share URL
  • Show topic visited state on search page
  • Adds the user_promoted event to webhooks
  • Rename Reset Read bulk action to Defer
  • Allow moderators to bulk change ownership
  • Show error if invite to topic is invalid
  • New plugin API to check if upload is used
27 Likes

Even more!

But wait, there’s more! We do our best to highlight new features and changes for you, but there’s always too many changes to detail. For a full list of new features, bug fixes, UX improvements, and more, be sure to review the Additional Features and Fixes listed below.

Plugin improvements

Animated Avatars

New Features

  • Make gifsicle an optional dependency
  • Pause animations on blur

Bug Fixes

  • Crop when gifsicle is installed
  • Alias method ordering

Assign

New Features

  • Improves random assign to assign to a post

Bug Fixes

  • Add missing notification title
  • New notification type needs one more i18n string
  • New notification type needs some i18n string
  • Reuse topic query method to find group topics

UX Changes

  • Topic list refactor

Zendesk

Bug Fixes

  • Creating ticket spec

Discourse Chat

Features
  • Limit unique emoji reactions to 30 per message
  • Insert link with shortcut in composer
  • Remove move to topic
  • Deleting chat channels
  • Include reactions in archive chat quotes
  • Settings for minimum message length & disabling attachments
  • Close/open chat channel
  • New setting to define default emoji reactions
  • Retry failed archive
  • Block duplicate messages sensitivity setting
  • Chat channel archiving
  • Auto-focus composer on key press in full page
  • Add chat_default_channel_id site setting
  • Allow use of [chat] bbcode within chat messages
  • Add chat keyboard shortcuts to help modal
  • Auto silence users from flags
  • Chat channel statuses
  • Auto-silence users who exceed rate limit
  • Quick silence button for staff, and block silenced users from interacting w/ chat
  • Uses upload filename for reply to excerpt if message is empty
  • Allow using [quote] bbcode in chat messages
  • Highlight code blocks for chat messages
  • Infinite scrolling downwards
  • Add simple composer shortcuts
  • Notify chat message users on quote
  • Rate limit message sending with btn to re-send
  • Chat quoting
Bug Fixes
  • Pasting a link with active text selection was broken
  • DOM operations should happen after render
  • Ensures chat-composer-details uses available space
  • Ensures editing is cancelled on channel change
  • Do not autofocus chat when ? pressed
  • Clipboard copy chat quotes breaks on Safari
  • Don’t error when user no longer exists
  • Incorrectly ignoring sticky scrolling after fetching messages
  • Ensures only one msg-action on mobile
  • Only return open channels for quick selector
  • We were comparing user object and id
  • Displays unread-indicator only when needed
  • Use similar styles for chat-emoji-avatar as chat-user-avatar
  • Use system user for archive topics and posts
  • Use correct chat_allow_uploads setting
  • Show last 3 used emojis for recent reactions
  • Moves unread indicator to chat-channel-title
  • Ensures tc-reply-display is taking using necessary space
  • Use dedicated emoji store in chat only for reactions.
  • Clear unread when channel archived
  • Autocapitalize sentences on mobile
  • Full-page don’t capture space button
  • Chat channel selector was broken for incoming webhooks.
  • Guardian can_rebake? was breaking core post rebake endpoint
  • Improvements to archiving tool
  • Archive channel refinements
  • This would always evaluate to true
  • Convert emojis to unicode in push notifications
  • Locale nesting for chat_default_channel_id site setting
  • Move channel settings button to channel browse list
  • Revert chat-composer keyUp to keyDown event
  • Show deleted messages if can moderate
  • Ability to tab to and press enter on chat header
  • Ensures body is not scrolled when inserting channel list
  • Ensure online flair is shown correctly on replies
  • Preserve uploads with associated ChatUpload
  • Ability to react to previously staged message
  • New DM erroring on create because of canModifyMessages
  • Don’t expand deleted messages on scroll up
  • Focus in composer after ‘edit message’ button is clicked
  • Always use dark color for background on upload
  • Upload in use callback returned from method
  • Block more UI while previewing channel
  • Don’t create errored chat message from webhook event
  • User’s reactions are correctly marked as reacted
UX Changes
  • Center channel title on mobile
  • Much more specific chat mention notifications
  • Reduces is-online circle width
  • Implements presence indicator as a circle instead of bubble
  • Chat notification consistency
  • Revert margin changes to .chat-channel-title
  • Re-apply channels margin on mobile.
  • Improves behavior of the icon when chat is visible
  • Restyle browse channels page
  • Adjust styles, remove leave chat button
  • Add visual element when dragging files to upload into chat
  • Expand target area for chat uploads
  • Remove the alert gap on more alert types
  • Small padding fix
  • Fix style inconsistencies in chat quoting
  • Minor fixes for font, width, and icon adjustments
Performance
  • Removes two unnecessary enclosing divs for each message
  • Remove n+1 for in_reply_to messages
Accessibility
  • Add role region and aria labels to important regions of chat

Voting

Bug Fixes

  • Add second order by column to preserve order while paging.

BBB

Bug Fixes

  • Compatibility fix after a core change

Calendar

New Features

  • Adds holiday flair to chat
  • Adds support for timezone (recurring and non recurring)
  • Adds a currently away report

Bug Fixes

  • Ensures client is sending UTC to backend
  • Missing translation for currently away report
  • Apply latest holidays definitions
  • Ensures custom fields are reloaded in the spec
  • Fix hidden calendar weeks on month view
  • Remove arrow even if there is no whitespace around it
  • Validates the recurrence

Solved

Bug Fixes

  • Intializer regression
  • Refresh custom fields and removes dup fabricator

Encrypt

Bug Fixes

  • Check signature using crypto primitives
  • Do not error when there is no currentRouteName
  • Update “Generate paper keys” instruction clarity

UX Changes

  • Minor composer button style updates

Kolide

New Features

  • Update user alert PM content after a device is destroyed.
  • Assign device owner from Discourse group alert PM.

Bug Fixes

  • Content-Type header is required for PUT methods on Kolide API.

Code Review

Bug Fixes

  • Allow deleted topics to be imported again
  • Validate code_review_default_parent_category setting
  • Show error if plugin is not configured
  • Escape Git trailers before replacing links
  • Do not reuse GraphQL clients

RSS polling

Bug Fixes

  • Fail fast if user is nil

Subscriptions

Bug Fixes

  • Ensure sidebar class is removed when component destroyed

Cakeday

Bug Fixes

  • Don’t disable birthday emojis when cakeday is disabled.

Zoom

Bug Fixes

  • Compatibility fix after a core change

Reactions

Bug Fixes

  • Always fetch users for each reaction when changed
  • Remove duplicated code

Accessibility

  • Ensures focus on reaction button is clearly visible

Automation

New Features

  • Implements post field
  • Adds support for args when using %%REPORT%%
  • Allows to insert reports using placeholders syntax
  • Adds support for zapier webhook script
  • Matches topic title in auto-responder script

Bug Fixes

  • GroupField can be destroyed mid-init
  • Followup to #b17235b breaking form
  • Do not parse date if not start_date/end_date
  • Ensures we don’t stop at first empty results
  • Prevents automation to run when not needed in few cases
  • Ensures we don’t crash if url is not given

UX Changes

  • Adds default state when no automation have been created yet
  • Correctly describes key as being evaluated as a regex
  • Show caret when selecting script on new automation
  • Makes clear changing script/trigger will also save new state

Performance

  • Prevents unnecessary work in auto-responder asap

Docs

Bug Fixes

  • Remove reference to share-popup

Chat Integration

Bug Fixes

  • Use correct identifier in transcript thread hint
  • Use correct copy for ‘all categories’

Additional Features and Fixes

Click to expand

New Features

  • Let reviewables override the score type title.
  • Update push notification icons
  • Enable canonical url indexing
  • Use canonical links in posts.rss feed
  • Add nofollow to RSS alternate link in topics and categories
  • Add new site setting list type with name and values
  • Use Postgres unaccent to ignore accents
  • Return geoname IDs from MaxMindDb
  • Add ENV to control themes:update errors
  • Replace share post popup with share modal
  • Disable indexing of non-canonical pages by default
  • Add settings to scale daily flags limit
  • Use new topic-chooser for invite modal

Bug Fixes

  • Do not raise if title cannot be crawled
  • Ensure all/none subcategory filters work correctly with tags
  • Issue 404 for invalid /tags/c/... routes
  • Add replaceAll to browser-detect
  • Staff should not be able to PM groups that “Nobody” can message
  • When using Ember CLI, plugin admin code was not being loaded in tests
  • Reset last sent for existent bookmarks
  • Ember test imports, again
  • Ember test entries in discourse-loader
  • Show bookmark options by default when editing
  • Remove racing requests for admin users
  • Skip ember-cli build memory optimisation for multiple rake tasks
  • Always include the first poster when converting to PM
  • Do not run Ember CLI chunk files through babel twice
  • J/K post stream navigation inconsistencies
  • Return nil when RetrieveTitle.crawl fails
  • Update topic route id param
  • Invalidate site settings cache in all instances
  • Update group inbox notifications on archive/unarchive
  • Apply onebox blocked domain checks on every redirect
  • Buggy jump-to-post on Firefox
  • Include engine mount path for API scopes added by plugins
  • Allow admins to change user ignore list
  • Only display the first listed price
  • Make reply-ids public by fixing a typo
  • Show 404 html on /posts/:id/raw and /p/:id
  • Update and rebake uses of the old centralized avatar service
  • Prevents self-reference to discoveryTopics from discoveryTopics
  • Better 0 file size detection and logging
  • Support new layout on Amazon product pages
  • IOS do not have working push notifications yet
  • Save email rejection error class names for incoming email logs
  • Correctly notifies subscribers with post_action_destroyer
  • Calculate docking - include offset of main
  • Indirectly muted categories for topic-tracking-state
  • Minor indentation fix for fullscreen code
  • Setting emoji filter from initial autocomplete
  • Make sure html_raw is hoisted in custom markdown cook function
  • On mobile, overflow on post controls if there are many buttons
  • Respect the cooldown window when editing a flagged topic.
  • New indirectly muted category
  • Avoid validations when destroying posts
  • Move selectable_avatars_mode_validator_spec to new directory
  • Use the category’s text-only description in the category-chooser
  • Sanitize parameters provided to user actions
  • Dev subfolder session cookies
  • Don’t warn on empty .discourse-compatibility
  • Don’t advance draft sequence when editing topic title
  • Respect text direction inside quotes
  • Show invite button if users can be invited
  • Show links with 0 clicks in top links section
  • Allow none category if default is none
  • Use fresh theme setting values when compiling stylesheets
  • Ensure category/tag classes are added and removed correctly
  • Conform EmailLog#bounce_error_code to RFC
  • Increase FinalDestination MAX_REQUEST_SIZE_BYTES
  • Count clicks on links with query params
  • ReplyByEmailAddressValidator should leverage EmailAddressValidator
  • Update can_see_members attribute after leaving a group.
  • Handle nil values in DistributedCache#defer_get_set
  • Don’t accept accents in slug if generation_method == ‘ascii’
  • Load short upload URLs only once
  • Unable to filter user directory when sorted by user field.
  • Do not increase invite count for current user
  • Redis may not be availiable on Redis initializer
  • Tag show - hide no topics footer until there are no topics
  • Post migration to fix custom emojis with secure URL
  • Update application_helper logic now that Ember CLI is default
  • Ensure theme JavaScript cache get consistent SHA1 digest

UX Changes

  • Styling changes to global banner
  • Hide group avatar flair block if it’s empty
  • Tweak the “new” badge size, position, color
  • Allow d-editor to be shrunk
  • Print view always shows 0 votes, hide it
  • Fix misaligned avatar
  • Add description to the 2FA page when adding new admins
  • Differentiate ‘emails disabled’ notice for ‘yes’ and ‘non-staff’
  • Remove loading spinner from emoji picker
  • Change color functions to match original primary, tertiary functions
  • Improve timeline touch hit areas
  • Add discourse-follow to official plugin list
  • Display post count badge even when user has only two posts.
  • Fix alignment on full page search
  • Styleguide changes & color variable additions
  • Change styling of admin bulk invite button
  • Add ‘update’ to theme error message
  • Prevent user menu overflow on tiny screens
  • Control whitespace on categories topic list
  • Use autocomplete=“off” for date-picker
  • Improve default_code_lang copy

Performance

  • Fix n+1 for categories + featured topics
  • Avoid following links in topic RSS feeds
  • Only subscribe to /new when logged in
  • Perform all cached counting in background
  • Bump message_bus to 4.2
  • Use a shared message for replies to tracked topics
  • Load all common passwords in one go
  • Reduce anon_polling_interval to match long_polling_interval
  • Bump message_bus to 4.1
  • Skip running ‘auto_leave’ during every PresenceChannel method
  • Introduce site/global emoji cache
  • Reduce number of EXPIRE calls from CachedCounting
  • Use Redis SET EX GET instead of LUA script for counting
  • Terminate rake process during ember build
  • Update ember-auto-import and webpack

Accessibility

  • Focus last viewed topic in topic lists
  • Use dynamic type scaling on iOS devices
24 Likes