3.4.0: Major Release

Discourse 3.4 is now live!

We’ve implemented major changes to simplify the process of managing your community.

  • One-click AI spam detector
  • A more consistent admin experience
  • Simplified signup and login flow for community members
  • AI support via ask.discourse.com
  • DiscourseHub updates

… and so much more! Check out our blog post, as well as the 3.4.0.beta4 release-notes topic for details.

17 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

  • ActivityPub user locale strings (150)
  • Broken followers list for anonymous users (145)
  • 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)
  • Adding tags in admin UI (116)
  • Support multiple moderation groups on category (114)

Performance

  • Static id for like post action type (112)

discourse-adplugin

Bug Fixes

  • HouseAdsChooser onChange handling (234)

discourse-ai

New Features

  • Changes to summaries’ outdated logic. (1108)
  • Improve o3-mini support (1106)
  • O3-mini supports (1105)
  • Use persona default LLM for Discord integration (1104)
  • Block seeded models for being a persona default (1100)
  • Gemini Tokenizer (1088)
  • Track duration of AI calls (1082)
  • Formalize support for matryoshka dimensions. (1083)
  • Configurable embeddings (1049)
  • Add user location info to spam scanner context (1076)
  • Llm quotas (1047)
  • Add the ability to disable streaming on an Open AI LLM
  • Smart date support for AI helper (1044)
  • 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)
  • Allows forced LLM tool use (818)
  • Allow llm triage to automatically hide posts (820)
  • Add Ollama provider (812)
  • RAG search within tools (802)
  • Basic support for GPT-o models (804)
  • Make tool support polymorphic (798)
  • Add a SambaNova LLM provider (797)
  • Disable rate limiting when skipping hyde (793)
  • More accurate and faster titles (791)
  • API scope for semantic search (785)
  • Smooth streaming animation for summarization (778)
  • Improve site setting search (780)
  • Initial support for seeded LLMs (756)
  • Allow embedding based search without hyde (777)
  • Triage rule can skip posts created via email (775)
  • Single click proofreading (769)
  • LLM Triage support for systemless models. (757)
  • Allow specific groups access to summary feature on PMs (760)
  • Stream other post helper options (745)
  • Make emotion analysis enabled by default (732)

Bug Fixes

  • Need to be able to search replace within lines (1110)
  • Make sure DiscoursePrometheus is installed when collecting metrics (1107)
  • Android tablet composer menu z-index (1102)
  • OpenAI api key still needed for Dall-E. Unhide it. (1098)
  • Open AI embeddings config migration & Seeded indexes cleanup & (1092)
  • Always raise the single exception/Open AI models migration (1087)
  • Embeddings backfill rake task was using old code (1084)
  • Convert provider_params hash to json before db insert (1081)
  • Open AI embedding shortening is only available for some models (1080)
  • Restore the accidentally deleted query prefix. (1079)
  • Set default for existing records. (1073)
  • Make summaries backfill job more resilient. (1071)
  • AWS Bedrock non-streaming calls response log (1072)
  • Only hide posts detected explicitly as spam (1070)
  • Missing table check in post_migration (1068)
  • Do batches for backfilling huge embeddings tables (1065)
  • Composer helper not appearing on tablets (1064)
  • Split backfill into separate migrations to use independent transactions (1063)
  • Split statements to avoid timeout (1062)
  • Invalid locale yaml (1057)
  • Update spam controller action should consider seeded LLM properly (1053)
  • Keep track of silence reason when spam detection flags user (1046)
  • Prevent LLM enumerator from erroring when spam enabled (1045)
  • Embedding validation (1043)
  • AI Helper category / tag suggestion when user does not categories muted (1042)
  • Embeddings validator test needs to use the new Vector class. (1041)
  • Custom prefix causing allowed seeded LLMs not to be shown (1039)
  • Cloudflare Workers AI embeddings (1037)
  • Properly spin down unused streamer threads (1035)
  • 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)
  • AI Helper not visible on iPads (805)
  • Diff modal closing along with composer menu on mobile (803)
  • Keyboard shortcut should be platform specific (801)
  • Support case insensitive setting lookup (795)
  • Display cached summaries with our new streamer. (792)
  • Bail earlier when a chat thread has no messages (789)
  • Correctly display errors when parent module needs to be disabled first (788)
  • Coerce value before downcasing the hyde param (787)
  • We were never reindexing old content (786)
  • Prevent proofreading when there is no content (779)
  • Malformed message in systemless + inline img scenario (771)
  • Triage’s search_for_text should be case-insensitive (767)
  • UrlEditable must be true for all providers except Bedrock (766)
  • Tool editing code editor resetting on every keypress (765)
  • Mobile composer helper trigger should work on Android and iOS (763)
  • Add original upload markdown on caption failure (762)
  • Clicking on summary links breaks summary (759)
  • Modals in composer helper menu not working (755)
  • Triage-flagged posts didn’t have a score. (752)
  • Prevent AI caption setting from showing unless all criteria is met (753)
  • More robust summary implementation (750)
  • AI helper not being shown on mobile view (749)
  • Gemini 0801 tool calls (748)
  • auto_image_caption not always present for current user. (746)
  • Correctly save provider-specific params for new models. (744)
  • Handle nil reply_to_post in AI Bot event handler (743)
  • LlmModel validations. (742)
  • Add tool support to open ai compatible dialect and vllm (734)
  • Use correct date for cached summary (733)
  • Properly pass errors to client (731)

UX Changes

  • Include none false for provider params (1111)
  • Improve embeddings config styles (1085)
  • Update usage “Learn more…” link (1090)
  • Set usage as first AI admin tab (1089)
  • Fix composer helper z-index (1086)
  • Full page search – always show tooltip & add msg (1051)
  • Close summary modal on click outside (1050)
  • Disabled preseeded edit button, add description (1038)
  • Minor improvements to LLM page and admin tables (1034)
  • 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)
  • Update icon and text for copying message (815)
  • Move templates to main LLM config tab, restyle (813)
  • AI composer helper z-index issue (809)
  • Take composer height into account when calculating the max-height for topic summary (806)
  • Improve toast message location (800)
  • AI post helper DMenu styling (770)
  • Replace “share” with “share-alt” icon (784)
  • Summary container should be fixed instead of growing (783)
  • Topic summary UI improvements due to DMenu changes (772)
  • Add dark-light mixin for better visibility in dark themes (764)
  • Style & position AI helper in composer (758)
  • Summary fixed positioning (740)
  • Use stacked line chart for post sentiment (737)
  • Clarify purpose of OpenAI API key setting (739)

