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:

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.
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.
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>
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.
Without a site logo we render a the site name in the header as text,
this is a nice fallback!

...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.
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.
### 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.
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.
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.
At the moment the reply count is labelled by the topic list's header
column, which is good — but we don't actually describe what the link
does, so it's a little ambiguous.
This adds an aria-label to describe the behavior "jump to first post" so
it will be read as:
"n replies, jump to first post"
This provides better coverage for link-to-link navigation because it
both describes the number and the function.
This is particularly important for array of primitives, eg: `["a", "b",
"c"]` where ember will struggle to know it's re-rendering the same
object.
The previous code was mostly working by chance as calling index on
something almost works for anything in javascript. But since we
introduced array of primitives in collections, we could now end up with
an `undefined` value for the items of the collection, and calling
`index` on `undefined` would raise an error.
This commit create a more general and explicit solution to this problem.
This PR addresses the issue discussed in
https://meta.discourse.org/t/failed-error-when-trying-to-un-star-the-bug-reporter-badge/330523
1. Fixed an issue in `user_badges_controller.rb` where the
`toggle_favorite` method could incorrectly treat badges already marked
as favorite as not being favorite.
2. Automatically synchronize the `is_favorite` status for new badges
when a user is granted a multiple-grant badge.
Our category cache is currently specific to the site locale.
Expanding the key to take in `I18n.locale` as well to accommodate for
category translations in core.
Over the past couple of weeks we've been adding Settings tabs to a lot of admin sections, to categorize some of the previously uncategorized site settings.
Now that all that is done, we can remove the Advanced > Other section, which used to contain them.
This commit adds a new `--exclude-pattern` CLI option which supports
excluding files using unix style pattern matching.
This is to simplify a couple of situations:
1. Running `bin/turbo_rspec plugin/spec` but we want to exclude all
tests in the `plugin/spec/system` folder.
Example: `bin/turbo_rspec --exclude-pattern="*spec/system*"
plugin/spec`
2. Running `bin/turbo_rspec plugin/*/spec/system` but we want to exclude
tests for a particular plugin.
Example: `bin/turbo_rspec --exclude-pattern="plugins/chat/*"
plugin/*/spec/system`
Previously, clicking "Groups" on the admin dashboard would bring you to the public groups page. Historically, the public and admin actions have been mixed together on that page.
This is a bit of a frustrating experience when working on the admin dashboard, and also prevented us from adding a "Settings" tab for group-related site settings.
This PR adds an "admin groups" page, which is just an exact copy of the public groups index for now. This allows us to add the "Settings" tab, and lets us gradually work un disentangling the public- and admin parts of groups.
This test file fails locally if `tmp/theme-transpiler.js` does not
exists.
Since the test file stubs the production env, we have to ensure that
`DiscourseJsProcessor::Transpiler.build_production_theme_transpiler` is
run first to mirror the production environment where the theme
transpiler file is built as part of assets precompilation.
### Review notes:
Example failure:
https://github.com/discourse/discourse/actions/runs/14529161497/job/40766003075
To repro locally, run the following steps:
1. In your Discourse directory, run `rm -rf tmp`
2. `rspec spec/requests/qunit_controller_spec.rb`