3.4.0.beta3: Check for updates on What’s New page, filter by user in the review queue, threading in Chat DMs and group chats, and more

New features in 3.4.0.beta3

Check for updates on What’s New page

In the What’s New page within the admin settings there is a new Check for updates button. This allows admins to check for any new updates to this page immediately.

Filter by user in the review queue

Admins can now use the filter Flagged by in the review queue to see all the flagged content a user raised.

Threading in Chat DMs and group chats

Threading from Chat channels, is now also available in DMs and group chats. Enable Threading in Chat settings for DMs and group chats so any reply to a message will create a separate conversation thread

Mention counts in Chat threads

With this change new messages within a Chat thread will appear as a mention count on the thread itself alongside the Chat channel, Chat icon, and user notification.

Simplified invites

The process of inviting users is friendlier and easier to use. Creating an invite link now takes one click (editing link options are still available). Learn more…

Redesigned /about page

The About page has a new look, and is easier to customize. Via a new admin page linked from the page itself, you can add a banner, site summary and description, and specify how you would like to be contacted. Site activity is presented better and can optionally include EU specific visitor statistics. Learn more…

Restricting profile visibility of low Trust level users

We have introduced the following changes for low Trust level (TL) users to prevent abuse of user profile bios and other fields.

  • Anonymous, TL0 and TL1 users cannot see any user profiles for users with 0 posts except for staff users
  • Anonymous and TL0 users can only see profiles of TL1 users and above

Security Updates

This release includes fixes for these security issues reported by our community and HackerOne.

14 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

discourse-activity-pub

New Features

  • Add reject follower action (123)
  • Allow actor preferred username changed (124)
  • Add context resolver (98)

Bug Fixes

  • Prevent whispers from being published (128)
  • Ensure malformed activities do not raise exceptions (122)
  • Ensure JSON without an actor doesn’t throw an exception (119)
  • Ensure discovery nav observes route changes properly (117)
  • Fix flakey move posts spec (118)

discourse-adplugin

Bug Fixes

  • HouseAdsChooser onChange handling (234)

discourse-ai

New Features

  • Link correctly to filters to assist in debugging spam (1031)
  • Add periodic problem checks for each LLM in use (1020)
  • Unavailable state for semantic search when sort is not Relevant (1030)
  • Show gists everywhere except suggested/related (995)
  • Add AI-powered spam detection for new user posts (1004)
  • First class support for OpenRouter (1011)
  • Select stop sequences from triage script (1010)
  • Amazon Nova support via bedrock (997)
  • Backfill posts sentiment. (982)
  • Allow artifacts to be updated (980)
  • Adjustments to gist summaries (988)
  • Exclude muted categories from category suggester (979)
  • AI Usage page (964)
  • Skip PM scanning in LLM triage by default (966)
  • Calculate gists from non hot topics too (958)
  • LLM mentions and auto silence (949)
  • Add links to filtered emotion view on emotion dashboard table (953)
  • Refinements to Emotion in dashboard (947)
  • Add locale detection prompt from translator (946)
  • Make emotion /filter ordering match the dashboard table (939)
  • Enable gists on all topic lists (922)
  • Emotion activity metrics table (916)
  • Add support for Mistral models (919)
  • AI artifacts (898)
  • Order by emotion on /filter (913)
  • Partial tool call support for OpenAI and Anthropic (908)
  • Truncate AI Captions to a reasonable max size (907)
  • Improve tool support (904)
  • Extend summary backfill to also generate gists (896)
  • Automatically backfill regular summaries. (892)
  • Support custom instructions for persona streaming (890)
  • Double gist length to 40 words (888)
  • New endpoint for directly accessing a persona (876)
  • Fast-track gist regeneration when a hot topic gets a new post (860)
  • Support srv records for OpenAI compatible LLMs (865)
  • Allow scoping of google tool queries (852)
  • Better logging for automation reports (853)
  • Improve visibility of AI usage in LLM page (845)
  • Make hot topic gists opt-in. (846)
  • Generate topic gists for the hot topics list. (837)
  • Discord Bot integration (831)
  • Smarter persona tethering (832)
  • Index embeddings using bit vectors (824)
  • Tools for models from Ollama provider (819)
  • Allow persona to only force tool calls on limited replies (827)
  • Support chain halting and upload creation support (821)

