# 3.1.0.beta6: Threads in Chat, Image Grid, Export Chat Messages, and more

**URL:** https://meta.discourse.org/t/3-1-0-beta6-threads-in-chat-image-grid-export-chat-messages-and-more/270337
**Category:** Announcements
**Tags:** release-notes
**Created:** [July 11, 2023, 11:21pm UTC](https://meta.discourse.org/t/3-1-0-beta6-threads-in-chat-image-grid-export-chat-messages-and-more/270337 "2023-07-11T23:21:55Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![rishabh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rishabh/32/179446_2.png) [@rishabh](https://meta.discourse.org/u/rishabh)
#### Post date: [July 11, 2023, 11:21pm UTC](https://meta.discourse.org/t/3-1-0-beta6-threads-in-chat-image-grid-export-chat-messages-and-more/270337/1 "2023-07-11T23:21:55Z")

</div>

## New features in 3.1.0.beta6

### Threads inside Discourse Chat

Threads are scoped conversations happening parallel to the main chat channel. In channels where threads are enabled, replying to a message will automatically start a new thread where conversations can continue on the side.

 ![image](https://global.discourse-cdn.com/meta/original/4X/4/c/0/4c033d077d8b15a3e1291a257972635fe19fc1ad.jpeg)

To start using threads in your favorite channels, see [Introducing chat threads!](https://meta.discourse.org/t/introducing-chat-threads/270613#how-to-get-your-hands-on-them-7)

### Image grid in posts

 ![image](https://global.discourse-cdn.com/meta/original/4X/5/8/5/58564c117a672d43177d6bac7711c21e6bbeb6d2.jpeg)

We added a new feature that can arrange images (or other media) into a grid in posts. Users can add the `[grid]` tag around images or uploads manually, or they can use an icon next to the first image in a block of images in the composer preview to toggle the grid on/off.

 ![image](https://global.discourse-cdn.com/meta/original/4X/e/8/8/e88df36babc556d00b74255337197acb8e476638.jpeg)

### Export chat messages to CSV file

Admins can now export chat messages by going to `/admin/plugins/chat` and clicking the Create export button in the _Export chat messages_ section:

[![Screenshot 2023-06-20 at 23 22 06](https://global.discourse-cdn.com/meta/original/4X/7/0/1/701f64b9c0a696855513cc9592874b066504250e.jpeg)](https://user-images.githubusercontent.com/1274517/247238561-b5eb02be-5095-4144-aedc-e38ced0a480e.png)

Then, admins will receive a PM with the exported file once ready. At the moment, the feature allows you to export up to 10,000 messages within the last 6 months. For more details, see the [PR description](https://github.com/discourse/discourse/pull/22113).

### Improved navigation menu configuration of categories and tags

In the navigation menu, we added a new modal to configure tags and categories, with filters to easily find what you’re looking for. To try it, click the pencil icon in the **Categories** or **Tags** sections of your menu.

Options to reset to defaults or to see the most popular items in the menu by de-selecting all have also been added.

![edit-categories-navigation](https://global.discourse-cdn.com/meta/original/4X/5/9/a/59a2f4a3e61515d5ce0004e83ee4870b145e596b.gif)

![](https://global.discourse-cdn.com/meta/original/4X/d/1/c/d1c85516cf8ac22add9fdd01d7bbd30bc402852f.gif)

### Simplifying the main section of the navigation menu

We have removed the section heading of the main section of the navigation menu. The section now takes up a bit less space and is no longer collapsible, so the most important links are always visible while the menu is open. The section is still configurable by admins via a link in the More… menu.

![31e53e1200b4916431baeedb167b333269026a9d](https://global.discourse-cdn.com/meta/original/4X/a/6/b/a6bae172c0b873f8d9faa87902894852f7467869.gif)

For more background about this change see [this topic](https://meta.discourse.org/t/maybe-just-remove-the-community-header-in-the-sidebar-a-plea/252854/49).

### Introducing ‘loading slider’ for page navigation

To replace the full-page loading spinner with a loading bar at the top of the screen, functionality from the [Horizontal loading slider](https://meta.discourse.org/t/horizontal-loading-slider/177939/254) #Customization > Theme component was merged into Discourse.

![ezgif-6-f4ed194f762c](https://global.discourse-cdn.com/meta/original/3X/2/d/2d060e4a585c11b36bd976ab382b3196a384ef77.webp)

This new loading indicator is now the default. The old `spinner` is planned to be removed in the near future, but remains an option for the time being by changing the `page_loading_indicator` site setting from `slider` to `spinner`. Admins on sites with the old theme component will be shown a prompt to uninstall it.

## Security Updates

This release includes fixes for these security issues reported by our community and [HackerOne](https://hackerone.com/discourse).

- limit amount of links in custom sidebar section [CVE-2023-36818  
 ](https://github.com/discourse/discourse/security/advisories/GHSA-gxqx-3q2p-37gm)
- Don’t reuse CSP nonce between requests [CVE-2023-36473](https://github.com/discourse/discourse/security/advisories/GHSA-9f52-624j-8ppq)
- ensure topic is valid before updating category [CVE-2023-36466](https://github.com/discourse/discourse/security/advisories/GHSA-4hjh-wg43-p932)
- ReDoS vulnerability in URI gem [Ruby CVE-2023-36617](https://www.ruby-lang.org/en/news/2023/06/29/redos-in-uri-CVE-2023-36617/)

---

<div class="post-metadata">

### Author: ![rishabh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rishabh/32/179446_2.png) [@rishabh](https://meta.discourse.org/u/rishabh)
#### Post date: [July 11, 2023, 11:21pm UTC](https://meta.discourse.org/t/3-1-0-beta6-threads-in-chat-image-grid-export-chat-messages-and-more/270337/2 "2023-07-11T23:21:55Z")

</div>

### 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

### discourse-ai

#### New Features

- Try to hone search so it reduces search terms in subsequent rounds
- Add ai\_bot\_enabled\_chat commands and tune search
- Add Azure cognitive service support
- Add full bot support for GPT 3.5

#### Bug Fixes

- Typo while updating a section
- Claude’s max\_tookens\_to\_sample is a required field
- Adjust token limits to account for functions
- Avoid storing corrupt prompts
- OpenAI Tokenizer was failing to truncate mid emojis
- Serialize channel title for DMs

### discourse-akismet

#### Bug Fixes

- Delete reviewable when posts are deleted by user destroyer class.

### discourse-assign

#### Bug Fixes

- Sum assignments for group and group users

### discourse-automation

#### New Features

- Add first accepted answer triggerable to user global notice

### discourse-cakeday

#### UX Changes

- Add birthday cake icon when adding link to sidebar

### discourse-calendar

#### Bug Fixes

- Add missing Malaysia holidays for 2023

### discourse-category-experts

#### Bug Fixes

- Pass variables into plugin outlet correctly

### discourse-client-performance

#### New Features

- Report INP target selector
- Collect ‘interaction next paint’ metric

#### Bug Fixes

- Use correct script path on subfolder installations

### discourse-code-review

#### Bug Fixes

- Approval topic lists

### discourse-data-explorer

#### Bug Fixes

- Scheduled PM with [Data Explorer](https://meta.discourse.org/t/32566?silent=true) Results not sending PM

### discourse-docs

#### New Features

- Use the same structure as core topic-list-item and add topic excerpts to docs index

#### Bug Fixes

- Update user status test

### discourse-gamification

#### New Features

- Make scores click link to global leaderboard (both in user profile and user card)

#### Bug Fixes

- Score recalculation didn’t update a user daily score if new score was 0

### discourse-invite-tokens

#### Bug Fixes

- Use correct plugin name

### discourse-patreon

#### UX Changes

- Add missing font awesome icon in login button

### discourse-post-voting

#### Bug Fixes

- Handle empty topic views

### discourse-solved

#### Bug Fixes

- Search bug for status:unsolved returns topics from non-solution enabled categories

### discourse-tooltips

#### UX Changes

- Don’t show tooltips when no text is available

## All Features and Fixes

### New Features

- Show tooltip for bootstrap mode
- Warn about outdated translation overrides in admin dashboard
- Separated ‘trusted users can edit others’ setting for trust level 3 & 4
- Add default site settings to control the defaults of navigation menu preferences
- Basic support for [threads.net](http://threads.net) onebox
- Enable loading slider by default
- New jump to channel menu
- Introduce ‘loading slider’ for page navigations
- Allow user to override watched\_precedence\_over\_muted setting
- Use rich user status tooltip everywhere
- Allows to enable/disable threading in UI
- Track last\_viewed\_at datetime for channel members
- Show available interpolation keys when overriding translations
- Sort thread list by unread threads first
- Conditionally change back button route for thread
- New watched\_precedence\_over\_muted setting
- Try to load plugin gems platform variants
- Show first notification tip to all users
- Add hooks for email poller plugins
- Display commit hash for each plugin on `/admin/plugins` page.
- Add dropdown to filter by selected in edit nav menu modal
- Split navigation preference for count and behavior of sidebar links
- Add db:resize:notification\_id task for growing table
- Export chat messages to CSV file
- Add deslect all and reset to defaults btn edit nav menu modal
- Add input filter for editing tags in navigation menu modal
- Add modal for editing tags in navigation menu
- Scroll to first message when clicking date in chat
- Enable image grid by default
- Allow users to manually track threads without replying
- Thread indicator improvements and participants
- Implement max\_tags\_per\_email\_subject

### Bug Fixes

- Conditionally hide `Add Alternate Email` button based on site setting
- Default parameter recipients to create new message via params must be a string
- Update remaining backup code count after creation
- Ensure dialogs are still rendered if triggered during boot
- Makes chat user avatar show presence by default
- Always clear caches after committing the current transaction
- Typo in property name
- Don’t use etags for post-upload verification
- Show preview of Arial/System font in wizard
- Track thread in UI when user sends first message
- Can’t dismiss new topics for experimental new new view
- Don’t redirect when manually adding 2fa
- Correctly makes dm creator to follow channel
- Set test transaction to before\_all transaction
- Do not attempt to focus topic-list-item after destroy
- Removes discourse-teams-sidebar support
- Limits legacy sidebar height
- Add missing chat translations
- Mark threads read when threading enabled for a channel
- Show replies count on thread indicator regardless of participants
- Avoid transitioning when a chat thread component is destroyed
- Post alerter notification when topic directly watched
- Better handling of deleted thread original messages
- Prevent field name conflicts when using the `groups_for_users_search` modifier
- More consistent composer focus and replying indicator
- Do not filter on category name
- Correctly show unread and presence
- Error when loading a channel with threading enabled but no threads
- Mobile share canonical URL
- Minor Twitter onebox improvements
- Correctly intercept ``\<a href target=“\_self”`
- Allow to use `%h%m%s` for youtube `t` param
- Improve performance of post alerter job
- Tags in tag groups not shown in edit nav menu tags modal
- Preload fonts before rerendering wizard style canvas
- ActiveModel::Types :array load error in production
- Revert uppy aws-s3 upgrade
- Do not follow redirects for twitter oneboxes
- Consistent sidebar section external links
- Fix normalize\_raw method for nil inputs in migration scripts
- DateTimeInputRange should show correct intervals with @relativeDate param
- A mobile header regression in 9cc2b5c
- Error when CategoryList tried to find relevant topics
- Chat threads N1
- Set `Jobs::BackfillSidebarSiteSettings` cluster concurrency to 1
- Nest theme translation data so it saves
- Cater for polls that can have multiple votes per user
- Hide “Save Draft” button when editing post on same topic.
- Abort transition when `transition.from` present on new-topic route
- Render plugin’s commit URL correctly and open in new window.
- Show tag chooser in composer for PM on mobile
- Longer touch for active message
- Sidebar dot color when chat is off
- Attempt to reconnect to server when browser visibilty changes
- Use Twitter API v2 for oneboxes and restore OpenGraph fallback
- Force ordering to make things more consistent and fix flaky test
- Staged user creation loses user custom field data
- Site’s top tags not shown for anonymous user
- Update unread and new count for categories
- ‘in all topics’ should search in all topics
- Don’t error when clicking on a custom link in community section
- Add aria-label attribute to cooked hashtags
- Make the arrow and tooltip background the same color
- Theme translations resetting on save
- Don’t add “Re:” prefix in email subject for first post of group PMs.
- Broken group messages inboxes when group name is mixed case
- Small bug with topics and my posts translations
- Incompatibility between default\_composer\_category and default\_subcategory\_on\_read\_only\_category
- Restore behavior of `window.Discourse`
- Correctly sets and uses has-reply class
- Css class was incorrect
- Various mobile chat improvements
- Direct message channels can be flagged
- Allows selection of messages in threads
- Minor thread indicator issue
- De-duplicate poll vote on user merge
- Rename everything link to topics
- Update sidebar to be navigation menu
- Moderator(non-admin staff user) group visibility scope queries
- Don’t add the no-text class if translatedLabel is present
- Correctly get the topic\_id from the first post
- Update workbox class references following version bump
- Allow half-merged user to be accessed in admin UI
- Backfill chat thread memberships

### UX Changes

- Improve user tips
- Double scroll fix for keyboard shortcuts modal
- Remove section heading for community section
- Lower border radius for channel cards
- Fix margin for group label
- Indicate main sidebar section is always public
- Change z-index of thread resizer to be below emoji popup
- Message creator spacing and sizing on mobile + fix text wrapping
- Do not show presence in message creator selection
- Clarify “disable tags/category notification” settings
- Adjust sidebar modal styles, consolidate css
- Improve position of modal close button
- Thread indicator small fixes
- Visual indicator for reorder sidebar links mode
- Make template fields fill the container width
- Use modals to edit categories and tags that appear in sidebar
- Align chat separators, increase mobile chat width
- Add max-width to thread indicator
- Fix position of filters in edit categories/tags nav menu modals
- Order categories in edit navigation menu modal by name
- Fix user preference `saved!` position
- Chat message thread indicator improvements
- Adding max height to image in chat blockquote
- Fix overridden setting highlight color
- Fix edit tags/categories navigation menu modal has no focus on input
- Adds small delay before making message active
- Display spinner while loading tags for edit nav menu tags modal
- Remove horizontal scroll on mobile for edit categories nav modal
- Remove short topic timeline transition
- Fix avatar selector overflow
- Consistent button hover transitions
- Improve defaults shown for categories and tags section in sidebar
- Softer dropdown and menu panel shadows
- Stack group inbox label horizontally
- Hide sidebar on invites page
- Remove branded blobs background
- Add required indicator to fields with `required` validation

### Performance

- Paginate loading of tags in edit nav menu tags modal
- Fixes multiple N+1 while loading threads
- Limit anonymization to 1 per cluster
- Increase performance of large csv exports for User Histories

### Accessibility

- Don’t output `aria-labelledby` when card is empty
- Adjust contrast and font size for mini profiler widget
- Adjust contrast for the Dark and Solarized Dark tertiary color schemes
