1984 Commits
Author SHA1 Message Date
Steven Chang 5973f83419 FIX: Preserve push subscription when DND is active on page load (#43243) 2026-09-04 09:34:40 -07:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>discoursebot
28653de183 DEPS: Bump testem from 3.20.1 to 3.20.2 (#43271)
Bumps [testem](https://github.com/testem/testem) from 3.20.1 to 3.20.2.
- [Release notes](https://github.com/testem/testem/releases)
- [Commits](https://github.com/testem/testem/compare/v3.20.1...v3.20.2)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: discoursebot <team@discourse.org>
2026-09-04 17:02:30 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> a3cd77d36a DEPS: Bump @rollup/browser from 4.63.0 to 4.63.1 (#43274)
Bumps [@rollup/browser](https://github.com/rollup/rollup) from 4.63.0 to
4.63.1.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v4.63.0...v4.63.1)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 17:01:40 +01:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>discoursebot
1533e6e33b DEPS: Bump postcss-nesting from 14.0.0 to 14.0.1 (#43276)
Bumps
[postcss-nesting](https://github.com/csstools/postcss-plugins/tree/HEAD/plugins/postcss-nesting)
from 14.0.0 to 14.0.1.
-
[Changelog](https://github.com/csstools/postcss-plugins/blob/main/plugins/postcss-nesting/CHANGELOG.md)
-
[Commits](https://github.com/csstools/postcss-plugins/commits/HEAD/plugins/postcss-nesting)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: discoursebot <team@discourse.org>
2026-09-04 17:01:15 +01:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>discoursebot
3cb7da6b6a DEPS: Bump terser from 5.48.0 to 5.51.2 (#43279)
Bumps [terser](https://github.com/terser/terser) from 5.48.0 to 5.51.2.
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.48.0...v5.51.2)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: discoursebot <team@discourse.org>
2026-09-04 15:59:45 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 3382fcdc7d DEPS: Bump @atlaskit/pragmatic-drag-and-drop-auto-scroll from 3.0.1 to 3.1.0 (#43277)
Bumps
[@atlaskit/pragmatic-drag-and-drop-auto-scroll](https://github.com/atlassian/pragmatic-drag-and-drop)
from 3.0.1 to 3.1.0.
-
[Commits](https://github.com/atlassian/pragmatic-drag-and-drop/commits)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 15:59:34 +01:00
David Taylor c0ef3a1140 DEV: Preserve leading trivia when dts-generator replaces a node (#43282)
processTree() in dts-generator (used to bundle each vendored package's
.d.ts into @discourse/types) replaces certain nodes, like the `declare`
keyword, with an empty string. TypeScript scans a node's `pos` to
include its leading trivia (blank lines, comments), but skip() jumps
straight to `node.end` on replacement, so that trivia got silently
deleted along with the token being replaced.

This surfaced concretely in @floating-ui/dom's type declarations, where
`export { Axis }` was immediately followed by a blank line and `declare
type BivariantCallback = ...`. Removing `declare` also removed the blank
line, merging the two statements onto a single line and producing
invalid TypeScript in the generated
external-types/floating-ui__dom/index.d.ts (confirmed by PR #43280,
which bumped to a build containing this and failed `pnpm lint:types`
with `TS1005: ';' expected`).

The fix emits the node's leading trivia before applying the replacement,
so only the token itself is swallowed.
2026-09-04 12:01:55 +01:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>discoursebot
6e2d4650be DEPS: Bump vitest from 4.1.9 to 4.1.11 (#43227)
Bumps
[vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest)
from 4.1.9 to 4.1.11.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
-
[Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)
-
[Commits](https://github.com/vitest-dev/vitest/commits/v4.1.11/packages/vitest)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: discoursebot <team@discourse.org>
2026-09-04 11:15:43 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 56d34383bc DEPS: Bump core-js from 3.49.0 to 3.50.0 (#43220)
Bumps
[core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js)
from 3.49.0 to 3.50.0.
- [Release notes](https://github.com/zloirock/core-js/releases)
-
[Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
-
[Commits](https://github.com/zloirock/core-js/commits/v3.50.0/packages/core-js)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 10:48:43 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> b092ef8a45 DEPS: Bump js-yaml from 5.4.0 to 5.4.1 (#43226)
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 5.4.0 to 5.4.1.
-
[Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/5.4.0...5.4.1)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 10:46:50 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 7fac7a9815 DEPS: Bump rete-area-plugin from 2.1.5 to 2.3.2 (#43231)
Bumps [rete-area-plugin](https://github.com/retejs/area-plugin) from
2.1.5 to 2.3.2.
- [Release notes](https://github.com/retejs/area-plugin/releases)
-
[Changelog](https://github.com/retejs/area-plugin/blob/main/CHANGELOG.md)
-
[Commits](https://github.com/retejs/area-plugin/compare/v2.1.5...v2.3.2)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 10:46:06 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 5b61a1d449 DEPS: Bump @tanstack/virtual-core from 3.17.5 to 3.17.8 (#43221)
Bumps
[@tanstack/virtual-core](https://github.com/TanStack/virtual/tree/HEAD/packages/virtual-core)
from 3.17.5 to 3.17.8.
- [Release notes](https://github.com/TanStack/virtual/releases)
-
[Changelog](https://github.com/TanStack/virtual/blob/main/packages/virtual-core/CHANGELOG.md)
-
[Commits](https://github.com/TanStack/virtual/commits/@tanstack/virtual-core@3.17.8/packages/virtual-core)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 09:50:01 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 8ddddcb6a8 DEPS: Bump @dagrejs/dagre from 3.0.0 to 3.1.1 (#43222)
Bumps [@dagrejs/dagre](https://github.com/dagrejs/dagre) from 3.0.0 to
3.1.1.
- [Release notes](https://github.com/dagrejs/dagre/releases)
- [Changelog](https://github.com/dagrejs/dagre/blob/master/changelog.md)
- [Commits](https://github.com/dagrejs/dagre/compare/v3.0.0...v3.1.1)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 09:49:46 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> df7640b462 DEPS: Bump moment-timezone from 0.6.2 to 0.6.3 (#43229)
Bumps [moment-timezone](https://github.com/moment/moment-timezone) from
0.6.2 to 0.6.3.
- [Release notes](https://github.com/moment/moment-timezone/releases)
-
[Changelog](https://github.com/moment/moment-timezone/blob/develop/changelog.md)
-
[Commits](https://github.com/moment/moment-timezone/compare/0.6.2...0.6.3)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 09:48:47 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 0606ae49fa DEPS: Bump @floating-ui/dom from 1.7.6 to 1.8.0 (#43234)
Bumps
[@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom)
from 1.7.6 to 1.8.0.
- [Release notes](https://github.com/floating-ui/floating-ui/releases)
-
[Changelog](https://github.com/floating-ui/floating-ui/blob/master/packages/dom/CHANGELOG.md)
-
[Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.8.0/packages/dom)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 09:48:10 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> f11242a83d DEPS: Bump sinon and @types/sinon (#43236)
Bumps [sinon](https://github.com/sinonjs/sinon) and
[@types/sinon](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/sinon).
These dependencies needed to be updated together.

Updates `sinon` from 22.0.0 to 22.1.0
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/main/CHANGES.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v22.0.0...v22.1.0)

Updates `@types/sinon` from 21.0.1 to 22.0.0
- [Release
notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
-
[Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/sinon)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-04 09:47:58 +01:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>discoursebot
ab408fba92 DEPS: Bump expect-type from 1.3.0 to 1.4.0 (#43238)
Bumps [expect-type](https://github.com/mmkal/expect-type) from 1.3.0 to
1.4.0.
- [Release notes](https://github.com/mmkal/expect-type/releases)
-
[Commits](https://github.com/mmkal/expect-type/compare/v1.3.0...v1.4.0)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: discoursebot <team@discourse.org>
2026-09-04 09:47:47 +01:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>discoursebot
bcaabcef89 DEPS: Bump ember-exam from 10.1.2 to 10.1.3 (#43237)
Bumps [ember-exam](https://github.com/ember-cli/ember-exam) from 10.1.2
to 10.1.3.
- [Release notes](https://github.com/ember-cli/ember-exam/releases)
-
[Changelog](https://github.com/ember-cli/ember-exam/blob/main/CHANGELOG.md)
-
[Commits](https://github.com/ember-cli/ember-exam/compare/v10.1.2...v10.1.3)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: discoursebot <team@discourse.org>
2026-09-04 09:46:53 +01:00
Alan Guo Xiang Tan ec2755cedc FEATURE: Add browser language to Site Traffic Explorer (#43161)
Add `language` column to `browser_pageview_events` so that we can
display a language dimension in the site traffic explorer.
2026-09-04 08:04:26 +08:00
Keegan George 4e0bd5a933 DEV: Let a signup flow add fields to the code-signup email step (#43195)
**Previously**, a signup flow could supply answers for the required
signup user fields (#43145) but had nowhere to ask for them: the only
extension point on the email step is the heading outlet, which sits
outside the form, so a field added there could not be `required` — the
Continue button belongs to core's form and never validated it.

**In this update**, a `code-login-email-step-fields` outlet inside that
form yields the form-kit `form`, so a connector can add its own fields
and have them validated and submitted along with the email. Core reads
only `email` off the submitted data, so extra keys go no further.
2026-09-03 15:12:25 -07:00
Régis Hanol 6c7ef4dfec FIX: Store the site contact group by id (#42771)
Previously, `site_contact_group_name` was written as a group name by the
About config page but as a group id by the all-settings page, which grew
a group picker in #40981 — and `GroupSettingValidator` was relaxed in
the
same commit to accept either, so the mismatched value saved cleanly and
the row still displayed the right group. `SystemMessage` looks the value
up by name, so an admin who set the contact group from All site settings
silently stopped it being invited to automated personal messages, and
the
About page then showed no group selected at all.

This change makes the id the stored format everywhere, because a group
name can be renamed or localized while an id cannot. `TypeSupervisor`
converts a name to its id on write, so console, API and plugin callers
that pass a name keep working; the validator now accepts ids only; and a
post-deploy migration converts the values sites have already stored,
post-deploy because the old code can only resolve a name. The About page
writes and reads the id, and `SystemMessage` resolves it through a new
`Discourse.site_contact_group`, which still accepts a name for sites
that
configure this through a `DISCOURSE_SITE_CONTACT_GROUP_NAME` global
override, since no migration can reach those. Both conversions go
through
`Group.find_by_id_or_name`.

The lookups guard on a digits-only match rather than casting, because
Rails turns `Group.find_by(id: "0support")` into `WHERE id = 0` — the
everyone group.

Two behaviour changes are worth calling out. Renaming the contact group
no longer breaks the setting; a spec asserted the opposite, which was
the
bug written down as intent. And the migration matches names
case-insensitively, so a site that stored `Staff` for a group named
`staff` — which `Group.exists?(name:)` never matched — starts inviting
that group again.

`site_settings.errors.invalid_group` now says "There's no such group",
since it fires for an unknown name as well as an unknown id and is
shared
with `AtLeastOneGroupValidator`, which has only ever validated ids.

Finally, the setting keeps its name. Renaming it would change a key that
self-hosters set through the environment and that third parties read,
and
the deprecated-settings alias does not cover global overrides, so that
belongs in its own change rather than in a fix.
2026-09-03 18:55:25 +02:00
Keegan George b904f1405e DEV: Let a signup flow prefill the code-signup user fields (#43145)
**Previously**, code signup always collected required signup user fields
in a step of its own, even when the flow around it had already asked for
them.

**In this update**, a `code-login-user-field-values` value transformer
can supply those answers alongside the code, so the step is skipped.
They are withheld unless every required field ends up answered, since
the server reads any `user_fields` it receives as the complete set and
would fail the signup rather than prompt for the rest.
2026-09-03 07:57:44 -07:00
Gabriel Grubba 8e250d40b0 DEV: Add create-topic-button-click behavior transformer (#43142)
Previously, the create-topic button's click always opened the composer,
so a plugin that needs its own creation flow (for example, an event form
in event categories) had to hide the core button with a CSS hack and
render a second button next to it, losing the drafts menu along the way.

This change wraps the click in a `create-topic-button-click` behavior
transformer with the current category and tag as context, so a plugin
can take over the click (or call `next()` to keep the default) while
core's button, its label and icon transformers, and the drafts menu stay
in place.
2026-09-03 10:28:12 -03:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> acb4f5da55 DEPS: Bump ember-qunit from 9.0.4 to 9.1.0 (#41067)
Bumps [ember-qunit](https://github.com/emberjs/ember-qunit) from 9.0.4
to 9.1.0.
- [Release notes](https://github.com/emberjs/ember-qunit/releases)
- [Commits](https://github.com/emberjs/ember-qunit/commits/v9.1.0)

> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-03 13:46:48 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 0160cd3b92 DEPS: Bump @ember-decorators/utils from 6.1.1 to 7.0.0 (#41306)
Bumps
[@ember-decorators/utils](https://github.com/ember-decorators/ember-decorators)
from 6.1.1 to 7.0.0.
- [Release
notes](https://github.com/ember-decorators/ember-decorators/releases)
-
[Changelog](https://github.com/ember-decorators/ember-decorators/blob/master/CHANGELOG.md)
-
[Commits](https://github.com/ember-decorators/ember-decorators/commits)

> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-03 13:41:30 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> e1e6ed60b8 DEPS: Bump decorator-transforms from 2.3.2 to 2.4.0 (#41375)
Bumps
[decorator-transforms](https://github.com/ef4/decorator-transforms) from
2.3.2 to 2.4.0.
- [Release notes](https://github.com/ef4/decorator-transforms/releases)
-
[Changelog](https://github.com/ef4/decorator-transforms/blob/main/CHANGELOG.md)
-
[Commits](https://github.com/ef4/decorator-transforms/compare/v2.3.2...v2.4.0)

> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-03 13:39:51 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 77e758aca5 DEPS: Bump @codemirror/language from 6.12.3 to 6.12.4 (#41377)
Bumps [@codemirror/language](https://github.com/codemirror/language)
from 6.12.3 to 6.12.4.
-
[Changelog](https://github.com/codemirror/language/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codemirror/language/commits)

> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-03 13:39:35 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> c698ef9f40 DEPS: Bump message-bus-client from 4.4.1 to 4.6.0 (#42825)
Bumps [message-bus-client](https://github.com/discourse/message_bus)
from 4.4.1 to 4.6.0.
-
[Changelog](https://github.com/discourse/message_bus/blob/main/CHANGELOG)
-
[Commits](https://github.com/discourse/message_bus/compare/v4.4.1...v4.6.0)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-03 13:37:54 +01:00
Régis Hanol 8402bfc74d DEV: Add admin-above-plugins-index plugin outlet (#43166)
Previously, the admin plugins page only exposed an outlet below the
list, so a plugin had nowhere to put a notice admins see before
scrolling through every installed plugin.

This change adds a matching `admin-above-plugins-index` outlet between
the page header and the filter controls, with the same `model` outlet
argument.
2026-09-03 11:30:51 +02:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>discoursebotDavid Taylor
9a39f19cfd DEPS: Bump js-yaml from 4.2.0 to 5.4.0 (#43093)
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.2.0 to 5.4.0.
-
[Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/4.2.0...5.4.0)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: discoursebot <team@discourse.org>
Co-authored-by: David Taylor <david@taylorhq.com>
2026-09-03 10:22:09 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> ba2da1d0d7 DEPS: Bump @codemirror/commands from 6.10.3 to 6.11.0 (#42822)
Bumps [@codemirror/commands](https://github.com/codemirror/commands)
from 6.10.3 to 6.11.0.
-
[Changelog](https://github.com/codemirror/commands/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codemirror/commands/commits)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-03 10:19:49 +01:00
Natalie Tay 5d37dd34f0 FIX: Ensure search keyboard nav within a topic works with Ask AI (#43164)
Note: tab-ing to the "This topic" works, this PR adds the ability to use
the down and up arrow keys as well.
2026-09-03 17:11:22 +08:00
Jarek Radosz a6e133ceab DEV: Introduce warpdrive store (with compat layer) and migrate some models (#42147)
Adds a WarpDrive store (`service:warp-store`, LegacyMode + JSON:API
cache) alongside the existing `service:store`, routing requests through
Discourse's `ajax()` helper.

`RestCompatModel` bridges legacy `RestModel` callsites
(`get`/`set`/`setProperties`, `store.createRecord`, `save`,
`destroyRecord`) onto it.

Converts **badge, user-badge, topic-details, bookmark, tag, tag-group,
tag-info, tag-notification, tag-settings and archetype**, with per-model
schemas, request builders and payload normalizers.

Attributes outside a schema (plugin `add_to_serializer` fields, ad-hoc
`create` keys) are retained separately so nothing the server sends is
dropped.
2026-09-03 08:57:28 +02:00
Martin Brennan 7dfd824b15 FIX: Refresh browse-more counts when topic tracking state changes (#43152)
The browse-more message was not consuming the tracking state’s
invalidation
token, so its new and unread counts remained stale after reading a
topic.
Recompute the message whenever the topic tracking state changes.
2026-09-03 12:07:02 +10:00
Martin Brennan ddb93afd02 DEV: Remove old kanban theme component from popular themes list (#43114)
Also remove other random refs
2026-09-03 10:03:41 +10:00
Sérgio Saquetim 3614700dff DEV: Derive the DTextField placeholder attribute without a computed setter (#43107)
`DTextField` took `@placeholder` through a computed setter, with a
getter that fell back to `@placeholderKey`. Ember caches whatever a
computed setter returns at assignment time and never re-links the
computed's dependent keys, so the rendered placeholder depended on which
of the two arguments the caller passed first. Passing `@placeholder`
before `@placeholderKey` produced an empty placeholder; the composer
title only worked because its invocation happened to list the key first.

The attribute now binds to a plain computed over both arguments, and the
base `TextField` no longer binds `placeholder` itself so the two
bindings do not compete. Behaviour for existing callers is unchanged: an
explicit placeholder still wins over the key.

Rendering tests cover both argument orders and an explicit placeholder
overriding the key.
2026-09-02 20:09:43 -03:00
David Taylor b0877e98d0 DEV: wait for CSS transition in skip-links test (#43121)
Resolve flaky test
2026-09-02 14:10:24 +01:00
David Taylor 005eb4daf4 DEV: configure conditionNames in rolldown resolver (#43116)
Extracted from the Ember 7 PR (#40407). Vite injects the
`development`/`production` export condition automatically, but our
rolldown config did not.

This is a no-op on `main` today, but becomes relevant since Ember 7
makes use of these flags.
2026-09-02 12:38:45 +01:00
David Taylor e79db287da DEV: refactor sidebar section-link active state (#43117)
Extracted from the Ember 7 PR (#40407). Ember 7's <LinkTo> no longer
considers `@models` when `@current-when` is a string.

Sidebar category/tag links pass a static multi-route `current-when`
string plus `@models` to stay highlighted across filter routes while
narrowing to a single category/tag. Under Ember 7 it causes every link
sharing the route list to light up at once.

This commit implements the `currentWhen` logic we want in JS. On Ember 6
this reproduces what <LinkTo> already does, so behaviour is unchanged.
2026-09-02 12:38:29 +01:00
David Taylor 746d9e266d DEV: drop injectTestHelpers from test setup (#43118)
`Application#injectTestHelpers` sets up Ember's legacy global test
helpers (`find`, `click`, `visit`, `pauseTest`, etc.). We've been
linting against these globals for a long time, and the system will be
finally removed in Ember 7.

We maintain the `pauseTest` global via a custom shim.

Extracted from the Ember 7 PR (#40407).
2026-09-02 12:37:49 +01:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>discoursebot
ed7896c8dd DEPS: Bump @codemirror/view from 6.43.1 to 6.43.9 (#42823)
Bumps [@codemirror/view](https://github.com/codemirror/view) from 6.43.1
to 6.43.9.
- [Changelog](https://github.com/codemirror/view/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codemirror/view/commits)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: discoursebot <team@discourse.org>
2026-09-02 12:25:16 +01:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>discoursebot
d625ec5979 DEPS: Bump @csstools/postcss-light-dark-function from 3.0.1 to 3.0.3 (#42826)
Bumps
[@csstools/postcss-light-dark-function](https://github.com/csstools/postcss-plugins/tree/HEAD/plugins/postcss-light-dark-function)
from 3.0.1 to 3.0.3.
-
[Changelog](https://github.com/csstools/postcss-plugins/blob/main/plugins/postcss-light-dark-function/CHANGELOG.md)
-
[Commits](https://github.com/csstools/postcss-plugins/commits/HEAD/plugins/postcss-light-dark-function)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: discoursebot <team@discourse.org>
2026-09-02 12:24:22 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 6ce4e63dbb DEPS: Bump immer from 11.1.8 to 11.1.18 (#43094)
Bumps [immer](https://github.com/immerjs/immer) from 11.1.8 to 11.1.18.
- [Release notes](https://github.com/immerjs/immer/releases)
- [Commits](https://github.com/immerjs/immer/compare/v11.1.8...v11.1.18)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 11:49:58 +01:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>discoursebot
4c0989a96b DEPS: Bump picomatch from 4.0.4 to 4.0.7 (#43095)
Bumps [picomatch](https://github.com/micromatch/picomatch) from 4.0.4 to
4.0.7.
- [Release notes](https://github.com/micromatch/picomatch/releases)
-
[Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
-
[Commits](https://github.com/micromatch/picomatch/compare/4.0.4...4.0.7)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: discoursebot <team@discourse.org>
2026-09-02 11:43:37 +01:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>discoursebot
575a85d0fd DEPS: Bump ember-cli from 7.0.1 to 7.2.0 (#43091)
Bumps [ember-cli](https://github.com/ember-cli/ember-cli) from 7.0.1 to
7.2.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/commits)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: discoursebot <team@discourse.org>
2026-09-02 11:25:39 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 4c857a82a0 DEPS: Bump autoprefixer from 10.5.0 to 10.5.4 (#42830)
Bumps [autoprefixer](https://github.com/postcss/autoprefixer) from
10.5.0 to 10.5.4.
- [Release notes](https://github.com/postcss/autoprefixer/releases)
-
[Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
-
[Commits](https://github.com/postcss/autoprefixer/compare/10.5.0...10.5.4)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-02 11:25:16 +01:00
Alan Guo Xiang Tan 784376bcbf FIX: Preserve subsecond traffic session durations (#43111)
The Site Traffic Explorer rounded average session duration to an integer
before formatting it, so positive averages below half a second appeared
as 0s.

This commit preserves the fractional average and lets this metric
display up to two decimal places below one second. Durations of at least
one second keep the existing whole-second and minute formatting.
2026-09-02 12:58:17 +08:00
Martin Brennan 5f72eb0203 DEV: Minor fixes for granular_anonymous_and_logged_in_groups_permissions upcoming change (#43063)
The following fixes are made here to make the transition to
`granular_anonymous_and_logged_in_groups_permissions` being
permanently enabled easier for people.

- **DEV: Show logged_in_users and anonymous_users in setting list**
- Previously, these groups would only show if
`granular_anonymous_and_logged_in_groups_permissions` is enabled,
but they are usable now everywhere in core, and this will help ease the
transition for themes + settings.
- **DEV: Add everyone -> logged_in_users map for theme settings**
- Theme settings now copy the same pattern as site settings, where
previously selected `everyone`
is dynamically changed to `logged_in_users` when
`granular_anonymous_and_logged_in_groups_permissions`
     is enabled.
- **DEV: Show everyone group as everyone (legacy) in site setting group
list pickers**
  - Makes it clearer this group will soon not be supported
- **DEV: Allow anonymous_users in AnonymousUser#in_any_groups?**
- Anon users should return true for `in_any_groups?` for
`anonymous_users` regardless of whether
`granular_anonymous_and_logged_in_groups_permissions` is on
2026-09-02 10:44:52 +10:00
Renato Atilio e44970f22f FEATURE: Allow editing [date] and [date-range] in the rich editor (#43049)
Previously, local dates could only be inserted — once a chip was in the
rich editor there was no way to change it, so correcting a date meant
switching back to markdown and editing the bbcode by hand.

This change adds an edit button to each chip that reopens the date modal
pre-filled and replaces the node in place, reachable by keyboard and
named for the date it edits. It also fixes `DCalendarDateTimeInput`
never seeding pikaday with its initial `@date`, which opened the
calendar on the current month instead of the date being edited.
2026-09-01 20:20:47 -03:00
Renato Atilio 0eeeed07cb FIX: Provide working ways to close chat channels on touch devices in desktop view (#43030)
Previously, there was no reliable way to close or leave a chat channel
on a tablet (touch + desktop view): the leave button required hover, the
long-press menu only worked in mobile view, and the sidebar channel menu
was hidden on all touch devices.

On touch devices that can't hover (`@media (hover: none)`) in desktop
view, the leave button and the sidebar channel menu button are now
always visible instead of hover-revealed, and long-press opens the
channel menu. Swipe stays limited to the mobile layout, and narrow
mobile view is untouched. The sidebar button had been hidden on touch
(#41368, earlier #36969) so rows could be tapped to navigate without the
hover reveal in the way. As a plainly visible button, row taps still
navigate and the menu opens only from the button.

Reported in https://meta.discourse.org/t/close-a-chat/297444
2026-09-01 20:01:30 -03:00