Bug Fixes

  • Make sure gists are atleast five minutes old before updating them (1029)
  • Get strategy version through vector_rep (1028)
  • Allow scanning of trashed posts and deleted users for test (1024)
  • Triage rule should append selected tags instead of replacing them (1022)
  • Gemini inference client was missing #instance (1019)
  • Make sure prompt uploads get included in the prompt when triaging (1008)
  • Close link in shared conversation model (1007)
  • Change how we filter date for emotion on /filter (1006)
  • Make sure limits are updated and applied on each step (1002)
  • Typo in topic gist for escapedExcerpt (1003)
  • Add a digest check to avoid repeteadly generating embeddings (bulk) (1001)
  • More resilient sentiment backfill query (998)
  • Regression, no longer sending examples to AI helper (993)
  • AI Automation scripts were broken when using seeded models (991)
  • Tag suggester is suggesting already assigned tags (990)
  • Sentiment classification results needs to be transformed before saving (983)
  • Move count logic to the end for tag suggestions (978)
  • Keep related topics data cached when a user scrolls up (976)
  • Multiple concurrent summaries could result in pg index errors (973)
  • Suggestion menus not showing in mobile (970)
  • Double render error with thumbnail suggestions (968)
  • Fix ordering of random post embeddings backfill (965)
  • Shutdown embeddings thread pool after processing (961)
  • Skip records without content to classify (960)
  • Switch up start/end dates in emotion dashboard report (951)
  • Correctly register ‘info’ icon (950)
  • Unnecessary complex preloading accidentally filters some topics. (945)
  • Disables temporarily ai_summaries filtering (943)
  • Automatically bust cache for share ai assets (942)
  • Properly capture period for /filter emotion ordering (940)
  • Cancel functionality regressed (938)
  • Gists are not html safe (931)
  • Misc fixes for sentiment in the admin dashboard (928)
  • Instruct AR that we want to use ai_summaries for filtering. (927)
  • Reduce scope of topic gists inclusion. (925)
  • Skip gists from PM topic lists (923)
  • Ensure artifacts are sandboxed, even when visited directly (921)
  • Properly bypass CSP for artifacts (920)
  • Move emotion /filter logic into a CTE to keep cardinality sane (915)
  • Results not being reset when appending to query param (912)
  • Do not strip empty string during stream processing (911)
  • Regenerate summary button still shows cached summary (903)
  • Unhide gemini api key setting for embeddings (902)
  • Specify type for Rag upload (895)
  • We must properly encode objects prior to escaping (891)
  • Encode parameters returned from LLMs correctly (889)
  • Truncate OP for gists to help the model focus on the latest posts (883)
  • Ensure replies are never double streamed (879)
  • Make sure that topic gists are displayed ONLY on the hot list. (873)
  • Use present? instead of invalid exists? (869)
  • Change hot gist prompt to avoid title repeating #859 (859)
  • Testing tool was not showing rag results (867)
  • Llm selector / forced tools / search tool (862)
  • Basic cleanup of AI Caption to remove line breaks and pipes (857)
  • Add missing translation (849)
  • Decouple DOM manipulation from SummaryStreamer (844)
  • Don’t regenerate up to date gists (843)
  • Api key header error (839)
  • Remove missed AiPersona.allowed_chat (838)

UX Changes

  • Use new DStatTiles reusable component from core (1025)
  • No admin header for edit personas tools or llms (1021)
  • Improve rough edges of AI usage page (1014)
  • Make sentiment trends more readable (1018)
  • Make sentiment trends more readable in time series data (1013)
  • Ensure composer popup is always above AI icons (1012)
  • Improve layout of inline title editing buttons (1000)
  • Move topic summary from DMenu to DModal (992)
  • no-text style being incorrectly added to tag suggester (987)
  • Fix styling of AI Helper on quick edit (975)
  • Ensure suggestions are left aligned (971)
  • Add table style for LLM list (963)
  • Applying more admin UI guidelines (956)
  • Add emojis to the admin dash emotion table (944)
  • Force long words to break in topic list gists (936)
  • Ensure gists occupy full row (934)
  • Improve artifact styling add direct share link (930)
  • Update gist toggle styles (926)
  • Reduce topic list title size when gists are enabled (910)
  • Increase gist size, and adjust surrounding elements to accommodate (900)
  • Add sparkle icon to related topics for anons (897)
  • In share, use native image dimensions and hide filename (880)
  • Convert AI gist disclosure to a toggle (878)
  • Minor gist optimizations for readability (864)
  • Hide AI bot in seeded LLM (858)
  • Add disclosure for topic list gists (861)
  • Improve seeded LLM edit page (856)
  • Switch gist outlet to avoid badges (855)
  • Adjust gist position, darken unread color (854)
  • Avoid introductory phrases and summarize topics without replies (848)
  • Remove AdminPageSubheader style override (828)

Performance

  • Preload only gists when including summaries in topic list (948)

discourse-assign

New Features

  • Add should_notify option to Assigner#assign (604)
  • Add modifier to assigned count (598)

