Commit Graph

35330 Commits

Author SHA1 Message Date
27227c9ece DEV: Simplify CORS logic for public asset routes (#33106)
Previously we would check the request for a matching CDN hostname before
applying the `Access-Control-Allow-Origin` header. That logic requires
the CDN to include its public-facing hostname in the `Host` header,
which is not always the case.

Since we are only running this `apply_cdn_headers` before_action on
publicly-accessible asset routes, we can simplify things so that the
`Access-Control-Allow-Origin: *` header is always included. That will
make CDN config requirements much more relaxed.

At the moment, this is primarily relevant to the HighlightJsController
routes, which are loaded using native JS `type=module`. But in the near
future, we plan to expand our use of `type=module` to more critical JS
assets like translations and themes.

Also drops the `Access-Control-Allow-Methods` header from these
responses. That isn't needed for `GET` and `HEAD` requests.
2025-06-09 08:58:27 +01:00
232f220546 UX: add * mention to site setting description 2025-06-09 12:04:15 +08:00
aa6d0bb685 SECURITY: Respect max length in bot-human PMs
…and work around long-url parsing issue.
2025-06-09 12:04:11 +08:00
ff1f2ee0a0 FIX: Wrong link to groups in post-small-action widget (#33099) 2025-06-09 09:08:56 +08:00
0971556058 FIX: Do not show header search icon if welcome banner search shown (#33098)
This brings the search_icon header search mode to parity with the
search_field mode. We don't want to show either of these if the welcome
banner is showing, since it has a search field, this is redundant.

If you scroll the page and the welcome banner is hidden, then we
show the header search icon.

This commit also cleans up some code related to the page-search
shortcut, which we no longer use, including limiting showing search
on topic only if there are > 20 posts.
2025-06-09 09:17:13 +10:00
43e41cea44 Build(deps-dev): Bump @swc/core from 1.11.29 to 1.11.31 (#33091)
Bumps [@swc/core](https://github.com/swc-project/swc) from 1.11.29 to
1.11.31.
- [Release notes](https://github.com/swc-project/swc/releases)
- [Changelog](https://github.com/swc-project/swc/blob/main/CHANGELOG.md)
-
[Commits](https://github.com/swc-project/swc/compare/v1.11.29...v1.11.31)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-07 17:01:47 +02:00
6608c0958c Build(deps): Bump terser from 5.40.0 to 5.41.0 (#33090)
Bumps [terser](https://github.com/terser/terser) from 5.40.0 to 5.41.0.
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.40.0...v5.41.0)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-07 14:46:10 +02:00
a867a8fe1b Build(deps): Bump @babel/standalone from 7.27.5 to 7.27.6 in the babel group (#33089)
Bumps the babel group with 1 update:
[@babel/standalone](https://github.com/babel/babel/tree/HEAD/packages/babel-standalone).


Updates `@babel/standalone` from 7.27.5 to 7.27.6
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
-
[Commits](https://github.com/babel/babel/commits/v7.27.6/packages/babel-standalone)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-07 14:45:53 +02:00
623cde985b FIX: Wrap theme translations in IIFE (#33108)
Without this wrapper, `data` is defined in the global scope and clashes
when there are multiple themes with translations.

Followup to 033cccdf17a56b43f9f243bb549abe0a41a0de63

We can remove the wrapper once we land
https://github.com/discourse/discourse/pull/33107
2025-06-06 16:40:07 +01:00
033cccdf17 DEV: Simplify theme translation JS generation (#33104)
Theme translations are very simple JS, and do not need to be run through
the theme transpiler. This brings their format in-line with core/plugin
translations.

Extracted from https://github.com/discourse/discourse/pull/33103
2025-06-06 16:00:49 +01:00
cb6cc8dcd3 DEV: Drop support for template overrides and mobile-specific templates (#33101)
https://meta.discourse.org/t/355668
2025-06-06 14:34:20 +01:00
1cde45c2b4 DEV: allow custom community sidebar links to pass models for route params (#33070) 2025-06-06 08:28:56 -04:00
14e6124fac UX: only show single composer tip at a time (#33050)
Most composer tips use the "educational" template name but similar
topics uses it's own template. We only allow showing if a tip using the
template name wasn't shown already. So therefore a welcome message (ie.
"educational") could show at the same time as a "similar topics" tip,
which isn't ideal from a UX perspective.

This change prevents overlapping composer tips by only opening the popup
if there are no popups open already. Therefore requiring the user to
close a tip before another different tip type could open.
2025-06-06 15:28:50 +04:00
4fc7e4b1c9 DEV: Fix post highlighting for keyboard navigation in the Glimmer Post Stream (#33097)
This commit fixes displaying the post highlighted when navigating using
the keyboard.

Ember was overriding the direct DOM manipulations, causing the browser
outline to be displayed.
2025-06-06 10:14:35 +01:00
b5711590f9 UX: Add z-index to the admin save all banner (#33093)
### Before

![image](https://github.com/user-attachments/assets/2876d06e-6c01-4e86-871a-5433128b7e25)


### After

![image](https://github.com/user-attachments/assets/c5709398-ff5b-4f8b-ae82-65c077cb2be6)
2025-06-06 17:00:59 +10:00
c8c9504486 DEV: Have about page extra groups depend on groups selected (#33095)
When we ported over the about page extra groups theme component, we used a hidden site setting to control this as per MO.

We don't need this any more. We can simply rely on the presence of any configured groups to decide.
2025-06-06 11:25:59 +08:00
efd01c18cf DEV: Modernize the remaining of the post stream to Glimmer components (#32653)
Co-authored-by: David Taylor <david@taylorhq.com>
2025-06-05 19:48:29 -03:00
417f1d1adc DEV: Add applyValueTransformer to poster name (#33086)
## Changes

This PR adds applyValueTransformer to poster name.
2025-06-05 13:38:37 -05:00
ce9ece434f UX: fix admin reports breadcrumb link (#33085)
`/admin.config.reports` does not exist

Reported here:
https://meta.discourse.org/t/breadcrumb-link-on-admin-reports-returns-404/368982
2025-06-05 09:16:42 -04:00
e5f1240b7f FIX: ensures post toolbar text can't be selected (#33075)
We suspect it might interfere with text selection of posts on android.
2025-06-04 23:34:14 +02:00
f66339338e A11Y: SVG icons should be hidden unless a label is provided (#33059)
This is fairly minor because usually SVGs aren't focusable, but this
adds `aria-hidden='true'` to all SVGs by default unless either an
`aria-label` or `label` is provided. This gets reported to us in
automated tests from time to time.

So now:

1. SVG: `aria-hidden="true"` (new behavior, safe default when no label
is provided)
2. SVG with `label` param: `aria-hidden="true"` and `sr-only` label is
provided
3. SVG with `aria-label` param: `aria-hidden="false"` and `aria-label`
is provided
2025-06-04 08:21:36 -04:00
1633d7788a UX: keep marks when using emoji input rules on rich editor (#33058)
When typing `:emoji:` or `:)` to create emoji nodes through ProseMirror
inputrules, this PR changes the handler to enforce the use of the
existing marks in the current caret position (if it's a link, bold, etc)
so the newly created emoji is marked with the same marks(s).
2025-06-04 07:18:47 -03:00
72326aad65 Build(deps): Bump ace-builds from 1.41.0 to 1.42.0 (#33063)
Bumps [ace-builds](https://github.com/ajaxorg/ace-builds) from 1.41.0 to
1.42.0.
- [Release notes](https://github.com/ajaxorg/ace-builds/releases)
-
[Changelog](https://github.com/ajaxorg/ace-builds/blob/master/CHANGELOG.md)
-
[Commits](https://github.com/ajaxorg/ace-builds/compare/v1.41.0...v1.42.0)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-04 12:04:35 +02:00
7fce724089 FEATURE: Theme-owned color palettes (#32795)
This commit removes the color palette dropdown from the theme page and replaces it with a new "Colors" tab where the theme's color palette can be edited directly in that tab on the theme page. With this change, a theme's color palette is strongly tied to its theme and can't be linked to other themes and it can't be selected by users without using the theme as well.

All of the changes are behind a feature flag. To enable it, turn on the `use_overhauled_theme_color_palette` setting.

Co-authored-by: Ella <ella.estigoy@gmail.com>
2025-06-04 07:47:58 +03:00
727bd5dcfb UX: Add subheader to admin themes page (#32987)
Add subheader with install button to match the Components tab.

Remove the "special" card with the install button from the end of the list.
2025-06-04 09:43:55 +08:00
1ba8c0dcdc FIX: Back to themes page not working when theme has enabled components (#33048) 2025-06-04 08:59:50 +08:00
599404de31 DEV: Add a ReviewableNote model, and tie it into the Reviewable model. (#33047)
As part of the review queue refresh, we'll be adding the ability for moderators to make notes on individual reviewable items. As a first step, this change adds the new model and associated backend code.
2025-06-04 09:33:02 +10:00
d4644733a5 Build(deps): Bump @babel/standalone from 7.27.4 to 7.27.5 in the babel group (#33062)
Bumps the babel group with 1 update:
[@babel/standalone](https://github.com/babel/babel/tree/HEAD/packages/babel-standalone).


Updates `@babel/standalone` from 7.27.4 to 7.27.5
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
-
[Commits](https://github.com/babel/babel/commits/v7.27.5/packages/babel-standalone)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-04 01:07:57 +02:00
88ce76bd16 DEV: Added the ability to use users' names in group mention notifications and mentions shown in emails (#33055)
**Description**
These changes were introduced in a previous PR but were reverted due to
a bug when several users were mentioned in a response. This PR
reintroduces the changes along with a fix to the issue.

This is part of a series of changes to allow customers to display users'
names instead of the user's username.

When a user belongs to a group that has been mentioned by another user.
It shows the name of the user that mentioned the group.

[Previous
commit](e147d2afe6)

**Before**


![imagen](https://github.com/user-attachments/assets/b62224fb-9b69-4603-be00-e7aa61d9b33c)

**After**


![imagen](https://github.com/user-attachments/assets/8495cb63-6530-4d86-a51c-f0510d48f6c7)

When a email is sent to the user when mentioned in a post 

**Before**



![imagen](https://github.com/user-attachments/assets/94e674da-085a-41cb-8145-ba6fbe3636ce)

**After**


![imagen](https://github.com/user-attachments/assets/490cb365-bf85-4745-93b9-e47048b2f02e)
2025-06-03 15:49:55 -05:00
8873a33b7a FIX: uses text selection when using hide details (#33049)
When hiding details if the user has currently a text selection we want
to use it as the content of the details element.

/t/-/154716/30
2025-06-03 19:53:45 +02:00
10a484fa4e UX: Update theme cards min width (#33045)
This PR allows for three cards per row at medium screen sizes and
placeholder images go all the way to the edges.

### Before
<img
src="https://github.com/user-attachments/assets/4526b39a-dcf8-4d38-ac6f-2179ef920144"
width="400"/>

### After
<img
src="https://github.com/user-attachments/assets/cc81853b-b99e-488b-9244-efc1cb803211"
width="400"/>
2025-06-03 11:31:29 -06:00
221380ac80 UX: Margin top to first onebox in topic (#33054) 2025-06-03 10:49:35 -05:00
6e00357ea6 UX: fast topic edit (#32941)
Changes of this commit:
- edit pencil will only show on hover on desktop
- clicking the topic title will display the topic edit UI

https://github.com/user-attachments/assets/58c55351-96ed-4f2d-8bd6-569310901cf0

/t/-/154792
2025-06-03 16:30:30 +02:00
ef9f5ccee1 Build(deps): Bump prosemirror-view from 1.39.3 to 1.40.0 in the prosemirror group (#33040)
Bumps the prosemirror group with 1 update:
[prosemirror-view](https://github.com/prosemirror/prosemirror-view).


Updates `prosemirror-view` from 1.39.3 to 1.40.0
-
[Changelog](https://github.com/ProseMirror/prosemirror-view/blob/master/CHANGELOG.md)
-
[Commits](https://github.com/prosemirror/prosemirror-view/compare/1.39.3...1.40.0)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-03 16:01:18 +02:00
df1bede9f7 FIX: when new new is enabled, filter dismiss modal to correct type (#33037)
Currently both boxes are always checked, even if you're filtered to new
topics or new posts.

You must have the site setting `Experimental new new view groups` set to
your user's group to see this mode.



![image](https://github.com/user-attachments/assets/f485ad66-7491-4f52-a812-4b5f9dba6d63)

This allows both options to appear, but only selects the current filter:


![image](https://github.com/user-attachments/assets/6a3c1a91-1638-440f-80e3-4d74711d8064)

Turns out this was already implemented, but `subset` was always
undefined. This fixes the arg and adds a couple new specs to cover it.

see /t/155039 for reference
2025-06-03 09:47:06 -04:00
8ac9c6b13c Build(deps): Bump @floating-ui/dom from 1.7.0 to 1.7.1 (#33041)
Bumps
[@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom)
from 1.7.0 to 1.7.1.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
-
[Changelog](https://github.com/floating-ui/floating-ui/blob/master/packages/dom/CHANGELOG.md)
-
[Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.7.1/packages/dom)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-03 15:30:57 +02:00
f0e72f6206 FIX: handle redirect issue with categoryId rewriting page number (#33009)
### Description
When accessing a category via
`<baseUrl>/c/<categoryId>.json?page={pageNumber}`, it issues a redirect
to `<baseUrl>/c/<categorySlug>/<categoryId>.json?.....`. During this
redirect, any numeric occurrence matching the categoryId in the query
string is also rewritten - including the page parameter - causing
incorrect behavior (e.g., `page=5` becoming `page=community/5`).

This PR fixes the logic ensuring that the query parameters remain
intact.

### How to reproduce?
Try opening this link https://meta.discourse.org/c/10.json?page=10 in
the browser. It will throw a 400 Bad Request error. When we inspect the
url, we will notice the page number has been replaced by the
`slug/categoryId`
2025-06-03 15:45:21 +08:00
d24b79a004 UX: more consistent search menu spacing (#33036)
This gives the search input in the header dropdown consistent spacing by
adding top padding to the results wrapper (always present), which avoids
issues like this (too little space below while loading):


![image](https://github.com/user-attachments/assets/2b9c0ff2-b0fe-4334-a69c-d3e47cfd86fc)

Also fixes this slight misalignment (`test in all topics and posts` has
an extra space on the left):


![image](https://github.com/user-attachments/assets/831efebd-6fbc-4274-b6a7-dad4c3aebb34)


![image](https://github.com/user-attachments/assets/740b318c-6098-4b05-aad2-cc4feb35e79b)
2025-06-03 15:31:49 +10:00
f819b1ec4d FEATURE: Add option to make <AceEditor /> resizable (#33044)
This commit adds a `@resizable` argument to `<AceEditor />`
and sets it to true always for the FormKit code control.
This allows the user to vertically resize the editor inside
FormKit forms. Horizontal resizing is not allowed at this
time, it's more unpredictable for layout, and the vertical
resizing is mostly what's needed anyway.

Also changes the FormKit code control to use min-height of
250px so the inline style height takes precedence, before
it was a hardcoded !important height.
2025-06-03 15:22:48 +10:00
e6cae5d879 UX: Onebox changes (#33038) 2025-06-02 20:29:29 -05:00
3a01b69b76 UX: make sure search context is kept when navigating (#33016)
Uses a getter to reactively re-render the search context (eg. "in
messages").

Also fixes an issue where although the in:messages suggestion appeared,
it didn't work to add the PM context.
2025-06-02 11:03:02 -03:00
1ee51f2e3b DEV: extract composer toolbar class for future reuse (#32897)
Starts defining a more generic API, so a different toolbar instance can
be used as a replacement on the main toolbar as well as a foundation for
rendering the same toolbar as a floating element.

This toolbar reuse started here for the link toolbar:
https://github.com/discourse/discourse/pull/32583, then got extracted to
this PR.

---------

Co-authored-by: Sérgio Saquetim <1108771+megothss@users.noreply.github.com>
2025-06-02 11:02:52 -03:00
01a35c4243 Build(deps): Bump the babel group with 2 updates (#33026)
Bumps the babel group with 2 updates:
[@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core)
and
[@babel/standalone](https://github.com/babel/babel/tree/HEAD/packages/babel-standalone).


Updates `@babel/core` from 7.27.3 to 7.27.4
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
-
[Commits](https://github.com/babel/babel/commits/v7.27.4/packages/babel-core)

Updates `@babel/standalone` from 7.27.3 to 7.27.4
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
-
[Commits](https://github.com/babel/babel/commits/v7.27.4/packages/babel-standalone)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Discourse CI <ci@ci.invalid>
2025-06-02 16:01:06 +02:00
b27de48622 UX: Update some delete confirmation dialogs (#33018) 2025-06-02 09:14:58 -04:00
6912025564 FIX: restore category text color field (#32915)
Restores the category text/foreground color field that was removed in
#32015.

We are also retaining the auto text color selection that was introduced
and applying on background color change rather than when the form is
saved. The text color algorithm has been changed from color brightness
to use color difference instead, which appears to be more reliable.

Algorithm for color difference:
https://www.w3.org/TR/AERT/#color-contrast

---------

Co-authored-by: Joffrey JAFFEUX <j.jaffeux@gmail.com>
2025-06-02 12:16:38 +04:00
8f89e287d3 Revert "UX: Merge onebox experiment into core (#33015)" (#33024)
This reverts commit 1af8ef60ed0f9fe094994f4a503ad6a0e765e638. It caused
multiple oneboxes to lose spacing between them. Reverting while we
investigate.
2025-05-31 09:03:49 +01:00
f82249599a Revert "DEV: Added the ability to use users' names in group mention n… (#33023)
…otifications and mentions shown in emails (#32848)"

This reverts commit e147d2afe6682a85070aecc0775050774f2f81f6. The
original commit has a bug, it replaces multiple usernames mentioned in a
post with the name of the first user in email templates.

Reverting temporarily, will need to re-roll a fix.
2025-05-31 13:58:32 +10:00
a22deb520b DEV: remove setting-component mixin (#33014)
Follow up to https://github.com/discourse/discourse/pull/32958.

This removes the setting-component mixin which has been merged into the
sole parent component still using it.
2025-05-31 06:58:51 +08:00
9ae70ad7cf UX: Scale down the theme title edit size (#33021) 2025-05-30 16:07:01 -05:00
1af8ef60ed UX: Merge onebox experiment into core (#33015) 2025-05-30 16:01:09 -05:00