Repository navigation
Upgrade build tooling to Vite 8 - #4038
Conversation
Add an exhaustive route manifest, archived preview runtime, artifact inventories, and strict Vite baseline/candidate parity collection before changing the toolchain. Constraint: Cover all 61 page routes, 12 load-only routes, the error boundary, and /render Confidence: high Scope-risk: narrow Co-authored-by: Cursor <cursoragent@cursor.com>
Vite 8 and Vitest 4 require Node 20/22+ type definitions, and the repository runtime is Node 22.18.0. Constraint: Keep runtime packages unchanged Confidence: high Scope-risk: narrow Co-authored-by: Cursor <cursoragent@cursor.com>
Align Vitest, its UI, and V8 coverage provider for Vite 8 support. Migrate removed config and stricter constructor/module mock semantics without changing product behavior or assertions. Constraint: Keep Vite 6.4.3 during this prerequisite checkpoint Confidence: high Scope-risk: moderate Co-authored-by: Cursor <cursoragent@cursor.com>
Pin Vite's current Chrome 87, Edge 88, Firefox 78, and Safari 14 defaults before later Vite majors raise them. Constraint: Do not reduce the browserslist support floor Confidence: high Scope-risk: broad Co-authored-by: Cursor <cursoragent@cursor.com>
Apply the Vite 6-to-7 checkpoint before changing bundlers, while retaining plugin-Svelte 6 and the existing browser floor. Constraint: Isolate Vite API changes from Rolldown changes Confidence: high Scope-risk: broad Co-authored-by: Cursor <cursoragent@cursor.com>
Alias Vite 7.2.2 to rolldown-vite so bundler-specific behavior is isolated before the Vite 8 and plugin-Svelte 7 upgrade. Constraint: Do not add optimizer or interop workarounds without a failing reproduction Confidence: high Scope-risk: broad Co-authored-by: Cursor <cursoragent@cursor.com>
Keep raw console stacks in evidence while comparing approved errors by stable classification so bundler minification does not create false A/B failures. Constraint: Unexpected console errors still fail route evidence Confidence: high Scope-risk: narrow Co-authored-by: Cursor <cursoragent@cursor.com>
Raise the global esbuild override to the supported 0.28 line so Vite 8 does not resolve its optional peer to unsupported 0.25.x. Constraint: Preserve one security-controlled esbuild version across Storybook and tooling Confidence: high Scope-risk: moderate Co-authored-by: Cursor <cursoragent@cursor.com>
Move to Vite 8 and plugin-Svelte 7 atomically, remove the temporary Rolldown alias, migrate removed plugin hot options, and validate the clean catalog consumer against the target toolchain. Constraint: Preserve existing browser targets and product behavior Confidence: high Scope-risk: broad Co-authored-by: Cursor <cursoragent@cursor.com>
Keep the synthetic clean-consumer package aligned with catalog component imports so its Vite 8 build validates the actual package boundary. Constraint: Test fixture only; no published source behavior change Confidence: high Scope-risk: narrow Co-authored-by: Cursor <cursoragent@cursor.com>
Use inert config-time defaults so Knip and Playwright listing can load the migration config while runtime setup continues to require full provenance. Confidence: high Scope-risk: narrow Co-authored-by: Cursor <cursoragent@cursor.com>
Allow evidence inventories to create their parent directories while retaining exclusive archive writes. Confidence: high Scope-risk: narrow Co-authored-by: Cursor <cursoragent@cursor.com>
Exclude ignored archives from Vitest discovery, bind artifact matrices to commit and lock provenance, and record research, dependency scope, route impact, validation results, and residual risks. Constraint: Preserve raw generated evidence outside git while keeping aggregate results reproducible Confidence: high Scope-risk: narrow Co-authored-by: Cursor <cursoragent@cursor.com>
Exercise real SvelteKit navigation for all 74 applicable route entries, preserve existing family interactions, and fail on missing or differing client-side outcomes. Constraint: Only /render is exempt as a server response Confidence: high Scope-risk: narrow Co-authored-by: Cursor <cursoragent@cursor.com>
Record reproducible provenance, current coverage, exhaustive client navigation, direct development/HMR assertions, and the accepted SSR top-level-await warning. Confidence: high Scope-risk: narrow Co-authored-by: Cursor <cursoragent@cursor.com>
Record the historical baseline provenance algorithm and current final test counts so the exhaustive route evidence is reproducible. Confidence: high Scope-risk: narrow Co-authored-by: Cursor <cursoragent@cursor.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
do we need to commit the scripts? I feel like once this merges we don't have a need for them anymore? |
| const dateTimeFormatSpy = vi | ||
| .spyOn(global.Intl, 'DateTimeFormat') | ||
| .mockImplementation((_, options) => { | ||
| .mockImplementation(function (_, options) { |
There was a problem hiding this comment.
not a blocker, but I'm curious was this required for some reason?
There was a problem hiding this comment.
Because the production code does this:
new Intl.DateTimeFormat(...)
The spy replaces Intl.DateTimeFormat, so its implementation must also be constructible. JavaScript arrow functions cannot
be constructors:
new (() => {}); // TypeError
new (function () {})(); // valid
Arrow functions have lexical this and no constructor capability. Vitest 4 preserves that distinction more strictly;
Vitest 3’s mock wrapper previously hid it.
https://v4.vitest.dev/guide/migration#spyon-and-fn-support-constructors
Auto-generated version bump from 2.56.0 to 2.57.0 Bump type: minor go.temporal.io/api: upgraded since last version (minimum minor) Changes included: - [`e15c805a`](e15c805) fix(nexus): show error alert when starting a standalone Nexus operation fails (FE-1083) (#4026) - [`dad76961`](dad7696) feat(io): add button and button-link components (FE-1090) (#4028) - [`8ecbc7e5`](8ecbc7e) Add tooltip to truncated filter chips (#4034) - [`2a687175`](2a68717) Allow text selection in workflow descriptions in relationships (#4035) - [`4c440b26`](4c440b2) refactor(io): centralize chip and badge styling (FE-1095) (#4029) - [`beccfa52`](beccfa5) Reuse badge styling and grouped corners for tags (FE-1093) (#4030) - [`e6cece8e`](e6cece8) Add reusable native select with custom arrow styling (#4036) - [`40108cfc`](40108cf) Dependency Inject Authz decisions through the provider (#4031) - [`ea31abca`](ea31abc) Add persistent environment banner with preset colors (#4039) - [`bd5c6600`](bd5c660) Fix timeline summary typography (#4043) - [`0ad513c2`](0ad513c) fix(schedules): preserve existing headers when editing (#4051) - [`7eb3a834`](7eb3a83) Hide focus outline on main content landmark (#4052) - [`0ee98978`](0ee9897) Add client-side sorting to API-paginated tables (#4037) - [`c80a75e8`](c80a75e) Wrap long link values in expanded event details (#4053) - [`51606c50`](51606c5) Remove trailing space inside Link (#4054) - [`23e6c4d1`](23e6c4d) Improve sorting performance for large workflow tables (#4055) - [`45015193`](4501519) [FE-1026] Cache immutable self-hosted UI assets (#4011) - [`25a98476`](25a9847) Upgrade build tooling to Vite 8 (#4038) - [`b911d0a6`](b911d0a) [FE-1026] Cache immutable 304 assets (#4056) - [`fa6e6ccc`](fa6e6cc) Bump go.temporal.io/api to v1.64.0 in the server (#4059) - [`a654962e`](a654962) Bump Node to 22.23.4 and Go to 1.26.10 for security fixes (#4058) Co-authored-by: rossnelson <146089+rossnelson@users.noreply.github.com>
Why
Upgrade Temporal UI from Vite 6 to Vite 8 while preserving product behavior and the existing browser support floor. This also removes the existing Vitest peer mismatch and validates the Rolldown/Oxc toolchain before adopting it.
Tracking: FE-1147
What changed
@types/node18 → 22.18.0No production component, page, service, or route implementation changed. Dependency/config changes are global, so every route was included in validation.
Validation
Automated behavior
/renderis server-only).ubuntu-latestfor lint, types, unit, integration, E2E, and server tests.Build outputs
All static, Docker, embedded-server, Vercel, package, Storybook, and catalog outputs build successfully and have provenance-bound inventories.
No compressed output exceeds the 5% investigation threshold.
Development/runtime smoke tests
ui-servermode rendered successfully.with-authreached the local OIDC sign-in page.helloexample completed.Known non-blocking items
__dirnameare incompatible with a future native config-loader default. Vite 8's current bundled loader works; handle before a future major.state_referenced_locallywarnings predate this migration and should be handled as component-level cleanup.Reviewer commands
pnpm install --frozen-lockfile --strict-peer-dependencies pnpm lint pnpm check pnpm test --run pnpm test:coverage pnpm build:local pnpm catalog:test-package pnpm test:integration pnpm test:e2eChecklist