Bug Fixes

  • Not send notifications when it should never notify assignment (620)
  • Pending_assigns_reminder reminder leaking total assigned topics count (617)
  • An incorrect getter invocation in 0d1045e9887aabb0bbb9316346f688527217da71 (596)
  • Match column types (593)

Performance

  • N+1 when assignments status are enabled (614)

discourse-authentication-validations

Bug Fixes

  • Broken test (29)
  • Update plugin outlet component based on core FormKit conversion (21)

discourse-calendar

New Features

  • Allow users to set a custom title to sidebar calendar (649)
  • Keeps going invitees for recurring events (632)
  • Suppress interested and not going buttons by default (621)
  • Allow event editors to control list of users on the event (614)

Bug Fixes

  • Ensures bulk-invite is working properly (666)
  • Render component on all routes (655)
  • Regressions from modernization (642)
  • Category settings for calendar were incorrect (631)
  • Prevents pushing null watching invitee (629)
  • Correctly set upcoming events key (628)
  • Prevents error if post event node is not found (626)
  • Correctly fill recurrence property (625)
  • Missing localization (624)
  • Correctly render html of event title (623)
  • Shows category calendar on hot/latest (611)

UX Changes

  • Right sidebar UI (657)
  • Render invitees count (663)
  • Post event tweaks (660)
  • Events UI Edits (641)
  • Forces full height of calendar on upcoming events (630)
  • Add upcoming events from recurrence to the category calendar (616)
  • Fix event builder i18n (613)

discourse-category-experts

New Features

  • Support custom field correcting on post_move (183)
  • Add Category-Experts webhook event types (167)

discourse-chat-integration

New Features

  • Allow custom query parameters in Discord webhooks (236)

Bug Fixes

  • Update flaky test in showing error modal (228)
  • Error modal not showing data (225)
  • Message triggering on topic creation (222)

discourse-codebytes-plugin

Bug Fixes

  • Update class references to use textManipulation (33)

discourse-custom-topic-lists

New Features

  • Add RSS feed to custom lists (29)

discourse-data-explorer

New Features

  • Add script to post report results in a topic regularly (328)

Bug Fixes

  • Optionally linkify URL columns server-side (330)

UX Changes

  • Clarify the need for authorized extension (346)

Performance

  • Remove dynamic use of <template> (340)

discourse-doc-categories

Bug Fixes

  • Permalink spec (26)
  • No doc sidebar in admin. (22)
  • Parse text from non-TEXT elements before colon correctly (21)
  • Error while updating the docs sidebar via message bus (17)

discourse-docs

Bug Fixes

  • Don’t error out on non-stringy tags parameter (180)

discourse-encrypt

New Features

  • Add ‘decrypt all PMs’ functionality (347)
  • Allow users to decrypt existing PMs (344)
  • Allow admins to disable the creation of new encrypted PMs (339)

Bug Fixes

  • Deprecation message (362)
  • Use database for original upload filenames when decrypting (349)
  • Decrypting multiple uploads on a single line of the post (348)
  • Do not bump topics when decrypting (346)
  • Decryption on sites with external uploads (345)
  • Do not warn about replies when allow_new_encrypted_pms=false (340)

UX Changes

  • Avoid triggering notifications when decrypting (350)

discourse-follow

Bug Fixes

  • Use split hide profile and presence options (128)

discourse-gamification

New Features

  • Add per-reaction score awarding (95)
  • Added chat-events scoring (96)

discourse-hcaptcha

Bug Fixes

  • Searching for ‘plugin:discourse-hCaptcha’ in admin UI returns no results and Error logging (11)

UX Changes

  • Add meta topic ID to metadata (25)

discourse-openid-connect

New Features

  • PKCE support (86)

discourse-perspective-api

Bug Fixes

  • Ensure it works with form templates (93)

discourse-policy

Bug Fixes

  • Resolve policy footer layout issues on mobile (150)

discourse-prometheus

New Features

  • Tweak postgres_highest_sequence only for int columns (120)
  • Tweak postgres_highest_sequence only for int columns (98)

Bug Fixes

  • Fork collector demon in a safer way. (126)
  • Collector not requiring webrick dependency (125)
  • Revert postgres_highest_sequence metric changes (119)
  • Increase interval for sequence check now that it is a slower check (118)

discourse-reactions

Bug Fixes

  • Undefined method for nil error in PostSerializer#reactions (314)

UX Changes

  • Fix small alignment issue when using the Glimmer Post Menu on mobile mode (320)

Performance

  • Speed up PostSerializer#reactions by avoiding nested loop take 2 (313)
  • Speed up PostSerializer#reactions by avoiding nested loops (312)

discourse-saml

New Features

  • Prevent replay attacks on assertion ids (114)

