Skip to content

chore(deps): upgrade frontend dependencies to their latest releases - #9997

Open
joshistoast wants to merge 6 commits into
mainfrom
chore/frontend-deps-upgrade
Open

joshistoast wants to merge 6 commits into
mainfrom
chore/frontend-deps-upgrade

Conversation

@joshistoast

@joshistoast joshistoast commented Oct 23, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Upgrades every frontend dependency in invokeai/frontend/webv2 to its latest release (all minor or patch) and fixes what the new versions surfaced.

  • Dependencies: vite 8.3.5 (rolldown 1.2.15), vitest and @vitest/browser-playwright 5.0.5, playwright 1.64.1, oxlint 1.89, oxfmt 0.74, axe-core 4.14, @tanstack/react-virtual 3.14.22 (pulls @tanstack/virtual-core 3.19.7), @tanstack/react-query 5.104, @tanstack/react-router 1.170.46, react/react-dom 19.3.1, i18next 26.5, react-i18next 17.1, lucide-react 1.61, @xyflow/react 12.12, zod 4.6.7 and smaller patch bumps.

  • Virtualizer patch: virtual-core 3.19 made scrollAdjustments a getter-only property, so the local react-hook-tanstack-virtual patch threw on every list. Its post-commit offset reconcile no longer writes that property and now skips while virtual-core holds a scroll correction. The other two hunks are unchanged; removing each one fails existing tests. A test pins the private members the patch reads, so an upstream rename fails loudly.

  • Browser test setup: vitest 5.0.4 lays the test iframe out as a block that fills the runner page, so that page can no longer scroll. The per-test ancestor scroll reset is removed. The guard test now asserts that the outer page stays unscrolled: a 4 px offset makes all FeatureHint hover tests time out.

  • Lint: oxlint 1.89 catches render-time new Date() under react/purity. Relative-time captions and the splash copyright year now read the clock once per mount. Captions treat a timestamp newer than that snapshot as "now". Type-guard failures throw TypeError.

  • Accessibility: axe-core 4.14 checks WCAG 2.5.3 (Label in Name) under the audited tags. Controls whose aria-label hid their visible text are now named from it:

    • status-bar chips
    • the Invoke button: its unavailable reason moves to the accessible description
    • scrubber values
    • gallery sort and starred toggle
    • media slots
    • canvas zoom level
    • color format toggles

    Status-bar chips keep their widget name through visually hidden text. A new accessibility journey enables every bottom widget and asserts that each chip's name starts with its widget label.

  • Performance baselines:

    • Editor source owners: rolldown 1.2.15 moves three canvas-engine modules (controlPixelEdit, math/snapping, transform/transformMath) from the eager projectHydration chunk into the lazy canvas chunk, so they leave the editor's initial source-owner set.
    • Byte figures: launchpad and editor byte figures are re-recorded as reviewed upgrade growth. The re-record is targeted: timings, request counts and owner sets keep their committed values.

Related Issues / Discussions

None. The pnpm 12 migration follows in a separate PR: pnpm 12's 24-hour minimumReleaseAge rejects ten of the packages upgraded here until they are a day old.

QA Instructions

Run from invokeai/frontend/webv2 on the pinned pnpm 10.12.4 and Node 22.14:

  • pnpm lint: passes.
  • pnpm check:release:tests: passes on the rebased tree (636 unit files, 358 browser files, fixtures, architecture and browser performance gates, project-file journeys, accessibility journeys).
  • The architecture and browser performance gate passes again after the byte re-record.
  • pnpm outdated: no output.
  • Browser check against pnpm dev:mock: the top bar and status bar are visually unchanged, including with the Workflow chip enabled (no overflow). The accessibility tree reads "Invoke", "Edit Width: 1024", "Server Status Disconnected from Server", "Queue status Queue idle", "Gallery: 0 items", "Autosave: Saved", "Shortcuts" and "Notifications: 0 total".

