From 8d78cf85cec8e046883cb9bd4b6f0429d0293674 Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 28 Jul 2026 22:33:14 +0100 Subject: [PATCH 01/13] chore(deps): update verkit dependency to v0.3.1 --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- pnpm-workspace.yaml | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 4605f274c7..93e16cf480 100644 --- a/package.json +++ b/package.json @@ -107,7 +107,7 @@ "unocss": "66.7.4", "valibot": "1.4.2", "validate-npm-package-name": "8.0.0", - "verkit": "0.1.2", + "verkit": "0.3.1", "virtua": "0.49.2", "vite-plugin-pwa": "1.3.0", "vite-plus": "catalog:vite-plus", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 254977758f..c5a45017dc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -253,8 +253,8 @@ importers: specifier: 8.0.0 version: 8.0.0 verkit: - specifier: 0.1.2 - version: 0.1.2 + specifier: 0.3.1 + version: 0.3.1 virtua: specifier: 0.49.2 version: 0.49.2(react-dom@19.2.7)(react@19.2.7)(vue@3.5.39) @@ -10452,8 +10452,8 @@ packages: reka-ui: ^2.0.0 vue: ^3.3.0 - verkit@0.1.2: - resolution: {integrity: sha512-WqkT8n3hqizuCu71W3bUzf5fjBmkbXcudsehe/NbxA8PgqoKnSOY5K0Ba2ckg1qaRaSpSz7as/n9K1R9JXjQKg==} + verkit@0.3.1: + resolution: {integrity: sha512-w2Eo8LSIIoW7qxNBzT7/17k+bh8plXo7G3dHjEIDqPlnluhzaxr9JX8F28VSYEtDvc1/a3WBDih6xNUZseebXg==} engines: {node: '>=18.12.0'} vfile-location@5.0.3: @@ -22605,7 +22605,7 @@ snapshots: transitivePeerDependencies: - '@vue/composition-api' - verkit@0.1.2: {} + verkit@0.3.1: {} vfile-location@5.0.3: dependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 1dacefae3d..32ed8ee432 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -43,7 +43,7 @@ ignoreWorkspaceRootCheck: true minimumReleaseAgeExclude: - vue-data-ui@3.22.13 - - verkit@0.1.2 + - verkit@0.3.1 - module-replacements@3.1.0 overrides: From b5695633d3753ddd653b74594c8da9f4a3430310 Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 28 Jul 2026 22:45:04 +0100 Subject: [PATCH 02/13] fix --- app/utils/versions.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/utils/versions.ts b/app/utils/versions.ts index f909751030..b1dfc5ad61 100644 --- a/app/utils/versions.ts +++ b/app/utils/versions.ts @@ -40,7 +40,7 @@ export function parseVersion(version: string): ParsedVersion { major: parsedVersion.major, minor: parsedVersion.minor, patch: parsedVersion.patch, - prerelease: parsedVersion.prerelease.join('.'), + prerelease: parsedVersion.prerelease?.join('.') ?? '', } } @@ -52,7 +52,7 @@ export function parseVersion(version: string): ParsedVersion { export function parseStableVersion(version: string): Omit | null { const parsedVersion = tryParse(version) - if (!parsedVersion || parsedVersion.prerelease.length > 0) { + if (!parsedVersion || parsedVersion.prerelease) { return null } From 6979678bc808707f31e675ea39e1d7f3c7ffec0a Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 28 Jul 2026 22:58:23 +0100 Subject: [PATCH 03/13] chore: remove `parseVersion` --- app/utils/versions.ts | 28 ++-------------- test/unit/app/utils/versions.spec.ts | 50 ---------------------------- 2 files changed, 3 insertions(+), 75 deletions(-) diff --git a/app/utils/versions.ts b/app/utils/versions.ts index b1dfc5ad61..68a85c2747 100644 --- a/app/utils/versions.ts +++ b/app/utils/versions.ts @@ -23,27 +23,6 @@ export interface ParsedVersion { prerelease: string } -/** - * Parse a semver stable version string into its components - * `@param` version - The version string (e.g., "1.2.3") - * `@returns` Parsed version object with major, minor, patch, or null for - * invalid versions and for prerelease versions (e.g., "1.0.0-beta.1") - */ -export function parseVersion(version: string): ParsedVersion { - const parsedVersion = tryParse(version) - - if (!parsedVersion) { - return { major: 0, minor: 0, patch: 0, prerelease: '' } - } - - return { - major: parsedVersion.major, - minor: parsedVersion.minor, - patch: parsedVersion.patch, - prerelease: parsedVersion.prerelease?.join('.') ?? '', - } -} - /** * Parse a semver stable version string into its components * @param version - The version string (e.g., "1.2.3" or "1.0.0-beta.1") @@ -69,9 +48,7 @@ export function parseStableVersion(version: string): Omit { }) }) -describe('parseVersion', () => { - it('parses stable versions', () => { - expect(parseVersion('1.2.3')).toEqual({ - major: 1, - minor: 2, - patch: 3, - prerelease: '', - }) - }) - - it('parses prerelease versions', () => { - expect(parseVersion('1.0.0-beta.1')).toEqual({ - major: 1, - minor: 0, - patch: 0, - prerelease: 'beta.1', - }) - }) - - it('handles invalid versions gracefully', () => { - expect(parseVersion('invalid')).toEqual({ - major: 0, - minor: 0, - patch: 0, - prerelease: '', - }) - }) - - it('parses TypeScript-style versions', () => { - // TypeScript uses versions like 5.8.0-beta, 5.8.0-rc - expect(parseVersion('5.8.0-beta')).toEqual({ - major: 5, - minor: 8, - patch: 0, - prerelease: 'beta', - }) - }) - - it('parses Next.js canary versions', () => { - // Next.js uses versions like 15.3.0-canary.1 - expect(parseVersion('15.3.0-canary.1')).toEqual({ - major: 15, - minor: 3, - patch: 0, - prerelease: 'canary.1', - }) - }) -}) - describe('getPrereleaseChannel', () => { it('returns empty string for stable versions', () => { expect(getPrereleaseChannel('1.0.0')).toBe('') From 2b50bb67eec686f8563e062f88f82ea0ef28c02b Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 28 Jul 2026 23:03:53 +0100 Subject: [PATCH 04/13] fix --- app/utils/versions.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/utils/versions.ts b/app/utils/versions.ts index 68a85c2747..f73519ba78 100644 --- a/app/utils/versions.ts +++ b/app/utils/versions.ts @@ -38,7 +38,7 @@ export function parseStableVersion(version: string): Omit Date: Tue, 28 Jul 2026 23:04:40 +0100 Subject: [PATCH 05/13] fix --- app/utils/versions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/utils/versions.ts b/app/utils/versions.ts index f73519ba78..4870f83bbe 100644 --- a/app/utils/versions.ts +++ b/app/utils/versions.ts @@ -38,7 +38,7 @@ export function parseStableVersion(version: string): Omit Date: Tue, 28 Jul 2026 22:05:57 +0000 Subject: [PATCH 06/13] [autofix.ci] apply automated fixes --- app/utils/versions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/utils/versions.ts b/app/utils/versions.ts index 4870f83bbe..36ead145df 100644 --- a/app/utils/versions.ts +++ b/app/utils/versions.ts @@ -49,7 +49,7 @@ export function parseStableVersion(version: string): Omit Date: Tue, 28 Jul 2026 23:09:08 +0100 Subject: [PATCH 07/13] tests: add `getPrereleaseChannel` test --- test/unit/app/utils/versions.spec.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/unit/app/utils/versions.spec.ts b/test/unit/app/utils/versions.spec.ts index f829539d23..9dd6f8359a 100644 --- a/test/unit/app/utils/versions.spec.ts +++ b/test/unit/app/utils/versions.spec.ts @@ -72,6 +72,11 @@ describe('getPrereleaseChannel', () => { it('handles versions with just channel name (TypeScript style)', () => { expect(getPrereleaseChannel('5.8.0-beta')).toBe('beta') }) + + it('handles versions with numerical prerelease channel name', () => { + expect(getPrereleaseChannel('3.0.0-0')).toBe('') + expect(getPrereleaseChannel('3.0.0-1')).toBe('') + }) }) describe('sortTags', () => { From 4cc0d9cd932405ba981d45b2e01e8da19806fc81 Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 28 Jul 2026 23:14:14 +0100 Subject: [PATCH 08/13] fix oboe --- app/composables/useInstallSizeDiff.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/composables/useInstallSizeDiff.ts b/app/composables/useInstallSizeDiff.ts index 91e7d01b95..83f6b52c36 100644 --- a/app/composables/useInstallSizeDiff.ts +++ b/app/composables/useInstallSizeDiff.ts @@ -34,7 +34,7 @@ function getComparisonVersion(pkg: SlimPackument, resolvedVersion: string): stri const currentIdx = stableVersions.indexOf(resolvedVersion) // Don't compare the second version against the first as the first // has no baseline so a large size difference is expected - if (currentIdx <= 1) return null + if (currentIdx < 1) return null return stableVersions[currentIdx - 1]! } From 5d6806288944c25b921f0138ea00b9bfd0b21d8d Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 28 Jul 2026 23:15:23 +0100 Subject: [PATCH 09/13] revert --- app/composables/useInstallSizeDiff.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/composables/useInstallSizeDiff.ts b/app/composables/useInstallSizeDiff.ts index 83f6b52c36..91e7d01b95 100644 --- a/app/composables/useInstallSizeDiff.ts +++ b/app/composables/useInstallSizeDiff.ts @@ -34,7 +34,7 @@ function getComparisonVersion(pkg: SlimPackument, resolvedVersion: string): stri const currentIdx = stableVersions.indexOf(resolvedVersion) // Don't compare the second version against the first as the first // has no baseline so a large size difference is expected - if (currentIdx < 1) return null + if (currentIdx <= 1) return null return stableVersions[currentIdx - 1]! } From cdba6c0ddfa23b524cc1d5c02cf558cb79809981 Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 28 Jul 2026 23:25:50 +0100 Subject: [PATCH 10/13] fix --- app/utils/versions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/utils/versions.ts b/app/utils/versions.ts index 36ead145df..2d31c2cdc1 100644 --- a/app/utils/versions.ts +++ b/app/utils/versions.ts @@ -31,7 +31,7 @@ export interface ParsedVersion { export function parseStableVersion(version: string): Omit | null { const parsedVersion = tryParse(version) - if (!parsedVersion || parsedVersion.prerelease) { + if (!parsedVersion || parsedVersion.prerelease?.length) { return null } From 0673c9a22b962ce30d35e641e0041aa38ace9ccf Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 28 Jul 2026 23:31:06 +0100 Subject: [PATCH 11/13] fix --- app/composables/useInstallSizeDiff.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/composables/useInstallSizeDiff.ts b/app/composables/useInstallSizeDiff.ts index 91e7d01b95..d50349f78d 100644 --- a/app/composables/useInstallSizeDiff.ts +++ b/app/composables/useInstallSizeDiff.ts @@ -20,7 +20,7 @@ const SIZE_DECREASE_THRESHOLD = 0.2 const DEP_DECREASE_THRESHOLD = 3 function getComparisonVersion(pkg: SlimPackument, resolvedVersion: string): string | null { - const isCurrentPrerelease = getPrerelease(resolvedVersion) !== null + const isCurrentPrerelease = getPrerelease(resolvedVersion)?.length const stableVersions = Object.keys(pkg.time) .filter(v => v !== 'modified' && v !== 'created' && isValid(v) && getPrerelease(v) === null) From 10c0dd9066d0f8a2ac94fa66f0ba0e0dfdacaa6e Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 28 Jul 2026 23:40:44 +0100 Subject: [PATCH 12/13] fix --- app/composables/useInstallSizeDiff.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/composables/useInstallSizeDiff.ts b/app/composables/useInstallSizeDiff.ts index d50349f78d..eaaaeedb8c 100644 --- a/app/composables/useInstallSizeDiff.ts +++ b/app/composables/useInstallSizeDiff.ts @@ -23,7 +23,7 @@ function getComparisonVersion(pkg: SlimPackument, resolvedVersion: string): stri const isCurrentPrerelease = getPrerelease(resolvedVersion)?.length const stableVersions = Object.keys(pkg.time) - .filter(v => v !== 'modified' && v !== 'created' && isValid(v) && getPrerelease(v) === null) + .filter(v => v !== 'modified' && v !== 'created' && isValid(v) && !getPrerelease(v)?.length) .sort((a, b) => compare(a, b)) if (isCurrentPrerelease) { From 10efa760940e9dd442357a669222e78590cc3266 Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 29 Jul 2026 11:58:25 +0100 Subject: [PATCH 13/13] chore: remove `verkit` from `minimumReleaseAgeExclude` --- pnpm-workspace.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 32ed8ee432..0944327411 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -43,7 +43,6 @@ ignoreWorkspaceRootCheck: true minimumReleaseAgeExclude: - vue-data-ui@3.22.13 - - verkit@0.3.1 - module-replacements@3.1.0 overrides: