Skip to content

chore(deps): update deps, move to pnpm 12 and eslint 10 - #144

Merged
kelsos merged 1 commit into
rotki:mainfrom
kelsos:chore/deps-update
Sep 10, 2026
Merged

kelsos merged 1 commit into
rotki:mainfrom
kelsos:chore/deps-update

Conversation

@kelsos

@kelsos kelsos commented Sep 10, 2026

Copy link
Copy Markdown
Member

Clears out the dependency dashboard for main. Everything here either cleared the 7 day minimumReleaseAge gate on its own or is a first party package we control.

Runtime and build

package from to
vitepress 2.0.0-alpha.17 2.0.0-alpha.19
vite (override) 8.0.16 8.2.2
vue, @vue/compiler-sfc, @vue/runtime-dom 3.5.35 3.5.42
@vitejs/plugin-vue 6.0.7 6.0.8
vitepress-plugin-llms 1.13.1 1.13.5
vitepress-plugin-tabs 0.9.0 0.9.1
markdown-it 14.2.0 14.3.1
oxc-minify 0.134.0 0.148.0
papaparse 5.5.3 5.7.0
@types/node 24.12.4 24.13.3
lint-staged 17.0.7 17.4.1

markdown-it deliberately stays on 14. Our only use is the MarkdownIt type import in .vitepress/plugins/markdown-fit-media.ts, and vitepress alpha.19 depends on @types/markdown-it ^14. Going to 15 would leave our types describing a different instance than the one vitepress passes in.

Toolchain

package from to
pnpm 11.5.1 12.1.0
eslint 9.39.4 10.9.1
@rotki/eslint-config 5.0.1 8.3.0
@rotki/eslint-plugin 1.3.2 1.8.0
eslint-plugin-tsdoc (new) 0.5.2
  • engines.pnpm widened to the 12.x range. pnpm@12.1.0 has npm provenance, and the workflows read the version from packageManager, so no CI pin to touch.
  • eslint stops at 10.9.1. 10.10.0 landed on 2026-09-04 and is still inside the 7 day window.
  • The two @rotki packages were published on 2026-09-09, so minimumReleaseAgeExclude: ['@rotki/*'] exempts them. The cooling off period is there for third party supply chain risk and buys us nothing on packages we publish ourselves. Everything else still goes through the gate.
  • eslint-plugin-tsdoc is now an explicit devDependency. Config 8 enables tsdoc by default and calls ensurePackages, which drops into an interactive "do you want to install them?" prompt when the plugin is missing. That would hang CI.

Actions

All repinned by digest: checkout v6.0.3 to v7.0.1, setup-node v6.4.0 to v7.0.0, cache v5.0.5 to v6.1.0, pnpm/action-setup v6.0.10, crate-ci/typos v1.50.0, codeql-action v4.37.9, deploy-pages v5.0.1.

Lint fallout

The jump from config 5 to 8 brought new rules. 23 errors, all addressed:

  • Heading levels no longer skip in usage-guides/settings/{accounting,general,interface}.md. Slugs derive from heading text, not depth, so every anchor is unchanged and no link moves. check:anchors and check:app-links both still pass.

  • README gets a single H1 instead of four.

  • redirects.ts: the @example block is fenced so TSDoc stops reading its object braces as malformed inline tags.

  • vue-typescript.md: the ui-library linking snippet is valid JSON again, with the "adjust the path" note moved into the prose above it. jsonc did not help, the processor parses it strictly either way.

  • scripts/check-*.mjs: autofixed to Array.from(x, fn) instead of [...x].map(fn).

  • markdown/no-missing-link-fragments is off. It slugs headings the GitHub way and disagrees with vitepress on punctuation, flagging #all-valid-type-subtype-combinations and #public-network-with-traefik-basic-auth as broken. Both resolve correctly. I confirmed against the built HTML:

    $ grep -o 'id="[^"]*combinations[^"]*"' .vitepress/dist/usage-guides/tax-accounting/event-types.html
    id="all-valid-type-subtype-combinations"
    $ grep -o 'id="[^"]*traefik[^"]*"' .vitepress/dist/requirement-and-installation/docker.html
    id="public-network-with-traefik-basic-auth"
    

    pnpm check:anchors gates the same thing against vitepress' own slugger and runs in CI, so we are not losing coverage.

Verification

pnpm lint, pnpm build, check:images (221 images), check:anchors (69 pages), check:app-links (15 links) all pass. pnpm install --frozen-lockfile is clean and the lockfile passes pnpm's supply chain policies.

Once this is in, the other branches need the same sync.

Take everything the dependency dashboard offered that clears the 7 day
minimumReleaseAge gate, plus the major bumps we want.

Runtime and build:
- vitepress 2.0.0-alpha.17 to 2.0.0-alpha.19, vite override 8.0.16 to 8.2.2
- vue and friends 3.5.35 to 3.5.42, @vitejs/plugin-vue 6.0.7 to 6.0.8
- vitepress-plugin-llms 1.13.5, vitepress-plugin-tabs 0.9.1
- markdown-it 14.2.0 to 14.3.1, held on 14 so the MarkdownIt type import in
  markdown-fit-media.ts matches the @types/markdown-it ^14 vitepress pulls
- oxc-minify 0.148.0, papaparse 5.7.0, @types/node 24.13.3, lint-staged 17.4.1

Toolchain:
- pnpm 11.5.1 to 12.1.0, engines widened to the 12.x range
- eslint 9.39.4 to 10.9.1 (10.10.0 is still inside the age gate)
- @rotki/eslint-config 5.0.1 to 8.3.0, @rotki/eslint-plugin 1.3.2 to 1.8.0,
  exempted from minimumReleaseAge since they are first party
- eslint-plugin-tsdoc added explicitly: config 8 turns tsdoc on by default and
  otherwise prompts for it interactively, which would hang CI

Actions, all repinned by digest:
- checkout v6.0.3 to v7.0.1, setup-node v6.4.0 to v7.0.0, cache v5.0.5 to v6.1.0
- pnpm/action-setup v6.0.10, typos v1.50.0, codeql v4.37.9, deploy-pages v5.0.1

Fallout from the new lint rules:
- heading levels no longer skip in the accounting, general and interface
  settings pages; anchors are unchanged, so no links move
- README gets a single H1
- the redirects @example block is fenced so TSDoc stops reading its braces
  as inline tags
- the ui-library linking snippet is valid JSON again, with the note in prose
- markdown/no-missing-link-fragments is off: it slugs headings the GitHub way
  and disagrees with vitepress on 'type/subtype' and 'Traefik + basic auth'.
  check:anchors already gates this against vitepress' own slugger.
@kelsos
kelsos merged commit 6cf030c into rotki:main Sep 10, 2026
5 checks passed

This branch was previously deployed

1 inactive deployment
github-pages — 6cf030c9 Deployed Sep 10, 2026 by kelsos via deploy #228
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