Known flake: one FeatureHint browser test ("stays open through a rest on the arrow…") failed once under full-suite load with Cannot read properties of undefined (reading 'includes') and no stack. Neither the test nor the component calls .includes. It passed 5/5 in isolation and in three other full runs.

Byte growth:

  • Editor initial graph: build gate, against a main build at the same base:

    Measure Growth
    raw +2,637 B
    gzip +751 B
    brotli +1,318 B
    • Growth: vendor +8,168 B, mostly @tanstack/virtual-core 3.17.11 → 3.19.7 (+14 KB unminified); shell-shared +770 B (i18next).
    • Savings: projectHydration −5,135 B (the canvas modules above load lazily); chakra −518 B.
  • Launchpad startup JS: +8,264 B over the base build.

  • Main's own growth: the re-recorded figures also absorb growth main had already accumulated since the last capture. On the build gate that is +19.9 KB raw in the editor initial graph.

Review

Resolved:

  • The sort-trigger string had changed a key the gallery settings label also uses, which would have shown "Image sort: {{order}}". The trigger now has its own key, and a translation-key test fails when production code calls t(key) without options on a templated string.
  • The Workflow, Server Status and Queue status chips had lost their widget name. They now carry it through visually hidden text, and the new journey covers every bottom widget.
  • The Shortcuts chip and Invoke button names no longer include hint and keycap text, so voice commands like "click Undo" don't match them.
  • The busy media slot keeps its choose label in its name.
  • Editor byte headroom was down to about 300 B locally. The targeted re-record restores it.

Remaining:

  • Private members: the virtualizer patch still reads virtual-core's private _holdOffset, pendingWrite and maybeNotify. The new test catches a rename.
  • Activated headroom: activated-resource headroom on editor-workflow (scripts) and editor-canvas (largest asset) is about 4 KB.

Checklist

  • The PR has a short but descriptive title, suitable for a changelog
  • Meaningful regression coverage added / updated where needed; obsolete tests/code removed
  • Persisted-state and API changes include required migrations / compatibility validation
  • Relevant performance/efficiency opportunities considered; material claims have evidence
  • Material review findings resolved and relevant checks rerun
  • Documentation added / updated (if applicable)
  • Updated What's New copy (if doing a release after this PR)

View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

Bumps every frontend package to its latest minor or patch release.
Ports the react-hook-tanstack-virtual patch to virtual-core 3.19: the offset reconcile no longer writes the getter-only scrollAdjustments and skips while a scroll correction is held.
…needs

Vitest 5.0.4 lays the test iframe out as a block that fills the runner page, so that page cannot scroll.
The setup file keeps only the pointer reset; the guard now asserts the outer page stays unscrolled.
…pe guards

oxlint 1.89 flags render-time `new Date()` under react/purity; relative-time captions and the splash year now use a mount-time snapshot.
Type-guard failures throw TypeError, and oxfmt 0.74 regroups a README code sample's imports.
axe-core 4.14 checks WCAG 2.5.3 Label in Name under the audited tags.
Status-bar chips, the Invoke button, scrubber values, gallery sort and starred toggle, media slots, zoom level and color format controls are now named from what they show.
Launchpad and editor byte figures re-recorded as reviewed upgrade growth, mostly @tanstack/virtual-core 3.19; timings, request counts and owner sets unchanged.
Rolldown 1.2.15 moves three canvas-engine modules out of the editor's initial graph.
@github-actions github-actions Bot added frontend-deps PRs that change frontend dependencies frontend PRs that change frontend files labels Oct 23, 2026
…pgrade

# Conflicts:
#	invokeai/frontend/webv2/performance/architecture-baseline.json
#	invokeai/frontend/webv2/performance/browser-baseline.json
#	invokeai/frontend/webv2/src/features/workflow/ui/library/WorkflowPublicationHost.tsx

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

frontend PRs that change frontend files frontend-deps PRs that change frontend dependencies

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant