34945 Commits

Author SHA1 Message Date
dependabot[bot]
c1f0d9aee0
Build(deps-dev): Bump @ember/test-helpers from 5.2.0 to 5.2.1 (#32115)
Bumps
[@ember/test-helpers](https://github.com/emberjs/ember-test-helpers)
from 5.2.0 to 5.2.1.
- [Release
notes](https://github.com/emberjs/ember-test-helpers/releases)
-
[Changelog](https://github.com/emberjs/ember-test-helpers/blob/master/CHANGELOG.md)
- [Commits](https://github.com/emberjs/ember-test-helpers/commits)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-02 13:54:44 +02:00
Ella E.
1d65ebe3bb
UX: Adjust spacing to prevent last setting from being hidden behind save all banner (#32127)
This PR adjusts the bottom spacing in the site settings when scrolled to
the bottom and the “Save all changes” banner is visible, ensuring that
the setting controls and helper text are fully visible within the
viewport.

### Before
<img width="954" alt="image"
src="https://github.com/user-attachments/assets/69d8b1ad-e90e-4d94-9f32-4a8ae17ef725"
/>


### After
<img width="937" alt="image"
src="https://github.com/user-attachments/assets/50365613-8553-4354-a8f3-71d834898583"
/>
2025-04-02 05:31:35 -06:00
Sam
c0cf898c10
FEATURE: when rich-editor is enabled use Jetbrains Mono as code font (#32122)
This change forces consistency around code font in Discourse once the
new
rich-editor is enabled

- This means all code blocks in Discourse will render with this font
- Additionally the markdown mode composer will render with this font

Additionally we make 3 small adjustments:

1. We disable ligatures which conflict with typographer
2. We add support for custom ligature settings
3. We adjust down font size, cause 14px ends up matching visually with a
16px non monospace font, this change is already in place previously on
posts

Example:


![image](https://github.com/user-attachments/assets/eca0b544-f3a4-4172-b2af-b39a3c0208e7)
2025-04-02 16:36:52 +11:00
Alan Guo Xiang Tan
e4244cca35
PERF: Set cluster_concurrency 1 for Jobs::BackfillBadge (#32121)
Since 3e4eac0fed05daedcdea50d6275e143469d55eda, the daily
`Jobs::BadgeGrant` scheduled job enqueues one `Jobs::BackfillBadge`
job per enabled badge. This can become problematic on large sites that
have alot of enabled badges as the long running queries executed by each
`Jobs::BackfillBadge` job may end up exhausting all available
database connections in a short span of time. To combat this, we are
limiting the `cluster_concurrency` of the `Jobs::BackfillBadge` job to
`1`.
2025-04-02 11:23:32 +08:00
dependabot[bot]
211b1872ae
Build(deps-dev): Bump @swc/core from 1.11.13 to 1.11.16 (#32114)
Bumps [@swc/core](https://github.com/swc-project/swc) from 1.11.13 to
1.11.16.
- [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.13...v1.11.16)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-02 01:27:46 +02:00
Bryce Huhtala
e68fef0b4c
UX: Wrap edit category subcategories (#32110)
### Issue
In the **edit category settings**, if the category has a large amount of
subcategories, the layout can spill outside the normal content area.

![image](https://github.com/user-attachments/assets/388d0f47-7054-4f6e-85cb-c648df126ee0)

### Solution
Add `flex-wrap: wrap` to form kit container content within edit
category.

![image](https://github.com/user-attachments/assets/a2b51a64-cd6d-423d-9ac6-3230445ed8cf)
2025-04-01 15:37:28 -04:00
David Taylor
c61b19e244
DEV: Update final {{raw}} usages (#32082) 2025-04-01 18:39:42 +01:00
Sérgio Saquetim
083082f328
DEV: Remove the legacy widget post menu code (#31211)
https://meta.discourse.org/t/341014
2025-04-01 16:03:58 +01:00
David Battersby
1519f3dde9
FIX: prevent duplicate category icons (#32103)
Follow up fix to #31795 to prevent duplicate icons in category chooser.

This change prevents duplicate icons or icon and emoji combinations.
2025-04-01 13:45:14 +04:00
dependabot[bot]
c6d443b9e9
Build(deps-dev): Bump html-entities from 2.5.3 to 2.6.0 (#32066)
Bumps [html-entities](https://github.com/mdevils/html-entities) from
2.5.3 to 2.6.0.
- [Release notes](https://github.com/mdevils/html-entities/releases)
-
[Changelog](https://github.com/mdevils/html-entities/blob/main/CHANGELOG.md)
-
[Commits](https://github.com/mdevils/html-entities/compare/v2.5.3...v2.6.0)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-01 11:40:42 +02:00
David Battersby
c58237c01e
FIX: always allow edit category bg color (#32102)
Some themes make use of the category background color even when using
emojis or icons as the category style.

Therefore we should always allow the color selector to be visible when
editing the category.
2025-04-01 13:31:41 +04:00
Natalie Tay
2a26555a7a
DEV: Allow specifying a condition when preloading topics for topic list (#32101)
Currently when using `register_topic_preloader_associations`, we are
not able to specify a condition that is evaluated at runtime.

This commit allows specifying a condition and also keeps backward
compatibility.

```
   register_topic_preloader_associations(:linked_topic) { true }
   register_topic_preloader_associations({
     first_post: [uploads]
   })
```
2025-04-01 16:50:16 +08:00
Sam
18433c45b9
FEATURE: when rich editor is enabled markdown is in monospace (#32097)
- adds .d-editor-container--rich-editor-enabled to d-editor-container
- conditionally swaps textarea to monospace when
siteSettings.rich_editor is enabled

We are doing this intentionally on the old composer when the
new rich editor is enabled to further differentiate the two and
to make it clear that markdown is the "source code"
2025-04-01 13:41:33 +10:00
Kelv
1c1d687283
DEV: show no icon if icon name is missing and log at error level (#31866)
On 1st April 2025, we start showing no icons if the icon name used is a
deprecated one and therefore no longer part of the svg set.

We'll continue showing the messages with the correct icon name to aid
correction of these names.

Console logging will now be done at an error level for such icons.

We retain the behaviour of raising an error for such icons in plugins
from svg_sprite.rb in test environments, but removed this from
icon-library.js as it's harder to test the actual expected behaviour of
returning the original icon now that it's not part of the deprecation
workflow. (sinon.stub doesn't work well here for `isTesting` - the
alternative would be to override the environment.js module with
`proxyquire`) In any case, once we remove the mapping logic, we won't be
raising errors in test environment either for this scenario.
2025-04-01 10:54:48 +08:00
Ted Johansson
c4502b31e4
FEATURE: Bulk save site settings (#32013)
This feature adds a bulk-save feature to site settings.
2025-04-01 09:39:19 +08:00
Joffrey JAFFEUX
b21c3e86f7
Revert "DEV: Allow specifying a condition when preloading topics for … (#32092)
…topic list (#32079)"

This reverts commit 70887351d7962947184e8351fea5745ee2b3a974.

This was causing errors:

```
NoMethodError (undefined method `call' for nil)
app/models/topic_list.rb:144:in `block in load_topics'
app/models/topic_list.rb:141:in `each'
app/models/topic_list.rb:141:in `load_topics'
app/models/topic_list.rb:75:in `topics'
app/serializers/suggested_topics_mixin.rb:15:in `include_suggested_topics?'
```
2025-04-01 09:37:47 +11:00
Renato Atilio
2134925d7a
UX: convert emdash+hyphen to a horizontal rule on rich editor (#32085)
iOS is automatically converting a double-hyphen (--) to an em-dash (–).

It may get in the way when we're trying to create an horizontal rule
with a ---, so this PR adds the "em-dash + hyphen" case to our input
rule regex.
2025-03-31 14:18:21 -03:00
Joffrey JAFFEUX
51db964859
FIX: allows to resize textarea (#32076)
This commit also ensures meta will resize with the textarea to avoid
meta being badly positioned.

I couldn't easily write a test working on all platforms.
2025-03-31 16:52:29 +02:00
Natalie Tay
70887351d7
DEV: Allow specifying a condition when preloading topics for topic list (#32079)
Currently when using `register_topic_preloader_associations`, we are not
able to specify a condition that is evaluated at runtime.

This commit allows specifying a condition and also keeps backward
compatibility.

```
   register_topic_preloader_associations({
     association: :linked_topic, condition: ->(topic) { topic.custom_field.present? }
   })
```
2025-03-31 21:32:05 +08:00
Joffrey JAFFEUX
d12e0eb65d
FIX: prevents d-menu trigger/untrigger propagation (#32078)
Before this fix a click on a d-menu trigger would fire a click on the
parent element, which could have undesired consequences.

This also fixes two things:
- moves float-kit/form-kit css files higher in the chain, so it's easier
to override
- increases the z-index of the notifications-tracking menu content or it
would be behind the timeline control
2025-03-31 13:47:24 +02:00
David Taylor
b5f5c5a1ee
DEV: Add @tracked to RestModel __state (#32064)
This property is used for the `isNew` and `isCreated` computed
properties, which are then used in templates. To make that work
correctly, we need to use `.set` or `@tracked`.
2025-03-31 09:26:31 +01:00
David Battersby
15751c89f4
FEATURE: auto contrast text color for categories (#32015)
This change removes the foreground color category setting to simplify
the category creation and edit process for admins.

Instead we determine the highest contrasting color (either white or
black) based on the background color.

Contrast algorithm is based on:
https://www.w3.org/TR/AERT/#color-contrast

We also implement the value transformer as part of this change, which
allows overriding the category text color.
2025-03-31 11:02:20 +04:00
Martin Brennan
d3c2bd015d
FEATURE: Implement chat transcripts in rich editor (#31819)
This commit allows the ProseMirror rich editor to display chat
transcripts copied from chat using the "Copy" button.

The BBCode usually looks something like this:

```
[chat quote="hunter;29856;2025-03-20T07:13:04Z" channel="design gems 🎉" channelId="95"]
haha **ok** _cool_
[/chat]
```

But there are several variations that must be accounted for:

* Single message from single user
* Multiple messages from a single and multiple users
* Messages inside chat threads

The rich transcript extension has to ignore many of the chat transcript
markdown
tokens because they simply aren't necessary -- none of the ProseMirror
nodes need
to be editable. So, we basically recreate the same HTML that the chat
transcript markdown
rule does in the `toDOM()` function. Maybe in future we want to make the
markdown rule
do less and have this HTML creation in one place, but for now we need to
mirror in both files.

---------

Co-authored-by: Renato Atilio <renato@discourse.org>
2025-03-31 14:04:22 +10:00
Gary Pendergast
b4cdc39e51
FEATURE: Allow rejected user details to be scrubbed (#31987)
When a site has the `must_approve_users` setting enabled, new user data is stored on the Reviewable model, including username, email, and any other data that is entered during signup. If the user is rejected, that data is retained, without a clear path to deleting it.

In order to allow data that could be PII to be removed, without breaking Discourse's audit and logging trails, this change scrubs the PII from the relevant `ReviewableUser` and `UserHistory` objects, replacing that data with who scrubbed it, and why.
2025-03-31 12:40:35 +11:00
Martin Brennan
2ac3c731de
FIX: “Input data should be a string” error in ProseMirror (#32056)
When passing our ProsemirrorEditor component an initial value,
we were sometimes passing `null`, which causes the error in
the title of this commit. The fix here is to handle `null`
gracefully as string.

We originally found this on the category edit page, since
we have a `<DEditor />` in the form template form for the
category.
2025-03-31 11:40:19 +10:00
Joffrey JAFFEUX
12dffc5f7d
DEV: supports bigger emoji in rich composer (#31933)
The rules are:
- between 1 and 3 emojis: bigger emoji
- more than 3 or any text or node in the same paragraph: regular emoji

This is implemented through a prose mirror plugin, which try to be smart
and recompute only edited paragraphs. Full scan on first load.

---------

Co-authored-by: Renato Atilio <renato@discourse.org>
2025-03-28 13:10:00 -03:00
David Taylor
a4b2b57db7
DEV: Introduce new breakpoints (#31886)
Usage:

```scss
@use "lib/viewport";

@include viewport.from(sm) {
  ...
}

@include viewport.until(lg) {
  ...
}

@include viewport.between(sm, lg) {
  ...
}
```

Values are inclusive on the lower bound, and exclusive on the upper
bound.
2025-03-28 14:50:06 +00:00
Ted Johansson
b40cbfcb76
DEV: Move backfill into SiteSetting::Update service (#32037)
Some site settings support backfilling if the user specified it. This works fine for singular site settings sent to the SiteSettingsController#update endpoint, but with bulk save we need to support this for a list of settings as well.

This change alters the params format for SiteSetting::Update.

It also moves the backfill logic into the service.
2025-03-28 12:01:56 +08:00
Kelv
654e858df3
DEV: remove singleton mixin (#32054)
Follow up to https://github.com/discourse/discourse/pull/30498.

Removes the singleton mixin and its test file.
2025-03-28 11:53:10 +08:00
Blake Erickson
44da7b7fbf
UX: Admin Dashboard title (#32022)
This adds a title to the admin dashboard to match other admin pages.
Adds a description to the admin dashboard.
Adds a plugin outlet after the header

BEFORE:
![CleanShot 2025-03-26 at 11 16
13@2x](https://github.com/user-attachments/assets/ebac6005-61b3-44ab-a97f-581e58e89eaf)


AFTER:
![CleanShot 2025-03-27 at 08 22
13@2x](https://github.com/user-attachments/assets/e64b1dae-8403-4545-9d6d-ac898e59a8bc)

---------

Co-authored-by: Jordan Vidrine <jordan@jordanvidrine.com>
2025-03-27 13:57:56 -06:00
Kris
eae68e121e
UX: improve mobile topic list tag layout (#32048)
* Prevents tag separators (commas by default) from wrapping separately
by using absolute positioning so they don't impact the width (thus a
comma can't wrap on its own, because a tag can't influence the width)

* Removes some whitespace creating extra space between categories and
tags (to better match desktop)

* Removes a redundant `flex-wrap: wrap` as `.discourse-tags` already
carries this

* Improves vertical alignment of commas (they were too high on mobile,
which is avoided on desktop with baseline alignment in flex)

* Fixes an issue where tag and separator color could be mismatched
because of a too-broad color being applied to all links

Before:

![image](https://github.com/user-attachments/assets/bc4b0f52-5eff-467f-ae0d-95661bd57351)


After:

![image](https://github.com/user-attachments/assets/dcdf39a4-4f23-4b23-a7b5-5f6a60c1ca6f)
2025-03-27 15:34:52 -04:00
Jordan Vidrine
1be7b1ed90
DEV: Remove clearfix class from topic title link in topic lists (#32047) 2025-03-27 14:30:11 -05:00
dependabot[bot]
e3fcec356e
Build(deps): Bump the prosemirror group with 3 updates (#32042)
Bumps the prosemirror group with 3 updates:
[prosemirror-commands](https://github.com/prosemirror/prosemirror-commands),
[prosemirror-schema-list](https://github.com/prosemirror/prosemirror-schema-list)
and
[prosemirror-transform](https://github.com/prosemirror/prosemirror-transform).


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

Updates `prosemirror-schema-list` from 1.5.0 to 1.5.1
-
[Changelog](https://github.com/ProseMirror/prosemirror-schema-list/blob/master/CHANGELOG.md)
-
[Commits](https://github.com/prosemirror/prosemirror-schema-list/compare/1.5.0...1.5.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-27 17:53:30 +01:00
dependabot[bot]
467bcc7d98
Build(deps): Bump a11y-dialog from 8.1.1 to 8.1.2 (#32045)
Bumps [a11y-dialog](https://github.com/KittyGiraudel/a11y-dialog) from
8.1.1 to 8.1.2.
- [Release notes](https://github.com/KittyGiraudel/a11y-dialog/releases)
-
[Commits](https://github.com/KittyGiraudel/a11y-dialog/compare/8.1.1...8.1.2)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-27 17:53:21 +01:00
dependabot[bot]
8c42be15ae
Build(deps-dev): Bump ember-qunit from 9.0.1 to 9.0.2 (#32044)
Bumps [ember-qunit](https://github.com/emberjs/ember-qunit) from 9.0.1
to 9.0.2.
- [Release notes](https://github.com/emberjs/ember-qunit/releases)
-
[Changelog](https://github.com/emberjs/ember-qunit/blob/main/.release-plan.json)
- [Commits](https://github.com/emberjs/ember-qunit/commits)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-27 17:53:02 +01:00
dependabot[bot]
ee1ad8e19e
Build(deps): Bump babel-plugin-ember-template-compilation from 2.3.0 to 2.4.1 (#32025)
Bumps
[babel-plugin-ember-template-compilation](https://github.com/emberjs/babel-plugin-ember-template-compilation)
from 2.3.0 to 2.4.1.
- [Release
notes](https://github.com/emberjs/babel-plugin-ember-template-compilation/releases)
-
[Changelog](https://github.com/emberjs/babel-plugin-ember-template-compilation/blob/main/CHANGELOG.md)
-
[Commits](https://github.com/emberjs/babel-plugin-ember-template-compilation/commits)

---------

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-27 16:33:19 +01:00
dependabot[bot]
be6315dd1f
Build(deps-dev): Bump ember-cli from 6.2.3 to 6.3.0 (#31982)
Bumps [ember-cli](https://github.com/ember-cli/ember-cli) from 6.2.3 to
6.3.0.
- [Release notes](https://github.com/ember-cli/ember-cli/releases)
-
[Changelog](https://github.com/ember-cli/ember-cli/blob/master/CHANGELOG.md)
-
[Commits](https://github.com/ember-cli/ember-cli/compare/v6.2.3...v6.3.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-03-27 16:33:03 +01:00
chapoi
3c7b532245
UX: removing baseline alignment from topic title wrapper (#32040)
This is causing misalignment with displayed metadata such as category,
tags, assigned,… We don't remember why it was added in the first place.
2025-03-27 16:07:02 +01:00
David Battersby
d4fa777bfd
UX: emoji styling adjustments (#32039)
Small alignment and sizing improvements for emojis/icons added to
categories.

We are also fixing the private category locked icon to retain the grey
color.
2025-03-27 18:45:39 +04:00
Jarek Radosz
e0bb7e936b
DEV: Update content-tag from 3.1.1 to 3.1.2 (#32038) 2025-03-27 15:33:59 +01:00
Kris
b570dea85b
UX: align the previewless composer with posts (#31960)
This aligns the composer with the post when the preview is
hidden. 

Once the width gets a bit too narrow it occupies the full width. 

[Screen Recording 2025-03-21 at 2.50.50
PM.webm](https://github.com/user-attachments/assets/4a854642-5b20-41fd-a478-7a943dfe0dd4)

The sidebar requires this to get a little magic numbery, but I tried to
anchor to predictable values otherwise.

---------

Co-authored-by: chapoi <101828855+chapoi@users.noreply.github.com>
2025-03-27 10:13:03 -04:00
Amanda Alves Branquinho
9d3a4cadfa
DEV: Add outlet args to new login template (#31997)
- Add new args to outlet
2025-03-27 10:43:40 -03:00
Git'Fellow
8e24d4e7de
UI: storage stats content overflow (#31840) 2025-03-27 08:55:57 -04:00
Jarek Radosz
29cbbd6b31
DEV: Fix Lint/ShadowingOuterLocalVariable (#32036)
unblocks a rubocop update
2025-03-27 13:50:24 +01:00
Alan Guo Xiang Tan
7b9976795e
UX: Display button loading state upon submit on password reset form (#32034) 2025-03-27 16:26:57 +08:00
dependabot[bot]
664f0b116c
Build(deps-dev): Bump @ember/test-helpers from 5.1.0 to 5.2.0 (#32024)
Bumps
[@ember/test-helpers](https://github.com/emberjs/ember-test-helpers)
from 5.1.0 to 5.2.0.
- [Release
notes](https://github.com/emberjs/ember-test-helpers/releases)
-
[Changelog](https://github.com/emberjs/ember-test-helpers/blob/master/CHANGELOG.md)
- [Commits](https://github.com/emberjs/ember-test-helpers/commits)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-27 09:11:58 +01:00
dependabot[bot]
0862c7d9b0
Build(deps-dev): Bump the embroider group with 3 updates (#31939)
Bumps the embroider group with 3 updates:
[@embroider/compat](https://github.com/embroider-build/embroider/tree/HEAD/packages/compat),
[@embroider/core](https://github.com/embroider-build/embroider/tree/HEAD/packages/core)
and
[@embroider/macros](https://github.com/embroider-build/embroider/tree/HEAD/packages/macros).


Updates `@embroider/compat` from 3.8.4 to 3.8.5
- [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.4 to 3.5.5
- [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)

Updates `@embroider/macros` from 1.16.11 to 1.16.12
- [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/macros)

---------

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-27 08:34:16 +01:00
Ted Johansson
c7abae2741
DEV: Disable site setting save/discard buttons while saving (#32030)
This change disables the save and undo buttons for site settings while the setting is being saved. This gives some visual indication that saving is underway, and prevents unnecessarily sending more than one request (which will be no-ops anyway.)
2025-03-27 09:43:10 +08:00
Sérgio Saquetim
c671cfff84
DEV: Upgrade the post widgets to Glimmer components (#31375)
Co-authored-by: David Taylor <david@taylorhq.com>
2025-03-26 18:53:46 -03:00
Keegan George
4e918e1d3d
DEV: Add value transformer to post-text-selection (#32023)
This update adds a new value transformer to the `PostTextSelection`
component. This allows for dynamically setting a `preventClose`
property. This is useful to prevent the `onSelectionChange` listener
from firing a toolbar close. In particular, we want to use this in
Discourse AI to prevent the selection change from closing the toolbar
when selecting new text inside the explain popup
(https://github.com/discourse/discourse-ai/pull/1221)
2025-03-26 11:28:31 -07:00