Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
565 commits
Select commit Hold shift + click to select a range
99bfced
DEPS: Bump faraday-multipart from 1.1.1 to 1.2.0 (#38516)
dependabot[bot] Mar 12, 2026
c53ffba
DEPS: Bump rqrcode from 3.1.1 to 3.2.0 (#38304)
dependabot[bot] Mar 12, 2026
0cd25e3
DEPS: Bump ffi from 1.17.2 to 1.17.3 (#38520)
dependabot[bot] Mar 12, 2026
e53b8ac
DEPS: Bump rails-html-sanitizer from 1.6.2 to 1.7.0 (#38519)
dependabot[bot] Mar 12, 2026
a91ee30
DEPS: Bump ruby-prof from 2.0.3 to 2.0.4 (#38513)
dependabot[bot] Mar 12, 2026
86ecf95
DEPS: Bump listen from 3.9.0 to 3.10.0 (#38414)
dependabot[bot] Mar 12, 2026
83657d4
FIX: ensure changes to topic template are tracked (#38538)
awesomerobot Mar 12, 2026
5ea96ba
DEPS: Bump multi_xml from 0.7.2 to 0.8.1 (#38515)
dependabot[bot] Mar 12, 2026
55c4623
DEV: moves field type on the field (#38506)
jjaffeux Mar 12, 2026
aa9bdb7
DEV: Filter hidden posts from duplicate link lookup (#38543)
janzenisaac Mar 12, 2026
1444702
DEV: Require admin for allow_admin screened IP mutations (#38545)
janzenisaac Mar 12, 2026
35aed98
PERF: Perform v8 GC immediately before fork (#38544)
davidtaylorhq Mar 12, 2026
6fac043
DEV: Update ember-template-compiler paths (#38542)
davidtaylorhq Mar 12, 2026
74acb00
Revert "DEV: moves field type on the field (#38506)" (#38548)
pmusaraj Mar 12, 2026
f59f594
A11Y: improve reactions for screenreaders and keyboard nav (#38546)
awesomerobot Mar 12, 2026
9ffc364
DEV: Fix incorrect CSS selectors in DiscoveryTopics test assertions (…
janzenisaac Mar 12, 2026
db27d28
A11Y: add aria-label to banner close button (#38551)
awesomerobot Mar 12, 2026
f4b58d5
PERF: add pagination to data explorer queries list (#38547)
xfalcox Mar 12, 2026
e8d63c9
DEV: moves field type on the field (#38552)
jjaffeux Mar 12, 2026
163e65e
DEV: Add missing original_filename to is_still_too_big? error (#38554)
janzenisaac Mar 12, 2026
753716c
A11Y: remove role from `aside` wrapping `blockquote` (#38555)
awesomerobot Mar 12, 2026
35d6eaa
UX: Dynamically refresh y-axis scale for stacked chart (#38364)
KrisKotlarek Mar 12, 2026
a610413
UX: remove right padding from full page chat (#38562)
awesomerobot Mar 12, 2026
83aee50
UX: improve scroll-ability visual feedback in toolbar menu (#38549)
renato Mar 12, 2026
8bd48ed
DEPS: Bump bootsnap from 1.19.0 to 1.23.0 (#38561)
dependabot[bot] Mar 12, 2026
0c38d12
DEPS: Bump ruby-lsp-rspec from 0.1.28 to 0.1.29 (#38560)
dependabot[bot] Mar 12, 2026
e59b9b3
DEPS: Bump stackprof from 0.2.27 to 0.2.28 (#38559)
dependabot[bot] Mar 12, 2026
bc27c81
DEPS: Bump ruby-lsp from 0.26.4 to 0.26.7 (#38558)
dependabot[bot] Mar 12, 2026
0587515
FIX: append by should work for non admin (#38567)
jjaffeux Mar 12, 2026
b17defe
FEATURE: Add additional solved settings to Support category tab (#38406)
ZogStriP Mar 12, 2026
5d603ec
DEV: Make `TopicLink.apply_link_visibility_filters` a private class m…
janzenisaac Mar 13, 2026
532140b
FIX: Mathjax errors flooding logs on rails server boot locally (#38570)
martin-brennan Mar 13, 2026
6decfd7
DEPS: Bump @rollup/plugin-babel from 6.1.0 to 7.0.0 (#38557)
dependabot[bot] Mar 13, 2026
3b6ea02
Build(deps): Bump connection_pool from 2.5.5 to 3.0.2 (#36509)
dependabot[bot] Mar 13, 2026
5b057b5
DEPS: Bump mini_racer from 0.19.2 to 0.20.0 (#38412)
dependabot[bot] Mar 13, 2026
a146180
DEPS: Bump json from 2.18.1 to 2.19.0 (#38581)
dependabot[bot] Mar 13, 2026
8df0e60
DEPS: Bump redis-client from 0.26.1 to 0.27.0 (#38580)
dependabot[bot] Mar 13, 2026
749c572
DEV: Minor cleanup of color-scheme-manager (#38565)
cvx Mar 13, 2026
e86ff20
A11Y: add aria-label to post control buttons (#38553)
awesomerobot Mar 13, 2026
b0409b1
FEAT: category-specific topic title placeholder (#38342)
tannerabread Mar 13, 2026
7cea0f5
A11Y: keyboard nav in topic lists don't show selected for horizon (#3…
keegangeorge Mar 13, 2026
37daea3
DEV: Add immediate deletion warning for auto-delete-after-last-post t…
janzenisaac Mar 13, 2026
614600d
DEV: Fix bin/lint and bin/qunit directory path handling (#38569)
megothss Mar 13, 2026
6e9cdda
DEPS: Bump rspec-rails from 8.0.2 to 8.0.3 (#38306)
dependabot[bot] Mar 13, 2026
5a3b48d
UX: improve AI agent form and tool chart (#38478)
awesomerobot Mar 13, 2026
fe5e4a2
FEATURE: Add human-in-the-loop approval queue for AI agent tool actio…
xfalcox Mar 13, 2026
09c0baa
Revert "FEAT: category-specific topic title placeholder" (#38588)
tannerabread Mar 13, 2026
4eba733
DEV: apply new field API (#38586)
jjaffeux Mar 13, 2026
e850da5
DEV: Throw theme load errors in test environments (#38582)
davidtaylorhq Mar 13, 2026
dc81db8
DEV: Remove obsolete pm-tracking code (#38590)
cvx Mar 13, 2026
958a52e
DEV: Flip ai_agents table rename strategy (#38592)
davidtaylorhq Mar 13, 2026
e0dec41
DEV: Add early returns to category color validation (#38583)
janzenisaac Mar 13, 2026
1d5d964
DEV: Promote old post-deploy migrations to pre-deploy (#38595)
davidtaylorhq Mar 13, 2026
35689bc
DEV: Add missing actions to requires_login in UsersController (#38584)
janzenisaac Mar 13, 2026
7f05748
DEV: Update DropToolDetailsFromAiPersonas following table rename flip…
davidtaylorhq Mar 13, 2026
10fc3da
DEV: update formkit docs (#38575)
SamSaffron Mar 13, 2026
68ab29f
UI: Pull dropdown menu item changes into foundation (#38512)
jordanvidrine Mar 13, 2026
8bef9eb
I18N: Update translations (#38579)
discourse-translator-bot Mar 13, 2026
7f5b062
Revert "Build(deps): Bump connection_pool from 2.5.5 to 3.0.2" (#38599)
romanrizzi Mar 13, 2026
bcfa69b
FIX: track category image setting fields (#38597)
awesomerobot Mar 13, 2026
f72854e
DEV: Don't raise on deprecations in non-bundled theme specs (#38604)
cvx Mar 13, 2026
366b15f
UX: don't remove border-radius from usercard buttons (#38602)
awesomerobot Mar 13, 2026
66de3eb
FIX: formatting of wrap tag in composer.js (markdown mode) (#38608)
renato Mar 15, 2026
c67683f
DEV: Fix stale originalFormData after locale switch in welcome banner…
janzenisaac Mar 15, 2026
7d2a01a
UX: always show composer toolbar by default on mobile (#38611)
renato Mar 15, 2026
b95bf09
DEPS: Bump lefthook from 2.1.2 to 2.1.3 (#38614)
dependabot[bot] Mar 16, 2026
79a4baf
DEV: Move category approval settings to join table (#38523)
tgxworld Mar 16, 2026
769cb7e
DOCS: persona -> agent (#38617)
SamSaffron Mar 16, 2026
95bca63
DEV: tasks and autonomous mode for service skill (#38619)
jjaffeux Mar 16, 2026
502aa36
DEV: Bump sidekiq to v7.3.10 (#38601)
davidtaylorhq Mar 16, 2026
3da856d
DEPS: Bump the prosemirror group with 3 updates (#38174)
dependabot[bot] Mar 16, 2026
541ef5a
FIX: Moderators being able to clear suspensions and silences from oth…
Grubba27 Mar 16, 2026
97c257e
DEV: Auto-generate emojiReplacementRegex from emoji database (#38491)
ZogStriP Mar 16, 2026
c3b9964
UX: include post ID in user data export (#38129)
awesomerobot Mar 16, 2026
c8af94c
UX: Use AdminConfigAreaCard for consistency (#38605)
jordanvidrine Mar 16, 2026
51899de
FIX: Mark helper methods as private in chat integration controllers
ducks Mar 5, 2026
7109a2a
DEV: move topic list category outlets outside conditionals (#38620)
chapoi Mar 16, 2026
2a53237
DEV: New component: segmented control (#38242)
chapoi Mar 16, 2026
00afa41
DEV: remove unused `start_with_this` string (#38624)
Grubba27 Mar 16, 2026
c29e722
FEAT: category-specific topic title placeholder (#38593)
tannerabread Mar 16, 2026
9edf5e8
I18N: Update translations (#38618)
discourse-translator-bot Mar 16, 2026
a96481d
FIX: Fix trailing colon in redirect URI display for custom scheme URL…
Grubba27 Mar 16, 2026
4f3613e
DEV: Improve banner topic permissions for read-restricted and unliste…
janzenisaac Mar 16, 2026
40b694f
DEV: capture modal trigger element before async operations (#38630)
janzenisaac Mar 16, 2026
e88573a
DEV: fix null crash in dashboard-new-features on feed error (#38628)
janzenisaac Mar 16, 2026
249a2c1
DEV: fix missing routeWillChange cleanup in scroll-direction service …
janzenisaac Mar 16, 2026
a765577
DEV: use explicit permit instead of permit! for provider_params (#38632)
janzenisaac Mar 16, 2026
b05704b
DEV: reset loadingMore on pagination error in categories modal (#38634)
janzenisaac Mar 16, 2026
3ff7b60
UX: adjust bookmark menu (#38629)
jordanvidrine Mar 16, 2026
611ea42
DEV: escape provider display name in omniauth failure message (#38635)
janzenisaac Mar 16, 2026
f5fcccf
FIX: Category Topic Title Placeholder not working with simplified cat…
tannerabread Mar 16, 2026
43284fb
DEV: Respect `one_per_topic` from global tag groups when `allow_globa…
janzenisaac Mar 16, 2026
cdb7094
FIX: match ActiveRecord#reload signature in overrides (#38639)
SamSaffron Mar 16, 2026
1012851
FEATURE: Gate Support category type creation behind upcoming change (…
martin-brennan Mar 16, 2026
f8666b6
DEV: Tidy plugin API key scope resource names (#38640)
SamSaffron Mar 17, 2026
d3ce17f
DOCS: various link fixes for theme quick ref guide (#38645)
tshenry Mar 17, 2026
1cf5160
DEV: Move enable_simplified_category_creation to Alpha status (#38572)
martin-brennan Mar 17, 2026
44a37c6
PERF: let lefthook run linter commands in parallel (#38649)
tgxworld Mar 17, 2026
2b8c97a
DEV: Harden AI artifact postMessage and COOP headers (#38647)
janzenisaac Mar 17, 2026
e6f8907
DEPS: Bump json from 2.19.0 to 2.19.1 (#38615)
dependabot[bot] Mar 17, 2026
d73aaab
FIX: merge topics with solved answers (#38532)
dbattersby Mar 17, 2026
76e9ea8
DEV: Update linting & topic-list customization docs (#38577)
SamSaffron Mar 17, 2026
f0bf8f6
DEV: Remove `dropFrom` parameter from deprecations (#38656)
davidtaylorhq Mar 17, 2026
7553e9e
UX: Make entire Horizon topic card link to last read post (#38655)
ZogStriP Mar 17, 2026
dce7b10
FIX: Fix bypass_bump parameter ignoring explicit false values (#38637)
Grubba27 Mar 17, 2026
a44f5cb
DEV: Fix the theme-qunit redirect (#38657)
cvx Mar 17, 2026
e4816c1
Convert MySQL integer to time object (#38609)
pacohope Mar 17, 2026
f1a8ef7
FIX: composer resize broken on Horizon at wider viewports (#38654)
ZogStriP Mar 17, 2026
0771253
FIX: skip post webhook when topic is permanently destroyed (#38653)
ZogStriP Mar 17, 2026
82003db
DEV: Add v8 garbage collection after every call (#38659)
davidtaylorhq Mar 17, 2026
cda4b34
FEATURE: Add calendar subscription URLs to user preferences (#38598)
xfalcox Mar 17, 2026
b1f4499
DEV: Extract embed post date title into i18n-aware helper (#38594)
janzenisaac Mar 17, 2026
d39bd03
DEV: Fix invite-only OAuth signup bypass via non-invite origin routes…
janzenisaac Mar 17, 2026
66cd07d
DEV: Require login and confirmed session for update_security_key (#38…
janzenisaac Mar 17, 2026
631f511
DEV: Handle InvalidParameters inside bulk action hijack block (#38589)
janzenisaac Mar 17, 2026
3477bc5
DEV: Fix boolean false params nilled on chat channel update (#38587)
janzenisaac Mar 17, 2026
a1070f2
DEV: add deprecation to addSaveableUserOptionField (#38638)
janzenisaac Mar 17, 2026
9954d2b
UX: Show year in topic summary date when not current year (#38661)
xfalcox Mar 17, 2026
31ae4b0
UX: Fix pinned menu (#38663)
jordanvidrine Mar 17, 2026
70ddac5
FIX: Handle blank-slug topics in full app embed mode (#38668)
xfalcox Mar 17, 2026
cfa6908
DEV: Name all test fixtures for easier auto-import (#38665)
cvx Mar 17, 2026
9c20eb5
FIX: Handle nil starts_at in ICS feeds and default to recent events (…
xfalcox Mar 17, 2026
d8330da
DEV: Apply consistent N+1 fix pattern to ThreadOriginalMessageSeriali…
janzenisaac Mar 17, 2026
0303bf5
DEV: Move puma to test-only dependency (#38652)
tgxworld Mar 17, 2026
8d8e82c
DEV: Minor updates to AI-AGENTS.md (#38651)
martin-brennan Mar 17, 2026
5671a8a
FIX: ensures email_in_enabled (#38660)
jjaffeux Mar 17, 2026
2602162
DEV: symlink to skills (#38573)
SamSaffron Mar 17, 2026
f2f1f0a
DEV: Progress 4 upcoming changes to Beta status (#38648)
martin-brennan Mar 17, 2026
c207b79
FIX: Raise error when S3 asset deletion fails (#38626)
ducks Mar 18, 2026
75ebc4f
FEATURE: Allow removal of Support category type (#38650)
martin-brennan Mar 18, 2026
cbb5748
DEPS: Bump pnpm/action-setup from 4 to 5 (#38680)
dependabot[bot] Mar 18, 2026
9ec062d
DEPS: Bump puppeteer-core from 24.38.0 to 24.39.0 (#38674)
dependabot[bot] Mar 18, 2026
023f5d5
DEPS: Bump prosemirror-gapcursor from 1.4.0 to 1.4.1 in the prosemirr…
dependabot[bot] Mar 18, 2026
17fd788
Bump faraday from 2.10.1 to 2.14.1 in /docs/developer-guides (#38623)
dependabot[bot] Mar 18, 2026
d77b9bc
DEV: Rename `PluginOutlet` class for better autoimport (#38685)
cvx Mar 18, 2026
5b2956a
DEV: Rename `pretender` export for easier autoimport (#38684)
cvx Mar 18, 2026
be928b1
I18N: Update translations (#38683)
discourse-translator-bot Mar 18, 2026
eeda229
Revert "FIX: Raise error when S3 asset deletion fails (#38626)" (#38687)
davidtaylorhq Mar 18, 2026
b9bbddf
UX: make table edit element fixed visible on tablets (#38686)
chapoi Mar 18, 2026
e209a27
FIX: set formkit type class in template (#38679)
awesomerobot Mar 18, 2026
b3eb3c7
FIX: Prevent duplicate table edit buttons on quoted tables (#38689)
ZogStriP Mar 18, 2026
a6098e0
FEATURE: Improve pre-built asset bundles (#38502)
davidtaylorhq Mar 18, 2026
638351f
DEPS: Bump timeout from 0.6.0 to 0.6.1 (#38672)
dependabot[bot] Mar 18, 2026
bc9d3d1
UX: Add more reports to legacy, removing them from the reports page (…
nattsw Mar 18, 2026
c557caf
FEAT: add all_day option to calendar events (#38511)
tannerabread Mar 18, 2026
78c37cf
UX: add description field to simplified category creation form (#38678)
awesomerobot Mar 18, 2026
a799a90
FIX: Delete reviewable notes before reviewables during user deletion …
nattsw Mar 19, 2026
7d4dc26
FIX: Enforce content disposition on S3 presigned URLs (#38681)
tgxworld Mar 19, 2026
3fdf18e
UX: update grid layout in composer (#38699)
chapoi Mar 19, 2026
74d532c
DEV: Enable rollup plugin compiler by default (#38658)
davidtaylorhq Mar 19, 2026
23e3c24
DEV: Use assemble_ember_build in `docker.rake` (#38715)
davidtaylorhq Mar 19, 2026
4e332d1
UX: Allow upload placeholder text to wrap on long translations (#38712)
ZogStriP Mar 19, 2026
ab85f1d
DEV: Ensure plugins are loaded correctly when building in bin/qunit (…
davidtaylorhq Mar 19, 2026
a6f904e
Revert "FIX: Enforce content disposition on S3 presigned URLs (#38681…
nattsw Mar 19, 2026
6ef9283
DEV: Ensure plugins are loaded correctly when building in docker.rake…
davidtaylorhq Mar 19, 2026
c4d8ad0
DEPS: Bump json from 2.19.1 to 2.19.2 (#38716)
dependabot[bot] Mar 19, 2026
470486e
Bump json from 2.19.1 to 2.19.2 in /docs/developer-guides (#38717)
dependabot[bot] Mar 19, 2026
21b6124
DEPS: Bump ruby-lsp from 0.26.7 to 0.26.8 (#38696)
dependabot[bot] Mar 19, 2026
09697f8
DEPS: Bump rspec-rails from 8.0.3 to 8.0.4 (#38695)
dependabot[bot] Mar 19, 2026
4d8ad50
DEPS: Bump loofah from 2.25.0 to 2.25.1 (#38694)
dependabot[bot] Mar 19, 2026
4b61690
UX: Update copy for topic bulk actions (#38714)
nattsw Mar 19, 2026
c353e03
DEV: Update excluded tables in migrations (#38723)
cvx Mar 19, 2026
97cbc56
SECURITY: Hidden group membership can be inferred via allowed_names a…
keegangeorge Mar 6, 2026
757753a
SECURITY: Validate auth_redirect in UserApiKeysController#new to prev…
davidtaylorhq Mar 19, 2026
b15e917
SECURITY: exclude_groups enables private group membership inference w…
keegangeorge Mar 6, 2026
f8ed7af
SECURITY: Restrict deleted posts index endpoint to staff only
janzenisaac Mar 6, 2026
3d9b005
SECURITY: Prevent private user action types from leaking
janzenisaac Mar 6, 2026
58f56d3
SECURITY: Unauthorized Post Data Exposure in discourse-user-notes Plugin
janzenisaac Mar 6, 2026
4b9ee0b
SECURITY: Enforce edit permissions and audit trail in TriggerPostAction
janzenisaac Mar 5, 2026
c17278e
SECURITY: Prevent users from editing or synonymizing hidden tags they…
janzenisaac Mar 5, 2026
4d49016
SECURITY: escape solved topic title in stream
dbattersby Mar 6, 2026
c0f6e9a
SECURITY: Unscoped status lookups leak restricted metadata
SamSaffron Mar 10, 2026
8373bbc
SECURITY: Block ticket creation when user can't see the topic
Grubba27 Mar 4, 2026
db4a4b0
SECURITY: Staff can modify any user's group notification level
janzenisaac Mar 4, 2026
98857b0
SECURITY: Private message invite can see topic
janzenisaac Mar 4, 2026
596a7cc
SECURITY: Hide IP from flagged regular users
janzenisaac Mar 4, 2026
52e46bb
SECURITY: add visibility check for solved endpoints
dbattersby Mar 9, 2026
1a6b3cd
SECURITY: Fix poll post_id array authorization bypass
nattsw Mar 4, 2026
dcde9de
SECURITY: Add authorization to policy `add-users-to-group`
tgxworld Feb 25, 2026
451ed6a
SECURITY: Validate policy permissions on post save
tgxworld Feb 27, 2026
d9c8013
SECURITY: Enforce `moderators_view_ips` on screened IP CSV export
jjaffeux Feb 27, 2026
d2f3172
SECURITY: Filter whisper posts from private-posts feed
jjaffeux Feb 24, 2026
14ff4de
SECURITY: Enforce Guardian checks in `UserActionsController#show`
tgxworld Feb 23, 2026
8ae7cb2
SECURITY: escape LLM triage output in review flag reasons
romanrizzi Feb 23, 2026
bf1f4de
SECURITY: remove `list_target_user` from `ListController`
tgxworld Feb 23, 2026
8817a6d
SECURITY: hide total_rows for restricted post action types
tgxworld Feb 23, 2026
c14f8f5
SECURITY: Stored XSS via Shared AI Conversation Onebox
romanrizzi Feb 20, 2026
d3cb203
SECURITY: fix is_warning type coercion bypass in PostActionsController
tgxworld Feb 20, 2026
5eca5b5
SECURITY: prevent hidden profile data leak via user onebox
jjaffeux Feb 19, 2026
472f9e1
SECURITY: Sanitize graphviz SVG anchor links to prevent XSS
pmusaraj Feb 18, 2026
c0eeb58
SECURITY: check revision visibility on posts endpoint
jjaffeux Feb 18, 2026
f99099c
SECURITY: fix loose hostname matching in spam host allowlist
jjaffeux Feb 18, 2026
ab402b7
SECURITY: XSS in review queue via `highlightWatchedWords`
keegangeorge Feb 17, 2026
4732882
SECURITY: Do not leak PM post edits to moderators
pmusaraj Feb 17, 2026
c4762a4
SECURITY: Disallow URL-encoded path traversal in iframe URLs
pmusaraj Feb 17, 2026
d02b296
DEV: Bump development branch to v2026.3.0-latest.1
davidtaylorhq Mar 19, 2026
cc84ba9
UX: improve alignment and wrapping of bulk select (#38701)
awesomerobot Mar 19, 2026
b39abb5
FIX: Respect user email preferences in group SMTP emails
ducks Mar 17, 2026
43c5685
A11Y: use list elements for tag list (#38731)
awesomerobot Mar 19, 2026
d14c2b5
A11Y: add empty alt attribute to sidebar avatar (#38729)
awesomerobot Mar 19, 2026
a5c7f6f
FIX: mention highlighting with case insensitive usernames (#38718)
dbattersby Mar 19, 2026
8fc971b
UX: Remove redundant 'You have selected N topics.' in topic bulk sele…
nattsw Mar 19, 2026
554977c
MT: Refactor schema configuration from YAML to Ruby DSL
gschlager Mar 19, 2026
89f26da
MT: Switch to nested module style across migrations/ (#38564)
gschlager Mar 19, 2026
c8c0d40
FIX: HTML content in JSON-schema-based theme settings (#38732)
davidtaylorhq Mar 19, 2026
569a8e7
I18N: Update translations (#38711)
discourse-translator-bot Mar 19, 2026
3ed184b
A11Y: remove unneccessary listbox role from select-kit-header (#38735)
awesomerobot Mar 19, 2026
e075048
A11Y: add aria-label to new topic button for small screens (#38736)
awesomerobot Mar 19, 2026
96a4198
UX: show message explaining AI added search results (#38743)
awesomerobot Mar 19, 2026
38533d6
DEV: Update rubocop (#38721)
cvx Mar 19, 2026
7504805
FIX: allow out-of-sequence theme settings migrations on re-sync (#38705)
martin-brennan Mar 20, 2026
30fd6f4
UX: hljs language selector sorting (#38704)
martin-brennan Mar 20, 2026
12b79c7
DEPS: Bump lefthook from 2.1.3 to 2.1.4 (#38740)
dependabot[bot] Mar 20, 2026
298c020
FIX: Use replacement icon class for all dot-namespaced icon IDs (#38713)
ZogStriP Mar 20, 2026
a8285f1
FIX: PM unread count shows (1) but message list is empty (#38733)
ZogStriP Mar 20, 2026
8b7a694
I18N: Update translations (#38748)
discourse-translator-bot Mar 20, 2026
b83d665
DEV: Add nested module style commit to .git-blame-ignore-revs
gschlager Mar 19, 2026
8317004
DEV: Increase plugin build timeout (#38750)
davidtaylorhq Mar 20, 2026
2645d89
UX: topic list tags fixes (#38749)
chapoi Mar 20, 2026
3639c1b
DEV: Add 2026 Eid-ul-Fitr holidays for Ghana (#38742)
s3lase Mar 20, 2026
ed0ae94
UX: Update release-note links (#38751)
davidtaylorhq Mar 20, 2026
f28c24c
FIX: keep silent AI triage silent on credit exhaustion (#38738)
xfalcox Mar 20, 2026
a79bbe9
FIX: remove duplication in llm error message (#38753)
awesomerobot Mar 20, 2026
2b73d03
FIX: Handle colocated connectors in rollup theme/plugin compiler (#38…
davidtaylorhq Mar 20, 2026
bbc0841
UX: minor tag alignment adjustment (#38754)
awesomerobot Mar 20, 2026
eb4cbbe
DEV: Introduce deprecation for `.js.es6` file extension (#38756)
davidtaylorhq Mar 20, 2026
17c6962
DEV: Introduce deprecation for `.hbs` file extension (#38757)
davidtaylorhq Mar 20, 2026
32c0b7c
FIX: Properly escape ICS feed content per RFC 5545 (#38761)
xfalcox Mar 20, 2026
ba307b3
FIX: Expand recurring events in ICS feed (#38762)
xfalcox Mar 20, 2026
a2c7c40
UX: add gap to LLM token config (#38744)
awesomerobot Mar 20, 2026
fb8ef7e
UX: avoid scroll when it's not neccessary (#38760)
awesomerobot Mar 20, 2026
9b9ca29
I18N: Update translations (#38778)
discourse-translator-bot Mar 23, 2026
3f3a311
DEV: Migrate post-voting category settings outlet to FormKit (#38752)
ZogStriP Mar 23, 2026
ca65bfd
UX: overrule borderadius on period-chooser (#38780)
chapoi Mar 23, 2026
b511abc
DEPS: Bump sqlite3 from 2.9.1 to 2.9.2 (#38774)
dependabot[bot] Mar 23, 2026
289a31e
DEPS: Bump mocha from 3.0.2 to 3.1.0 (#38773)
dependabot[bot] Mar 23, 2026
a94266a
DEPS: Bump puppeteer-core from 24.39.0 to 24.39.1 (#38771)
dependabot[bot] Mar 23, 2026
47dac95
DEV: Make template-action deprecation notify admins (#38781)
cvx Mar 23, 2026
5d30d63
DEV: Fix OutletInfoComponent type definition (#38782)
cvx Mar 23, 2026
bb16e3f
DEV: add isComplete to start posting options (#38764)
Grubba27 Mar 23, 2026
4ec7d97
FEATURE: Filter topics by bookmark creation date (#38662)
Grubba27 Mar 23, 2026
b008980
DEV: Add admin notices for pre-3.0 deprecations (#38783)
cvx Mar 23, 2026
ee5b196
DEPS: Bump the types group with 3 updates (#38692)
dependabot[bot] Mar 23, 2026
3c75a0a
DEV: introduce additional CSS variables for theming (#38765)
awesomerobot Mar 23, 2026
ed1938a
FIX: Upcoming Events filter count (#38769)
tannerabread Mar 23, 2026
2eadf90
UX: clean up alignment in suggested topics message (#38785)
awesomerobot Mar 23, 2026
419827b
FIX: Move JS importmap earlier in DOM (#38784)
davidtaylorhq Mar 23, 2026
de973de
FIX: Handle boolean values in version check response (#38786)
davidtaylorhq Mar 23, 2026
5aa8c43
wip
jjaffeux Mar 23, 2026
73e71b0
lock
jjaffeux Mar 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
1 change: 1 addition & 0 deletions .agents/skills
1 change: 1 addition & 0 deletions .claude/skills
3 changes: 3 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
Expand Up @@ -85,3 +85,6 @@ e41897a3066199f3b7f4c019fb638615dfe1f007

# remove route-template usage
88d4e242ead238b353f441533a0c4b8ce3fa1f7b

# MT: Switch to nested module style across migrations/ (#38564)
89f26da39d8c977c3dde7ef7e0a5c3f2a4b58e44
9 changes: 4 additions & 5 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ updates:
prefix: "DEPS"
cooldown:
default-days: 7
open-pull-requests-limit: 20
open-pull-requests-limit: 40
versioning-strategy: lockfile-only
allow:
- dependency-type: direct
Expand Down Expand Up @@ -74,10 +74,9 @@ updates:
prefix: "DEPS"
cooldown:
default-days: 7
exclude: [
"@discourse/*"
]
open-pull-requests-limit: 20
exclude:
- "@discourse/*"
open-pull-requests-limit: 40
versioning-strategy: increase
ignore:
- dependency-name: "webpack" # Recent versions have bugs with `/static` loading. We're working to move away from webpack anyway.
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/dependabot-pnpm-dedupe.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ jobs:
token: ${{ secrets.GH_PUSH_TOKEN }}

- name: Set up pnpm
uses: pnpm/action-setup@v4
uses: pnpm/action-setup@v5

- name: Set up Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 22

Expand Down
9 changes: 5 additions & 4 deletions .github/workflows/developer-docs-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,14 @@ jobs:

steps:
- uses: actions/checkout@v6
with:
fetch-depth: 1

- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@v5

- uses: actions/setup-node@v4
- uses: actions/setup-node@v6
with:
cache: "pnpm"
cache-dependency-path: docs/developer-guides/pnpm-lock.yaml
node-version: 24

- name: Install dependencies
run: pnpm install --frozen-lockfile
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/linting.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,11 @@ jobs:

- name: ESLint
if: ${{ !cancelled() }}
run: pnpm lint:js
run: pnpm lint:js --max-warnings 0

- name: Types
if: ${{ !cancelled() }}
run: pnpm lint:types

- name: Prettier
if: ${{ !cancelled() }}
Expand All @@ -95,7 +99,3 @@ jobs:
- name: English locale lint (core plugins)
if: ${{ !cancelled() }}
run: bundle exec ruby script/i18n_lint.rb "plugins/**/locales/{client,server}.en.yml"

- name: Types
if: ${{ !cancelled() }}
run: pnpm lint:types
29 changes: 26 additions & 3 deletions .github/workflows/migration-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -112,12 +112,35 @@ jobs:

- name: Validate IntermediateDB schema
run: |
# Show structured differences between DSL config and database
migrations/bin/cli schema diff --db=intermediate_db || true

# Regenerate schema from DSL config
migrations/bin/cli schema generate --db=intermediate_db

if [ ! -z "$(git status --porcelain migrations/db/intermediate_db_schema/)" ]; then
# Check if generated output matches what's committed
if [ ! -z "$(git status --porcelain migrations/db/intermediate_db_schema/ migrations/lib/database/intermediate_db/ migrations/lib/database/intermediate_db/enums/)" ]; then
echo ""
echo "=========================================="
echo "IntermediateDB schema is not up to date."
echo "---------------------------------------------"
git -c color.ui=always diff migrations/db/intermediate_db_schema/
echo "=========================================="
echo ""
echo "The generated schema files differ from what is committed."
echo "This usually means the schema DSL config or the database"
echo "structure changed without regenerating."
echo ""
echo "To fix:"
echo " 1. Run: migrations/bin/cli schema diff"
echo " to see what changed between config and database"
echo " 2. Update config files in migrations/config/schema/intermediate_db/"
echo " - New tables: migrations/bin/cli schema add <table>"
echo " - Ignore tables: migrations/bin/cli schema ignore <table> --reason '...'"
echo " - New columns: add to the table's include list or ignore with reason"
echo " 3. Run: migrations/bin/cli schema generate"
echo " 4. Commit the updated config and generated files"
echo ""
echo "Generated file diff:"
git -c color.ui=always diff -- migrations/db/intermediate_db_schema/ migrations/lib/database/intermediate_db/ migrations/lib/database/intermediate_db/enums/
exit 1
fi

Expand Down
15 changes: 14 additions & 1 deletion .github/workflows/publish-assets.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ on:
- main
- stable
- release/*
- precompile-asset-improvements
tags:
- beta
- v*
Expand All @@ -20,7 +21,7 @@ jobs:
runs-on: 'cdck-linux-8-core'
container: discourse/discourse_test:release
timeout-minutes: 30

steps:
- name: Install gh cli
run: |
Expand All @@ -46,6 +47,18 @@ jobs:
git config --global user.email "ci@ci.invalid"
git config --global user.name "Discourse CI"

- name: Symlink vendor/bundle from image
run: |
ln -s /var/www/discourse/vendor/bundle vendor/bundle

- name: Setup gems
run: |
bundle config --local path vendor/bundle
bundle config --local deployment true
bundle config --local without development
bundle install --jobs $(($(nproc) - 1))
bundle clean

- name: pnpm install
run: pnpm install --frozen-lockfile

Expand Down
58 changes: 58 additions & 0 deletions .github/workflows/publish-types.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: Publish @discourse/types package

on:
workflow_dispatch:
push:
branches:
- main
paths:
- "lib/version.rb"

permissions:
contents: read
id-token: write

jobs:
publish:
name: publish
runs-on: ubuntu-latest
if: github.repository == 'discourse/discourse'
timeout-minutes: 5

steps:
- uses: actions/checkout@v6
with:
fetch-depth: 1

- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.4"

- uses: pnpm/action-setup@v5

- uses: actions/setup-node@v6
with:
node-version: 24

- name: pnpm install
run: pnpm install --frozen-lockfile

- name: Generate external type definitions
run: pnpm types:generate

- name: Generate type definitions
run: pnpm lint:types

- name: Prepare version
shell: bash
run: |
discourse_version=$(ruby -r ./lib/version.rb -e 'puts "#{Discourse::VERSION::MAJOR}.#{Discourse::VERSION::MINOR}.#{Discourse::VERSION::TINY}"')
commit_hash=$(git rev-parse --short HEAD)
package_version="${discourse_version}-${commit_hash}"

echo "@discourse/types version: ${package_version}"
sed -i -E "s/\"version\": \"0\.0\.0\"/\"version\": \"${package_version}\"/" frontend/discourse-types/package.json

- name: Publish the package
working-directory: frontend/discourse-types
run: pnpm publish --no-git-checks --tag latest
2 changes: 1 addition & 1 deletion .github/workflows/release-notes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ jobs:
bin/rake "release_note:plugins:generate[ ${{ steps.dates.outputs.from }} , ${{ steps.dates.outputs.to }} , ./tmp/all-the-plugins/official/* , discourse ]" | tee tmp/notes/plugins.txt

- name: Export files
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v7
with:
name: release-notes
path: ./tmp/notes/*.txt
Expand Down
17 changes: 11 additions & 6 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ permissions:
jobs:
build:
if: github.event_name == 'pull_request' || github.repository != 'discourse/discourse-private-mirror'
name: ${{ matrix.target }} ${{ matrix.build_type }}${{ (matrix.target == 'core' && matrix.build_type == 'frontend' && format(' ({0})', matrix.browser)) || '' }} # Update fetch-job-id step if changing this
name: ${{ matrix.target }} ${{ matrix.build_type }}${{ (matrix.target == 'core' && matrix.build_type == 'frontend' && format(' ({0})', matrix.browser)) || '' }}${{ matrix.plugin_compiler == 'legacy' && ' (legacy)' || '' }}
runs-on: >-
${{
github.repository_owner == 'discourse' && (
Expand Down Expand Up @@ -62,6 +62,7 @@ jobs:
LOAD_PLUGINS: ${{ (matrix.target == 'core-plugins' || matrix.target == 'official-plugins' || matrix.target == 'plugins' || matrix.target == 'chat') && '1' || '0' }}
ACTIONS_STEP_DEBUG: ${{ secrets.ACTIONS_STEP_DEBUG }}
QUNIT_REUSE_BUILD: 1
ROLLUP_PLUGIN_COMPILER: ${{ matrix.plugin_compiler == 'rollup' && '1' || '0' }}

strategy:
fail-fast: false
Expand All @@ -70,6 +71,7 @@ jobs:
build_type: [backend, frontend, system]
target: [core, plugins, themes]
browser: [Chrome]
plugin_compiler: ["rollup"]
exclude:
- build_type: backend
target: themes
Expand All @@ -87,6 +89,9 @@ jobs:
- build_type: system
target: chat
browser: Chrome
- build_type: frontend
target: plugins
plugin_compiler: "legacy"
# - build_type: frontend
# target: core
# browser: Firefox Evergreen
Expand Down Expand Up @@ -317,7 +322,7 @@ jobs:
if: matrix.build_type == 'frontend' && matrix.target == 'themes'
run: DISCOURSE_DEV_DB=discourse_test bin/rake themes:qunit_all_official

- uses: actions/upload-artifact@v6
- uses: actions/upload-artifact@v7
if: always() && matrix.build_type == 'frontend'
with:
name: ember-exam-execution-${{ matrix.target }}-${{ matrix.browser }}-frontend-${{ hashFiles('./frontend/discourse/test-execution-*.json') }}
Expand Down Expand Up @@ -370,7 +375,7 @@ jobs:
fi

- name: Upload failed system test artifacts
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v7
if: always() && steps.check-failed-system-test-artifacts.outputs.exists == 'true'
with:
name: failed-system-test-artifacts-${{ matrix.build_type }}-${{ matrix.target }}
Expand All @@ -394,7 +399,7 @@ jobs:
run: cp tmp/turbo_rspec_flaky_tests.json tmp/turbo_rspec_flaky_tests-${{ matrix.build_type }}-${{ matrix.target }}-${{ job.check_run_id }}.json

- name: Upload flaky tests report
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v7
if: steps.check-flaky-spec-report.outputs.exists == 'true'
with:
name: flaky-test-reports-${{ matrix.build_type }}-${{ matrix.target }}
Expand All @@ -406,7 +411,7 @@ jobs:
needs: build
steps:
- name: Merge Artifacts
uses: actions/upload-artifact/merge@v6
uses: actions/upload-artifact/merge@v7
with:
name: failed-system-test-artifacts
pattern: failed-system-test-artifacts-*
Expand All @@ -416,7 +421,7 @@ jobs:
continue-on-error: true

- name: Merge Artifacts
uses: actions/upload-artifact/merge@v6
uses: actions/upload-artifact/merge@v7
with:
name: flaky-test-reports
pattern: flaky-test-reports-*
Expand Down
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@
!/plugins/discourse-ai
!/plugins/discourse-cakeday
!/plugins/discourse-rewind
!/plugins/discourse-workflows
/plugins/*/auto_generated

/spec/fixtures/plugins/my_plugin/auto_generated
Expand Down Expand Up @@ -125,6 +126,10 @@ openapi/*

# Types
frontend/discourse-types/declarations
frontend/discourse-types/external-types
frontend/discourse-types/external-types.d.ts
frontend/discourse-i18n/src/index.d.ts
frontend/discourse-i18n/src/index.d.ts.map
*.tsbuildinfo

# discourse-ai evals
Expand All @@ -136,3 +141,4 @@ frontend/discourse-types/declarations
/.claude
/.cursor
.playwright-mcp
/frontend/discourse-types/dts-generator.js
2 changes: 2 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public/
vendor/
frontend/discourse/tests/unit/utils/decorators-test.js
frontend/discourse/tests/fixtures
frontend/discourse-types/dts-generator.js
spec/
node_modules/
dist/
Expand All @@ -23,4 +24,5 @@ tmp/
**/*.rb
**/*.html
**/*.json
!**/tsconfig.json
**/*.md
4 changes: 4 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
inherit_gem:
rubocop-discourse: stree-compat.yml

inherit_mode:
merge:
- Exclude

# Still work to do in ensuring we don't link old files
Discourse/NoAddReferenceOrAliasesActiveRecordMigration:
Enabled: false
Expand Down
Loading
Loading