# 3.4.0.beta2: Better pageview metrics, multiple category moderator groups, watch chat threads, and more

**URL:** https://meta.discourse.org/t/3-4-0-beta2-better-pageview-metrics-multiple-category-moderator-groups-watch-chat-threads-and-more/329340
**Category:** Announcements
**Tags:** release-notes
**Created:** [October 7, 2024, 4:30am UTC](https://meta.discourse.org/t/3-4-0-beta2-better-pageview-metrics-multiple-category-moderator-groups-watch-chat-threads-and-more/329340 "2024-10-07T04:30:19Z")
**Posts on this page:** 1
**Showing post:** 3

<div class="post-metadata">

### Author: ![nat](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nat/32/235063_2.png) [@nat](https://meta.discourse.org/u/nat)
#### Post date: [October 7, 2024, 4:39am UTC](https://meta.discourse.org/t/3-4-0-beta2-better-pageview-metrics-multiple-category-moderator-groups-watch-chat-threads-and-more/329340/3 "2024-10-07T04:39:52Z")

</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-activity-pub

#### Bug Fixes

- Adding tags in admin UI ([116](https://github.com/discourse/discourse-activity-pub/pull/116))
- Support multiple moderation groups on category ([114](https://github.com/discourse/discourse-activity-pub/pull/114))

#### Performance

- Static id for like post action type ([112](https://github.com/discourse/discourse-activity-pub/pull/112))

### discourse-ai

#### New Features

- Allows forced LLM tool use ([818](https://github.com/discourse/discourse-ai/pull/818))
- Allow llm triage to automatically hide posts ([820](https://github.com/discourse/discourse-ai/pull/820))
- Add Ollama provider ([812](https://github.com/discourse/discourse-ai/pull/812))
- RAG search within tools ([802](https://github.com/discourse/discourse-ai/pull/802))
- Basic support for GPT-o models ([804](https://github.com/discourse/discourse-ai/pull/804))
- Make tool support polymorphic ([798](https://github.com/discourse/discourse-ai/pull/798))
- Add a SambaNova LLM provider ([797](https://github.com/discourse/discourse-ai/pull/797))
- Disable rate limiting when skipping hyde ([793](https://github.com/discourse/discourse-ai/pull/793))
- More accurate and faster titles ([791](https://github.com/discourse/discourse-ai/pull/791))
- API scope for semantic search ([785](https://github.com/discourse/discourse-ai/pull/785))
- Smooth streaming animation for summarization ([778](https://github.com/discourse/discourse-ai/pull/778))
- Improve site setting search ([780](https://github.com/discourse/discourse-ai/pull/780))
- Initial support for seeded LLMs ([756](https://github.com/discourse/discourse-ai/pull/756))
- Allow embedding based search without hyde ([777](https://github.com/discourse/discourse-ai/pull/777))
- Triage rule can skip posts created via email ([775](https://github.com/discourse/discourse-ai/pull/775))

#### Bug Fixes

- AI Helper not visible on iPads ([805](https://github.com/discourse/discourse-ai/pull/805))
- Diff modal closing along with composer menu on mobile ([803](https://github.com/discourse/discourse-ai/pull/803))
- Keyboard shortcut should be platform specific ([801](https://github.com/discourse/discourse-ai/pull/801))
- Support case insensitive setting lookup ([795](https://github.com/discourse/discourse-ai/pull/795))
- Display cached summaries with our new streamer. ([792](https://github.com/discourse/discourse-ai/pull/792))
- Bail earlier when a chat thread has no messages ([789](https://github.com/discourse/discourse-ai/pull/789))
- Correctly display errors when parent module needs to be disabled first ([788](https://github.com/discourse/discourse-ai/pull/788))
- Coerce value before downcasing the hyde param ([787](https://github.com/discourse/discourse-ai/pull/787))
- We were never reindexing old content ([786](https://github.com/discourse/discourse-ai/pull/786))
- Prevent proofreading when there is no content ([779](https://github.com/discourse/discourse-ai/pull/779))

#### UX Changes

- Update icon and text for copying message ([815](https://github.com/discourse/discourse-ai/pull/815))
- Move templates to main LLM config tab, restyle ([813](https://github.com/discourse/discourse-ai/pull/813))
- AI composer helper z-index issue ([809](https://github.com/discourse/discourse-ai/pull/809))
- Take composer height into account when calculating the max-height for topic summary ([806](https://github.com/discourse/discourse-ai/pull/806))
- Improve toast message location ([800](https://github.com/discourse/discourse-ai/pull/800))
- AI post helper DMenu styling ([770](https://github.com/discourse/discourse-ai/pull/770))
- Replace “share” with “share-alt” icon ([784](https://github.com/discourse/discourse-ai/pull/784))
- Summary container should be fixed instead of growing ([783](https://github.com/discourse/discourse-ai/pull/783))

#### Performance

- Speed up spec ([794](https://github.com/discourse/discourse-ai/pull/794))

### discourse-assign

#### Bug Fixes

- If a group is deleted also remove assignments ([592](https://github.com/discourse/discourse-assign/pull/592))

### discourse-calendar

#### UX Changes

- Prioritize events with high participant counts ([610](https://github.com/discourse/discourse-calendar/pull/610))
- Allow event time to be hidden if desired ([606](https://github.com/discourse/discourse-calendar/pull/606))

#### Security Changes

- Fix XSS in calendar event name ([607](https://github.com/discourse/discourse-calendar/pull/607))

### discourse-category-experts

#### New Features

- Added Category Experts unapproved post WebHook Event ([161](https://github.com/discourse/discourse-category-experts/pull/161))
- Added Category Experts approved WebHook Event ([156](https://github.com/discourse/discourse-category-experts/pull/156))

#### Bug Fixes

- New post sending unapproved post webhook event ([162](https://github.com/discourse/discourse-category-experts/pull/162))

### discourse-chat-integration

#### New Features

- Add chat integration reference post ([216](https://github.com/discourse/discourse-chat-integration/pull/216))

#### Bug Fixes

- Adjust `full_url` method in `ChatIntegrationReferencePost` to return the correct URL ([220](https://github.com/discourse/discourse-chat-integration/pull/220))
- Revert chat-integration move to discourse-automation ([219](https://github.com/discourse/discourse-chat-integration/pull/219))
- Revert chat-integration move to discourse-automation ([214](https://github.com/discourse/discourse-chat-integration/pull/214))

### discourse-data-explorer

#### UX Changes

- Automatically convert to lowercase in explorer-schema ([325](https://github.com/discourse/discourse-data-explorer/pull/325))

### discourse-encrypt

#### Bug Fixes

- Add missing event handler ([336](https://github.com/discourse/discourse-encrypt/pull/336))
- Errors may be null-ish ([334](https://github.com/discourse/discourse-encrypt/pull/334))

### discourse-gamification

#### UX Changes

- Convert admin leaderboard forms to FormKit ([157](https://github.com/discourse/discourse-gamification/pull/157))

### discourse-livestream

#### New Features

- Add update to chatable when topic category changes ([33](https://github.com/discourse/discourse-livestream/pull/33))

### discourse-patreon

#### Bug Fixes

- Use current Patreon logo for social login ([145](https://github.com/discourse/discourse-patreon/pull/145))

### discourse-reactions

#### Performance

- Remove unnecessary ‘includes’ call ([309](https://github.com/discourse/discourse-reactions/pull/309))

### discourse-salesforce

#### Bug Fixes

- Use correct user\_id field from return auth result ([90](https://github.com/discourse/discourse-salesforce/pull/90))
- Remove incorrectly added ‘App not approved’ message ([89](https://github.com/discourse/discourse-salesforce/pull/89))

### discourse-saml

#### Security Changes

- Upgrade ruby-saml to 1.17.0 which fix CVE-2024-45409 ([104](https://github.com/discourse/discourse-saml/pull/104))

### discourse-solved

#### Bug Fixes

- Support multiple moderation groups on category ([307](https://github.com/discourse/discourse-solved/pull/307))

### discourse-staff-alias

#### Bug Fixes

- Convert type in whisper params ([75](https://github.com/discourse/discourse-staff-alias/pull/75))

### discourse-subscriptions

#### Bug Fixes

- Redirect to the pricing table page when enabled ([239](https://github.com/discourse/discourse-subscriptions/pull/239))
- Payments not showing up for users ([233](https://github.com/discourse/discourse-subscriptions/pull/233))
- Create customer for one off pricing table purchases ([232](https://github.com/discourse/discourse-subscriptions/pull/232))

### discourse-translator

#### New Features

- Add ProblemCheck for google ([167](https://github.com/discourse/discourse-translator/pull/167))

### discourse-zoom

#### New Features

- Add Zoom description and location to Google Calendar ([87](https://github.com/discourse/discourse-zoom/pull/87))

### docker\_manager

#### Bug Fixes

- Remove `\<3.4.0.beta1 version pin ([241](https://github.com/discourse/docker_manager/pull/241))

#### UX Changes

- Suppress pnpm upgrade notifications in build logs ([240](https://github.com/discourse/docker_manager/pull/240))

## All Features and Fixes

### New Features

- Limit client side image compression on Safari to version \>`= 18 ([28373](https://github.com/discourse/discourse/pull/28373))
- Improve the suppression for admins when required ([29041](https://github.com/discourse/discourse/pull/29041))
- Supports mark tag in chat messages ([28949](https://github.com/discourse/discourse/pull/28949))
- Increasing name length in automation ([28945](https://github.com/discourse/discourse/pull/28945))
- Add ability to dismiss admin notices ([28916](https://github.com/discourse/discourse/pull/28916))
- Allow names in chat channel title ([28843](https://github.com/discourse/discourse/pull/28843))
- Toolbar API supports custom action for keyboard shortcuts ([28883](https://github.com/discourse/discourse/pull/28883))
- Add setting to exclude groups from /about page ([28809](https://github.com/discourse/discourse/pull/28809))
- Convert chat plugin UI to new show plugin and admin UI guidelines ([28632](https://github.com/discourse/discourse/pull/28632))
- Switch to new methods of pageview measurement and reporting ([28729](https://github.com/discourse/discourse/pull/28729))
- Added Category Experts unapproved post WebHook Event ([28802](https://github.com/discourse/discourse/pull/28802))
- Log tag group changes in staff action log ([28787](https://github.com/discourse/discourse/pull/28787))
- Only play chat sound when chat badge icon is shown ([28387](https://github.com/discourse/discourse/pull/28387))
- Add user to topic\_tags\_changed event ([28714](https://github.com/discourse/discourse/pull/28714))
- Add ‘Edit this page’ link at the top of the new /about page ([28766](https://github.com/discourse/discourse/pull/28766))
- Support designating multiple groups as mods on category ([28655](https://github.com/discourse/discourse/pull/28655))
- Added Category Experts approved WebHook Event ([28525](https://github.com/discourse/discourse/pull/28525))
- Add ability to watch chat threads ([28639](https://github.com/discourse/discourse/pull/28639))
- Post created/edited trigger can skip posts created via email ([28615](https://github.com/discourse/discourse/pull/28615))

### Bug Fixes

- Skips caching a generated secret key base token if `skip_redis` is true. ([29029](https://github.com/discourse/discourse/pull/29029))
- Import script didn’t set `public` attribute of polls ([28864](https://github.com/discourse/discourse/pull/28864))
- Create an automation with forced\_triggerable enabled ([29030](https://github.com/discourse/discourse/pull/29030))
- Fix broken client-side review actions ([29025](https://github.com/discourse/discourse/pull/29025))
- Unscoped plugin config page actions outlet ([29026](https://github.com/discourse/discourse/pull/29026))
- Custom flag name should be unique ([28869](https://github.com/discourse/discourse/pull/28869))
- Permanent delete of posts by deleted users ([28992](https://github.com/discourse/discourse/pull/28992))
- Don’t raise on some search terms
- .badge-posts alignment on mobile glimmer topic list ([28959](https://github.com/discourse/discourse/pull/28959))
- Appropriately handle uninstalled problem checks ([28771](https://github.com/discourse/discourse/pull/28771))
- Show topic admin menu if can\_split\_merge\_topic ([28937](https://github.com/discourse/discourse/pull/28937))
- Prevents user status selection in mentions ([28944](https://github.com/discourse/discourse/pull/28944))
- Support getters in hbr `#each` context ([28941](https://github.com/discourse/discourse/pull/28941))
- Retry updating webview background color ([28912](https://github.com/discourse/discourse/pull/28912))
- Prevent recurring automations from getting stalled under specific conditions ([28913](https://github.com/discourse/discourse/pull/28913))
- Don’t show move topic for private messages for TL4 ([28871](https://github.com/discourse/discourse/pull/28871))
- Error when moving the group default notification state ([28910](https://github.com/discourse/discourse/pull/28910))
- Remove anonymous users from users directory ([28892](https://github.com/discourse/discourse/pull/28892))
- Flaky system admin flags specs ([28873](https://github.com/discourse/discourse/pull/28873))
- Exclude inactive and silenced users from /about page stats ([28877](https://github.com/discourse/discourse/pull/28877))
- Regression in short description in admin badges page ([28884](https://github.com/discourse/discourse/pull/28884))
- Support date field in FormKit page object ([28872](https://github.com/discourse/discourse/pull/28872))
- Incorrect titles in two components ([28865](https://github.com/discourse/discourse/pull/28865))
- Align bulk award button with the other header action buttons ([28859](https://github.com/discourse/discourse/pull/28859))
- Use a custom prefix for custom flags ([28839](https://github.com/discourse/discourse/pull/28839))
- Errors may be null-ish ([28826](https://github.com/discourse/discourse/pull/28826))
- Poll voters list wasn’t expanding properly ([28823](https://github.com/discourse/discourse/pull/28823))
- Form template limit validation ([28791](https://github.com/discourse/discourse/pull/28791))
- Poll preview list styling remove redundant bullets ([28592](https://github.com/discourse/discourse/pull/28592))
- Prevent chat channel not found ajax error ([28818](https://github.com/discourse/discourse/pull/28818))
- Add “in:first” to user summary category search ([28688](https://github.com/discourse/discourse/pull/28688))
- Prevent layout shift caused by locale description length ([28807](https://github.com/discourse/discourse/pull/28807))
- Remove breaking super call in scroll-tracker component ([28810](https://github.com/discourse/discourse/pull/28810))
- Open file handles ‘just in time’ during s3 migration ([28806](https://github.com/discourse/discourse/pull/28806))
- Replace shield-blank with shield-halved for font awesome ([28804](https://github.com/discourse/discourse/pull/28804))
- Requested changes from dev ([28784](https://github.com/discourse/discourse/pull/28784))
- Reset cache after flags are seed ([28801](https://github.com/discourse/discourse/pull/28801))
- Supports groups field in post\_created\_edited ([28783](https://github.com/discourse/discourse/pull/28783))
- Supports groups field in post\_created\_edited ([28773](https://github.com/discourse/discourse/pull/28773))
- Add traffic info footer to the new /about page ([28779](https://github.com/discourse/discourse/pull/28779))
- Toggle chat drawer on channel thread list ([28759](https://github.com/discourse/discourse/pull/28759))
- Creating an automation without script should error ([28752](https://github.com/discourse/discourse/pull/28752))
- Ensures message field is rendering placeholders ([28753](https://github.com/discourse/discourse/pull/28753))
- Don’t let static pages overflow on some devices ([28751](https://github.com/discourse/discourse/pull/28751))
- Don’t use post ID as timeline collapse delay ([28712](https://github.com/discourse/discourse/pull/28712))
- Passkey login when Discourse used as SSO provider ([28672](https://github.com/discourse/discourse/pull/28672))
- Prevents PM to large groups ([28681](https://github.com/discourse/discourse/pull/28681))
- Return proper results when searching for a topic in Japanese
- Keep the original URLParams in navigation item ([28696](https://github.com/discourse/discourse/pull/28696))
- Ensures global notices are destroyed on post created ([28684](https://github.com/discourse/discourse/pull/28684))
- Ensures default required validator handles 0 ([28686](https://github.com/discourse/discourse/pull/28686))
- Correctly pass updateGroupings to the modal ([28683](https://github.com/discourse/discourse/pull/28683))
- Mini-profiler CSP nonce when in report-only mode ([28664](https://github.com/discourse/discourse/pull/28664))
- Chat emoji picker positioning ([28643](https://github.com/discourse/discourse/pull/28643))
- Chat mailer log noise ([28616](https://github.com/discourse/discourse/pull/28616))
- Change `eq` to `match_array` in `topic_tags_changed_spec.rb` to solve flaky test ([28640](https://github.com/discourse/discourse/pull/28640))
- Ensure About#stats uses the cache ([28634](https://github.com/discourse/discourse/pull/28634))
- Use `.login-right-side` instead of `.has-alt-auth` ([28628](https://github.com/discourse/discourse/pull/28628))
- Do not enforce 2fa when an account is created with OAuth ([28625](https://github.com/discourse/discourse/pull/28625))
- Correctly filter user bookmarks ([28612](https://github.com/discourse/discourse/pull/28612))
- Restore `propertyEqual` following native-class conversions ([28605](https://github.com/discourse/discourse/pull/28605))
- Correctly render ace editor in FormKit ([28601](https://github.com/discourse/discourse/pull/28601))
- Poll ensure ranked choice results can handle options with rich text and links ([28195](https://github.com/discourse/discourse/pull/28195))
- Sum pageviews with number instead of string ([28596](https://github.com/discourse/discourse/pull/28596))
- Flaky flags spec ([28591](https://github.com/discourse/discourse/pull/28591))
- Correctly apply translate mod key ([28520](https://github.com/discourse/discourse/pull/28520))

### UX Changes

- Improve bottom padding to chat index on mobile ([29086](https://github.com/discourse/discourse/pull/29086))
- Chat index mini refactor ([29082](https://github.com/discourse/discourse/pull/29082))
- Change twitter share link to X ([29056](https://github.com/discourse/discourse/pull/29056))
- Prevent user stream title from overflowing page ([29032](https://github.com/discourse/discourse/pull/29032))
- Add label for delete own post button in review queue ([28991](https://github.com/discourse/discourse/pull/28991))
- Proper description of the `allowed_iframes` setting ([28997](https://github.com/discourse/discourse/pull/28997))
- Minor admin mobile fixes ([29028](https://github.com/discourse/discourse/pull/29028))
- Remove alias from chat direct message channel titles ([28958](https://github.com/discourse/discourse/pull/28958))
- Chat composer style tweaks ([28938](https://github.com/discourse/discourse/pull/28938))
- Small colour change to chat composer insert button ([28904](https://github.com/discourse/discourse/pull/28904))
- Sort chat channels by activity in desktop drawer ([28822](https://github.com/discourse/discourse/pull/28822))
- Upodate stying of chat composer focused state ([28900](https://github.com/discourse/discourse/pull/28900))
- Add link to bootstrap mode docs ([28898](https://github.com/discourse/discourse/pull/28898))
- Link to sections in getting started guide ([28882](https://github.com/discourse/discourse/pull/28882))
- Tell 1Password to ignore the link name input ([28559](https://github.com/discourse/discourse/pull/28559))
- Fix confusing “claim reviewable” positioning ([28870](https://github.com/discourse/discourse/pull/28870))
- Fix admin report filter stacking ([28875](https://github.com/discourse/discourse/pull/28875))
- Fix double li-element in mobile list control ([28840](https://github.com/discourse/discourse/pull/28840))
- Update banner to handle responsive images with aspect ratio scaling ([28825](https://github.com/discourse/discourse/pull/28825))
- Prevent a focus-visible outline on mobile ([28815](https://github.com/discourse/discourse/pull/28815))
- Hide ‘other’ and ‘crawler’ site traffic on report page ([28817](https://github.com/discourse/discourse/pull/28817))
- Add learn more URL for admin flags page ([28816](https://github.com/discourse/discourse/pull/28816))
- Add a description on the about config area ([28790](https://github.com/discourse/discourse/pull/28790))
- Upgrade to fontawesome 6.6.0 ([28778](https://github.com/discourse/discourse/pull/28778))
- Fix wizard link in getting started guide ([28768](https://github.com/discourse/discourse/pull/28768))
- Remove btn-default class from chat thread tracking dropdown ([28789](https://github.com/discourse/discourse/pull/28789))
- Apply the admin page header component ([28767](https://github.com/discourse/discourse/pull/28767))
- Change organization alert type from error to info ([28762](https://github.com/discourse/discourse/pull/28762))
- Add links to getting started check list ([28761](https://github.com/discourse/discourse/pull/28761))
- Update chat channel sorting ([28760](https://github.com/discourse/discourse/pull/28760))
- Fix spacing of emoji in chat channel title ([28756](https://github.com/discourse/discourse/pull/28756))
- Chat drawer increase unread channel visibility ([28731](https://github.com/discourse/discourse/pull/28731))
- Apply admin UI to Badges ([28724](https://github.com/discourse/discourse/pull/28724))
- Update Chat Group Name and Placeholder ([28703](https://github.com/discourse/discourse/pull/28703))
- Update post\_menu and post\_menu\_hidden\_items copy ([28723](https://github.com/discourse/discourse/pull/28723))
- Avoid flashing error when loading form template ([28700](https://github.com/discourse/discourse/pull/28700))
- Adjustments for the about page banner image ([28692](https://github.com/discourse/discourse/pull/28692))
- Change admin plugins list to follow UI guidelines ([28478](https://github.com/discourse/discourse/pull/28478))
- Add descriptions to auto groups and auto group indicator ([28630](https://github.com/discourse/discourse/pull/28630))
- Change usercard selector to new identifier ([28641](https://github.com/discourse/discourse/pull/28641))
- Add progress bar to the registration flow ([27694](https://github.com/discourse/discourse/pull/27694))
- Add group link to category permission row ([28560](https://github.com/discourse/discourse/pull/28560))
- Fix spacing in topic map views menu ([28583](https://github.com/discourse/discourse/pull/28583))

### Security Changes

- Prevent topic list filtering by hidden tags for unathorized users
- Block registrations for encoded emails that are invalid
- Add pagination to post replies
- Correctly parse URLs in chat excerpts

### Performance

- Cache serialized voters at topic view level ([28894](https://github.com/discourse/discourse/pull/28894))
- Update migration to drop index concurrently. ([28955](https://github.com/discourse/discourse/pull/28955))
- Drop `user_search_similar_results` site setting ([28874](https://github.com/discourse/discourse/pull/28874))
- Use insertText more efficiently in `replaceText` ([28880](https://github.com/discourse/discourse/pull/28880))
- Preload user options when status is enabled ([28827](https://github.com/discourse/discourse/pull/28827))
- Preload voters\_count and has\_voted ([28808](https://github.com/discourse/discourse/pull/28808))
- Don’t do initialization for every DB if RAILS\_DB is set ([28668](https://github.com/discourse/discourse/pull/28668))

### Accessibility

- Add aria-label to user profile link in topic list ([29088](https://github.com/discourse/discourse/pull/29088))
- Announce “link copied!” confirmation for screen readers ([29058](https://github.com/discourse/discourse/pull/29058))

---

_[View the full topic](https://meta.discourse.org/t/3-4-0-beta2-better-pageview-metrics-multiple-category-moderator-groups-watch-chat-threads-and-more/329340)._
