Upgrade toolchain: Vite 8, Vue 3.5, Vitest 4, TypeScript 6, pnpm 11, Node 24; replace ESLint/Prettier with oxlint/oxfmt#418
Open
sebdanielsson wants to merge 13 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
This PR modernizes the project’s frontend/tooling stack (Vite/Vue/TypeScript/Vitest/pnpm/Node) and replaces the ESLint/Prettier-based workflow with oxlint/oxfmt, while also carrying a set of smaller correctness and typing fixes across tool pages and utilities.
Changes:
- Upgrade build/test/typecheck tooling (Vite → 8, Vue → 3.5, TS → 6, Vitest → 4, Node → 24, pnpm → 11) and adjust configs accordingly.
- Replace ESLint/Prettier with oxlint/oxfmt (new
.oxlintrc.json/.oxfmtrc.json, remove legacy ESLint/Prettier configs, update docs/VSCode recommendations). - Assorted fixes/cleanups across tools (UI bindings, stricter typing, small runtime fixes, workflow pinning).
Reviewed changes
Copilot reviewed 116 out of 129 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| vite.config.ts | Migrates Vite build config to Rolldown options; adjusts plugin settings. |
| unocss.config.ts | Switches UnoCSS preset to presetWind3. |
| tsconfig.vite-config.json | Updates Node tsconfig base to Node 24. |
| tsconfig.app.json | Switches TS resolution to bundler and adds explicit paths entries. |
| stubs/empty-stub/package.json | Adds local stub package used for pnpm overrides. |
| stubs/empty-stub/index.js | Implements stub module export. |
| src/utils/ipv6registry.json | Fixes invalid IPv6 literal for IPv4-mapped range. |
| src/utils/defaults.test.ts | Test formatting/structure update. |
| src/ui/c-table/c-table.vue | Refactors props typing/formatting and template formatting. |
| src/ui/c-select/c-select.demo.vue | Demo typing adjustment. |
| src/ui/c-monaco-editor/c-monaco-editor.vue | Tightens TS typing around Monaco environment and emits signatures. |
| src/ui/c-modal-value/c-modal-value.demo.vue | Demo template adjustment. |
| src/ui/c-buttons-select/c-buttons-select.vue | Improves generic prop typing and key typing in template. |
| src/tools/zxcvbn-password-strength/zxcvbn-password-strength.vue | Typing/formatting improvements; minor template refactor. |
| src/tools/yaml-viewer/composeverter.d.ts | Updates third-party module typings for stricter TS. |
| src/tools/wireguard-config-generator/wireguard-config-generator.vue | Fixes Naive UI checkbox binding (v-model:checked) and formatting. |
| src/tools/which-day/which-day.vue | Adds as const where needed; formatting. |
| src/tools/week-number-converter/week-number-converter.vue | Refactors computed/template formatting; ensures string values where required. |
| src/tools/watermarker/watermarker.vue | Formatting and null-safe label creation; minor template style cleanup. |
| src/tools/uuid-generator/uuid-generator.vue | Typing improvements for query param storage and options passing. |
| src/tools/uuid-converter/uuid-converter.vue | Const assertion for label alignment config; template formatting. |
| src/tools/url-text-fragment-maker/url-text-fragment-maker.vue | Adjusts template formatting and uses a cast for type. |
| src/tools/url-cleaner/url-cleaner.vue | Template formatting. |
| src/tools/ulid-generator/ulid-generator.vue | Keeps options typed while passing array copies; formatting. |
| src/tools/torrent-to-magnet/torrent-to-magnet.vue | Cleans up error handling; fixes magnetURI default type; formatting. |
| src/tools/timezone-converter/timezone-converter.vue | Updates import style and formatting; minor UI prop cleanups. |
| src/tools/time-alarm/time-alarm.vue | Fixes boolean binding for mask-closable; formatting. |
| src/tools/svg-previewer/svg-previewer.vue | Normalizes ref default type and formatting. |
| src/tools/sip-auth/sip-auth.vue | Ensures transformer always returns a string. |
| src/tools/short-urls-expander/short-urls-expander.vue | Improves formatting and null handling for copyable outputs. |
| src/tools/serial-console/serial-console.vue | Template typing workarounds for Naive UI select values. |
| src/tools/sensitive-data-masker/sensitive-data-masker.service.ts | Refactors for readability; keeps regex logic intact. |
| src/tools/rsvp-reader/rsvp-reader.vue | Refactors control flow; fixes progress percentage type expectation. |
| src/tools/power-converter/power-converter.vue | Fixes syntax; sets UnitsConverter converter-type. |
| src/tools/potrace/esm-potrace-wasm.d.ts | Tightens module typings. |
| src/tools/pomodoro-timer/app/storeUtils.js | Refactors ternaries; fixes arithmetic precedence; export formatting. |
| src/tools/pomodoro-timer/app/store/index.js | Refactors toggle logic and removes empty sections. |
| src/tools/pin-code-generator/pin-code-generator.service.test.ts | Test formatting and Set usage simplification. |
| src/tools/pgp-file-encryption/pgp-file-encryption.vue | Improves Blob typing and formatting; minor template cleanup. |
| src/tools/pdf-concat/pdf-concat.vue | Refactors arrays/formatting; uses as any for props typing edge. |
| src/tools/parquets-reader/parquets-reader.vue | Fixes escaping for column keys and pagination prop shape. |
| src/tools/outlook-parser/outlook-parser.vue | Tightens BlobPart typing and stringification for UI values. |
| src/tools/otp-code-generator-and-validator/otp-code-generator-and-validator.vue | Counter typing aligned with type="number" input; formatting. |
| src/tools/mime-types/mime-types.vue | Formatting and minor template text layout changes. |
| src/tools/mermaid-exporter/mermaid-exporter.e2e.spec.ts | Increases expect timeout for lazy-loaded mermaid chunk. |
| src/tools/markdown-toc-generator/markdown-contents.d.ts | Fixes module typing formatting. |
| src/tools/many-units-converter/many-units-converter.vue | Refactors computed logic and formatting; minor template fixes. |
| src/tools/json-to-protobuf/json-to-protobuf.vue | Simplifies schema build and formatting. |
| src/tools/json-to-msgpack/json-to-msgpack.vue | Blob creation uses explicit Uint8Array; formatting. |
| src/tools/json-to-env/json-to-env.service.test.ts | Updates inline snapshot output (needs regeneration verification). |
| src/tools/json-to-csv/json-to-csv.service.test.ts | Updates inline snapshot output (needs regeneration verification). |
| src/tools/json-editor/json-editor.vue | Uses Mode.text constant; fixes spacing and control flow formatting. |
| src/tools/js-unobfuscator/js-unobfuscator.vue | Refactors async race and formatting; typing cast for bundle value. |
| src/tools/javascript-obfuscator/javascript-obfuscator.service.test.ts | Simplifies test logic and formatting. |
| src/tools/jasypt-string-encryption/jasypt.d.ts | Tightens typings and formatting. |
| src/tools/isbn-validator-and-parser/isbn-validator-and-parser.vue | Fixes audit card to pass clues array to key-value list; formatting. |
| src/tools/ipv6-address-converter/ip-bigint.d.ts | Fixes invalid default-param typing; improves signature correctness. |
| src/tools/ipv4-address-converter/ipv4-address-converter.vue | Refactors validation rules and computed formatting; null-safe values. |
| src/tools/ip-range-to-cidr/ip-bigint.d.ts | Same ip-bigint typing fixes for another tool scope. |
| src/tools/image-converter/image-converter.vue | Fixes WebP conversion buffer usage and improves typings/formatting. |
| src/tools/iban-validator-and-parser/iban-validator-and-parser.vue | Formatting; null-safe friendly format binding. |
| src/tools/html-to-xhtml/html-to-xhtml.service.ts | Formatting and minor serialization refactor. |
| src/tools/heic-converter/heic-convert.d.ts | Updates browser conversion typings and exports. |
| src/tools/gitattributes-generator/gitattributes-generator.vue | Fetch URL formatting and command generation behavior change. |
| src/tools/gif-to-mp4/gif-to-mp4.vue | Ensures ffmpeg args are strings; BlobPart typing; formatting. |
| src/tools/force-converter/force-converter.vue | Sets UnitsConverter converter-type and cleans supportedUnits keys. |
| src/tools/floating-point-number-converter/floating-point-number-converter.model.ts | Refactors logic and adds lint suppression commentary. |
| src/tools/firewalld-generator/firewalld-generator.vue | Improves template formatting and fixes boolean select typing workaround. |
| src/tools/file-hasher/file-hasher.vue | Refactors formatting and reduces unsafe casts. |
| src/tools/docker-compose-validator/composeverter.d.ts | Aligns composeverter typings with stricter TS. |
| src/tools/docker-compose-converter/composeverter.d.ts | Same composeverter typing adjustments. |
| src/tools/dmarc-report-analyzer/dmarc-report-analyzer.vue | Template formatting and null-safe values. |
| src/tools/dead-pixel/dead-pixel.vue | Fixes invalid HTML structure (ul inside p) and formatting. |
| src/tools/crop-image/crop-image.vue | Refactors control flow, math precedence, template formatting and styles. |
| src/tools/cron-alarm/cron-alarm.vue | Fixes boolean binding for mask-closable; formatting. |
| src/tools/crc-calculator/crc-calculator.vue | Refactors computed/watch and typing cast for crc input. |
| src/tools/countdown/countdown.vue | Fixes boolean binding for mask-closable; formatting. |
| src/tools/citation-generator/citation-generator.vue | Makes year numeric; refactors validation and formatting. |
| src/tools/cidr-in-cidr/cidr-in-cidr.vue | Formatting and validation/compute structure improvements. |
| src/tools/certificate-key-parser/certificate-key-parser.infos.ts | Typing/formatting improvements and safer buffer-to-hex conversion. |
| src/tools/case-converter/case-converter.vue | Validation typing/formatting improvements and const assertions. |
| src/tools/bcrypt/bcrypt.models.test.ts | Stabilizes describe name string and formatting. |
| src/tools/angle-converter/angle-converter.vue | Sets UnitsConverter converter-type. |
| src/pages/Home.page.vue | Formatting and useHead typing workarounds. |
| src/pages/About.vue | Formatting and useHead typing workarounds. |
| src/layouts/tool.layout.vue | Typing cast for markdown source; formatting and style cleanup. |
| src/composable/flexSearch.ts | Refactors typings and sorting math formatting. |
| src/components/UnitsConverter.vue | Makes converterType optional and refactors initialization/formatting. |
| src/components/InputCopyable.vue | Expands accepted value types; stringifies for display/copy. |
| src/_empty.ts | Removes redundant export {}. |
| renovate.json | Removes UnoCSS ESLint config from renovate grouping. |
| README.md | Updates dev tooling guidance for oxlint/oxfmt and revised CI command. |
| pnpm-workspace.yaml | Adds pnpm 11 workspace settings: overrides, patches, allowBuilds. |
| Dockerfile | Updates base image to Node 24 and installs pnpm 11; copies workspace/stubs. |
| .vscode/settings.json | Switches save actions to oxc formatter + oxlint fixes. |
| .vscode/extensions.json | Recommends Oxc VSCode extension instead of ESLint. |
| .prettierrc | Removes Prettier config (tooling replaced). |
| .oxlintrc.json | Adds oxlint configuration mirroring former ESLint rules. |
| .oxfmtrc.json | Adds oxfmt configuration (print width, quotes, etc.). |
| .github/workflows/sharevb-releases.yml | Pins actions and upgrades CI Node version to 24. |
| .github/workflows/sharevb-github-pages-publish.yml | Pins actions, upgrades Node to 24, updates pnpm setup action. |
| .github/workflows/sharevb-e2e-tests.yml | Pins actions and upgrades Node to 24; updates cache action. |
| .github/workflows/sharevb-docker-realease-latest.yml | Pins actions and upgrades Node to 24. |
| .github/workflows/sharevb-docker-realease-baseurl-it-tools.yml | Pins actions and upgrades Node to 24. |
| .github/workflows/sharevb-docker-nightly-release.yml | Pins actions and upgrades Node to 24. |
| .github/workflows/sharevb-codeql-analysis.yml | Pins CodeQL action and checkout. |
| .github/workflows/sharevb-ci.yml | Pins actions and upgrades Node to 24. |
| .github/PULL_REQUEST_TEMPLATE/pull_request_template.md | Updates pre-submit command to oxlint-based workflow. |
| .eslintrc.cjs | Removes ESLint config (superseded by oxlint). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
42
to
+47
| <c-input-text | ||
| v-model:value="url" | ||
| :label="t('tools.url-text-fragment-maker.texts.label-base-url')" | ||
| :placeholder="t('tools.url-text-fragment-maker.texts.placeholder-base-url')" | ||
| type="url" | ||
| clearable raw-text mb-5 | ||
| :type="'url' as any" | ||
| clearable |
Comment on lines
55
to
58
| expect(result).toMatchInlineSnapshot(` | ||
| "LIST=\\"[1,2,3]\\" | ||
| OBJ=\\"{\\\\\\"a\\\\\\":1}\\"" | ||
| "LIST="[1,2,3]" | ||
| OBJ="{\\"a\\":1}"" | ||
| `); |
Comment on lines
82
to
85
| expect(convertArrayToCsv({ arrayOrObject: array })).toMatchInlineSnapshot(` | ||
| "a,b | ||
| \\"hello, world\\",2" | ||
| "hello, world",2" | ||
| `); |
Comment on lines
91
to
94
| expect(convertArrayToCsv({ arrayOrObject: array })).toMatchInlineSnapshot(` | ||
| "a,b | ||
| hello \\\\\\"world\\\\\\",2" | ||
| hello \\"world\\",2" | ||
| `); |
Owner
|
Hi @sebdanielsson unfortunately, I pushed some changes and it mades some conflicts. Could you resolve ? many thanks |
…nd pnpm 11; adopt oxlint/oxfmt - vite 4 -> 8.1.3 (rolldown-based: build.rollupOptions -> rolldownOptions, drop optimizeDeps.esbuildOptions), @vitejs/plugin-vue 4 -> 6, plugin-vue-jsx 3 -> 5 - vue 3.3 -> 3.5.39, vue-tsc 1.8 -> 3.3.6, vitest 0.34 -> 4.1.9, jsdom 22 -> 29 - typescript 5.2 -> 6.0.3 with moduleResolution=bundler (baseUrl/node10 are hard errors in TS 6, removed in TS 7); TS 7 RC not adoptable: its native tsc lacks the JS compiler API vue-tsc needs (vuejs/language-tools#5381) - unocss 0.57 -> 66 (presetUno -> presetWind3), unplugin-* to current majors (unplugin-vue-components dtsTsx disabled: emits invalid declarations for dotted component names) - @vueuse/head 1.0.0 -> 1.3.1 (1.0.0 silently stopped applying page titles under Vue 3.5) - replace ESLint (@antfu config) + Prettier with oxlint + oxfmt; configs mirror the previous style rules. Existing files are intentionally NOT mass-reformatted (oxfmt has no brace-style/operator-position options to match the old @antfu style) — only files with real changes are formatted - pnpm 9 -> 11.10.0: settings move to pnpm-workspace.yaml, fresh lockfile passing supply-chain policies, explicit allowBuilds decisions, blockExoticSubdeps off (xlsx CDN override patches vulnerable npm 0.18.5) - isolated-vm (17 MB) and onnxruntime-node (208 MB) stubbed via overrides: native-only transitives already aliased to an empty module for the bundle - elliptic overridden to npm ^6.6.1 (github fork tarball of webcrypto-liner-shim unreachable from the build environment) - CI: node 22 -> 24, all actions pinned to latest patch releases, automatic Vercel workflows disabled (fork deploys via Vercel Git integration), vercel.json: git.deploymentEnabled removed, buildCommand skips no-op vue-tsc - Dockerfile: node:24-alpine, pnpm@11, ship pnpm-workspace.yaml and stubs Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M6deEDJXFzgDzPiYPAcsv1
vue-tsc 3 checks templates far more strictly than 1.8 and TS 5.7+ made Uint8Array generic over its backing buffer. Widen shared component props (InputCopyable, c-table, c-input-text, UnitsConverter), convert values at call sites, fix invalid local .d.ts declarations, and repair issues the new tooling exposed: - WireGuard generator: pre-shared-keys checkbox used v-model:value which never binds on a standalone n-checkbox (now v-model:checked) - mask-closable="false" string attrs became real boolean bindings in countdown/cron-alarm/time-alarm - v-model casts (x as any) fail to compile under plugin-vue 6 + rolldown; replaced with :value/@update:value split bindings - invalid '::ffff::' IPv6 literal in ipv6registry.json, exposed by stricter parsing in cidr-tools 11.3 (IPv4-mapped range never matched) - fanger pinned to 0.3.1 (0.3.2 published without dist/) - countries-and-timezones namespace imports, Vitest 4 snapshot format, invalid ul-inside-p HTML in dead-pixel, test assertion outside it() block vue-tsc clean; oxlint clean; vitest 665/665; vite build + PWA OK; Playwright e2e 100/100; all 457 tool routes render without errors Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M6deEDJXFzgDzPiYPAcsv1
The tree deliberately keeps its existing @antfu-era formatting; running 'pnpm fmt' (oxfmt over all of src) would reformat ~800 untouched files. Format only the files you change, or run 'pnpm fmt' in a dedicated PR. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M6deEDJXFzgDzPiYPAcsv1
CodeQL flagged incomplete string escaping (js/incomplete-sanitization): escaping '.' to '\.' without first escaping existing backslashes makes column names containing backslashes ambiguous in naive-ui's nested-key syntax. Escape backslashes first. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M6deEDJXFzgDzPiYPAcsv1
mermaid is a large lazy-loaded chunk; webkit on cold CI runners exceeds Playwright's default 5s expect timeout even across retries. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M6deEDJXFzgDzPiYPAcsv1
Copilot review on the upstream PR flagged the casts. c-input-text renders any non-password type as a text input, so widen its type union to include 'url' instead of casting; for naive-ui's NInput use the documented input-props to set the native input's type=number. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M6deEDJXFzgDzPiYPAcsv1 (cherry picked from commit 9068203)
… in Docker Label Generator - fold upstream's new CodeMirror/picomatch dependencies into the pnpm 11 lockfile; add @lezer/highlight to optimizeDeps (kept from upstream) - dockerfile-label-generator: n-date-picker emits a number timestamp, not a Date — calling toISOString() on it would throw at runtime the moment a date was picked. Type as number and convert via new Date() - drop stray tsconfig.vite-config.tsbuildinfo build artifact; ignore *.tsbuildinfo vue-tsc clean; oxlint clean; vitest 665/665; vite build OK Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M6deEDJXFzgDzPiYPAcsv1
The fork-specific Vercel changes (Git-integration deploys, disabled CLI workflows, build:vercel command) are excluded from the upstream contribution; upstream deploys via its own Vercel CLI workflows. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M6deEDJXFzgDzPiYPAcsv1 (cherry picked from commit ed182ec)
9068203 to
95ff83e
Compare
Author
Fixed! |
…ct timeout - dockerfile-label-generator escaped quotes without escaping existing backslashes first (CodeQL js/incomplete-sanitization, same class as the parquets-reader fix): a value ending in a backslash would break the generated LABEL quoting - playwright: 15s global expect timeout — first paint of heavy lazy chunks exceeds the 5s default on slow CI browsers (webkit), which intermittently failed title assertions across retries Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M6deEDJXFzgDzPiYPAcsv1 (cherry picked from commit 5b3822e)
sharevb
reviewed
Jul 5, 2026
| try { | ||
| if (outputFormatValue === 'webp') { | ||
| const encodedImage = await arrayBufferToWebP(fileBuffer); | ||
| const encodedImage = await arrayBufferToWebP(fileBuffer.buffer); |
sharevb
reviewed
Jul 5, 2026
sharevb
reviewed
Jul 5, 2026
sharevb
reviewed
Jul 5, 2026
| "paths": { | ||
| "@/*": ["./src/*"] | ||
| "@/*": ["./src/*"], | ||
| "figue": ["./node_modules/figue/dist/index.d.ts"], |
sharevb
reviewed
Jul 5, 2026
| "@/*": ["./src/*"] | ||
| "@/*": ["./src/*"], | ||
| "figue": ["./node_modules/figue/dist/index.d.ts"], | ||
| "@it-tools/oggen": ["./node_modules/@it-tools/oggen/dist/index.d.ts"], |
sharevb
reviewed
Jul 5, 2026
| "@/*": ["./src/*"], | ||
| "figue": ["./node_modules/figue/dist/index.d.ts"], | ||
| "@it-tools/oggen": ["./node_modules/@it-tools/oggen/dist/index.d.ts"], | ||
| "libphonenumber-js/types": ["./node_modules/libphonenumber-js/types.d.ts"] |
sharevb
reviewed
Jul 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Modernizes the entire build/lint/test toolchain in place (128 files, no mass reformat — existing code style is preserved):
build.rollupOptions→build.rolldownOptions, droppedoptimizeDeps.esbuildOptions,@vitejs/plugin-vue4 → 6,@vitejs/plugin-vue-jsx3 → 5moduleResolution: "bundler"(removes the deprecatedbaseUrl/node10options that TS 7 deletes). TS 7 (Go-based, currently RC) is not adoptable yet: itstscis the native binary without the JS compiler API that vue-tsc/Volar require (TypeScript Native / TypeScript 7 (@typescript/native-preview,tsgo) Support vuejs/language-tools#5381)presetUno→presetWind3), unplugin-auto-import/components/icons/vue-markdown to current majors (dtsTsxdisabled in unplugin-vue-components: it emits invalid declarations for dotted component names)pnpm-workspace.yaml, fresh lockfile passing pnpm 11's supply-chain policies, explicitallowBuildsdecisions for every dependency build scriptnode:24-alpineDocker base), all GitHub Actions pinned to their latest patch releasesCI is ~3.4× faster: the full
ciworkflow (lint + unit tests + typecheck) went from 10m28s to 3m06s on identical runners — oxlint lints the whole tree in seconds where ESLint took minutes, and Vitest 4 + the Rolldown-based Vite 8 speed up the rest. Production builds complete in ~2 minutes for the full 32k-module bundle.Notable bugs fixed along the way (surfaced by the stricter tooling and browser testing):
@vueuse/head1.0.0 silently stops applying page titles under Vue 3.5 — every tool page kept the default index title (bumped to 1.3.1)v-model:value, which never binds on a standalonen-checkbox— the toggle did nothing (nowv-model:checked)::ffff::IPv6 literal inipv6registry.json— stricter parsing in cidr-tools 11.3 made the IPv4-mapped range never matchjs/incomplete-sanitization)mask-closable="false"string attrs (truthy) became real boolean bindings in countdown/cron-alarm/time-alarm.d.tsfiles, plus ~212 template/prop type errors surfaced by vue-tsc 3's stricter checkingfangerpinned to 0.3.1 (0.3.2 was published without itsdist/)Dependency-resolution notes:
isolated-vm(17 MB) andonnxruntime-node(208 MB) are stubbed via overrides — native-only transitives of webcrack / @huggingface/transformers thatvite.config.tsalready aliases to an empty module for the browser bundle. Installs are ~225 MB lighter and no longer need node-gypellipticis overridden to npm^6.6.1(webcrypto-liner-shim pins a GitHub fork tarball that isn't reachable from all build environments; drop the override if you prefer the fork)blockExoticSubdepsis disabled with an in-file rationale: the xlsx override points the whole graph at the SheetJS CDN tarball because the npm version is stale and vulnerable, and pnpm 11 has no per-package exceptionAdditional context
Try it live: the upgraded app is deployed at
https://it-tools-git-claude-vite-a06fd1-sebastian-danielssons-projects.vercel.app
(Vercel preview of this change set, always tracking the latest build).
Verification, all green:
vue-tsc --noEmit -p tsconfig.vitest.json: cleanoxlint src: cleanWhat is the purpose of this pull request?
Before submitting the PR, please make sure you do the following
chore/all-my-stuffsbranch.fixes #123).pnpm install --ignore-scripts && pnpm lint:fix && pnpm typecheckto ensure pnpm lock, oxlint and typecheck are ok