Security Changes

  • Fix XSS on Shared AI Conversations local Onebox (1069)

Performance

  • Optimize backfill query to prevent statement timeouts (1066)
  • Preload only gists when including summaries in topic list (948)
  • Speed up spec (794)

discourse-assign

New Features

  • New “notification level when assigned” user preference (626)
  • 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)
  • If a group is deleted also remove assignments (592)
  • Prevents column reference “id” is ambiguous (590)

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

Bug Fixes

  • Move birthdays and anniversaries links to more section (131)

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

  • Row height on the upcoming events calendar (677)
  • Recurring events not displayed on /upcoming-events (676)
  • Correctly apply local dates on event dates (671)
  • 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)
  • Removes clean title codepath (600)

UX Changes

  • Do not show participants in admin drop down menu for standalone events (679)
  • Remove going indicator for standalone events (672)
  • 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)
  • Prioritize events with high participant counts (610)
  • Allow event time to be hidden if desired (606)

Security Changes

  • Fix XSS in calendar event name (607)

Performance

  • Removed N*2+1 in availability topic (599)

discourse-category-experts

New Features

  • Support custom field correcting on post_move (183)
  • Add Category-Experts webhook event types (167)
  • Added Category Experts unapproved post WebHook Event (161)
  • Added Category Experts approved WebHook Event (156)

Bug Fixes

  • New post sending unapproved post webhook event (162)

discourse-chat-integration

New Features

  • Allow custom query parameters in Discord webhooks (236)
  • Add chat integration reference post (216)
  • Added Power Automate as a new provider (204)
  • Add topic tags changed trigger to chat integration (208)

Bug Fixes

  • Topic changing category was not triggering notifications (244)
  • Update flaky test in showing error modal (228)
  • Error modal not showing data (225)
  • Message triggering on topic creation (222)
  • Adjust full_url method in ChatIntegrationReferencePost to return the correct URL (220)
  • Revert chat-integration move to discourse-automation (219)
  • Revert chat-integration move to discourse-automation (214)

discourse-client-performance

New Features

  • Record CLS and improve INP target identification (53)
  • Log viewport width/height information (51)

Bug Fixes

  • Do not divide CLS by 1000 (54)
  • Logging of initially-loaded route (38)
  • More robust reporting on mobile (52)

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)
  • Allows CSV file result to be attached in automated PMs (318)

Bug Fixes

  • Boolean field default state mismatch (353)
  • Optionally linkify URL columns server-side (330)
  • Fix double validation (314)
  • Fix user_id validation (312)
  • Param should be displayed when the default value is invalid (313)
  • Empty param-inout form should reject submit (309)
  • Use with_deleted only in topic and post (308)
  • Wrong type in category_id param input (304)
  • Create parameter input boxes after save (303)

UX Changes

  • Apply admin table classes for consistent mobile styling on the recent queries page (349)
  • Clarify the need for authorized extension (346)
  • Automatically convert to lowercase in explorer-schema (325)
  • Rewrite date/time param-input using FormKit (316)
  • Use GroupChooser in group_id param input (315)
  • Rewrite param-input using FormKit (307)
  • Using CategoryChooser for param param_input (306)

Performance

  • Remove dynamic use of <template> (340)

discourse-deprecation-collector

Bug Fixes

  • Update config reference after a core change (29)

discourse-development-auth

UX Changes

  • Add plugin title (22)

discourse-doc-categories

New Features

  • Report extraneous items on indexes (11)
  • Add report with topics not indexed (9)
  • Add advanced search filter in:docs (8)

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)

UX Changes

  • Added plugin About information and a link (30)
  • Add doc icons to sidebar items (10)

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

  • Remove a duplicated topic-status icon (366)
  • 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)
  • Add missing event handler (336)
  • Errors may be null-ish (334)

UX Changes

  • Avoid triggering notifications when decrypting (350)

discourse-follow

Bug Fixes

  • Stream should come from args instead of this (138)
  • Use split hide profile and presence options (128)
  • Update user-profile-secondary outlet usage (122)

discourse-fontawesome-pro

UX Changes

  • Remove discourse-bookmark-clock because there’s no pro alternative (55)

discourse-gamification

New Features

  • Add option to lock leaderboard view to default period (179)
  • Add per-reaction score awarding (95)
  • Added chat-events scoring (96)

Bug Fixes

  • Redo period filtering to respect leaderboard date bounds (178)

UX Changes

  • Convert admin leaderboard forms to FormKit (157)

discourse-group-tracker

UX Changes

  • Normalize disabling checkboxes when turning off group tracker (64)

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

New Features

  • Add tags to topics based on issue status. (71)
  • New category setting to automatically create a Jira issue. (69)

discourse-livestream

New Features

  • Add update to chatable when topic category changes (33)
  • Add relation between TopicChatChannel and Chat::Channel (29)

Bug Fixes

  • Show livestream join message only for topics with livestream chat (30)
  • Moves lookup later (28)

discourse-math

Bug Fixes

  • Adds katex support for chat (88)

discourse-multilingual

Bug Fixes

  • Correctly set type/code on serialize
  • Correctly set type/code on serialize (17)

discourse-openid-connect

New Features

  • PKCE support (86)

discourse-patreon

Bug Fixes

  • Use current Patreon logo for social login (145)

discourse-perspective-api

Bug Fixes

  • Ensure it works with form templates (93)

discourse-policy

Bug Fixes

  • Resolve policy footer layout issues on mobile (150)
  • Solve log noise when scoped order is ignored. (134)

Performance

  • Use find_each to avoid memory spikes take 2 (133)
  • Use find_each to avoid memory spikes (132)

discourse-post-voting

Bug Fixes

  • Delete reviewable when the user is deleted (227)

discourse-preset-topic-composer

Bug Fixes

  • Add createTopicDisabled check to new topic button (26)

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

Bug Fixes

  • Prevent DestroyOldHiddenPosts from failing when there are orphaned posts (9)
  • Use proper action function (8)

discourse-reactions

Bug Fixes

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

UX Changes

  • Prevent accidental text selection of the reactions counter (336)
  • 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)
  • Remove unnecessary ‘includes’ call (309)
  • Static id for like post action type (305)