Bug Fixes

  • Embed signatures in requests when keys are defined (107)

discourse-solved

New Features

  • Add modifier to update the assigned count and exclude solved topics (312)

discourse-solved-reminders-plugin

New Features

  • Link to solved post when sending congratulations PM (12)

Bug Fixes

  • Do not run regular/scheduled jobs unless the plugin is enabled (13)

discourse-steam-login

Bug Fixes

  • Add /gems to .gitignore (97)

discourse-subscriptions

New Features

  • Add support for PLN currency (258)
  • Add support for CHF currency (254)

discourse-theme-creator

Bug Fixes

  • Use new user api client key system in discourse/discourse (100)

discourse-translator

New Features

  • Add DiscourseAi translator (181)
  • Add support for Samoan (sm) and all other languages supported by Microsoft (186)
  • Add max character for translation setting (183)

Bug Fixes

  • Remove a duplicated language entry (191)
  • Also strip anchor tags when detecting language (187)
  • Strips img tags (emojis) when detecting language (182)

Performance

  • Move per-post language detection job into batches using redis (177)

discourse-unhandled-tagger

Bug Fixes

  • Makes handled button reactive to change (27)

discourse-whos-online

Bug Fixes

  • Use split hide profile and presence options (110)

discourse-yearly-review

Bug Fixes

  • Ensure SQL queries are properly sanitized (90)

discourse-zoom

Bug Fixes

  • Correct key in webinar object used for matching the zoom host email to Discourse user (88)

docker_manager

Bug Fixes

  • Minimize database access following db:migrate (247)

UX Changes

  • Status badge tweaks (253)
  • Adjust table to be responsive on mobile (244)

All Features and Fixes

