Skip to content

build(deps): consolidate the open dependabot updates - #1915

Merged
nasyrov merged 5 commits into
mainfrom
deps/consolidate-dependabot-updates
Aug 24, 2026
Merged

nasyrov merged 5 commits into
mainfrom
deps/consolidate-dependabot-updates

Conversation

@nasyrov

@nasyrov nasyrov commented Aug 24, 2026 •

Copy link
Copy Markdown
Contributor

Supersedes the open Dependabot PRs

This PR supersedes and replaces all twelve open Dependabot PRs. They all
touch pnpm-lock.yaml, so merging them one at a time means eleven rebases and
eleven lockfile re-resolutions. This resolves the lockfile once.

Close once this merges:

PR Update Landed here as
#1900 taiki-e/install-action 2.85.11 → 2.86.2 pin + comment updated
#1901 changesets/action 1.9.0 → 2.1.0 excluded — see below
#1902 turbo group (2) turbo, eslint-plugin-turbo → ^2.10.11
#1903 commitlint group (3) ^21.2.2
#1905 vite group lockfile refresh (catalog was already ^8.2.1)
#1906 tiptap group (10) catalog → ^3.30.1
#1907 tanstack group (3) catalog; react-table v8 → v9
#1910 cloudflare group (3) catalog
#1911 prettier group lockfile refresh (identical diff to #1905)
#1912 lingui group (6) excluded — see below
#1913 markdown-it 14 → 15 + @types/markdown-it dropped
#1914 knip 6.26.0 → 6.32.2 ^6.32.2

Everything else was also refreshed within its declared range, so the tree is
current rather than just un-blocked.

Migrations the bumps required

Three bumps needed code changes, not a version edit.