discourse-rewind

Bug Fixes

  • Visible_post_types expects a user

UX Changes

  • Text & width adjustments (9)
  • Make card clickable link
  • Adjust styles for long words
  • Simplify hours and minutes shown
  • More books styling (4)

discourse-salesforce

Bug Fixes

  • Use correct user_id field from return auth result (90)
  • Remove incorrectly added ‘App not approved’ message (89)

discourse-saml

New Features

  • Prevent replay attacks on assertion ids (114)

Bug Fixes

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

Security Changes

  • Upgrade ruby-saml to 1.17.0 which fix CVE-2024-45409 (104)

discourse-solved

New Features

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

Bug Fixes

  • Use both possible *_answer attributes (329)
  • Support multiple moderation groups on category (307)
  • Don’t allow TL4 users to unconditionally accept solutions (305)

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-staff-alias

Bug Fixes

  • Allow any type of post revision for staff alias topics (86)
  • Convert type in whisper params (75)

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)

Bug Fixes

  • Redirect to the pricing table page when enabled (239)
  • Payments not showing up for users (233)
  • Create customer for one off pricing table purchases (232)
  • Pricing table for one-off purchases (228)

discourse-templates

UX Changes

  • Shortcut help should show lowercase i (81)

discourse-theme-creator

Bug Fixes

  • Use new user api client key system in discourse/discourse (100)
  • Ensures user can save theme setting (87)

discourse-topic-voting

New Features

  • Allow order:votes on /filter (204)

Bug Fixes

  • Care for nil counts when ordering (205)

discourse-translator

New Features

  • Show experimental language switcher for anon users (198)
  • Add DiscourseAi translator (181)
  • Add support for Samoan (sm) and all other languages supported by Microsoft (186)
  • Add max character for translation setting (183)
  • Add ProblemCheck for google (167)
  • Add translator error ProblemCheck for Microsoft (161)

Bug Fixes

  • Strip detection text before truncation (196)
  • Skip images and quotes when sending for language detection (195)
  • Normalize languages within Discourse AI translator (194)
  • Remove a duplicated language entry (191)
  • Also strip anchor tags when detecting language (187)
  • Strips img tags (emojis) when detecting language (182)
  • Handle same language translations (164)

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

  • Cannot read property of undefined (119)
  • Use split hide profile and presence options (110)

discourse-yearly-review

Bug Fixes

  • Ensure SQL queries are properly sanitized (90)

discourse-zoom

New Features

  • Add Zoom description and location to Google Calendar (87)

Bug Fixes

  • fast_typing_threshold site setting (112)
  • Modernize topic page integration (111)
  • 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)
  • Remove `<3.4.0.beta1 version pin (241)

UX Changes

  • Removed a redundant git pull statement from the user message (260)
  • Update the admin page header to use DPageHeader (258)
  • Status badge tweaks (253)
  • Adjust table to be responsive on mobile (244)
  • Suppress pnpm upgrade notifications in build logs (240)

(No changes found in 2024-performance-profiling-workshop, ask-discourse-context, discourse-affiliate, discourse-akismet, discourse-algolia, discourse-amazon-sns, discourse-animated-avatars, discourse-anonymous-moderators, discourse-antivirus, discourse-apple-auth, discourse-auth-no-email, discourse-auto-deactivate, discourse-auto-lock-pms, discourse-bbcode, discourse-bbcode-color, discourse-bcc, discourse-brightcove, discourse-browser-history, discourse-categories-suppressed, discourse-cdn-experiment, discourse-characters-required, discourse-chart, discourse-code-review, discourse-email-short-date-format, discourse-extra-group-classes, discourse-fingerprint, discourse-folksy-image, discourse-geoblocking, discourse-github, discourse-github-user-infos-view, discourse-github-verification, discourse-google-one-tap, discourse-gradle-issue, discourse-graphviz, discourse-group-category-banner-ads, discourse-group-membership-ip-block, discourse-group-tag-associations, discourse-intercom, discourse-jwt, discourse-kolide, discourse-local-site-contacts, discourse-login-with-amazon, discourse-logster-rate-limit-checker, discourse-logster-transporter, discourse-lti, discourse-marketo, discourse-meteor, discourse-microsoft-auth, discourse-needs-love, discourse-nested-posts, discourse-newsletter-integration, discourse-no-bump, discourse-oauth2-basic, discourse-onboarding-banner, discourse-page-visits, discourse-password-expiry, discourse-pirate-speak, discourse-plugin-skeleton, discourse-prepend-tags-in-topic-slug, discourse-prioritize-generic-onebox, discourse-prometheus-alert-receiver, discourse-restricted-replies, discourse-rss-polling, discourse-saved-searches, discourse-shared-edits, discourse-signatures, discourse-sketchup-3dwh-onebox, discourse-sketchup-sso, discourse-surveys, discourse-tag-by-group, discourse-tag-topic-user-device, discourse-teambuild, discourse-tooltips, discourse-topic-noindex, discourse-tudiabetes, discourse-unlock, discourse-url-filters, discourse-user-card-badges, discourse-user-notes, discourse-video, discourse-vk-auth, discourse-watch-category-mcneel, discourse-watched-word-exceptions, discourse-wikimedia-auth, discourse-zendesk-plugin, folksy-store-name, twitter-profile-link, twitter-topic-group-button)

4 Likes

All Features and Fixes

New Features

  • Remove unnecessary org names from PR oneboxes (31102)
  • Handle newer url format for Twitch clips (31080)
  • Localization admin settings config page (31085)
  • Multiple Draft Topics (30790)
  • New fast_typing_threshold site setting (30865)
  • Improve wizard font selection and set Inter as default font for new sites (30974)
  • Allow setting locale from ‘lang’ param (30952)
  • Add attribution to staff notice and rename functionality (30920)
  • Allow admins to export users (30918)
  • Add new hidden site setting to show full names in user card
  • Handle special font properties from discourse-fonts (30891)
  • Improve use_email_for_username_and_name_suggestions (30845)
  • Chat thread inline oneboxes (30834)
  • Setting allowing tl0/anonymous flag illegal content (30785)
  • Add drafts dropdown menu (30277)
  • Add IP Lookup to review queue (30688)
  • Add a onebox_locale site setting. (30655)
  • Show silence reason when viewing silenced users (30635)
  • Add trigger_on option to topic_tags_changed automation (30391)
  • Add new setting to select view for category page on mobile (30519)
  • Improve wizard quality and rearrange steps (30055)
  • Add support for One-Click unsubscribe (RFC 8058)
  • Allow disabling of anti spam profile hiding feature (30508)
  • Add option to hide full name input at signup (30471)
  • Support adobe analytics tags tracking (30433)
  • Unhide ‘suppress_secured_categories_from_admin’ setting (30436)
  • ThreadPool implementation (30364)
  • 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)
  • Limit client side image compression on Safari to version >`= 18 (28373)
  • Improve the suppression for admins when required (29041)
  • Supports mark tag in chat messages (28949)
  • Increasing name length in automation (28945)
  • Add ability to dismiss admin notices (28916)
  • Allow names in chat channel title (28843)
  • Toolbar API supports custom action for keyboard shortcuts (28883)
  • Add setting to exclude groups from /about page (28809)
  • Convert chat plugin UI to new show plugin and admin UI guidelines (28632)
  • Switch to new methods of pageview measurement and reporting (28729)
  • Added Category Experts unapproved post WebHook Event (28802)
  • Log tag group changes in staff action log (28787)
  • Only play chat sound when chat badge icon is shown (28387)
  • Add user to topic_tags_changed event (28714)
  • Add ‘Edit this page’ link at the top of the new /about page (28766)
  • Support designating multiple groups as mods on category (28655)
  • Added Category Experts approved WebHook Event (28525)
  • Add ability to watch chat threads (28639)
  • Post created/edited trigger can skip posts created via email (28615)
  • Allow showing site text search in selected locale (28453)
  • Allow plugins to specify keyboard shortcuts for hidden toolbar items (28456)
  • Add estimated number of global and EU visitors to the about page (28382)
  • Change default for push_notification_time_window_mins (28431)
  • Unseen feature indicator in admin sidebar (28397)
  • Add system_user_max_attachment_size_kb site setting (28351)
  • Always show full page “New Features” to admins (28383)
  • Allow completely custom score reasons. (28348)
  • Bring plugin:create to core from create-discourse-plugin gem (28350)
  • Add delay to native push notifications (28314)
  • Participating users statistics (28322)
  • Change tags sent in topic_tags_changed trigger in automation plugin (28318)
  • “Hot” replacing “Top” as default in the top menu (28252)
  • Add option to immediately delete stub topics upon merge (28228)
  • Absolute Numbers in Poll (28240)
  • Add live_slots_(start|finish) for Sidekiq perf logging (28260)
  • Added trigger for topic tags changed (28176)