New Features

  • Settings tab for permalinks (30192)
  • Reason and deleted content support in the review queue (30295)
  • Allow pausing of restore before DB migration and uploads are restored (30269)
  • Add support for “Flagged By” filter in reviewable (30197)
  • Add an option to block IPs and emails to bulk user delete (29993)
  • Restrict profile visibility of low-trust users (29981)
  • Bump DM limits from 20 to 50 (30102)
  • Add --sql-only option to discourse backup (30009)
  • Show when a badge has been granted for a post (29696)
  • Add plugin outlets to parent category row for desktop (30002)
  • Pass faqOverridden to about-wrapper plugin outlet (29994)
  • Allow add group member endpoint to skip invite emails (29962)
  • Allow to customize the signup form descriptions (29959)
  • Allow admins to force refresh “What’s new?” (29911)
  • Add freeze_original option to PostMover (29880)
  • Add bulk destroy to admin users list (29744)
  • Add Bulk actions to /filter page (29420)
  • Add modifier to delete after merge (29872)
  • Add transformer to pass topic ID to simple invite generation (29861)
  • Add keyboard shortcuts for jumping to unread channels (29734)
  • Add skip notification option to group invite to topic (29741)
  • Add mention count to threads (29739)
  • Paginate categories when there are many (29569)
  • Add more bulk dismiss buttons with confirmation (29331)
  • Mark bad uploads with :invalid_url (29640)
  • Add links to searchable user fields in users directory and user profile (29338)
  • Adds support for headings in chat (29552)
  • Add custom fields to chat (channel/message/thread) (29504)
  • Add ‘Community title’ field to about config page (29500)
  • Conditionally force optimized category style (29473)
  • Add invite link to the sidebar (29448)
  • Add links to subcategories page on category page (29474)
  • Enable the new /about page for everyone (29390)
  • Do not insert smart list if SHIFT+Enter is pressed (29452)
  • Add user preference to disable smart lists (29434)
  • Allow themes to define screenshots (29079)
  • Introduce an optimized style for category page (29239)
  • Mandatory fields for compact-list (29357)
  • Revive legacy pageview reports (29308)
  • Allow admins to enable announced experimental features (29244)
  • Auto_action_type field for flags (29306)
  • Automatically grid images when 3 or more image uploads (29260)
  • Create rake for db migration in plugins (29163)
  • Enable image optimization on iOS >`= 18 (29257)
  • Theme_modifiers can depend on theme settings (plus serialize_post_user_badges) (29227)
  • Initial themes config area with grid (28828)
  • Enable threading in chat DM channels (29170)
  • Add trigger_with_pms option to topic tags changed automation trigger (29122)

Bug Fixes

  • An off-by-one error in glimmer topic list (30372)
  • Handle null this.model when checking if component is for current user in CanCheckEmailsHelper (30359)
  • Unpinning topics in glimmer topic list (30342)
  • Redo Sidekiq monitoring to restart stuck sidekiq processes (30198)
  • Correctly place moderator post for full topic move with freeze_original (30324)
  • Restrict duplicate timings from being moved with posts (30311)
  • Use relations for new_in_category (30313)
  • Searchable user fields do not always have an integer name (30223)
  • Handle unrelated timings being moved (30256)
  • Correctly display group unread indicator in gjs (30302)
  • Add server-side limit for DM channels (30300)
  • Expanding / collapsing own user info panel (30272)
  • Avoid zipping when adding users to groups (30263)
  • Pass correct arg to outlet (30159)
  • Show validation error on confirmation user fields (30232)
  • Replace dropdown with button when there’s only one option (30242)
  • Restore zero-width space character… (30243)
  • Link to group didn’t work in locales other than English (30237)
  • Proper details / summary excerpt (30229)
  • Truncate bookmarks.name when remapping
  • Background color for settings overriden filter (30221)
  • Regression allowing async calls to finish before removing uploads (30230)
  • When moving first posts between topics, ensure only relevant timings are moved (30217)
  • s3:upload_assets was uploaded some source maps twice (30216)
  • Composer position on DiscourseHub iOS (30204)
  • Fast edit with a typographic character
  • When moving posts between threads, ensure only relevant timings are moved (30176)
  • Prevent experimental badge from splitting onto new lines with long titles (30181)
  • Corrently handle hidden tags when checking for edit conflicts
  • Improve name validation in the signup form (30150)
  • Chat channel sort order consistency in sidebar (30180)
  • Allow anyone who can manage groups to see Automatic tooltip (30174)
  • Ensures sk can be scrolled on iOS in a modal (30164)
  • Correct breadcrumb for admin users page (30173)
  • Recover user deleted post (30145)
  • Lower thread panel min-width (30158)
  • Freeze_original for moved_post notifications for OP moves, link to destination topic (30147)
  • Improve chat channel sorting for DMs (30124)
  • Discard empty bundles for reviewables (30121)
  • Move granted badges to the end of the post header. (30095)
  • Ensures tabbing from trigger focus content (30064)
  • Properly quote videos (30099)
  • Unable to quote video (30077)
  • Whisper’s presence channels (30097)
  • Update flag reason message with default value (30026)
  • Sanitization issue when replacing default emoji with custom emoji that contains or ~/Discourse/discourse symbols (30053)
  • Remove some mandatory_values for reserved_usernames (30089)
  • Stick to then/finally in history-store (30061)
  • Font awesome remapping migration should not drop unmapped names from svg_icon_subset (30058)
  • Better edit conflict handling (29789)
  • Attempt to simplify chat navbar spacing (30054)
  • Rate limiting when moving posts with freeze option (30041)
  • Adjust codeblock link styling (30036)
  • Virtual keyboard for fullpage login/signup (29543)
  • Editing post while replying (29985)
  • Deduplicate css in mails (30003)
  • Word break long continuous thread titles (30007)
  • Increase chat thread title limit (30006)
  • Do not show as clickable the thread header (30005)
  • Show urgent badge for mentions in DM threads (29821)
  • Reset likeAction when updating a cached post from JSON data (29971)
  • Bug with edit reason on iOS (29987)
  • Filter out secured categories first (29916)
  • Localization for custom signup form descriptions (29982)
  • Correctly toggle bulk select checkboxes for regular users (29984)
  • Rerender Chart component if config changes (29955)
  • Missing translations for empty config area (29966)
  • Topic post counts for webhook post_destroyed event (29853)
  • TopicTagsChanged trigger not working with multiple tags (29961)
  • Simplify desktop notifications behavior (29957)
  • Do not ignore redirects containing “/login” in the path (29960)
  • Solve flaky tests in PostMover (29943)
  • Preserve history when routing to /filter route (29929)
  • Remove duplicate id (29939)
  • Correctly destroy menu/tooltip when removed from dom
  • Poll: ensure it is not possible to vote with all abstentions in Ranked Choice (29601)
  • Empty post reviewable ignore bundle causing client errors (29932)
  • Hide broken theme about/license URLs (29930)
  • Handle multiple In-Reply-To Message-ID in group inbox (29912)
  • Tooltip styleguide triggers not rendering options (29926)
  • Discourse Connect fixes for full page login (29915)
  • Extension-less secure uploads (29914)
  • Don’t secure the about banner image (29889)
  • Correctly link to settings in full page (29913)
  • Permalink.create didn’t work as expected anymore (29895)
  • Makes tags reactive with docked header (29894)
  • Hide chat button in user card (29887)
  • Correctly closes search menu on escape (29848)
  • Use FinalDestination::HTTP to push notifications (29858)
  • Tweak the unread channel shortcut key behaviour (29874)
  • Improve the reliability of the unread channel keyboard shortcuts (29814)
  • Serializes interaction for direct messages (29844)
  • Migrations-tooling CLI didn’t work anymore (29777)
  • Simplify max-height calculation for chat composer (29822)
  • Amend broken settings link in emoji admin breadcrumbs (29818)
  • Ensures category row is not focusable (29803)
  • Don’t include secret membership groups when serializing other users (29799)
  • Removes aria-hidden on category-status (29800)
  • Signup fields tab order and descriptions (29772)
  • Rescue ActiveRecord::ReadOnlyError when baking theme field (29776)
  • Admin backups erroring because of S3 dualstack (29775)
  • Error with social logins and fullpage signup (29761)
  • Styleguide errors and add smoke test for component pages (29747)
  • Chat bookmarks in drawer mode (29757)
  • Dismiss unread posts in subcategories (29671)
  • Uses absolute strategy on ipad (29754)
  • Correctly makes @disabled dynamic (29738)
  • Hide presence toggle icon is backwards (29737)
  • Correctly load the invites model when using full page logins (29713)
  • Restore and deprecate the :type param of uploads#create (29736)
  • Correctly supports dropping image (29733)
  • Flaky system flags spec (29694)
  • Ensure normalized_email gets anonymized (29719)
  • Filterable staff logs for flags (29695)
  • Flakey due to 0 width/height images (29700)
  • Migrations must be finished to reset flags cache (29693)
  • Remove header-icons from styleguide (29670)
  • Broken post in styleguide (29669)
  • Supports escape sequence in chat (29659)
  • Add back the option to create invite without emailing (29641)
  • Correctly account for composer height in PWA (29656)
  • S3 custom endpoint incompatible with dualstack (29654)
  • Correctly render unicode in channel page title (29653)
  • Ensures thread panel closes on escape (29651)
  • Resume editing when through /new-message (29637)
  • Use dualstack S3 endpoint for direct uploads (29611)
  • Pass topic+category to @-mention user search (29620)
  • Change create_post_for_category_and_tag_changes setting to use whispers instead of small actions (29602)
  • Don’t try to serialize associations in PostRevisionSerializer
  • Setup with db:create db:migrate (29609)
  • Pass upload type correctly to uploads#create (29600)
  • Correctly display category name in replace text modal (29612)
  • Weird slow auto scrolling on iOS (29598)
  • Use correct styles on category pages (29588)
  • Incorrect reference in TopicListHeaderColumn (29593)
  • Chat uploads over-secured in some situations (29586)
  • Poll ranked choice results not showing on first vote (28542)
  • Poll ranked choice voter expansion should append additional voters (28432)
  • Account for sidebars with no primary links when adding invite link (29535)
  • Admin dashboard tooltips not working on mobile (29538)
  • Allow target attribute in translation overrides (29503)
  • Duplicate topics in digests / summaries (29517)
  • Show chat thread notifications for direct message channels (29414)
  • Blank “Legacy Pageviews” report showed no data (29502)
  • Missing word ‘done’ (29447)
  • Missing glimmer topic list focus actions on mobile (29421)
  • Copy upon getting logged out (29462)
  • Use site contact user + group for Revise… review action (29271)
  • Remove redundant body scroll lock (29395)
  • Skip CSRF check for POST /categories/search (29392)
  • Enable scroll events in modals for IOS (29393)
  • Remove scroll events for mobile modals (29391)
  • Reword auto action type field for flags (29361)
  • Invalid raise syntax (29364)
  • Visual regression for new features (29359)
  • Show the last rendered user-tip (29346)
  • Prevent ‘NaN’ display by hiding visitor stats on /about until they’re ready (29334)
  • Restoring backup could fail due to missing discourse_functions (29332)
  • Bring back the login-required page for fullpage login (29316)
  • Avoid duplicate problem admin notices (29329)
  • Flaky flags spec after refactoring (29325)
  • Participating users statistics… (29293)
  • Staff only mode blocks admin password resets (29289)
  • Don’t error out on empty reserved_usernames setting (29305)
  • Make problem check tracker unique constraint work on PG13 (29272)
  • Don’t error out on nested top topic period param (29275)
  • Setting new password should reset password_expired_at (29296)
  • Bump the number of svg icons we return to first 500 (29286)
  • Create-invite-uploader following uppy-upload mixin changes (29278)
  • Don’t error out on nested topic show id param (29274)
  • Don’t error out on nested categories index page param (29273)
  • Show lightbox for small images (29140)
  • Do not overrider trigger when equals 0 (29269)
  • Make subcategories page more like categories (29240)
  • Add back user custom field plugin outlet that was accidentally removed (29247)
  • _uploadDropTargetOptions is now public (29246)
  • Support add_directory_column in glimmered table header toggle (29231)
  • Prevent focus shift when navigating the user directory (29209)
  • Applies full class to field (29190)
  • Trashed channel thread view bug (29192)
  • Allow user to log in another account using the same device (client_id) (29121)
  • Notify mailing list subscribers on category change (28811)
  • Plugin JS failing to load would break admin interface (29139)
  • Imports of upload-only chat messages (29162)
  • Unicorn master and Sidekiq reopening logs at the same time (29137)
  • Don’t override other sidebar panels when opening/closing the chat drawer (29144)
  • Adjustments to the admin sidebar following recent core sidebar styling changes (29138)
  • Routing back to homepage from admin sidebar (29125)
  • Adds post_quote as placeholder (29083)
  • Allows to use open attribute with details (29116)
  • Flaky flags system spec (29039)
  • Use full column name to prevent ambiguous query (29111)
  • Only render admin notice dismiss button for admins (29103)
  • Support idempotent admin notice dismissal (29099)

UX Changes

  • Apply admin table to Automation settings page (30341)
  • Fix password mask on password reset (30347)
  • Adjust disclaimer font size (30346)
  • Improve balance on login & signup pages (30330)
  • Fix border around reply indicator (30343)
  • Invites styles refactor (30329)
  • Move to minimal layout (30327)
  • Show correct message when creating topics is disabled by a tag (30328)
  • Refactor password reset page (30323)
  • Move to icon for password masking (30321)
  • Apply admin table to webhooks (30317)
  • The ability to collapse AdminConfigAreaCard (30310)
  • Display link to groups in admin sidebar (30291)
  • Fix active and muted channels (30308)
  • Add color-scheme meta tag to _head (30245)
  • Introduce <DStatTiles /> component (30238)
  • Increase button sizes and timeline size (30240)
  • Rename private to personal messages in the interface (29679)
  • Hide admin header for edit/new webhook (30194)
  • Make radio buttons respect forum’s accent color (30235)
  • Fix PM title editing layout (30233)
  • Make checkboxes respect forum’s accent color (30231)
  • Add header-categories-wrapper outlet (30214)
  • Fix admin sidebar header width (30226)
  • Copy for feature feed toggle (30196)
  • The ability to hide the admin header (30175)
  • Move “What’s new?” link in admin sidebar to root section (30144)
  • Only show automatic group tooltip to admins (30155)
  • Fix channel name style for unread threads (30152)
  • Fix PM topic map layout (30135)
  • Minor fix to admin what’s new link (30143)
  • Change “What’s new in Discourse?” link (30140)
  • Move revoked API key status to dedicated column (30125)
  • Make channel name bold for unread threads (30127)
  • Refactor title editing CSS to improve layout (30109)
  • Fix topic map padding in low-content situations (30101)
  • Improve error when trying to edit globally shadowed setting (30092)
  • Adjust mobile chat text title alignment (30065)
  • Only add user-badge-buttons wrapper when badges exist (30060)
  • Update allow_index_in_robots_txt site setting description (29901)
  • Add admin filter row styling (30057)
  • Strip multiline comments in github oneboxes (30040)
  • Disable scrolling when modal is open on desktop (30035)
  • Admins users page follows admin ux guideline (29873)
  • Simplify chat thread title (29998)
  • Improve loading-slider behavior (29995)
  • Drop post-background highlighting on navigation (29986)
  • Hides channel with visible panel on narrow screen (29541)
  • Update minwidth to chat sidepanel + better title word-break fn (29954)
  • Remove lounge category from badge description (29927)
  • Attempt to reduce jumpy topic scroll in Firefox (29941)
  • Chat drawer hover effect width calc fix (29910)
  • Improved collapsed drawer state/interactions (29850)
  • Multiple codeblocks fixes (29898)
  • Codeblocks edits (29893)
  • Corrected text for notification titles (29860)
  • Update sidebar invite button to use correct title attribute text (29875)
  • Codeblocks experiment merge (29870)
  • Add AdminConfigAreaEmptyList component (29816)
  • Consistent flags page (29798)
  • Make cells middle aligned; apply overview class directly to td elements (29813)
  • Add title & adjust dnd image (29812)
  • Increase admin section header contrast (29790)
  • Move flag CTA button from subheader to header (29781)
  • Update CTA button label to ‘Add Emoji’ for clarity (29774)
  • Fix Android Firefox Mobile reply position (29751)
  • Prevent shrinking unread badge for long DM channel names (29756)
  • Redesign admin permalinks page (29634)
  • Reduce bottom topic map threshold, with protections (29665)
  • Split hide_profile_and_presence user option (29632)
  • Fix modal header background color in webview (29717)
  • Fix link to Highlight JS demo (29701)
  • Change the authorize button color to primary (29666)
  • Update chat channel sorting to include unread threads (29617)
  • Lower min_post_count to show bottom topic map (29649)
  • Remove icons indicating time in userstatus, bookmarks, topic timer (29635)
  • Do not hide topic composer in mobile chat (29633)
  • Apply admin table classes for consistent mobile styling on the API keys page (29630)
  • New experimental features should be marked clearly (29622)
  • Replace broken link SVG with new Font Awesome 6 name (29623)
  • Make the emojis in the admin page table list work better on mobile (29619)
  • Update create_post_for_category_and_tag_changes to include that it needs whispers enabled to work (29618)
  • Fix visibility of grant badge modal dropdowns (29613)
  • Add heading role to close composer dialog (29590)
  • Add missing role attribute (29591)
  • Make codeblock buttons ‘flat’ (29603)
  • Remove extra margin from PM small actions (29571)
  • Allow anon users to download calendar (29551)
  • Align PM icon when editing title, allow shrink-to-fit (29570)
  • Logs when an automation is destroyed (29565)
  • Use correct case for “Add Flag” button (29505)
  • More improvements to login/signup forms (29417)
  • Fix No button on review queue on mobile (29485)
  • Move BackButton outside admin-config-area to prevent unintended wrapping (29457)
  • Fix emoji alignment in chat members user status (29466)
  • Remove the admin menu button from expanded mobile timeline (29464)
  • Lower copy link z-index (29458)
  • Look and feel changes (29245)
  • Add description config area card (29418)
  • Give ranked choice polls distinctive bullets in preview (29439)
  • Limit user-card focus ring to desktop (29435)
  • Update /about config page copy (29387)
  • Visual adjustments to login/signup forms (28680)
  • Consistent styling for admin tables on mobile (29360)
  • Simplify and shorten new script flow for automations (29178)
  • Add link to /about in the about config page (29345)
  • Move “watching topic” user-tip to the other button (29323)
  • Fix footnote causing horizontal scroll on narrow screens (29328)
  • Fallback max-height for modal style (29321)
  • DMenu modal add grip and min-height (29309)
  • Improve layout for admin tables in mobile (29320)
  • Simplify invite modal (28974)
  • DMenu list buttons default styling (29250)
  • Ensure ios font size is always min 16px with max() fn (29270)
  • Fix sidebar styling on tablet (29248)
  • Multiple fixes to theme card rendering (29225)
  • Consistent chat message date format (29232)
  • Add option to use fullpages for login and signup (29034)
  • Prevent unread indicator from shrinking in flexbox (29207)
  • Bump up chat delete messages limit (29202)
  • Change thread button in chat nav to use btn-transparent (29186)
  • Chat index flex issues (29157)
  • Fix missing text overflow ellipsis in chat index pages (29150)
  • Change AdminPageSubheader to H2 (29149)
  • Set consistent width for primary content in admin UI config area (29147)
  • Fix overflow on thread index pages (mobile) (29126)
  • New sidebar styling (29119)
  • Automatically collapse admin page header buttons on mobile (29040)
  • Add padding bottom to chat index list (29096)

Security Changes

  • When enabled only allow Discourse Connect logins
  • Scrub headers to prevent access to files via nginx
  • Moderators cannot see user emails.
  • Stored xss in image caption

Performance

  • Cache public extra-locales requests in nginx (30340)
  • Don’t execute a git command each time we log a log line (30177)
  • Only diff HTML / Markdown when needed (30014)
  • Optimize query for finding users with unread chat messages (29964)
  • Patch memory-leak fix into tracked-built-ins (29944)
  • Remove dynamic <template> invocations (29942)
  • Optimize chat user membership cleanup when removing a single user (29833)
  • Auto join & leave chat channels (29193)
  • Replace slow :has selectors with body classes (29581)
  • Update maybeContinueList to avoid replacing the entire post (29416)
  • Faster disk space calculation on upload heavy instances (28307)
  • Optimize themes:update task (29290)

Accessibility

  • Show state change when post anchors are focused (30334)
  • Remove redundant alt text from github oneboxes (30083)
  • Make the uppy image uploader keyboard navigable (29807)
  • Convert sortable topic list headers to proper buttons (29808)
  • Allow dismissing the discard drafts modal via keyboard (29802)
  • Update clickable search dropdown tips to be buttons (29762)
  • Topic list links should not be headings (#27700)" (29520)
  • Fix and improve user card accessibility (29399)
  • Add screenreader markup for category color pickers (29351)
  • Label site setting buttons (29348)
  • Add aria-labels to sidebar footer buttons (29347)
7 Likes