3.4.0: Major Release

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