Commit Graph

58981 Commits

Author SHA1 Message Date
a9ddbde3f6 DEV: [gjs-codemod] renamed js to gjs 2025-04-25 11:05:17 +01:00
a0c0923a80 Build(deps-dev): Bump @discourse/lint-configs from 2.12.0 to 2.13.2 (#32323)
Bumps
[@discourse/lint-configs](https://github.com/discourse/lint-configs)
from 2.12.0 to 2.13.2.
- [Commits](https://github.com/discourse/lint-configs/commits)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: David Taylor <david@taylorhq.com>
2025-04-25 10:32:18 +01:00
b85654e425 Revert "FIX: Also show localized categories for users who are not logged in (#32463)
Related #32460

This reverts commit 5a4f3b3ab8c81282e17430784bc90d73a3bbce72.
2025-04-25 16:49:44 +08:00
b2c4d430b9 DEV: remove buffered-content mixin (#32417)
Follow up from https://github.com/discourse/discourse/pull/31926.

This replaces the one remaining usage in core of the buffered-content
mixin, and removes the mixin file.
2025-04-25 16:07:07 +08:00
5a4f3b3ab8 FIX: Also show localized categories for users who are not logged in (#32460)
In https://github.com/discourse/discourse/pull/32380, we started showing
localized categories. However we missed out anon users.

This commit ensures the site cache is also localized.
2025-04-25 15:40:35 +08:00
b6281d0c52 DEV: Introduce with_security_key system test helper (#32459)
Instead of having each test go incur the overhead of having to go
through the actual user flow to register a security key, we can generate
the WebAuthn credentials on the server side and adds it to the virtual
authenticator.
2025-04-25 15:40:07 +08:00
2dfafe3fd2 DEV: Report runtime duration of each parallel test process (#32457)
This information is generally useful to know and it simple for us to
instrument.
2025-04-25 15:23:53 +08:00
27ebf5f41a FIX: add category title badges to boxed layout (#32395)
This was missed when adding category badges in #32109. Category title
badges are now added when the site setting for `Desktop category page
style` or `Mobile category page style` is set to either:

- Boxes with Subcategories
- Boxes with Featured Topics
2025-04-25 11:20:41 +04:00
1d7c1eca27 DEV: Move SiteSettingFilter to admin namespace (#32458)
100% lift-and-shift of SiteSettingFilter into the admin JS namespace, where it is exclusively used.
2025-04-25 14:13:49 +08:00
3f845c6cdd UX: Better differentiation for dark-mode (#32450) 2025-04-24 16:29:00 -05:00
0ef80077e4 DEV: Pass toggleNavigationMenu to above sidebar PluginOutlet (#32449) 2025-04-24 13:31:54 -05:00
fcf2ba8c8a UX: rich editor placeholder edge case (#32448) 2025-04-24 14:48:38 -03:00
588caa60b9 UX: Add missing discourse-table SVG icon (#32447)
Meta:
https://meta.discourse.org/t/icon-missing-in-admin-panel-after-updating-discourse-today/363295

The `discourse-table` icon usage was introduced in
464726d973.
However, the SVG doesn't exist in core, but instead in the [AI
plugin](https://github.com/discourse/discourse-ai/blob/main/svg-icons/icons-sprite.svg?short_path=9d0511c).

The PR adds this SVG icon to the core.
2025-04-24 13:45:24 -04:00
8533e2017e UX: Locale and name shouldn't be "optional" (#32446)
## 🔍 Overview
The validation was already working and you can't submit localizations
without name and locale, but we want to add the client-side validation
and ensure the "optional" label is removed from the form.

## 📸 Screenshots

### ←Before
![Screenshot 2025-04-24 at 10 08
54](https://github.com/user-attachments/assets/088e7281-b03c-4c7f-8454-451c0cb53348)

### → After
![Screenshot 2025-04-24 at 10 07
35](https://github.com/user-attachments/assets/3a6e4b1f-714c-44c8-acae-bb96f63bf9f6)
2025-04-24 10:28:38 -07:00
a31a2d9a9f UX: Remove position & z-index style (#32445) 2025-04-24 12:15:19 -05:00
4e62990648 UX: Fix content from not showing above composer (#32443) 2025-04-24 12:03:28 -05:00
c38b50994d PERF: Enable brotli in NGINX (#32333)
This enables on-the-fly brotli compression at level 4 for all responses
which we currently gzip. This level should provide slightly improved
file sizes when compared to gzip, as well as slightly faster processing
times. This is the [level which Cloudflare
use](https://blog.cloudflare.com/results-experimenting-brotli/) for
dynamic responses.

When compared to our existing gzip level-5 configuration, our own
experiments confirm that it provides slightly faster compression, with
slightly smaller file sizes.

For static assets which are cached by CDNs/browsers, we use brotli level
6 for an even better compression ratio.
2025-04-24 15:45:13 +01:00
fe12500767 UX: Do not let composer affect chat window height (#32423) 2025-04-24 09:32:28 -05:00
bc6dae07ee DEV: Don't attempt to install minio binary in CI (#32438)
The binary is already preinstalled in the Docker image so we don't have
to attempt to install it again.

### Reviewer notes

Installing the minio binary is taking more than 45 seconds consistently
causing the test to timeout:
https://github.com/discourse/discourse/actions/runs/14638755310/job/41075932169

<img width="1091" alt="Screenshot 2025-04-24 at 6 15 48 PM"
src="https://github.com/user-attachments/assets/ec746740-fe46-4ef8-8a76-c210be1e3204"
/>
2025-04-24 18:58:58 +08:00
ed2740d0ca FIX: correctly reset panel when resizing window (#32437)
The problem is mainly that we also have a css animation made from js
which was setting a different width for the panel, so the `style.width =
"auto"` was not overriding this part. This animation happens in a parent
component after `didResizeContainer` is called, so it could be fine most
of the times, but the simpler change is to ensure, panel resize, or
window resize ends up in the same codepath so whatever the developer
decides to do in `didResizeContainer` hook will be applied in both
cases.

No test as it's fairly hard to test and would require a complex system
spec setup.

It avoids this situation where the side panel is larger than viewport
after window resize:
![Screenshot 2025-04-24 at 11 58
09](https://github.com/user-attachments/assets/8b58793a-32dc-4bc8-9989-7498e458c059)
2025-04-24 20:31:55 +10:00
199d7fb074 DEV: Reduce runtime of spec/system/(login|signup)_spec.rb (#32436)
This commit applies a similar optimisation as
d0d755ad8c478db45e3298df9de1cdabe59d9592.

Basically, the `full_page_login` site setting is going to be dropped
this week and these extra system tests we are running due to this site
setting is accounting for a significant percentage of the overall
runtime for core system tests.

### Reviewer notes

The PR to remove the `full_page_login` site setting is at
https://github.com/discourse/discourse/pull/32189 and scheduled to be
merged by us on 29th April.
2025-04-24 17:55:29 +08:00
ce76d7aaa7 DEV: Avoid unnecessary redirect in system tests when visiting a topic (#32418)
Visiting `/t/-/<topic_id>` results in an extra redirect request.
2025-04-24 16:59:08 +08:00
86f35b6a17 DEV: More linting fix (#32435) 2025-04-24 16:30:13 +08:00
d0d755ad8c DEV: Remove social authentication system tests for non full page login (#32433)
The `full_page_login` site setting is going to be removed soon so I am
dropping the social authentication system tests for when
`SiteSetting.full_page_login = false`.

This cuts the runtime for `spec/system/social_authentication_spec.rb` by
half from around 4 minutes to 2 minutes on my local machine.
2025-04-24 16:12:30 +08:00
8ebc202355 DEV: Fix linting (#32434) 2025-04-24 16:11:47 +08:00
2038c9c03f DEV: Simplify "Admin Flags Page" system test to reduce runtime duration (#32431)
This particular system test is taking a long time (~20 seconds) on CI
because it is doing many full page loads. This commit refactors the test
to be more efficient about the number of full page loads triggered by
the tests thus reducing the runtime by half.

Co-authored-by: Krzysztof Kotlarek <kotlarek.krzysztof@gmail.com>
2025-04-24 15:47:22 +08:00
846fbb7c75 Build(deps-dev): Bump puppeteer-core from 24.7.0 to 24.7.1 (#32428)
Bumps [puppeteer-core](https://github.com/puppeteer/puppeteer) from
24.7.0 to 24.7.1.
- [Release notes](https://github.com/puppeteer/puppeteer/releases)
-
[Changelog](https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md)
-
[Commits](https://github.com/puppeteer/puppeteer/compare/puppeteer-core-v24.7.0...puppeteer-core-v24.7.1)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-24 16:23:13 +10:00
59d0062f90 Build(deps): Bump connection_pool from 2.5.1 to 2.5.2 (#32425)
Bumps [connection_pool](https://github.com/mperham/connection_pool) from
2.5.1 to 2.5.2.
-
[Changelog](https://github.com/mperham/connection_pool/blob/main/Changes.md)
-
[Commits](https://github.com/mperham/connection_pool/compare/v2.5.1...v2.5.2)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-24 12:40:26 +08:00
d059938dde DEV: Avoid installing minio binaries in CI (#32432)
We are seeing test timeouts on CI due to attempts to download the minio
binaries while the tests are running. Example backtrace:

```
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:229:in `wait_readable'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:229:in `rbuf_fill'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:164:in `read'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http/response.rb:723:in `read'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http/response.rb:631:in `read_chunked'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http/response.rb:595:in `block in read_body_0'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http/response.rb:570:in `inflater'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http/response.rb:593:in `read_body_0'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http/response.rb:363:in `read_body'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http/response.rb:401:in `body'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http/response.rb:321:in `reading_body'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http.rb:2430:in `transport_request'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http.rb:2384:in `request'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/webmock-3.25.1/lib/webmock/http_lib_adapters/net_http.rb:108:in `block in request'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/webmock-3.25.1/lib/webmock/http_lib_adapters/net_http.rb:113:in `request'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http.rb:1990:in `get'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/minio_runner-0.1.2/lib/minio_runner/network.rb:36:in `block in get'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/webmock-3.25.1/lib/webmock/http_lib_adapters/net_http.rb:130:in `start_without_connect'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/webmock-3.25.1/lib/webmock/http_lib_adapters/net_http.rb:157:in `start'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http.rb:1070:in `start'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/minio_runner-0.1.2/lib/minio_runner/network.rb:31:in `get'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/minio_runner-0.1.2/lib/minio_runner/network.rb:64:in `block in download'
  /usr/local/lib/ruby/3.3.0/tempfile.rb:371:in `open'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/minio_runner-0.1.2/lib/minio_runner/network.rb:63:in `download'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/minio_runner-0.1.2/lib/minio_runner/binary_manager.rb:48:in `download_binary'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/minio_runner-0.1.2/lib/minio_runner/binary_manager.rb:23:in `install'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/minio_runner-0.1.2/lib/minio_runner/binary_manager.rb:9:in `install'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/minio_runner-0.1.2/lib/minio_runner.rb:69:in `install_binaries'
  /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/minio_runner-0.1.2/lib/minio_runner.rb:52:in `start'
  /__w/discourse/discourse/spec/support/system_helpers.rb:201:in `setup_or_skip_s3_system_test'
  /__w/discourse/discourse/spec/system/s3_secure_uploads_spec.rb:26:in `block (3 levels) in <main>'
```
2025-04-24 12:11:07 +08:00
10c817fab5 FEATURE: Set category localizations in category settings (#32412)
This update is a follow-up to b0ab1b2321, where we now allow localizations for a category to be set in the category settings UI.
2025-04-24 10:48:35 +08:00
4c443283cf UX: Border radius removal (#32424) 2025-04-23 16:38:59 -05:00
621c3483d9 DEV: tentatively fix some flaky rich editor tests (#32421) 2025-04-23 17:19:18 -03:00
d3af1abf70 A11Y: welcome banner heading should not be an H1 (#32420)
The H1 doesn't work here because the same text appears on all top level
discovery pages and it doesn't describe the page content or purpose.

So for example, navigating from heading to heading with a screen
reader... on every discovery page you'd end up hitting "welcome back,
username" before jumping to the next heading level (which are topic
titles) — this is undesirable.

The H1 was adding bold and margin, so I've added that to the class.
There are no visual changes.
2025-04-23 13:43:09 -04:00
c696a03232 DEV: add before-user-profile-bio plugin outlet and componentize CollapseInfo (#32371)
- Add before-user-profile-bio plugin outlet 
- Convert collapsed content into a component (`CollapseInfo`) and pass
any necessary arguments
2025-04-23 12:32:35 -05:00
f545728c8b A11Y: site-text-logo should not be an H1 (#32405)
Without a site logo we render a the site name in the header as text,
this is a nice fallback!


![image](https://github.com/user-attachments/assets/007b9ad3-cbd7-4bcf-b5a3-6e4c813609b2)

...but it's marked up as an H1, and having the same H1 on every page
means it's not a meaningful page heading and can make headings fairly
annoying to navigate using screenreaders and other assistive
technologies

This converts it to a div and ensures that it retains the bold styling
previously applied by the heading tag. Font size is already handled by
the ID, so there are no visual changes as a result.
2025-04-23 12:42:56 -04:00
6abda2a3ef UX: improve input rules for rich editor autolink/linkify (#32366)
Adds support to creating an "autolink" by explicitly typing the
`<https://link>`.

Changes linkification while typing to only act when `markup` is
`linkify` (so, not a `[normal](link)` nor an `<autolink>`), and adds a
test to make sure `<http://auto.links>` won't convert to a `linkify`
while typing.

Avoids linkifying within code when pasting `text/html`.

Removes the `markup: "linkify"` when pasting a URL over a selection, as
that will create a `[normal](link)` instead.

Fixes the case on Firefox when you're typing an `example.com` URL
mid-paragraph and it stopped the link mark before the last letter,
leaving an un-linked dangling `m`.

Also uses a `linkify.test()` call before `linkify.match()` for "best
speed" as per
https://markdown-it.github.io/linkify-it/doc/#LinkifyIt.prototype.match.
2025-04-23 11:43:31 -03:00
129e3a9bec DEV: Fix flaky User#silenced_till test (#32419)
### What is happening?

For some reason, not on local, and not on PRs, but in the build
pipeline, the precision of the timestamp changes during a database
roundtrip, causing the build to fail.

This fixes the build.
2025-04-23 21:29:26 +08:00
e19e43f1bd FIX: Delegate silenced_till from anonymous user to main user account (#32416)
When a user is silenced they can, given they have the permissions, enter anonymous mode and keep posting, essentially bypassing the silence that way.

This change delegates the silenced_till attribute to the main user record if the user is anonymous.
2025-04-23 16:34:51 +08:00
9f280872f8 DEV: remove scrolling mixin (#32399)
Follow up to https://github.com/discourse/discourse/pull/32212 which
replaced the use of this mixin with a service.
2025-04-23 14:22:44 +08:00
21c8d6fe53 Build(deps-dev): Bump rubocop-rspec from 3.5.0 to 3.6.0 (#32372)
Bumps [rubocop-rspec](https://github.com/rubocop/rubocop-rspec) from
3.5.0 to 3.6.0.
- [Release notes](https://github.com/rubocop/rubocop-rspec/releases)
-
[Changelog](https://github.com/rubocop/rubocop-rspec/blob/master/CHANGELOG.md)
-
[Commits](https://github.com/rubocop/rubocop-rspec/compare/v3.5.0...v3.6.0)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-23 13:46:56 +08:00
e531a451f4 Build(deps-dev): Bump lefthook from 1.11.10 to 1.11.11 (#32383)
Bumps [lefthook](https://github.com/evilmartians/lefthook) from 1.11.10
to 1.11.11.
- [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.10...v1.11.11)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-23 13:46:13 +08:00
4284379ffb Build(deps): Bump nokogiri from 1.18.7 to 1.18.8 (#32384)
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.18.7
to 1.18.8.
- [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.7...v1.18.8)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-23 13:46:04 +08:00
a024e663f9 Build(deps): Bump stringio from 3.1.6 to 3.1.7 (#32385)
Bumps [stringio](https://github.com/ruby/stringio) from 3.1.6 to 3.1.7.
- [Release notes](https://github.com/ruby/stringio/releases)
- [Changelog](https://github.com/ruby/stringio/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/stringio/compare/v3.1.6...v3.1.7)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-23 13:45:57 +08:00
1278e8f7c6 Build(deps-dev): Bump bullet from 8.0.3 to 8.0.5 (#32386)
Bumps [bullet](https://github.com/flyerhzm/bullet) from 8.0.3 to 8.0.5.
- [Changelog](https://github.com/flyerhzm/bullet/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyerhzm/bullet/compare/8.0.3...8.0.5)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-23 13:45:44 +08:00
5f70aa6308 Build(deps-dev): Bump puppeteer-core from 24.6.1 to 24.7.0 (#32407)
Bumps [puppeteer-core](https://github.com/puppeteer/puppeteer) from
24.6.1 to 24.7.0.
- [Release notes](https://github.com/puppeteer/puppeteer/releases)
-
[Changelog](https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md)
-
[Commits](https://github.com/puppeteer/puppeteer/compare/puppeteer-core-v24.6.1...puppeteer-core-v24.7.0)

---------

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-04-23 13:44:19 +08:00
069303bb1c Build(deps-dev): Bump rubocop from 1.75.2 to 1.75.3 (#32408)
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.75.2 to
1.75.3.
- [Release notes](https://github.com/rubocop/rubocop/releases)
-
[Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
-
[Commits](https://github.com/rubocop/rubocop/compare/v1.75.2...v1.75.3)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-23 13:43:56 +08:00
98d4c17a92 Build(deps): Bump net-imap from 0.5.6 to 0.5.7 (#32409)
Bumps [net-imap](https://github.com/ruby/net-imap) from 0.5.6 to 0.5.7.
- [Release notes](https://github.com/ruby/net-imap/releases)
- [Commits](https://github.com/ruby/net-imap/compare/v0.5.6...v0.5.7)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-23 13:43:44 +08:00
dd622bbfc5 FIX: allow to email backup even if backups disabled (#32415)
In this PR, we allowed to download backups even if backups are disabled:

https://github.com/discourse/discourse/pull/32396

This PR is fixing bug and allowing email action.
2025-04-23 11:04:41 +08:00
d3e1158d4c FIX: hide unnecessary tabs and buttons when backups disabled (#32396)
When backups are disabled, backup files and logs tabs should be hidden.
Same for backup and read only button.

Demo


https://github.com/user-attachments/assets/7ce373cc-4fab-4f0f-89ef-d9fc7b889255


https://meta.discourse.org/t/disabling-backups-does-not-remove-item-from-admin-sidebar/36209
2025-04-23 10:22:31 +08:00
25938208ff FIX: recalculate respects default invitee trust level (#32393)
Currently, trust level is calculated with this formula:
`[granted_trust_level, previous_trust_level,
SiteSetting.default_trust_level].max`

When a user is invited, SiteSetting.default_invitee_trust_level should
be respected in that calculation.
2025-04-23 09:49:44 +08:00