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
onChangehandling (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-textstyle 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
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
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
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
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_sequenceonly for int columns (120) - Tweak
postgres_highest_sequenceonly 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
nilerror inPostSerializer#reactions(314)
UX Changes
- Fix small alignment issue when using the Glimmer Post Menu on mobile mode (320)
Performance
- Speed up
PostSerializer#reactionsby avoiding nested loop take 2 (313) - Speed up
PostSerializer#reactionsby 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
/gemsto.gitignore(97)
discourse-subscriptions
New Features
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
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-onlyoption 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_originaloption toPostMover(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_pmsoption totopic tags changedautomation 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_assetswas 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)
TopicTagsChangedtrigger 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
/filterroute (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)
Tooltipstyleguide 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.createdidn’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::ReadOnlyErrorwhen 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
:typeparam ofuploads#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
targetattribute 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
raisesyntax (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-buttonswrapper when badges exist (30060) - Update
allow_index_in_robots_txtsite 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_presenceuser 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_changesto 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
gitcommand 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
:hasselectors with body classes (29581) - Update
maybeContinueListto 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)