Bug Fixes

  • Allow to follow non-ASCII canonical links for oneboxes
  • Better standalone checkbox support (31130)
  • Chat was enqueueing too many “chat summary” emails (31133)
  • Quote from thread in drawer mode (31137)
  • Supports height/preview form-kit composer (31121)
  • Hacker News onebox favicon (31115)
  • Reset the delete automatic group tooltip (31094)
  • Switch panel back to forum last known url (31092)
  • Cannot manually add users to automatic groups (31062)
  • Quoting videos can show a corrupted thumbnail (31079)
  • Change off to disabled for fast_typing_threshold setting (31077)
  • Wizard preview fonts not loaded (31064)
  • Remove groups when promotion is recalculated. (31058)
  • Only validate length when value is set (31053)
  • Hide none on required fields with value (31052)
  • Allow user directory searches to return more than 20 matching results (31032)
  • Remove muted topics/tags/categories from top and hot topics lists (30892)
  • Update AdminNotice details when problem check tracker changes (31031)
  • Hijack controller for topic move posts (31029)
  • Always search email logs including the cc: addresses
  • Correctly closes panels in threads (31013)
  • Reset bool site setting not updating checkbox (30999)
  • Improves reliability of last visit line in chat (30948)
  • Minor i18n problems on admin webhooks pages (31010)
  • NULL IP for similar users caused incorrect message (30981)
  • Enforce second factor with subfolders (30993)
  • Enforce second factor with subfolders (30992)
  • Don’t return the last post we already have when paginating /posts (30991)
  • Double click on tag INPUT breaking expected behavior (30975)
  • /posts pagination uses ID not created_at (30990)
  • Ensures category is rendered (30988)
  • Query syntax error in UserBadge.update_featured_ranks! (30979)
  • Truncate extremely long site name titles (30977)
  • Broken tada emoji on subfolder account activation (30972)
  • Scrub Client-Ip request header in nginx (30971)
  • Show the correct message when no user export exists. (30970)
  • Which topic do you want to reply to rendering raw HTML (30962)
  • Only apply the rate limit to user exports, not downloads (30965)
  • Revert “Automatic auth flow with full page login/signup” (30960)
  • Allow touchmove in composer when there is a selection (30957)
  • Keep active state in sidebar button for category/tag hot routes (30954)
  • Automatic auth flow with full page login/signup (30928)
  • Adjust search menu buttons alignment (30939)
  • Display either the topic-status outlet or the fallback (30938)
  • Incorrect i18n titles for fallback topic-status (30937)
  • Prevent frozen string error in import scripts (30325)
  • Ensures more icon is visible on hover (30925)
  • Ensures chat navbar is on top of content (30923)
  • Admin sidebar problem check missing -1 check (30916)
  • Restore footer-nav backdrop-filter for iOS `< 18 (30914)
  • Enforce ‘prefix’ notation for media-query ranges (30913)
  • Lint issue follow-up to a3359ac (30911)
  • Removes mousewheel edge case on messages (30900)
  • Emoji picker position when clicking more (30896)
  • Supports quoting mathjax (30876)
  • Avoid possible rendering infinite-loop in post-menu (30873)
  • Invalidate stylesheet cache when discourse-fonts is bumped (30869)
  • Update nginx types config (30868)
  • Adjust grid-template-columns to prevent text overflow (30864)
  • Prevent wrapping of select box container by applying nowrap (30863)
  • Don’t allow editing own posts user can no longer see (30839)
  • Only attach images in digests (30844)
  • Re-adds favorite reactions on mobile (30746)
  • Relative links in the insert hyperlink modal (30842)
  • Expand the hidden post menu when one option is available. (30831)
  • Do not store 0 has min width for thead panel (30818)
  • Ensures scrolls work in chat when touch is on text (30817)
  • Add a DB migration to update font site settings types (30813)
  • Process tag synonyms when approving reviewable queued post (30810)
  • Include original filename in s3 uploads even if not attachment (30789)
  • S3Inventory#backfill_etags_and_list_missing need to unescape key (30787)
  • Remove /u/ from robots (30782)
  • Do not allow_any on fonts site_settings (30780)
  • Double trigger of close user menu (30732)
  • Safari on iOS crashes when pinch-zooming (30779)
  • Full page search result infinite scroll with added results (30771)
  • Prevent multiple requests when clicking drafts trigger (30736)
  • Add Type column to Flag Status CSV export (30756)
  • Set fixed width for email group chooser dropdown to prevent resizing based on content (30740)
  • Avoid loading reactions index when plugin is not installed (30749)
  • Improve sidebar invite link highlight persisting, link tabbing and activation behavior (30734)
  • Remove complicated ‘chat_duplicate_message_sensitivity’ site setting (30516)
  • Strip unsubscribe links in incoming emails (30695)
  • Ensure GroupChooser works with localized group names (30593)
  • Show both group’s full name & name when they differ (30672)
  • Allow admins to use reserved usernames (30262)
  • Add back API keys plugin outlet lost in translation (30730)
  • Correctly position emoji picker when clicking more (30724)
  • Removes blank spacing in message actions (30697)
  • Simplify body scroll lock on iOS (30696)
  • Add back missing API key ‘peek’ step (30683)
  • Correct emoji picker size in modal (30675)
  • Lockup when navigating with j/k (30674)
  • Emoji picker followups (30670)
  • Improve the user badge alignment on mobile devices. (30665)
  • Inline oneboxes should obey the locale. (30664)
  • Do not memoize score types (30657)
  • Ensure Onebox requests ask for the correct language. (30637)
  • Emoji-picker minor improvements (30645)
  • Cleaned up horizontal nav scrolling so arrows show/hide properly (30621)
  • Name field should appear in the signup form for login-required sites (30634)
  • Move posts modal passing topic instance rather than ID (30622)
  • Wizard improvements post-merge part 1 (30612)
  • Ensure popups from the chat composer dropdown gain focus (30613)
  • ChangeFullNameRequiredSetting could fail if setting was already in DB (30605)
  • Consistent delete button for admin panel (30592)
  • Allow attachments to be opened in a new tab instead of downloading them (30535)
  • Calculate experiment_enabled on server for “What’s new?” (30599)
  • Stuck notification for mentions within threads (30546)
  • Dashboard last checked date was always English (30569)
  • Allow signups when full names are disabled (30551)
  • Show error message when password is too common (30507)
  • Fallback when embedding YouTube videos with lazy videos (30514)
  • Dashboard report change tooltip was not translated (30541)
  • Reports did not respect user locale (30524)
  • Wizard branding step null logo (30523)
  • Correctly extract body and/or reply from exchange emails (30512)
  • Switch back to using a temp table for moving posts. (30509)
  • Correct topics and posts count in import:ensure_consistency rake task (30104)
  • Consistently notify lowest post number if post_moved notification generation (30448)
  • All admins should be allowed to see deleted PM posts regardless of their mod status (30206)
  • Treat contact_url setting as a domain by default (30225)
  • Simplify nginx config change (#30383) (30410)
  • We introduced a Jobs::UserEmail which broke consistency checks (30409)
  • More… should not show when there are no visible links (30405)
  • Correclty allows to untoggle a fk toggle (30404)
  • Better handle race condition when a channel is deleted (30403)
  • Handle more thread pool edge cases (30392)
  • Simplify nginx config change (30383)
  • 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 (29720)
  • 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)
  • Skips caching a generated secret key base token if skip_redis is true. (29029)
  • Import script didn’t set public attribute of polls (28864)
  • Create an automation with forced_triggerable enabled (29030)
  • Fix broken client-side review actions (29025)
  • Unscoped plugin config page actions outlet (29026)
  • Custom flag name should be unique (28869)
  • Permanent delete of posts by deleted users (28992)
  • Don’t raise on some search terms
  • .badge-posts alignment on mobile glimmer topic list (28959)
  • Appropriately handle uninstalled problem checks (28771)
  • Show topic admin menu if can_split_merge_topic (28937)
  • Prevents user status selection in mentions (28944)
  • Support getters in hbr #each context (28941)
  • Fix incorrect check for required custom fields (#28541) (28939)
  • Retry updating webview background color (28912)
  • Prevent recurring automations from getting stalled under specific conditions (28913)
  • Don’t show move topic for private messages for TL4 (28871)
  • Error when moving the group default notification state (28910)
  • Remove anonymous users from users directory (28892)
  • Flaky system admin flags specs (28873)
  • Exclude inactive and silenced users from /about page stats (28877)
  • Regression in short description in admin badges page (28884)
  • Support date field in FormKit page object (28872)
  • Incorrect titles in two components (28865)
  • Align bulk award button with the other header action buttons (28859)
  • Use a custom prefix for custom flags (28839)
  • Errors may be null-ish (28826)
  • Poll voters list wasn’t expanding properly (28823)
  • Form template limit validation (28791)
  • Poll preview list styling remove redundant bullets (28592)
  • Prevent chat channel not found ajax error (28818)
  • Add “in:first” to user summary category search (28688)
  • Prevent layout shift caused by locale description length (28807)
  • Remove breaking super call in scroll-tracker component (28810)
  • Open file handles ‘just in time’ during s3 migration (28806)
  • Replace shield-blank with shield-halved for font awesome (28804)
  • Requested changes from dev (28784)
  • Reset cache after flags are seed (28801)
  • Supports groups field in post_created_edited (28783)
  • Supports groups field in post_created_edited (28773)
  • Add traffic info footer to the new /about page (28779)
  • Toggle chat drawer on channel thread list (28759)
  • Creating an automation without script should error (28752)
  • Ensures message field is rendering placeholders (28753)
  • Don’t let static pages overflow on some devices (28751)
  • Don’t use post ID as timeline collapse delay (28712)
  • Passkey login when Discourse used as SSO provider (28672)
  • Prevents PM to large groups (28681)
  • Return proper results when searching for a topic in Japanese
  • Keep the original URLParams in navigation item (28696)
  • Ensures global notices are destroyed on post created (28684)
  • Ensures default required validator handles 0 (28686)
  • Correctly pass updateGroupings to the modal (28683)
  • Mini-profiler CSP nonce when in report-only mode (28664)
  • Chat emoji picker positioning (28643)
  • Chat mailer log noise (28616)
  • Change eq to match_array in topic_tags_changed_spec.rb to solve flaky test (28640)
  • Ensure About#stats uses the cache (28634)
  • Use .login-right-side instead of .has-alt-auth (28628)
  • Do not enforce 2fa when an account is created with OAuth (28625)
  • Correctly filter user bookmarks (28612)
  • Restore propertyEqual following native-class conversions (28605)
  • Correctly render ace editor in FormKit (28601)
  • Poll ensure ranked choice results can handle options with rich text and links (28195)
  • Sum pageviews with number instead of string (28596)
  • Flaky flags spec (28591)
  • Correctly apply translate mod key (28520)
  • Endless loading post history (28425)
  • Correctly shortcut format on mac (28556)
  • Respect the End key when last post is already rendered (28524)
  • Allows to manually remove error for virtual fields (28555)
  • Allows selectText to take a scroll position as opt (28554)
  • Destroy draft when clicking the Discard button (28552)
  • Add users to user directory on account activation (28505)
  • Return properly interpolated translations for flags
  • Prevents topic hot scope error on future topics (28545)
  • Prevent group requests from loading infinitely (28544)
  • Prevents exception when showing replacements (28543)
  • Fix incorrect check for required custom fields (28541)
  • Prevent desktop notification callbacks on mobile (28527)
  • When replacing text in composer maintain history (28537)
  • Bookmark reminder was clearing incorrectly (28506)
  • Video uploads sometimes hang indefinitely (28523)
  • Refresh the edit tag section when navigating to another tag (28519)
  • Badge image uploader (#28188) (28521)
  • Prevents creating post from impacting the app (28518)
  • Correctly reset form before destroying it (28516)
  • Videos not uploading due to thumbnail generation error (28493)
  • Adds chat-draw-expanded class to body (28490)
  • Trigger user_logged_out event when the user logs out (28482)
  • Hide heading when there’s no custom description (28470)
  • Skip 1:1s when chat search returns users (28464)
  • Ensures href is not set two times (28466)
  • Subfolder account activation (28463)
  • Lost outer context in #each block in hbr (28461)
  • Specify @type arg for the image uploader in the about config area (28460)
  • Write stylesheet cache atomically (28457)
  • Use correct subtitle for Site contact name field (28448)
  • Don’t show silence button on staff users and display similar users (28423)
  • Broken mentioned users with capitalized usernames (28421)
  • Translation overrides didn’t work for search orders (28404)
  • Make poll voter list expansion persistent (28352)
  • Bypass highlighths for long code in auto mode (28399)
  • Make cancel and reset buttons work for file_size_restriction settings (28347)
  • Allow chat sound when notifications are disabled (28385)
  • Delay chat notify watching job (28386)
  • FormKit: Allow 0 in required number input (28368)
  • Don’t show blank space when there’s no banner image (28366)
  • Ensure we dispose of MiniRacer::Context before forking daemons (28361)
  • Serialize Flags instead of PostActionType (28362)
  • Access correct name and description (28353)
  • Set overflow-x to auto to prevent scroll bar from always showing (28294)
  • Do not continue list inside codefence (28346)
  • Correctly render sql checkboxes (28328)
  • Serialize Flags instead of PostActionType (28334)
  • Poll when config is on_close only show results when poll is closed (28299)
  • Poll ranked choice voter list corrupting on expand (28315)
  • Stop injecting uneeded margin (28335)
  • Not hit Redis cache in seeds (28329)
  • Serialize Flags instead of PostActionType (28259)
  • Display new DM button when public channels are disabled (28306)
  • Site setting category titles (28281)
  • Don’t log an error when rendering a 404
  • Flaky flags specs when moving up or down (28272)
  • Unescape URI properly when redirecting to a category
  • Ensure do-not-disturb icon updates correctly (28253)
  • Return additional message types properly
  • Use CheckboxGroup for admin badges form (28239)
  • Limit the number of custom flags to 50 (28221)
  • Backup_restore.rb wants db user from user, not username (28229)
  • Cache all flags multisite-safe (28204)
  • Set sane default for Net::HTTP when processing a request (28141)
  • Ensures tags/categories are present (28230)
  • Don’t clear inline problems when loading admin dashboard (28220)
  • Make the check better for drawer router (28212)
  • Further improvements to // handling (28211)
  • Do not strip // from the middle of URLs in discourse-url (28210)
  • Update do-not-disturb icon in real-time on glimmer header (28200)
  • Poll ranked choice result algo majority check (28191)
  • Update voter information upon remote change (28168)
  • Correct return isForever value (28194)
  • Badge image uploader (28188)
  • Remove chat default channel setting (28170)
  • Video thumbnails for missing videos (28152)
  • System badges can be disabled (#28169) (28171)
  • System badges can be disabled (28169)
  • Don’t count draft views towards topic view stats (28162)
  • Double reviewable items bug (28161)
  • Move downloading of Maxmind databases to after assets:precompile (28157)
  • Return properly interpolated translations for flag types
  • Perform topics merge in a background thread (28114)
  • Poll: Clickable, hoverable avatars (28121)
  • Race condition in Discourse.cache.fetch (28124)

UX Changes

  • Restore shared sidebar link for posts and drafts (31159)
  • Improve drafts list (31122)
  • More selectors for transparent buttons (31155)
  • Hide inner site settings sidebar if admin sidebar enabled (31047)
  • Prevent topic map link menu from overflowing when there are many links (31147)
  • Replace href cancel with DButton (31138)
  • Remove half-pixel border from loading dots (31105)
  • Unblock clicking through progress bar wrapper (31135)
  • Fix topic progress position when composer is open (31134)
  • Fix user-select regressions (31129)
  • Update system font stack to system-ui (31125)
  • Clean up post action menu styles, fix issues, add variables (31100)
  • Fix discourse topic onebox styling (31106)
  • Allow msg select buttons to wrap (31084)
  • Move “hide profile” checkbox to profile tab (31095)
  • Show full total numbers in admin reports (31061)
  • Remove animation for back button on mobile (31048)
  • Fix tag revert rename 404 error (31049)
  • Fix mobile chat DM row layout (31043)
  • Add missing class to group bulk select button (31038)
  • Re-check triggerRule to avoid autocomplete in code (30961)
  • Sidebar “more” icon color fix (31017)
  • Hide user card focus until keyboard navigation begins (31014)
  • Respect user locale when sending chat notices (30996)
  • Improvements to posts route (30968)
  • Fix admin dashboard link and style regressions (30969)
  • Add HTML class for composer preview to manage sidebar height (30956)
  • Revert #30547
  • Use em units for code font-size (30936)
  • Inherit font-settings on form controls (30935)
  • Fix minimized composer position on iOS PWA and app (30926)
  • Rename “hamburger menu” to “navigation menu” in keyboard help (30927)
  • Adds chat send shortcut user preference (30473)
  • Set mobile read state indicator to static size to avoid overflow (30910)
  • Only lock viewport scale during focusin events for iOS PWA/Hub (30908)
  • Improve git/code oneboxes (30822)
  • Remove loading="lazy" from avatars for improved UX (30897)
  • Workaround iOS bottom overscroll bug in header-offset calcs (30895)
  • Extend Safari scrolling fix to work in iPad PWA (30894)
  • Improve sidebar positioning in Safari (30888)
  • Fix scrolling of form template composer on mobile (30883)
  • Remove table editor transition effect (30878)
  • Replace font-size-ios-input workaround (30877)
  • Convert “view all notification” to a link (30874)
  • Replaces custom more menu by d-menu (29090)
  • Makes smile the default emoji-picker icon (30843)
  • Improve the alignment of long status messages (30830)
  • Removed a redundant git pull statement from the docs (30801)
  • Wizard and theme install modal improvements (30788)
  • Tweak plugin and customize-based admin page margins (30808)
  • Use DPageHeader on the Logs page (30786)
  • Wizard homepage dropdown improvements (30763)
  • Adjust styling of Back button in topic progress (30769)
  • Use DPageHeader on the Email Style page (30784)
  • Use DPageHeader on the Emails page (30781)
  • Use DPageHeader on the Site Settings page (30783)
  • Remove redundant text-decoration: none, follow up to 912b002 (30775)
  • Show strikethrough, underline in post edit diff (30773)
  • Check category permission before new topic quote (30753)
  • Use DPageHeader on the Components page (30762)
  • Getting started guide fixes (30757)
  • Remove flat icons from wizard step two (30761)
  • Use DPageHeader on the Themes page (30759)
  • Apply admin UI guidelines to Reports pages (30684)
  • Add placeholder title for drafts (30747)
  • Switch button focus state to focus-visible (30744)
  • Improve discobot certificate font language support (30722)
  • Improve git blob oneboxes (30694)
  • Add DPageHeader to watched words and color palettes (30686)
  • Final pass of admin setting pages (30682)
  • Follow-up sidebar variable fixes for c398933 (30676)
  • Use FontSelector for displaying font-related settings. (30636)
  • Use font with more glyphs for discobot certificates (30646)
  • Conditionally render permalinks filter (30633)
  • Align silence reason header text with content alignment (30639)
  • Admin setting page consistency - Files and Other (#30572) (30614)
  • Admin setting page consistency - Onebox (30611)
  • Admin setting page consistency - User API (30610)
  • Admin setting page consistency - Rate Limits (30609)
  • Admin setting page consistency - Developer (30607)
  • Admin setting page consistency - Spam (30606)
  • Admin setting page consistency - Security (30598)
  • Admin setting page consistency - Experimental (#30572) (30603)
  • Admin setting page consistency - Group permissions (#30528) (30578)
  • Refactor nav stack active element (30601)
  • Remove version from “What’s new?” items (30596)
  • Update email and security sidebar link copy (30563)
  • More translations for admin dashboard (30570)
  • Adjust mobile to avoid progress bar jitter (30591)
  • Improve table hover states, fix table button margin issue (30585)
  • Add missing icon for open_topic small action (30586)
  • Only show red count in IP lookup when greater than 0 (30584)
  • Do not anchor scroll on topic navigation/map (30580)
  • Minor copy edit for full name requirement setting options (30581)
  • Admin setting page consistency - Navigation (30574)
  • Admin setting page consistency - Search (#30528) (30573)
  • Admin setting page consistency - Legal (30572)
  • Admin setting page consistency - Trust levels (30571)
  • Admin setting page consistency - Site Logo (30567)
  • Admin setting page consistency - Fonts (30564)
  • Admins embedding page follows admin ux guideline (30122)
  • Avoid triggering the autocomplete mid-word (30042)
  • Use em for code font-size (30547)
  • Admin setting page consistency - Notifications (30528)
  • Inherit font-size for code in headings (30536)
  • Replace partially written emoji when using picker on chat (30517)
  • Tweak suppress_secured_categories_from_admin setting description (30532)
  • Do not tab to an already active tab (30531)
  • Add highlight for active nav in admin secondary sidebar (30486)
  • Move first settings admin route to config page (30510)
  • Add Sentence Casing for Setting Names (30479)
  • Hide before-header-panel-outlet on login page (30472)
  • Remove chat hover effect from github status badge (30447)
  • Add highlight for active nav in category settings (30428)
  • Fix misalignment + remove border-radius of topic progress element (30427)
  • Improve link copy status transition (30401)
  • Site setting filter background inconsistencies (30393)
  • Admin sidebar link changes (30365)
  • Refactor IP lookup using DMenu to improve layout and positioning (30374)
  • 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)
  • Improve bottom padding to chat index on mobile (29086)
  • Chat index mini refactor (29082)
  • Change twitter share link to X (29056)
  • Prevent user stream title from overflowing page (29032)
  • Add label for delete own post button in review queue (28991)
  • Proper description of the allowed_iframes setting (28997)
  • Minor admin mobile fixes (29028)
  • Remove alias from chat direct message channel titles (28958)
  • Chat composer style tweaks (28938)
  • Small colour change to chat composer insert button (28904)
  • Sort chat channels by activity in desktop drawer (28822)
  • Upodate stying of chat composer focused state (28900)
  • Add link to bootstrap mode docs (28898)
  • Link to sections in getting started guide (28882)
  • Tell 1Password to ignore the link name input (28559)
  • Fix confusing “claim reviewable” positioning (28870)
  • Fix admin report filter stacking (28875)
  • Fix double li-element in mobile list control (28840)
  • Update banner to handle responsive images with aspect ratio scaling (28825)
  • Prevent a focus-visible outline on mobile (28815)
  • Hide ‘other’ and ‘crawler’ site traffic on report page (28817)
  • Add learn more URL for admin flags page (28816)
  • Add a description on the about config area (28790)
  • Upgrade to fontawesome 6.6.0 (28778)
  • Fix wizard link in getting started guide (28768)
  • Remove btn-default class from chat thread tracking dropdown (28789)
  • Apply the admin page header component (28767)
  • Change organization alert type from error to info (28762)
  • Add links to getting started check list (28761)
  • Update chat channel sorting (28760)
  • Fix spacing of emoji in chat channel title (28756)
  • Chat drawer increase unread channel visibility (28731)
  • Apply admin UI to Badges (28724)
  • Update Chat Group Name and Placeholder (28703)
  • Update post_menu and post_menu_hidden_items copy (28723)
  • Avoid flashing error when loading form template (28700)
  • Adjustments for the about page banner image (28692)
  • Change admin plugins list to follow UI guidelines (28478)
  • Add descriptions to auto groups and auto group indicator (28630)
  • Change usercard selector to new identifier (28641)
  • Add progress bar to the registration flow (27694)
  • Add group link to category permission row (28560)
  • Fix spacing in topic map views menu (28583)
  • Highlight the chat channel/DM only when chat is expanded (28488)
  • Explain choices priorities (28574)
  • Fix overflow usercard (28558)
  • Flag settings tab to follow UI guidelines (28479)
  • DMenu fixes (28551)
  • Make keyboard shortcut styling more subtle (28522)
  • Centralise DMenu mobile styling + fixes (28469)
  • Adjust software update banner for headerless pages (28496)
  • Don’t use split subcategory color in docked header (28494)
  • Fix textarea height on mobile (28495)
  • Add title token for What’s New admin page (28476)
  • Apply new admin UI guidelines to What’s New (28454)
  • Show topic map in topics without replies by default (28468)
  • Improve mention colors for dark color schemes (28462)
  • Fix restore info link on admin backups page (28452)
  • Apply admin UI guidelines to custom flags (28433)
  • View count in topic map should always be at least 1 (28447)
  • Apply admin interface guidelines to Backups page (28051)
  • Improve mobile view for the new /about page (28406)
  • Omit fav badges count if max is 0 (28402)
  • Do not check for dimensions in video filename (28349)
  • Style reviewables in the user menu when avatars are enabled (28388)
  • Only scrollIntoView if sidebar items are not already visible (28372)
  • Tweak styling for the new /about page (28367)
  • Remove baseline alignment from chat timestamp (28345)
  • Remove poll button bg color to avoid highlight issue (28319)
  • Small topic map improvements and fixes (28215)
  • Set “topics” link in sidebar as active for hot, unseen, and my posts filters (28305)
  • Add sidebar DM list back when public channels are disabled (28301)
  • Add plugin outlet to embeddable hosts (28264)
  • Smaller modal headings, shorter flag mdoal title (28278)
  • Do not delete narrative bot PM when skipping user tips (28265)
  • Change bookmark menu label from “Custom…” to “More options…” (28266)
  • Fix issue with long usernames wrapping in mobile user cards (28256)
  • Fix user profile button wrap, clean up styles (28255)
  • Remove extra margin from flag description links (28251)
  • Break long words to prevent overflow in activity stream (28250)
  • Link edit text to search in badges form (28248)
  • Respect current locale on topic map views date format (28199)
  • Move admin flag form to form-kit (28187)
  • Hide/show preview button title attribute fix (28155)
4 Likes

Security Changes

  • Ensure user-stream topic titles are always escaped correctly
  • Limit /inline-onebox to 10 URLs at a time
  • Ability to bypass disabling chat of users
  • Restrict allowed URL patterns
  • Preload data only when rendering application layout
  • Sanitize video placeholder urls
  • Disable access to “activate-account” route for existing users
  • When enabled only allow Discourse Connect logins
  • Scrub headers to prevent access to files via nginx
  • Stored xss in image caption
  • Moderators cannot see user emails.
  • Prevent topic list filtering by hidden tags for unathorized users
  • Block registrations for encoded emails that are invalid
  • Add pagination to post replies
  • Use different anon cache keys for XHR requests
  • Correctly parse URLs in chat excerpts

Performance

  • Remove old fullscreen-detection code (31075)
  • Optimize uploads:disable_secure_uploads to load in batches (31030)
  • Enqueue Job::BackfillBadge in Jobs::BadgeGrant (30945)
  • Enable gzip for ttf/otf fonts (30867)
  • Refactor and optimize splash screen implementation (30373)
  • 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)
  • Cache serialized voters at topic view level (28894)
  • Update migration to drop index concurrently. (28955)
  • Drop user_search_similar_results site setting (28874)
  • Use insertText more efficiently in replaceText (28880)
  • Preload user options when status is enabled (28827)
  • Preload voters_count and has_voted (28808)
  • Don’t do initialization for every DB if RAILS_DB is set (28668)
  • Ensure suggested topics is only loaded on last page of topic view (28507)
  • Defer button actions to improve interaction-next-paint (INP) (28019)
  • Delete I18n._overrides after they have been applied (28405)
  • Automatically join users to channels more efficiently (28392)
  • Reduce mem allocation of Chat::AutoRemove::HandleCategoryUpdated (28393)
  • Reduce memory footprint of Chat::AutoRemove::HandleCategoryUpdated.call (28381)
  • Reduce memory footprint of Chat::AutoRemove::HandleCategoryUpdated (28332)
  • Do not expire cache when PostActionType is saved (28337)
  • No redis calls when running migrations (28336)
  • Skip reset flag callbacks on seed (28333)

Accessibility

  • Fix color issue with delete topic button in WCAG palette (31023)
  • Show focus when tabbing to user menu items (bottom bar) (31015)
  • Allow tabbing to members link in chat channel card (31016)
  • Move heading role to parent tag to fix voice control (30796)
  • Fix screen reader access to user directory (30499)
  • 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)
  • Add aria-label to user profile link in topic list (29088)
  • Announce “link copied!” confirmation for screen readers (29058)
  • Remove redundant tabindex=0 from polls (28320)
  • Add aria-label to avatar link on categories page (28304)
  • Do not skip heading levels in keyboard shortcut modal (28285)
7 Likes