58573 Commits

Author SHA1 Message Date
Alan Guo Xiang Tan
7c61dbaf0d
Bump version to v3.5.0.beta2 2025-03-26 10:17:58 +08:00
zogstrip
bae4cd165f
SECURITY: mutex around adding users to a group DM
Whenever you are about to reach the limit of users in a group DM, if you
send requests to add new users in parallel, they might all go through
ignoring the limit due to a race condition.

Internal - t/145895
2025-03-26 09:26:41 +08:00
David Battersby
58819d0f69
SECURITY: respect allow private messages prefernce for DMs 2025-03-26 09:26:36 +08:00
Alan Guo Xiang Tan
2452c3b529
DEV: Fix flaky search system tests (#32007)
After clicking on the search icon, we should ensure that the
`.search-container` has been rendered before moving on. Also update
assertions to properly rely on Capybara's autowait.

### Reviewer Notes

Example of flaky tests:
https://github.com/discourse/discourse/actions/runs/14057379759/job/39359791607
2025-03-26 09:11:08 +08:00
Kris
bbea7c3b11
REFACTOR: move desktop and mobile composer stylesheets into common (#31936)
This moves CSS from mobile/compose.scss and desktop/compose.css into
common/compose.scss and removes some old unused CSS in the process.

In addition:

* Prevents the grippie div from rendering on mobile, rather than hiding
the div with CSS
* Prevents the composer education messages from rendering on mobile,
rather than hiding them with CSS
* Wraps the `#draft-status` container with a condition instead of its
children, preventing the empty div from rendering when it's not used
* Adds a missing `btn-transparent` class to the mobile controls toggle
2025-03-25 16:09:09 -04:00
Kris
aa8a5ebd1e
DEV: remove list-controls wrapper on tags index (#32002)
This `.list-controls` wrapper on the tags index has no specific styles
applied, and can easily pick up styles of the actual `.list-controls`
container on topic lists when the class is used in themes... so it's
more harmful than helpful (it's also not a list?).

Before:

![image](https://github.com/user-attachments/assets/ac32d4b2-e0be-422e-90f4-d4066304eb00)

![image](https://github.com/user-attachments/assets/4157d7d8-b4f1-4bde-acde-f08f544a23ea)


After (no visual changes):

![image](https://github.com/user-attachments/assets/7cbc9ce3-82b7-46c7-9c47-3b4086f84bae)

![image](https://github.com/user-attachments/assets/ec040df8-8b99-4c6b-95ff-01319c194931)
2025-03-25 15:54:10 -04:00
Penar Musaraj
6aaddcf381
FEATURE: enable full page login by default (#31771)
This switches the signup/login UI to the full page experience by
default. This has been in use by many sites for multiple months and we
have ironed out many fixes in the meantime.

The `full_page_login` setting is also marked for removal in about
1.5mths, by the end of April 2025.
2025-03-25 13:43:51 -04:00
Joffrey JAFFEUX
8fc2b74bf0
DEV: exposes parentName and name in onSet (#32000)
This allows more flexibility for custom behaviours.

Example usage:

```gjs
@action
onSet(value, { set, name }) {
  set(name + ".0.baz", value * 2)
}

<form.Object @name="something" as |object|>
  <object.Field @name="foo" @title="Foo" @onSet={{onSet}} as |field|>
    <field.Input />
  </object.Field>
</form.Object>
```
2025-03-25 18:20:36 +01:00
David Taylor
f01a658101
DEV: [gjs-codemod] add codemod commit to git-blame-ignore-revs 2025-03-25 16:59:45 +00:00
David Taylor
b29e0b6e1b
DEV: [gjs-codemod] convert admin files to gjs
Updated using `@embroider/template-tag-codemod`, plus some manual fixups.
2025-03-25 16:59:21 +00:00
David Taylor
b203954060
DEV: [gjs-codemod] merge js and hbs 2025-03-25 16:59:13 +00:00
David Taylor
9f9282e070
DEV: [gjs-codemod] renamed js to gjs 2025-03-25 16:59:06 +00:00
David Taylor
596db5966c
DEV: [gjs-codemod] renamed hbs to gjs 2025-03-25 16:58:57 +00:00
Robert
94ee3554da
DEV: add plugin outlet to desktop & mobile Topic List Item after badges (#31998)
There is no current plugin outlet on the Topic List which allows one to
attach additional UI after the title without messing up the badge
display.

We can’t use `topic-list-after-title` because that will render before
the badge which looks untidy:



![](b29d5add40.png)

... and we can’t use`topic-list-before-category` because that’s not
always rendered when we drill into a Category.

The solution is a new plugin outlet located after the badge is rendered.
This needs to be on both the desktop and mobile flavours.

See discussion here:
https://meta.discourse.org/t/locations-plugin/69742/1144?u=merefield
2025-03-25 16:45:36 +00:00
Discourse Translator Bot
37e72e9ad7
Update translations (#31994) 2025-03-25 17:22:59 +01:00
Jordan Vidrine
fe19a0aa0c
DEV: Make styling bookmarks easier (#31979) 2025-03-25 11:02:11 -05:00
Amanda Alves Branquinho
df412608c8
DEV: Split 2fa logic from account activation (#31974)
- This change separates the logic that handles 2fa flow, from the one
that deals with the user after it is authenticated.
2025-03-25 10:56:40 -03:00
Alan Guo Xiang Tan
3cf9f81552
DEV: Unksip flaky changing email system tests (#31991)
This commit unskips 3 flaky system tests and gives up on asserting that
redirecting is done correctly. This is because we have invested
considerable effort into this and cannot figure it out. The redirect is
tested by the client side anyway so there is still some test coverage.
2025-03-25 09:09:50 -04:00
dependabot[bot]
0dd8358c3b
Build(deps-dev): Bump lefthook from 1.11.3 to 1.11.4 (#31983)
Bumps [lefthook](https://github.com/evilmartians/lefthook) from 1.11.3
to 1.11.4.
- [Release notes](https://github.com/evilmartians/lefthook/releases)
-
[Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
-
[Commits](https://github.com/evilmartians/lefthook/compare/v1.11.3...v1.11.4)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-25 18:30:04 +08:00
dependabot[bot]
52de68cb3a
Build(deps): Bump nokogiri from 1.18.5 to 1.18.6 (#31985)
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.18.5
to 1.18.6.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
-
[Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
-
[Commits](https://github.com/sparklemotion/nokogiri/compare/v1.18.5...v1.18.6)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-25 18:29:46 +08:00
Alan Guo Xiang Tan
ab3e85f8f1
DEV: Skip two flaky tests (#31989) 2025-03-25 15:34:21 +08:00
Martin Brennan
e99ed81586
DEV: Serialize theme_id and colors for user selectable color palettes (#31972)
We currently have `user_color_schemes` serialized on the preloaded
`Site` object, but it's very lightweight, only having an ID and name.
It would be useful for some themes and also the user Interface
preferences tab to be able to access the colors for the color scheme,
as well as the theme it belongs to.

This commit expands the serializer to include these extra attributes.
This `user_color_schemes` key is already cached as a fragment, so this
shouldn't be too much extra burden to send to the client.
2025-03-25 16:31:28 +10:00
Sam
afd5975041
FIX: looking at wrong period in statsText (#31986) 2025-03-25 17:18:02 +11:00
Martin Brennan
a14472606c
FEATURE: Tight lists by default on rich composer (#31969)
Tight lists are lists that look like this:

* Item 1
* Item 2
* Item 3

Loose lists look like this:

* Item 1

* Item 2

* Item 3

There is a place for the latter, but the former is more
common default behaviour for writing apps and widgets, so
we are overriding the prosemirror default to use tight lists.

Eventually we will have a shortcut or other special behaviour
to switch between the list styles.
2025-03-25 14:36:47 +10:00
Osama Sayegh
1a4e09a23e
UX: Apply changes live when editing currently active palette (#31874)
When editing a color palette via the new page introduced in
https://github.com/discourse/discourse/pull/31742, it should apply the
color changes for the admin making the change automatically upon save.

Internal topic: t/148628/12.
2025-03-25 06:42:23 +03:00
Arkshine
423191ea24
UX: Adjust code editor height when maximized (#31971)
Meta:
https://meta.discourse.org/t/issue-with-custom-css-save-button-on-smaller-screens/358505

With the editor maximized, this PR adjusts the height by considering the
new info banner (#31561) and the navbar with `Show advanced` enabled
(even without banner, the height needed adjustments).

The info banner is forced to scroll to contain the height, especially on
mobile.

Before:

![IiOWqPj3eO](https://github.com/user-attachments/assets/723aee77-d10b-4ec6-87e1-95984039b6a0)

![KmJA54V2H8](https://github.com/user-attachments/assets/568dc6ad-3dba-4829-87c9-0283bd685862)

After:

![d3GlykKDLE](https://github.com/user-attachments/assets/3955a094-91f7-4a11-a463-567e6f168897)

![cwzKPVc294](https://github.com/user-attachments/assets/b23fa5a6-97d1-468a-8f4a-e0bbb03b8a87)
2025-03-24 17:24:44 -04:00
dependabot[bot]
32fca57f30
Build(deps): Bump tzinfo-data from 1.2025.1 to 1.2025.2 (#31968)
Bumps [tzinfo-data](https://github.com/tzinfo/tzinfo-data) from 1.2025.1
to 1.2025.2.
- [Release notes](https://github.com/tzinfo/tzinfo-data/releases)
-
[Commits](https://github.com/tzinfo/tzinfo-data/compare/v1.2025.1...v1.2025.2)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-25 08:08:55 +11:00
Kris
505699c198
UX: adjust border radius for reply-where buttons (#31978)
These are *technically* buttons, but are much larger and have multi-line
content, so if you apply a border-radius via `--d-button-border-radius`
that tries to make rounded buttons... it doesn't work great here.

A case where normal buttons are fine (6rem radius) 


![image](https://github.com/user-attachments/assets/914170c3-3751-4939-841a-24e6a445cbb5)

but these big buttons have too much content to pull it off well, the
same border radius is too extreme


![image](https://github.com/user-attachments/assets/e00d076d-c555-42c1-9b15-0fa462bc5eaa)

the border radius variable we have for more general content areas
(`--d-border-radius`) generally doesn't work with a fully round radius,
so it should work better here most of the time:


![image](https://github.com/user-attachments/assets/9b2f509d-d0ef-46d9-898a-9b4bdf34f1a2)
2025-03-24 16:23:03 -04:00
David Taylor
b4afe124b7
DEV: Remove raw-hbs from autocomplete implementation (#31957)
We intend to replace this JQuery autocomplete implementation soon. But
before that, we'd like to drop the raw-hbs compilation/runtime system.
Therefore, this commit does a 1:1 conversion of the autocomplete
templates to vanilla JS. They're fairly small/simple, so they're still
fairly readable.
2025-03-24 19:44:07 +00:00
Kris
a79f8dbce0
DEV: apply pm border radius to topic map (#31976)
This applies the pm border radius (optional theme variable) to the pm
topic map as well

before:


![image](https://github.com/user-attachments/assets/b62b8791-b8d7-49c5-b4f8-03614b7187dc)


after: 


![image](https://github.com/user-attachments/assets/0d0dcf62-f43a-4409-8504-9ecc937775c6)
2025-03-24 15:22:32 -04:00
Kris
332bb6c958
UX: improve nav fade css (#31975)
Concerns this little fading scroll affordance in the horizontal overflow
nav:


![image](https://github.com/user-attachments/assets/3d59896c-faf4-4550-9fcb-62ce4e31cecd)

The parent container of the user nav has an optional
`--d-content-background` variable applied, and adding this for the nav
means that if a theme author uses `--d-content-background` the nav will
match automatically. When `--d-content-background` is not set, we fall
back to `--secondary` which is the default background.

I also realized that we don't need RGB values here since we're simply
fading from a solid color to transparent.
2025-03-24 15:14:56 -04:00
Roman Rizzi
9bc394191c
DEV: TopicListItemSerializer tells if topic is among the top 100 hottest topics (#31935) 2025-03-24 11:55:14 -05:00
Régis Hanol
558c566ca8
FIX: avatar, profile & card backgrounds url in DiscourseConnect (#31956)
The URLs returned by DiscourseConnect for the user's avatar, profile and
card backgrounds were not always correctly handling CDN.

This make use of the `GlobalPath.full_cdn_url` helper method which has
been battle-tested.

Ref - https://meta.discourse.org/t/-/356599
2025-03-24 16:23:05 +01:00
David Taylor
8c9885d0bf
Revert "DEV: Adds empty device screenshot workflow file (#31521)" (#31973)
This reverts commit 0af0087c77a46f92662b5072190aa3823638d6f0.
2025-03-24 12:01:13 +00:00
Natalie Tay
af03873d37
DEV: Allow loading topic associations on /categories (#31954)
`/categories` sometimes returns accompanying topics under certain site
settings. The `CategoryList` currently allows preloading for topic
custom fields via `preloaded_topic_custom_fields`, but not for topics
themselves.

This addition is required for
https://github.com/discourse/discourse-solved/pull/342.
2025-03-24 17:40:15 +08:00
Régis Hanol
ea632d705c
DEV: Add guardian argument to TopicsFilter plugin callback (#31908)
This adds the `guardian` argument to the `TopicsFilter` plugin callback
so that plugin can guard their topics filter based on the current user.
2025-03-24 10:34:04 +01:00
Krzysztof Kotlarek
9db89c20f7
FEATURE: send email to deleted user (#31947)
When a user post is flag as spam and the moderator deletes the user, we
should send email to the affected user.
2025-03-24 14:45:25 +08:00
Gary Pendergast
b77d0f7589
FEATURE: Sync Reviewable Status (#31901)
When multiple admins are working in the review queue, it's quite easy for two people to try and handle the same reviewable at the same time. This change addresses the two major situations where this can occur.

The `ReviewableClaimedTopic` model has been extended to allow the system to mark a reviewable as claimed as soon as the first moderator starts handling the reviewable, even when the `reviewable_claiming` setting is disabled. This ensures that reviewable actions with client-site activity (for example, `agree_and_suspend`) will lock the reviewable before another moderator starts working on it.

When someone handles handles a reviewable, we now use `MessageBus` to inform other moderators that it's changed. If any of the other moderator have that reviewable open (either individually, or on the list screen), it will automatically refresh that data.
2025-03-24 14:27:18 +11:00
Alan Guo Xiang Tan
e6c390eb1d
DEV: Make bulk close topics system tests more reliable (#31950)
The tests being fixed in this commit are not waiting for the
asynchronous behaviour of bulk closing topic to complete before running
some of the assertions. This commit updates the tests to check for the
asynchronous behaviour to complete so that the following assertions will
pass with more reliability.
2025-03-24 10:19:41 +08:00
Ted Johansson
b4085c7b50
DEV: Support target in problem check problem constructor (#31922)
We didn't have support in the #problem constructor for multiple targets, forcing developers to manually construct a Problem instance. This involves a lot of details and is error prone.

This PR supports passing an optional target argument to the constructor. This will be passed on to the translation_data method to generate the correct message as well.
2025-03-24 10:10:41 +08:00
chapoi
e7c3abb94b
UX: Add missing border-radius variable (#31952)
The search result panel didn't have the new-ish border-radius variable
attached yet.
2025-03-22 15:13:02 +01:00
Jordan Vidrine
6784314fa9
DEV: Remove span tag from outlet (#31961) 2025-03-21 16:10:54 -05:00
Osama Sayegh
7bd534bcfb
FIX: Make dark mobile logo fallback to dark desktop logo (#31953)
Currently, the light version of mobile logo falls back to the desktop
version if the mobile version isn't set. It makes sense to have the same
fallback rule for the dark version as well, i.e. if there's no dark
mobile logo, use the dark desktop logo.

Internal topic: t/150316.
2025-03-21 18:49:12 +03:00
David Taylor
b26e0c0a33
PERF: Skip lazy-loading images in composer preview (#31955)
Safari does not reload lazy images smoothly, which causes a lot of
flickering in the composer preview while typing.
2025-03-21 14:54:45 +00:00
Kris
edb6758110
FIX: tag revisions need an empty wrapper (#31938)
follow-up to b4f9626984667133a2a1f656109d154214dbe47a

the previous commit removed an intentionally empty wrapper, which
aligned the diff when there's only an addition


Before (tag aligned to the left, associated with the wrong version):

![image](https://github.com/user-attachments/assets/cacf5fc0-8020-460b-a596-e65acab31c27)


After (tag aligned right, associated with the new revision):

![image](https://github.com/user-attachments/assets/3ea14fd1-d871-493b-acec-60ad8c3d530d)
2025-03-21 09:27:16 -04:00
David Battersby
5c05b352fd
FIX: redirect user activity drafts route (#31949)
When logged in and visiting another user's drafts page, we should
redirect back to the current user drafts page.

For non auth users, we can redirect back to the forum `/latest` page.
2025-03-21 15:30:31 +04:00
Osama Sayegh
a8b3e539c7
FEATURE: Add setting to prevent anonymous users from using chat (#31842)
Currently, anonymous/shadow users go through the same permission checks
for chat as normal users do. This means that if a site has chat enabled
for all users, anonymous users also get access to chat. This may be
undesirable for some communities, so we're adding a new site setting
`allow_chat_in_anonymous_mode` to block access to chat for anonymous
users.

Internal topic: t/148088.
2025-03-21 13:32:52 +03:00
David Battersby
a43ad984b1
FEATURE: allow adding members to new 1-1 DM channels (#31948)
This change allows more flexibility when starting a 1-1 direct message
with another user. If there are no messages in the new DM channel then
we should still allow them to add additional users.
2025-03-21 12:20:21 +04:00
Sam
ad992d7b2d
FIX: destroy automation not working (#31945)
We had some legacy code due to previous controller based automation

---------

Co-authored-by: Alan Guo Xiang Tan <gxtan1990@gmail.com>
2025-03-21 15:22:33 +11:00
Alan Guo Xiang Tan
3df592a43e
DEV: Remove assertion causing test to flake. (#31946)
This commit removes an assertion for the redirect after 2FA
authentication is success message because the message is flashed briefly
before a route transition happens. A proper fix would require us to
redesign when/how the flash message which we can address in the future.
2025-03-21 11:38:03 +08:00