TanStack Table v8 → v9 (#1907)

v9 replaces useReactTable + getCoreRowModel() with useTable plus an
explicit tableFeatures registry, and every public type grew a leading
TFeatures generic (ColumnDef<TData> → ColumnDef<TFeatures, TData, TValue>).

DataTable now owns that registry and exports DataTableColumnDef<TData>, so
the three call sites keep naming a single generic and the feature set stays an
implementation detail of the component. Row selection is the only feature
registered; with column visibility off, cells come from getAllCells() — the
exact counterpart of the header's getHeaderGroups().

Column meta moved off the global declare module "@tanstack/react-table"
augmentation onto v9's per-table columnMeta slot, which scopes it to this
table instead of every table in the process.

Two suppressions became dead and were removed: v9's store-backed instance is
React Compiler-compatible, so the react-hooks/incompatible-library disable no
longer applies, and data no longer needs a readonly cast.

markdown-it 14 → 15 (#1913)

v15 bundles its own declarations, so @types/markdown-it is removed — leaving
it would shadow them. The instance type is now a named export separate from the
callable default, so the annotation imports MarkdownIt as MarkdownItInstance.

The comment-rendering security posture is unchanged: linkify: false means
none of the linkify-it v6 behavior changes apply, and the existing
javascript:-scheme and rel="nofollow ugc noopener" tests still pass.

react-query 5.102 query() (in-range, via #1907's group)

5.102 deprecates ensureQueryData and fetchQuery in favour of query(). The
twelve call sites are migrated; route loaders pass staleTime: "static" to keep
ensureQueryData's dedupe semantics. staleTime joins the existing TanStack
entries in the lingui ignoreNames list, since "static" is a sentinel and not
user copy.

changesets/action v1 → v2 (#1901) — deliberately NOT taken

This is the one Dependabot PR not folded in, and the reason is worth stating.

v2 is only compatible with Changesets v3 — its README says so directly. The
mechanism: v2 stopped scraping New tag: out of the publish script's stdout and
instead reads published packages from a file named by a CHANGESETS_OUTPUT env
var it injects. @changesets/cli 2.31 contains zero references to that variable,
so the file is never written.

The failure mode is the dangerous kind. pnpm release would publish to npm
normally, then the action would find no output file, log a warning (not an
error), and report published: false — so no git tags and no GitHub releases.
Worse, the Detect release work step keys off git rev-parse refs/tags/$name@$version,
so with tags never pushed it would return run=true on every subsequent merge,
doing a full cold build and no-op publish each time. Entirely green, silently broken.

Moving to @changesets/cli v3 is the supported pairing, but v3 changes how
peer-dependent packages are bumped — precisely what
onlyUpdatePeerDependentsWhenOutOfRange in .changeset/config.json is tuned
around — plus it drops the prettier config option and changes private-package
versioning. That is a release-pipeline design decision, not a dependency bump, so
it belongs in its own PR. #1901 should stay open.

The action stays at v1.9.0, with the constraint written into release.yml so the
next person doesn't rediscover it the hard way.

lingui 6.4 → 6.6 (#1912) — deliberately NOT taken

Also excluded, and this one was a live runtime break rather than a latent one.

6.6.0 makes the editor unopenable: the route loader throws
Cannot destructure property 'i18n' of ... as it is null and the screen renders
"Couldn't open the editor". useLingui() is reading a context that was never
populated.

6.6 made @babel/core/@babel/types optional peers of
@lingui/babel-plugin-lingui-macro, accepting ^7.20 || ^8. This workspace
resolves both Babel majors, so pnpm builds two peer-keyed @lingui/react
instances — two React contexts — and the code-split editor chunk gets the one
whose provider never mounted. main resolves a single
@lingui/react@6.4.0(react@19.2.8); with 6.6 there are two.

Taking 6.6 means collapsing the workspace onto one Babel major, which has its own
blast radius. The catalog pins >=6.4.0 <6.5.0 — a caret would drift straight
back onto 6.6. #1912 should stay open.

astro is capped, in two places

apps/docs cannot take astro 7.2.4+, which pins @astrojs/markdown-satteri
at exactly 0.3.7 → satteri ^0.10, while @astrojs/starlight (including
0.41.7, the newest) still pins satteri ^0.9. Two satteri copies in the tree
make astro check fail with unrelated-identical-type errors inside starlight's
own markdown-plugins.ts.

Both constraints are required, and I verified each in isolation:

  • Override alone ("@astrojs/markdown-satteri": ">=0.3.1 <0.3.7") dedupes
    satteri to one copy, but does not pin astro — pnpm overrides rewrite the
    dependent's range rather than constraining resolution, so astro floats to 7.2.5
    with an older markdown-satteri grafted underneath it.
  • astro cap alone still resolves two satteri copies: astro 7.2.3 takes
    markdown-satteri as a range, so pnpm picks 0.3.8 → satteri 0.10.

Together they land astro on 7.2.3, whose declared @astrojs/markdown-satteri
is exactly the 0.3.6 the override yields — a supported pairing rather than a
graft, and newer than the 7.1.6 the branch had been sitting on.

Lift both once starlight ships satteri ^0.10 support.

Related: pnpm update silently widens these caps. It rewrote the pre-existing
starlight >=0.41.5 <0.41.7 cap to ^0.41.7 while this branch was being prepared,
and later rewrote the new astro cap to ^7.2.3. Both were caught and restored.

Verification

Every ci.yml gate run locally: commitlint, lint, format, typecheck, knip,
i18n check + ratchet, publint, attw, test:unit, test:build, and a cold-cache full
build.

All nine e2e suites pass individually. Running them concurrently contends for
ports locally and is not a signal.

Three of the four problems in this PR were invisible to the gates I had been
running: the changesets and astro defects came from review (neither release.yml
nor lockfile re-resolution is exercised by PR checks), and the lingui break was
caught only by e2e — typecheck, lint, and unit tests were all green while the
editor was unopenable.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 24, 2026 •

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
plumix-marketing 7172da5 Commit Preview URL

Branch Preview URL
Aug 24 2026, 04:33 PM

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 24, 2026 •

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
plumix-docs 7172da5 Commit Preview URL

Branch Preview URL
Aug 24 2026, 04:34 PM

Supersedes the twelve individual Dependabot PRs (#1900-#1903, #1905-#1907, #1910-#1914)
with one branch, so the shared lockfile is resolved once instead of twelve conflicting times.
Also refreshes every other dependency within its declared range.

Three bumps needed real migration rather than a version edit:

- TanStack Table v8 -> v9: `useReactTable`/`getCoreRowModel` became `useTable` plus an
  explicit `tableFeatures` registry, and the public types grew a leading `TFeatures`
  generic. DataTable now owns that feature set and exports `DataTableColumnDef`, so callers
  keep naming one generic and the feature registry stays an implementation detail. Column
  meta moves from a global `declare module` augmentation to the per-table `columnMeta` slot.

- markdown-it 15 bundles its own declarations, so `@types/markdown-it` is dropped; the
  instance type is now a named export separate from the callable default.

- react-query 5.102 deprecated `ensureQueryData`/`fetchQuery` in favour of `query()`.
  Route loaders pass `staleTime: "static"` to keep the existing dedupe semantics.

astro is held below 7.2.4 through an `@astrojs/markdown-satteri` cap: 7.2.4 moved to
satteri 0.10 while starlight 0.41.7 (newest) still pins satteri ^0.9, and two copies break
the docs typecheck. Lift the cap once starlight ships satteri 0.10 support.
Bumping the pin alone (as the Dependabot PR did) would have broken the first
release after merge: v2 renamed every input and calls `throwOnRenamedInputs`, so
`version`/`publish`/`commit`/`title` now hard-fail the step.

- Renamed to `version-script`, `publish-script`, `commit-message`, `pr-title`.
- v2 no longer reads the `GITHUB_TOKEN` env var, so the App token moves to the
  `github-token` input; without it the action falls back to `github.token`, whose
  pushes don't trigger the required checks.
- `push-with-git-cli: true` keeps v1's git-CLI push instead of v2's new
  GitHub-API default, so the existing `persist-credentials` setup still applies.
- v2 dropped .npmrc handling, so the empty `NPM_TOKEN` workaround that kept OIDC
  trusted publishing reachable is no longer needed.

Pinned to v2.1.1 rather than the v2.1.0 Dependabot proposed: 2.1.1 fixes a typo in
the renamed-input guard that reported `commit-mesage`. The pin is also the commit
SHA, not the annotated tag object SHA that the tag ref resolves to.
Post-review cleanup of the react-query and TanStack Table migrations.

- Six route guards spread `sessionQueryOptions()` with the same `staleTime`;
  `session.ts` already owns that query, so `loadSession` belongs there. The other
  five `query()` sites each spread a different oRPC factory and stay inline.
- `DataTableColumnDef` drops its `TValue` parameter: table-core types `CellData`
  as `unknown`, so the constraint and its default were both vacuous.
- Drop the markdown-it instance annotation — `new MarkdownIt()` already infers it,
  so the aliased type import bought nothing.
- Move the `getAllCells` rationale to the call site it explains, and cut comments
  that restated the code beneath them.
…ly binds

Two defects from review, both in areas CI does not exercise.

changesets/action v2 is only compatible with Changesets v3 — its README says so,
and the mechanism is that v2 reads published packages from the file named by
CHANGESETS_OUTPUT. @changesets/cli 2.31 never writes that file, so v2 would publish
to npm and then skip every git tag and GitHub release, logging a warning rather than
failing. The stuck tags would also make the release-detection step fire on every
merge. Moving to CLI v3 changes how peer-dependent packages are bumped, which is
what `onlyUpdatePeerDependentsWhenOutOfRange` is tuned around, so that pairing needs
its own PR. Reverted to v1.9.0 with the constraint written down.

The `@astrojs/markdown-satteri` override deduplicates satteri but does not pin
astro, so the previous claim that it held astro below 7.2.4 was wrong — astro was
sitting at 7.1.6 only because an earlier resolution left it there, and would float
to 7.2.5 on the next update. Added the cap next to the existing starlight one.
Both are needed: astro <7.2.4 alone still resolves two satteri copies, because
astro 7.2.3 takes markdown-satteri as a range and picks 0.3.8. Together they land
astro on 7.2.3, whose declared markdown-satteri is exactly the 0.3.6 the override
yields — a supported pairing rather than a graft, and newer than 7.1.6.
The in-range lingui refresh to 6.6.0 broke the editor at runtime: opening an entry
rendered "Couldn't open the editor" because the route loader threw
`Cannot destructure property 'i18n' of ... as it is null` — useLingui() reading a
context that was never populated.

6.6 made `@babel/core`/`@babel/types` optional peers of
`@lingui/babel-plugin-lingui-macro`, accepting `^7.20 || ^8`. This workspace resolves
both Babel majors, so pnpm built two peer-keyed `@lingui/react` instances and the
code-split editor chunk got the one whose provider never mounted. main resolves a
single `@lingui/react@6.4.0(react@19.2.8)`; this branch had 6.6.0 twice.

Capped rather than fixed here: collapsing the workspace onto one Babel major is its
own change with its own blast radius. A caret range would drift straight back onto
6.6, so the catalog pins `>=6.4.0 <6.5.0` — the same shape as the starlight and astro
caps. Dependabot #1912 stays open.

Found by e2e, which no local gate I had run covers. All nine suites now pass
individually; running them concurrently contends for ports locally and is not a
signal.
@nasyrov
nasyrov force-pushed the deps/consolidate-dependabot-updates branch from 429540d to 7172da5 Compare August 24, 2026 16:30
@nasyrov
nasyrov merged commit 1fcd855 into main Aug 24, 2026
27 checks passed
@nasyrov
nasyrov deleted the deps/consolidate-dependabot-updates branch August 24, 2026 16:36
nasyrov added a commit that referenced this pull request Aug 24, 2026
Closes the pairing #1915 deliberately left open, and supersedes #1901.

`changesets/action` v2 only speaks to Changesets v3. It learns what got
published
by reading the file named by the `CHANGESETS_OUTPUT` env var it injects,
and only
the v3 CLI writes that file — pair v2 with a v2 CLI and the npm publish
succeeds
while every git tag and GitHub release is silently skipped, as a warning
rather
than a failure. So both move together, or neither.

## What changed

- `@changesets/cli` 2.31 → **3.0.1**, `@changesets/changelog-github` 0.7
→ **1.0.0**
- `changesets/action` v1.9.0 → **v2.1.1**, with v2's renamed inputs
(`version-script`, `publish-script`, `commit-message`, `pr-title`), the
App token
moved to the `github-token` input, and `push-with-git-cli: true` to keep
v1's
  push behaviour instead of v2's new GitHub-API default
- `.changeset/config.json`: `$schema` follows `@changesets/config` to
v4, plus an
  explicit `format` (see below)
- Root now carries `prettier` + `@plumix/prettier-config`

## Verification

The release pipeline is the one thing PR CI cannot exercise, so I
checked the
semantics directly rather than relying on it going green.

**Release plans are identical.** Ran `changeset status --output` under
both 2.31.1
and 3.0.1 against the current 15 changesets: **22 releases, same bump
types, same
versions, zero differences.**

**A real `changeset version` run touches only `version` fields** — no
dependency or
peer range is rewritten. That covers v3's headline change, that peer
dependents now
bump `patch` instead of `major`:
`onlyUpdatePeerDependentsWhenOutOfRange` suppresses
the in-range case, which is the only one a 0.x minor ever hits. The flag
survives in
`@changesets/config` v4 under the same experimental key.

## The one real break: formatting

v3 dropped its bundled prettier in favour of formatter auto-detection,
and prettier
was **not resolvable from the repo root** — the root runs it per package
through
turbo. Generated changelogs came out unformatted (trailing whitespace on
blank list
lines, `*not*` instead of `_not_`) and **failed the format gate**, which
would have
blocked the Version PR on a required check.

Fixed by giving the root `prettier` + the shared config, and naming
`"format":
"prettier"` rather than leaving `auto`. The failure modes differ and the
explicit
one is better: with `auto` and no resolvable prettier, changesets
silently emits
unformatted files that break a gate two steps later; naming prettier
makes it fail
loudly at version time instead.

`prettier` is in knip's root `ignoreDependencies` — changesets shells
out to
`pnpm exec prettier`, so nothing imports it.

## Checked, not applicable

No `prettier` config key to migrate to `format`. No `changeset tag` or
`--sinceMaster` usage. No `publishConfig.registry` (v3 ignores those for
pnpm). No
prerelease state to migrate. `access` already `public`, `baseBranch`
already
explicit. Private packages stop being versioned by default in v3, but
every private
package here is already in `ignore`. `changeset version`'s new
exit-1-when-no-changesets
only fires when the action runs `version-script`, which it does only
when changesets
exist — I confirmed that branch in the action's bundle.

Node 24.15 and pnpm 10.33 satisfy v3's new engines.

## Residual risk

`release.yml` runs only on merge to main, so its first real exercise is
the next
release. The pieces above were each verified by hand, but the end-to-end
publish
path cannot be proven from a PR.
nasyrov added a commit that referenced this pull request Aug 24, 2026
… bundle (#1918)

Lifts the `>=6.4.0 <6.5.0` lingui cap that #1915 added, and closes out
the second
follow-up from that PR.

## The stated plan doesn't work

The follow-up was "collapse the workspace onto one Babel major." That
isn't
available. Three third-party packages take Babel 7 as a **hard
`dependencies`
entry** capped at `^7`:

| Package | Declares |
| --- | --- |
| `@tanstack/router-plugin` | `@babel/core ^7.28.5`, `@babel/types
^7.28.5` |
| `babel-dead-code-elimination` (via `@tanstack/router-utils`) |
`@babel/core ^7.23.7` |
| `eslint-plugin-react-hooks` | `@babel/core ^7.24.4` |

Meanwhile admin's rolldown/vite pipeline supplies `@babel/core ^8.0.1`,
and
`@rolldown/plugin-babel` / `@lingui/vite-plugin` accept `^7.29 || ^8`.
Forcing
everything to 8 hands the three above a major they don't support;
forcing 7 breaks
admin's build pipeline. Both majors coexist by necessity, so pnpm keeps
materializing one `@lingui/react` per peer context.

## What actually fixes it

Two copies on disk is fine. Two copies **in one bundle** is not, because
each
carries its own `LinguiContext` — which is why `useLingui()` returned
null and the
editor rendered "Couldn't open the editor".

`resolve.dedupe` in admin's Vite config is the right lever, and pins the
bundle to
a single copy. That's the whole change beyond the version bump.

I tried a scoped `pnpm.overrides` on the macro's peers first
(`@lingui/babel-plugin-lingui-macro>@babel/types`). **It does nothing**
— the peer
instance keys come from what each consumer provides down the graph, not
from the
macro's own declaration. Not shipped.

## Verification

All **182** e2e tests pass across every suite that could see this —
admin (129),
admin-editor (33), and the six plugins (20) — run individually. The
pages suite is
the one that originally caught the regression.

Plus typecheck, lint, format, test:unit, i18n, and knip (cold).

## Note on the remaining duplication

The lockfile still carries two `@lingui/react` entries, and the whole
Babel
toolchain is still duplicated at 7.x and 8.x. That is upstream's shape,
not
something this repo can resolve today. It becomes fixable when
`@tanstack/router-plugin` and `eslint-plugin-react-hooks` move to Babel
8 — at
which point the `dedupe` entry can go.
nasyrov added a commit that referenced this pull request Aug 25, 2026
`@astrojs/starlight` goes back to a caret range, `>=0.41.5 <0.41.7` to
`^0.41.5`, resolving 0.41.8. The floor stays put — 0.41.4 and 0.41.5
carried
the `docsSchema({ extend })` fixes the frontmatter schema depends on.

**The upstream change #1865 was waiting for has not happened.**
Starlight
0.41.8 still declares `satteri: ^0.9.1` beside
`@astrojs/markdown-satteri: ^0.3.5`, so neither lift condition in the
issue is
met. The ceiling became redundant for an unrelated reason: the root
`pnpm.overrides` entry capping `@astrojs/markdown-satteri` below 0.3.7
landed
in #1915 and already holds the tree to one Sätteri copy, which is the
entire
job the ceiling was doing. Worth stating plainly, or the next reader
concludes
Starlight shipped a fix.

Verified by installing each configuration and type-checking it:

| Configuration | Sätteri copies | `pnpm typecheck` |
|---|---|---|
| Starlight 0.41.8, override present | 1 (`0.9.5`) | passes |
| Starlight 0.41.8, override removed | 2 (`0.9.5` + `0.10.5`) | TS2345 |
| Starlight 0.41.8, `astro` cap lifted | 1 (`0.9.5`) | passes |

### The README section is rewritten, not deleted

This departs from the issue's acceptance criteria, which say the
explanation
should be gone. Deleting it would leave the override undocumented — root
`package.json` cannot carry a comment, and that override is now the only
thing
keeping this app type-checking. The replacement covers all three ranges
that
constrain the tree and why none substitutes for another, including the
`astro`
cap, which until now was recorded nowhere but #1915's description.

The third row of the table is why that matters: lifting the `astro` cap
leaves
the typecheck green, so nothing in CI would catch its removal. It is
still
load-bearing — Astro declares `@astrojs/markdown-satteri` as an exact
version,
`0.3.6` at 7.2.3 rising to `0.3.8` by 7.2.6, and the wider that gap
grows
against the override's window, the further the tree drifts from a
pairing
Astro ships.

### Two things in #1865 need correcting when it closes

Its "Blocked by: Upstream" framing is wrong, per above — the issue
predates
#1915 and never mentions the override.

It also states that forcing `satteri` to 0.10.5 "surfaces a different
genuine
error in the same file." That configuration type-checks cleanly now. I
have
left the finding out of the README, because
`integrations/markdown-plugins.ts`
is byte-identical across 0.41.6, 0.41.7 and 0.41.8, so nothing Starlight
changed explains the reversal and I could not establish what does.

### Unrelated drift spotted, not fixed here

#1915 records that the override "yields exactly the `0.3.6` astro 7.2.3
declares — a supported pairing rather than a graft." The lockfile
resolves
`0.3.5`, and does so on `main` as well as on this branch, so it is not
introduced here. Possibly worth its own issue.

Fixes #1865
nasyrov added a commit that referenced this pull request Aug 25, 2026
…1941)

`@astrojs/markdown-satteri` moves 0.3.5 to 0.3.6 in the lockfile.
`astro@7.2.3`
declares that dependency as an exact `0.3.6`, so the tree had been
carrying
precisely the graft the root override exists to prevent — one patch
below what
Astro asks for. #1915 described the override as landing "a supported
pairing
rather than a graft"; now it actually does.

Nothing had constrained it there. The override window `>=0.3.1 <0.3.7`
always
admitted 0.3.6, which published on 18 August; pnpm never re-resolved the
entry
and `--frozen-lockfile` preserved it. Both versions type-check and
build, so no
gate distinguished them — which is why this sat unnoticed.

`@astrojs/markdown-satteri@0.3.6` carries no behaviour change of its
own. Its
changelog records one line, a bump of `@astrojs/internal-helpers` from
`0.10.2`
to `0.10.3`, and the lockfile diff is exactly that shape.

### On the diff being lockfile-shaped but not `pnpm update -r`-shaped

The obvious command drags collateral: `pnpm update -r
@astrojs/markdown-satteri`
also bumps `prosemirror-view` 1.42.2 to 1.42.3, unrelated to any of this
and the
same family of trap as the cap-widening #1915 hit. Instead the override
was
pinned to an exact `0.3.6`, re-resolved with `--lockfile-only`, then
restored to
`>=0.3.1 <0.3.7` and re-resolved again.

`package.json` therefore comes out byte-identical to `main` — both the
`astro`
cap and Starlight's floor stay exactly where they were. The lockfile's
own
`overrides` record and `@astrojs/mdx`'s recorded peer range both still
read the
restored window, so the temporary pin left nothing behind;
`pnpm install --lockfile-only --frozen-lockfile` is a clean no-op, which
pnpm
would refuse if the two had diverged.

What changed, in full: `markdown-satteri` 0.3.5 to 0.3.6, peer-key
rewrites in
`@astrojs/mdx` and `starlight-llms-txt`, and the removal of
`@astrojs/internal-helpers@0.10.2` — dedup rather than loss, since 0.3.6
pins
`0.10.3`, which the tree already carried, and nothing else referenced
`0.10.2`.

### The README gains the failure mode

An override window with slack keeps whichever version it resolved first,
and
nothing notices. That is the actual lesson here and it was recorded
nowhere, so
the docs README section covering this constraint cluster now says it.
The tree
is back on Astro's declared pairing either way; this is what stops the
next
reader re-deriving why it drifted.

Fixes #1939
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant