Commit Graph

58475 Commits

Author SHA1 Message Date
52cfe766f9 UX: Remove bg color on search info (#31895) 2025-03-18 19:43:27 -05:00
6fa6d32ac4 UX: avoid autocomplete/input rules on rich editor inline code (#31836)
Avoids autocompleting or applying mention/emoji/hashtag/any input rules on
rich editor inline code.

There's also a refactor on how the params are passed to input rules – we
now use the same params from plugins, keeping it more consistent.
2025-03-18 20:23:17 -03:00
e242edd40d DEV: Fix scss deprecation warning (#31893) 2025-03-18 23:51:48 +01:00
d21aa14e2c DEV: Do not use string based actions in components (#31891) 2025-03-18 22:54:08 +01:00
0313eff1fe DEV: Bump lint-configs (#31881) 2025-03-18 21:55:10 +01:00
9e7384298b DEV: Introduce postcss minmax transform (#31885)
This will auto-transform media query range syntax like `width < 100px`
into the more-widely-supported min/max-width syntax
2025-03-18 19:28:52 +00:00
a46d2ef40c DEV: Pluralize email domain count string (#31877)
The string introduced in
https://github.com/discourse/discourse/pull/31854 included a count but
was not pluralized. Even though the singular form may not be used in
English, proper pluralization is necessary for other languages. Some
languages have different plural forms depending on the number, so
explicitly defining pluralization ensures accurate translations.
2025-03-18 18:25:13 +01:00
464da9a4fb Update translations (#31875) 2025-03-18 15:08:14 +01:00
1a7303a35e FIX: Amend broken group automatic member dialog (#31854)
When creating or editing a group, we are meant to show a dialog telling the admin how many members will be automatically added.
2025-03-18 19:37:37 +08:00
fb5cdb1da4 DEV: Grant all anniversary badges during imports (#31830)
This change adds an import step to retroactively grant anniversary
badges to users.
2025-03-18 10:45:47 +00:00
b1b2b8e4c8 UX: keep existing marks when pasting a url to make a link in rich editor (#31814) 2025-03-18 07:15:35 -03:00
c0c6c55809 DEV: Make expanding select-kit more reliable in system tests (#31868)
Before this commit,
`PageObjects::Components::SelectKit#expanded_component` might not expand
the component if `is_collapsed?` returns true which can return true if
the method was called before the select-kit component appears on the
screen. When that happens, we end up not expanding the `select-kit`
because we think it is collapsed when in fact the select-kit component
is not rendered yet. This lead to system test failures with errors like:

```
Capybara::ElementNotFound:
  Unable to find css "#add-synonyms.is-expanded"
```

This commit updates `PageObjects::Components::SelectKit#is_collapsed?`
to check that the select-kit component has rendered first before
checking if the component is not expanded.
### Reviewer notes

Instances of test flakiness due to this bug:

1.
https://github.com/discourse/discourse/actions/runs/13905226478/job/38906569777
2.
https://github.com/discourse/discourse/actions/runs/13848357836/job/38751122333
2025-03-18 16:46:39 +08:00
f09c8f61c8 DEV: Fix flaky automation system test (#31867)
This commit updates `PageObjects::Pages::Automation#update` to check
that the button is not disabled before clicking the button.

### Reviewer notes

Instances of flakiness:
1.
https://github.com/discourse/discourse/actions/runs/13864294630/job/38801362996
2.
https://github.com/discourse/discourse/actions/runs/13392214535/job/37402368070
2025-03-18 15:13:59 +08:00
76dce62cf2 DEV: Move media query to breakpoint scss (#31865) 2025-03-17 20:37:56 -05:00
9d14492f22 FIX: When displaying a reviewable, don't append the title to the content (#31851)
Follow up to e4401e587e98ac4020c2c4fd965e227146cf33d4.

In the previous change, when serialising a Reviewable post, we were appending the title to the post content whilst checking for watched word matches. This append action was acting upon the object itself, rather than just a copy of the string, causing the UI to display the title appended twice to the content.

Fortunately, since it was only happening in the serialiser, the incorrect data was never stored in the database, it was only happening when viewing the review queue.
2025-03-18 11:57:39 +11:00
fbef97c632 DEV: Skip another flaky test on CI (#31864)
### Reviewer notes 

Instances of test flake: 

1.
https://github.com/discourse/discourse/actions/runs/13911507249/job/38926557337
2.
https://github.com/discourse/discourse/actions/runs/13902570393/job/38897729522
2025-03-18 08:50:11 +08:00
6cd282eeb3 FEATURE: Display a toast popup after completing a review action. (#31786)
When performing an action in the review queue, this change makes two improvements:

- The buttons on the reviewable item are disabled, so you can't accidentally multi-click.
- A toast is displayed when the action is complete, as a success indication.
2025-03-18 11:26:59 +11:00
4816bceaf6 DEV: Correct log level when logging in Demon::Base (#31853)
This commit updates the log level for certain log messages to the
approporiate level for the severity of the message being logged.
2025-03-18 08:12:47 +08:00
5002f95259 DEV: Remove flaky system test and replace it with simpler unit test (#31855)
This commit removes a system test that has been flaky in Github's CI and
replaces it with a much simpler unit test that covers the fix introduced
in 48c8ed49d6eda40fbee0d926ea67a81f2851e641


### Reviewer notes

Example of multiple flakes in CI:
1.
https://github.com/discourse/discourse/actions/runs/13888933997/job/38857572872
2.
https://github.com/discourse/discourse/actions/runs/13793587465/job/38579530997
2025-03-18 08:12:38 +08:00
429a10b2b9 FIX: uploader lightbox preview for new images (#31762)
It is an old bug that preview is not working for newly uploaded images.
To fix it, we need to initialize lightbox when image is rendered and not
when component.

We have Qunit test when image is already available
https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/tests/integration/components/uppy-image-uploader-test.gjs#L28

System test was added to ensure lightbox is working right after image is
uploaded.

<img width="1236" alt="Screenshot 2025-03-12 at 10 23 18 am"
src="https://github.com/user-attachments/assets/3984306b-f351-4b35-936c-eb7f0e57ea9d"
/>

After fix


https://github.com/user-attachments/assets/1091cd55-b24b-4640-8e8f-a60c3426ff65
2025-03-18 10:01:55 +11:00
998264b665 UX: header search adjustments (#31863) 2025-03-17 17:59:21 -05:00
2e2e2b37ff UX: re-hide hidden upload field (#31861)
follow-up to
6d92165ae7,
rehides this:


before:


![image](https://github.com/user-attachments/assets/34f07b8c-a547-476f-bfc4-ba92bd6f056e)


after: 


![image](https://github.com/user-attachments/assets/d2f18305-75e0-47f2-9ef9-d3a3a31d43d6)
2025-03-17 14:54:37 -04:00
7b874b6a85 DEV: merge mobile stylesheets into common (#31838)
This eliminates the mobile dashboard, edit-category, and sidebar
stylesheets and moves the relevant styles into the common directory
files
2025-03-17 13:53:05 -04:00
ecbd3cc93a DEV: Fix custom homepage crawler display and override (#31841)
Fixes the custom homepage crawler output to include links to the site's
top menu.

![CleanShot 2025-03-15 at 16 27
16@2x](https://github.com/user-attachments/assets/57f25b65-a218-4811-b7d4-211e3d60e586)

This also provides a way to override that content via a plugin. Example
usage in a `plugin.rb` file:

```
register_html_builder("server:custom-homepage-crawler-view") do |c|
  "<div>override</div>"
end
```
2025-03-17 13:06:09 -04:00
08d99dc44a DEV: normalize tag text color assignment (#31860)
This reduces some duplicate color assignment to tags and rolls them up
under a common css var

```css
:root {
  --tag-text-color: var(--primary-high);
}

.extra-info-wrapper {
  --tag-text-color: var(--header_primary-high);
}
```

This also makes the tag separator color consistent with the tag color,
by setting it to `--tag-text-color`

Ultimately we have 3 tag text color states (this appeared to be
consistent across all tag styles):
* Default: primary-high
* Header: header__primary-high
* Visited topic in the topic list: primary-medium
2025-03-17 12:54:15 -04:00
c07c954809 DEV: Remove search_result_view search menu app event in favor of search_menu_opened (#31777) 2025-03-17 09:54:09 -05:00
06b7b4981f DEV: Improve color-definition stylesheet failure mode (#31858)
- Raise exception in dev/test environments
- Include a clue about the failure via a comment in production mode
2025-03-17 14:04:26 +00:00
c3c2ee2a03 UX: Improve loading state when changing admin user list (#31856)
Previously we were showing a loading spinner, but the old user list
persisted so the spinner was often off the bottom of the screen. This
commit updates the `users` list to be a getter, so it's always perfectly
in-sync with the `_results` set. That means no users will be shown while
a new list is being loaded, so the spinner is more visible.


https://meta.discourse.org/t/load-spinner-missing-from-dynamic-pages/357525/4
2025-03-17 14:03:17 +00:00
2bca748a05 Revert "DEV: remove singleton mixin (#31823)" (#31857)
This reverts commit 992bdf173ad8ad25764c0a89132bc35df4c81f12.

This change was causing issues in a [third party
plugin](https://meta.discourse.org/t/events-plugin):
https://meta.discourse.org/t/events-plugin/69776/869

```
Uncaught Error: Could not find module `discourse/mixins/singleton` imported from `discourse/plugins/discourse-events/discourse/models/provider`
    at loader.js:247:1
    at h (loader.js:258:1)
    at u.findDeps (loader.js:168:1)
    at h (loader.js:262:1)
    at u.findDeps (loader.js:168:1)
    at h (loader.js:262:1)
    at requireModule (loader.js:24:1)
    at y (app.js:170:18)
    at b (app.js:193:19)
    at app.js:156:29
    at g.start (app.js:167:1)
    at HTMLDocument.<anonymous> (start-app.js:5:7)
    at discourse-boot.js:13:12
    at discourse-boot.js:1:1
```
2025-03-17 14:43:14 +01:00
e2b3eb4c28 Build(deps-dev): Bump message-bus-client from 4.3.9 to 4.4.0 (#31843)
Bumps [message-bus-client](https://github.com/discourse/message_bus)
from 4.3.9 to 4.4.0.
-
[Changelog](https://github.com/discourse/message_bus/blob/main/CHANGELOG)
-
[Commits](https://github.com/discourse/message_bus/compare/v4.3.9...v4.4.0)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-17 15:05:10 +08:00
7be5b8a6a8 Build(deps): Bump nokogiri from 1.18.3 to 1.18.4 (#31844)
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.18.3
to 1.18.4.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
-
[Changelog](https://github.com/sparklemotion/nokogiri/blob/v1.18.4/CHANGELOG.md)
-
[Commits](https://github.com/sparklemotion/nokogiri/compare/v1.18.3...v1.18.4)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-17 15:04:47 +08:00
327375abee FIX: Use theme screenshot names in theme fields (#31852)
Currently we allow for 2 theme screenshots to be specified,
with a lightweight spec to allow both a light and dark
version of the screenshot. However, we were not storing this
screenshot name anywhere, so we would not be able to use it
for light/dark switching.

This commit fixes that issue, and also does some general refactoring
around theme screenshots, and adds more tests.
2025-03-17 15:56:19 +10:00
d0a5fd5e21 Build(deps-dev): Bump rubocop-ast from 1.38.1 to 1.39.0 (#31847)
Bumps [rubocop-ast](https://github.com/rubocop/rubocop-ast) from 1.38.1
to 1.39.0.
- [Release notes](https://github.com/rubocop/rubocop-ast/releases)
-
[Changelog](https://github.com/rubocop/rubocop-ast/blob/master/CHANGELOG.md)
-
[Commits](https://github.com/rubocop/rubocop-ast/compare/v1.38.1...v1.39.0)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-17 15:42:57 +11:00
097e1d7ee4 Build(deps): Bump google-protobuf from 4.30.0 to 4.30.1 (#31846)
Bumps [google-protobuf](https://github.com/protocolbuffers/protobuf)
from 4.30.0 to 4.30.1.
- [Release notes](https://github.com/protocolbuffers/protobuf/releases)
-
[Changelog](https://github.com/protocolbuffers/protobuf/blob/main/protobuf_release.bzl)
-
[Commits](https://github.com/protocolbuffers/protobuf/compare/v4.30.0...v4.30.1)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-17 15:23:24 +11:00
6af9f415bf DEV: Skip a flaky test (#31850)
Test is flaking in CI with:

```
Failure/Error: expect(theme_translations_settings_editor.get_input_value).to have_content("Bonjour!")
  expected to find text "Bonjour!" in "Hello there!"

[Screenshot Image]: /__w/discourse/discourse/tmp/capybara/failures_r_spec_example_groups_admin_customize_themes_when_editing_theme_translations_should_allow_admin_to_edit_and_save_the_theme_translations_from_other_languages_797.png

~~~~~~~ JS LOGS ~~~~~~~
(no logs)
~~~~~ END JS LOGS ~~~~~

./spec/system/admin_customize_themes_spec.rb:158:in `block (3 levels) in <main>'
```
2025-03-17 10:47:37 +08:00
1fea45eb0f DEV: Skip flaky test (#31849)
The test has been flaking in CI with the following message:

```
Failure/Error: measurement = Benchmark.measure { example.run }

  expected: "draft"
       got: ""

  (compared using ==)

[Screenshot Image]: /__w/discourse/discourse/tmp/capybara/failures_r_spec_example_groups_chat_composer_draft_when_loading_a_channel_with_a_draft_loads_the_draft_458.png

~~~~~~~ JS LOGS ~~~~~~~
~~~~~ END JS LOGS ~~~~~

./plugins/chat/spec/system/chat_composer_draft_spec.rb:31:in `block (3 levels) in <main>'
```
2025-03-17 10:39:22 +08:00
64f1b97e0c FEATURE: Add welcome banner to core (#31516)
This is a stripped-back version of the Search Banner
component https://meta.discourse.org/t/search-banner/122939,
which will be renamed to Advanced Search Banner,
see https://github.com/discourse/discourse-search-banner/pull/84.

This welcome banner interacts with the header search.
When `search_experience` is set to `search_field`, we only
show the header search after the welcome banner scrolls
out of view, and vice-versa.

Only new sites will get this feature turned on by default,
existing sites have a migration to disable it.

---------

Co-authored-by: Joffrey JAFFEUX <j.jaffeux@gmail.com>
Co-authored-by: Jordan Vidrine <jordan@jordanvidrine.com>
2025-03-17 12:18:08 +10:00
c5e95b419b Build(deps): Bump message_bus from 4.3.9 to 4.4.0 (#31845)
Bumps [message_bus](https://github.com/discourse/message_bus) from 4.3.9
to 4.4.0.
-
[Changelog](https://github.com/discourse/message_bus/blob/main/CHANGELOG)
-
[Commits](https://github.com/discourse/message_bus/compare/v4.3.9...v4.4.0)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-17 08:25:49 +08:00
02b8aa6096 DEV: Protection for migrations that creates index concurrently take 2 (#31792)
This is a follow up to 6820622467ab3613e824f0cb6219def2a575bc1d.

This commit addresses migrations that uses `remove_index` with the
`if_exists: true` option to drop an existing index before creating an
index using the `concurrently` option.

This commit also reruns two migration which may have caused indexes to
be left in an `invalid` state.

### Reviewers Note

Plugin tests are failing due to
https://github.com/discourse/discourse-translator/pull/251
2025-03-17 08:25:30 +08:00
0ebd0a0bd5 UX: Refactor, removal, cleanup (#31839) 2025-03-14 16:40:45 -05:00
b50ac05510 DEV: Add APIs in the post menu to handle collapsed buttons (#31734) 2025-03-14 16:51:34 -03:00
3a0fc70e44 DEV: Add comment to clarify padding used in user-api-key encryption (#31833)
See
https://meta.discourse.org/t/user-api-keys-should-use-oaep-padding/354056
for context.
2025-03-14 14:34:44 -04:00
31aa2b3783 UX: Remove bg color on presence indicator (#31835) 2025-03-14 11:31:33 -05:00
a7f8233452 DEV: Skip flakey email change spec (#31831) 2025-03-14 10:53:28 -04:00
ef48e76104 DEV: add value transformer to allow bulk select in nav controls (#31800)
It's somewhat common for a theme to remove our topic list header: 

![image](https://github.com/user-attachments/assets/28fbe764-0944-4d96-b84e-00fd68fda385)

One issue with this is that it eliminates the bulk select button. 

Fortunately, we already have a solution for this on mobile... show it in
the navigation-controls:


![image](https://github.com/user-attachments/assets/17d0b20a-2948-4f3e-8615-7f8577adba3d)


This PR adds the `showBulkSelectInNavControls` value transformer — so we
can optionally allow this on desktop as well:


![image](https://github.com/user-attachments/assets/883975ec-95ed-44b4-85cc-6c9aa53142cd)

This provides an easy way to keep the bulk select controls without the
topic list header.

```js
  api.registerValueTransformer("bulk-select-in-nav-controls", () => {
    return true;
  });
 ```
2025-03-14 10:45:41 -04:00
f9bedc76f2 DEV: Rename fill_input -> set_input in AceEditor page object (#31825)
Follow up to dd015af0b8e9528eaabd690299cde12a0fdbe7de
2025-03-14 22:16:53 +08:00
20d19d9ca9 Build(deps-dev): Bump lint-to-the-future-ember-template from 3.0.0 to 3.1.0 (#31806)
Bumps
[lint-to-the-future-ember-template](https://github.com/mansona/lint-to-the-future-ember-template)
from 3.0.0 to 3.1.0.
- [Release
notes](https://github.com/mansona/lint-to-the-future-ember-template/releases)
-
[Changelog](https://github.com/mansona/lint-to-the-future-ember-template/blob/main/CHANGELOG.md)
-
[Commits](https://github.com/mansona/lint-to-the-future-ember-template/commits)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-14 14:13:19 +01:00
3de863c698 PERF: Remove caches from Category.subcategories & Category.descendents (#31829)
Since d2409f2964e85a4cb134f119d1bdddce54156175, these calculations are
now incredibly cheap, and the caches introduced by `@computed` become
the bottleneck. On a site with 5k+ categories, removing these caches
results in a 4x render time improvement for their homepage (~2s ->
~0.5s).

Technically, this means these properties will no longer be reactive for
places that depend on them using computed property syntax. However, they
are still reactive for modern code with autotracking. Given that the set
of categories doesn't change after initial load, I think this is
acceptable. If we do run into any issues, then we can update the related
code to use autotracking.

Note: `@dependentKeyCompat` has similar perf overheads to `@computed`,
so that's why I haven't used that for backward-compat.
2025-03-14 13:12:16 +00:00
af31058b55 Build(deps-dev): Bump the embroider group with 2 updates (#31805)
Bumps the embroider group with 2 updates:
[@embroider/compat](https://github.com/embroider-build/embroider/tree/HEAD/packages/compat)
and
[@embroider/core](https://github.com/embroider-build/embroider/tree/HEAD/packages/core).


Updates `@embroider/compat` from 3.8.3 to 3.8.4
- [Release notes](https://github.com/embroider-build/embroider/releases)
-
[Changelog](https://github.com/embroider-build/embroider/blob/main/CHANGELOG.md)
-
[Commits](https://github.com/embroider-build/embroider/commits/HEAD/packages/compat)

Updates `@embroider/core` from 3.5.3 to 3.5.4
- [Release notes](https://github.com/embroider-build/embroider/releases)
-
[Changelog](https://github.com/embroider-build/embroider/blob/main/CHANGELOG.md)
-
[Commits](https://github.com/embroider-build/embroider/commits/HEAD/packages/core)

---------

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-03-14 14:06:47 +01:00
ae08e22415 FIX: remove abandon draft dialog (#31828)
Now that we support multiple drafts, we can avoid the extra draft check
within composer when creating a new topic or reply. For posts, we
already autoload the existing draft into composer when the user tries to
create a new reply, so there is no longer a need for the abandon draft
dialog.

Drafts can still be deleted by closing the composer (using a different
dialog) or manually via the User Drafts page.

This change also correctly sets the draft key within composer actions
when switching from a post reply to a linked topic.
2025-03-14 16:15:33 +04:00