From e4bf69833fa9a4dd81671ba65e36180927a04523 Mon Sep 17 00:00:00 2001 From: jinmingyang <2214962083@qq.com> Date: Mon, 26 Jan 2026 21:39:11 +0800 Subject: [PATCH 01/16] chore: remove obsolete VibeSync configuration files and update changelog links --- .vibe-sync.json | 13 ------------- cli/.vibe-sync.json | 12 ------------ website/content/en/_meta.ts | 2 +- website/content/zh/_meta.ts | 2 +- 4 files changed, 2 insertions(+), 27 deletions(-) delete mode 100644 .vibe-sync.json delete mode 100644 cli/.vibe-sync.json diff --git a/.vibe-sync.json b/.vibe-sync.json deleted file mode 100644 index c3cdf74..0000000 --- a/.vibe-sync.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "version": "1.0.0", - "level": "project", - "source_tool": "claude-code", - "target_tools": ["codex", "cursor", "opencode"], - "sync_config": { - "skills": true, - "mcp": true, - "agents": false, - "commands": true - }, - "use_symlinks_for_skills": true -} diff --git a/cli/.vibe-sync.json b/cli/.vibe-sync.json deleted file mode 100644 index f24025c..0000000 --- a/cli/.vibe-sync.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": "1.0.0", - "level": "project", - "source_tool": "claude-code", - "target_tools": ["codex", "cursor", "opencode"], - "sync_config": { - "skills": true, - "mcp": true, - "agents": false, - "commands": true - } -} diff --git a/website/content/en/_meta.ts b/website/content/en/_meta.ts index d9f0b81..70ec68b 100644 --- a/website/content/en/_meta.ts +++ b/website/content/en/_meta.ts @@ -35,7 +35,7 @@ export default { }, changelog: { title: "Changelog", - href: "https://github.com/nicepkg/vsync/blob/main/CHANGELOG.md", + href: "https://github.com/nicepkg/vsync/blob/main/cli/CHANGELOG.md", }, release: { title: "Release", diff --git a/website/content/zh/_meta.ts b/website/content/zh/_meta.ts index 923a129..5f45b04 100644 --- a/website/content/zh/_meta.ts +++ b/website/content/zh/_meta.ts @@ -35,7 +35,7 @@ export default { }, changelog: { title: "更新日志", - href: "https://github.com/nicepkg/vsync/blob/main/CHANGELOG.md", + href: "https://github.com/nicepkg/vsync/blob/main/cli/CHANGELOG.md", }, release: { title: "发布", From c6b436762fffe6dd8ff14840a002766827a3ec9f Mon Sep 17 00:00:00 2001 From: jinmingyang <2214962083@qq.com> Date: Mon, 26 Jan 2026 21:53:30 +0800 Subject: [PATCH 02/16] chore: update package references to @nicepkg/vsync and release version 1.0.9 --- .changeset/four-dogs-fold08.md | 5 ----- .changeset/four-dogs-fold09.md | 5 +++++ .github/workflows/preview-package.yml | 2 +- README.md | 4 ++-- README_cn.md | 4 ++-- cli/package.json | 2 +- package.json | 4 ++-- scripts/release-publish.sh | 2 +- website/content/en/docs/advanced-features.mdx | 4 ++-- website/content/en/docs/getting-started.mdx | 4 ++-- website/content/en/docs/index.mdx | 2 +- website/content/en/docs/quick-reference.mdx | 2 +- website/content/zh/docs/advanced-features.mdx | 4 ++-- website/content/zh/docs/getting-started.mdx | 4 ++-- website/content/zh/docs/index.mdx | 2 +- website/content/zh/docs/quick-reference.mdx | 2 +- website/src/components/home/landing-page.tsx | 2 +- 17 files changed, 27 insertions(+), 27 deletions(-) delete mode 100644 .changeset/four-dogs-fold08.md create mode 100644 .changeset/four-dogs-fold09.md diff --git a/.changeset/four-dogs-fold08.md b/.changeset/four-dogs-fold08.md deleted file mode 100644 index 679117a..0000000 --- a/.changeset/four-dogs-fold08.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"vsync": patch ---- - -release first version 08 diff --git a/.changeset/four-dogs-fold09.md b/.changeset/four-dogs-fold09.md new file mode 100644 index 0000000..2d34ddc --- /dev/null +++ b/.changeset/four-dogs-fold09.md @@ -0,0 +1,5 @@ +--- +"@nicepkg/vsync": patch +--- + +release first version 09 diff --git a/.github/workflows/preview-package.yml b/.github/workflows/preview-package.yml index 7d03150..25e2122 100644 --- a/.github/workflows/preview-package.yml +++ b/.github/workflows/preview-package.yml @@ -24,7 +24,7 @@ jobs: matrix: package: # When you add a new package, add a new line here - - name: "vsync" + - name: "@nicepkg/vsync" dir: "cli" display: "vsync (CLI)" # - name: "core" diff --git a/README.md b/README.md index 2ee6a0f..ca47a7d 100644 --- a/README.md +++ b/README.md @@ -117,10 +117,10 @@ flowchart TD ```bash # Option 1: Run directly with npx (no installation needed) -npx vsync +npx @nicepkg/vsync # Option 2: Install globally with npm -npm install -g vsync +npm install -g @nicepkg/vsync # Verify installation vsync --version diff --git a/README_cn.md b/README_cn.md index 0968e7c..20ca577 100644 --- a/README_cn.md +++ b/README_cn.md @@ -117,10 +117,10 @@ flowchart TD ```bash # 方式 1: 使用 npx 直接运行 (无需安装) -npx vsync +npx @nicepkg/vsync # 方式 2: 使用 npm 全局安装 -npm install -g vsync +npm install -g @nicepkg/vsync # 验证安装 vsync --version diff --git a/cli/package.json b/cli/package.json index b44bd45..ecf90c9 100644 --- a/cli/package.json +++ b/cli/package.json @@ -1,5 +1,5 @@ { - "name": "vsync", + "name": "@nicepkg/vsync", "version": "1.0.4", "description": "CLI for vsync - AI coding tool config synchronizer", "type": "module", diff --git a/package.json b/package.json index b877774..ead1c38 100644 --- a/package.json +++ b/package.json @@ -14,8 +14,8 @@ "build:website": "pnpm --filter website build", "start:website": "pnpm --filter website start", "start:static-website": "pnpm --filter website start:static", - "dev:cli": "pnpm --filter vsync dev", - "build:cli": "pnpm --filter vsync build", + "dev:cli": "pnpm --filter @nicepkg/vsync dev", + "build:cli": "pnpm --filter @nicepkg/vsync build", "test": "pnpm -r run test", "test:coverage": "pnpm -r run test:coverage", "lint": "pnpm -r run lint", diff --git a/scripts/release-publish.sh b/scripts/release-publish.sh index 463ecd6..25d06b0 100644 --- a/scripts/release-publish.sh +++ b/scripts/release-publish.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash set -euo pipefail -pnpm --filter vsync run build +pnpm --filter @nicepkg/vsync run build pnpm ci:publish pnpm changeset tag diff --git a/website/content/en/docs/advanced-features.mdx b/website/content/en/docs/advanced-features.mdx index f569381..3d79ed8 100644 --- a/website/content/en/docs/advanced-features.mdx +++ b/website/content/en/docs/advanced-features.mdx @@ -332,7 +332,7 @@ jobs: node-version: '18' - name: Sync configs - run: npx vsync sync --yes + run: npx @nicepkg/vsync sync --yes env: # Add any required environment variables GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -349,7 +349,7 @@ Automatically sync before commits: # Check if .vsync.json exists if [ -f .vsync.json ]; then echo "Running vsync..." - npx vsync sync --yes + npx @nicepkg/vsync sync --yes # Add synced files to commit git add .cursor/ .opencode/ .codex/ diff --git a/website/content/en/docs/getting-started.mdx b/website/content/en/docs/getting-started.mdx index f903072..d0e5d35 100644 --- a/website/content/en/docs/getting-started.mdx +++ b/website/content/en/docs/getting-started.mdx @@ -16,13 +16,13 @@ vsync can be used without installation via `npx`, or installed globally for conv No installation needed—just run: ```bash -npx vsync +npx @nicepkg/vsync ``` ### Option 2: Global Installation ```bash -npm install -g vsync +npm install -g @nicepkg/vsync ``` Verify the installation: diff --git a/website/content/en/docs/index.mdx b/website/content/en/docs/index.mdx index 33f35e9..30def32 100644 --- a/website/content/en/docs/index.mdx +++ b/website/content/en/docs/index.mdx @@ -78,7 +78,7 @@ Native support for English and Chinese (中文). ```bash # Install -npm install -g vsync +npm install -g @nicepkg/vsync # Initialize vsync init diff --git a/website/content/en/docs/quick-reference.mdx b/website/content/en/docs/quick-reference.mdx index 2a5fb11..30090f2 100644 --- a/website/content/en/docs/quick-reference.mdx +++ b/website/content/en/docs/quick-reference.mdx @@ -294,7 +294,7 @@ vsync sync ```bash # GitHub Actions - name: Sync configs - run: npx vsync sync --yes + run: npx @nicepkg/vsync sync --yes ``` **[Learn more →](../advanced-features#cicd-integration)** diff --git a/website/content/zh/docs/advanced-features.mdx b/website/content/zh/docs/advanced-features.mdx index 6c4c644..7748b5b 100644 --- a/website/content/zh/docs/advanced-features.mdx +++ b/website/content/zh/docs/advanced-features.mdx @@ -332,7 +332,7 @@ jobs: node-version: '18' - name: Sync configs - run: npx vsync sync --yes + run: npx @nicepkg/vsync sync --yes env: # 添加任何所需的环境变量 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -349,7 +349,7 @@ jobs: # 检查 .vsync.json 是否存在 if [ -f .vsync.json ]; then echo "Running vsync..." - npx vsync sync --yes + npx @nicepkg/vsync sync --yes # 将同步的文件添加到提交 git add .cursor/ .opencode/ .codex/ diff --git a/website/content/zh/docs/getting-started.mdx b/website/content/zh/docs/getting-started.mdx index 6380a5a..2ee6ad6 100644 --- a/website/content/zh/docs/getting-started.mdx +++ b/website/content/zh/docs/getting-started.mdx @@ -16,13 +16,13 @@ vsync 可以通过 `npx` 直接使用无需安装,也可以全局安装以便 无需安装——直接运行: ```bash -npx vsync +npx @nicepkg/vsync ``` ### 方式 2:全局安装 ```bash -npm install -g vsync +npm install -g @nicepkg/vsync ``` 验证安装: diff --git a/website/content/zh/docs/index.mdx b/website/content/zh/docs/index.mdx index 2b46bcd..56190dd 100644 --- a/website/content/zh/docs/index.mdx +++ b/website/content/zh/docs/index.mdx @@ -78,7 +78,7 @@ vsync 管理以下配置类型: ```bash # 安装 -npm install -g vsync +npm install -g @nicepkg/vsync # 初始化 vsync init diff --git a/website/content/zh/docs/quick-reference.mdx b/website/content/zh/docs/quick-reference.mdx index feced50..0301f70 100644 --- a/website/content/zh/docs/quick-reference.mdx +++ b/website/content/zh/docs/quick-reference.mdx @@ -294,7 +294,7 @@ vsync sync ```bash # GitHub Actions - name: Sync configs - run: npx vsync sync --yes + run: npx @nicepkg/vsync sync --yes ``` **[了解更多 →](../advanced-features#cicd-integration)** diff --git a/website/src/components/home/landing-page.tsx b/website/src/components/home/landing-page.tsx index 8f23a2a..2f8b5f5 100644 --- a/website/src/components/home/landing-page.tsx +++ b/website/src/components/home/landing-page.tsx @@ -272,7 +272,7 @@ export function LandingPage({ lang }: { lang: "en" | "zh" }) {
$ - npx vsync sync + npx @nicepkg/vsync sync
From 70b0ef1c9746d20acc2fde23c48df1f24610b90d Mon Sep 17 00:00:00 2001 From: jinmingyang <2214962083@qq.com> Date: Mon, 26 Jan 2026 22:08:46 +0800 Subject: [PATCH 03/16] chore: update package.json with repository details, author information, and keywords --- cli/package.json | 49 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 45 insertions(+), 4 deletions(-) diff --git a/cli/package.json b/cli/package.json index d9a0e52..48f5b3c 100644 --- a/cli/package.json +++ b/cli/package.json @@ -3,6 +3,51 @@ "version": "1.0.5", "description": "CLI for vsync - AI coding tool config synchronizer", "type": "module", + "repository": { + "type": "git", + "url": "git+https://github.com/nicepkg/vsync.git" + }, + "homepage": "https://github.com/nicepkg/vsync#readme", + "bugs": { + "url": "https://github.com/nicepkg/vsync/issues" + }, + "license": "MIT", + "keywords": [ + "ai", + "ai-coding", + "ai-tools", + "ai-assistant", + "claude", + "claude-code", + "cursor", + "opencode", + "codex", + "mcp", + "mcp-server", + "mcp-servers", + "config", + "config-sync", + "configuration", + "sync", + "synchronize", + "cli", + "devtools", + "developer-tools", + "productivity", + "skills", + "agents", + "commands", + "ide", + "vscode", + "copilot", + "coding-assistant", + "automation" + ], + "author": { + "name": "Jinming Yang", + "email": "2214962083@qq.com", + "url": "https://github.com/2214962083" + }, "publishConfig": { "access": "public" }, @@ -49,9 +94,5 @@ "typescript-eslint": "^8.53.1", "vitest": "^4.0.18", "zod": "^4.3.6" - }, - "engines": { - "node": ">=24.0.0", - "pnpm": ">=10.0.0" } } From c160cd4d9faa45f7225de2a3479b109939bc17c2 Mon Sep 17 00:00:00 2001 From: jinmingyang <2214962083@qq.com> Date: Mon, 26 Jan 2026 22:12:12 +0800 Subject: [PATCH 04/16] chore: update package.json description to clarify functionality of the CLI tool --- cli/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/package.json b/cli/package.json index 48f5b3c..34c67bc 100644 --- a/cli/package.json +++ b/cli/package.json @@ -1,7 +1,7 @@ { "name": "@nicepkg/vsync", "version": "1.0.5", - "description": "CLI for vsync - AI coding tool config synchronizer", + "description": "Sync MCP servers, Skills, Agents & Commands across Claude Code, Cursor, OpenCode, Codex. One config, all tools.", "type": "module", "repository": { "type": "git", From aaa18d284370510c81203e2b02fcb2a02f93ead1 Mon Sep 17 00:00:00 2001 From: jinmingyang <2214962083@qq.com> Date: Mon, 26 Jan 2026 22:20:33 +0800 Subject: [PATCH 05/16] chore: remove obsolete changeset for version 10 --- .changeset/four-dogs-fold10.md | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 .changeset/four-dogs-fold10.md diff --git a/.changeset/four-dogs-fold10.md b/.changeset/four-dogs-fold10.md deleted file mode 100644 index fd0af82..0000000 --- a/.changeset/four-dogs-fold10.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@nicepkg/vsync": patch ---- - -release first version 10 From 72de450ba8f5541b2490f265bbfd6f3bfdb2b687 Mon Sep 17 00:00:00 2001 From: jinmingyang <2214962083@qq.com> Date: Mon, 26 Jan 2026 22:37:51 +0800 Subject: [PATCH 06/16] feat: add isMainModule function to determine if the current module is the main entry point --- cli/src/index.ts | 22 +++++++++++++++- cli/src/utils/config-initializer.ts | 4 +-- cli/test/index.test.ts | 39 ++++++++++++++++++++++++++++- 3 files changed, 61 insertions(+), 4 deletions(-) diff --git a/cli/src/index.ts b/cli/src/index.ts index 7bcfd50..699c8c5 100644 --- a/cli/src/index.ts +++ b/cli/src/index.ts @@ -7,14 +7,34 @@ * Single source of truth → Compile to multiple formats → Diff-based sync */ +import { realpathSync } from "node:fs"; +import { resolve } from "node:path"; +import { fileURLToPath } from "node:url"; import { runCLI } from "./cli-setup.js"; export async function main(): Promise { await runCLI(); } +export function isMainModule( + argvPath: string | undefined, + moduleUrl: string, +): boolean { + if (!argvPath) { + return false; + } + + try { + const argvRealPath = realpathSync(resolve(argvPath)); + const moduleRealPath = realpathSync(fileURLToPath(moduleUrl)); + return argvRealPath === moduleRealPath; + } catch { + return false; + } +} + // Run CLI if this is the main module -if (import.meta.url === `file://${process.argv[1]}`) { +if (isMainModule(process.argv[1], import.meta.url)) { main().catch((error) => { console.error("Fatal error:", error); process.exit(1); diff --git a/cli/src/utils/config-initializer.ts b/cli/src/utils/config-initializer.ts index 43e593a..71030ca 100644 --- a/cli/src/utils/config-initializer.ts +++ b/cli/src/utils/config-initializer.ts @@ -47,11 +47,11 @@ export async function ensureLanguageConfig(): Promise { message: "Choose your preferred language / 选择你的语言偏好:", choices: [ { - name: `English (detected: ${systemLang === "en" ? "✓" : "×"})`, + name: `English`, value: "en", }, { - name: `中文 (detected: ${systemLang === "zh" ? "✓" : "×"})`, + name: `中文`, value: "zh", }, ], diff --git a/cli/test/index.test.ts b/cli/test/index.test.ts index b76e5b2..b0511fc 100644 --- a/cli/test/index.test.ts +++ b/cli/test/index.test.ts @@ -1,5 +1,9 @@ import { describe, it, expect } from "vitest"; -import { main } from "@src/index.js"; +import { mkdtemp, rm, symlink, writeFile } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { join, relative } from "node:path"; +import { pathToFileURL } from "node:url"; +import { isMainModule, main } from "@src/index.js"; describe("CLI Entry Point", () => { it("should export main function", () => { @@ -10,4 +14,37 @@ describe("CLI Entry Point", () => { it("should be async function", () => { expect(main.constructor.name).toBe("AsyncFunction"); }); + + it("detects main module with relative argv path", async () => { + const dir = await mkdtemp(join(tmpdir(), "vsync-index-")); + const filePath = join(dir, "index.js"); + await writeFile(filePath, "console.log('test');"); + + try { + const metaUrl = pathToFileURL(filePath).href; + const argvPath = relative(process.cwd(), filePath); + expect(isMainModule(argvPath, metaUrl)).toBe(true); + } finally { + await rm(dir, { recursive: true, force: true }); + } + }); + + it("detects main module when argv is a symlink", async () => { + const dir = await mkdtemp(join(tmpdir(), "vsync-index-")); + const filePath = join(dir, "index.js"); + const linkPath = join(dir, "index-link.js"); + await writeFile(filePath, "console.log('test');"); + await symlink(filePath, linkPath); + + try { + const metaUrl = pathToFileURL(filePath).href; + expect(isMainModule(linkPath, metaUrl)).toBe(true); + } finally { + await rm(dir, { recursive: true, force: true }); + } + }); + + it("returns false when argv is missing", () => { + expect(isMainModule(undefined, "file:///tmp/index.js")).toBe(false); + }); }); From aeff2699246202a75c515e68d4400a7885345383 Mon Sep 17 00:00:00 2001 From: jinmingyang <2214962083@qq.com> Date: Mon, 26 Jan 2026 22:38:19 +0800 Subject: [PATCH 07/16] fix: resolve CLI functionality issue --- .changeset/short-coins-push.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/short-coins-push.md diff --git a/.changeset/short-coins-push.md b/.changeset/short-coins-push.md new file mode 100644 index 0000000..c1b6e28 --- /dev/null +++ b/.changeset/short-coins-push.md @@ -0,0 +1,5 @@ +--- +"@nicepkg/vsync": patch +--- + +fix cli not working From f12625508713c1a38ed702e3f695041b0a632d2d Mon Sep 17 00:00:00 2001 From: jinmingyang <2214962083@qq.com> Date: Mon, 26 Jan 2026 23:02:02 +0800 Subject: [PATCH 08/16] docs: add full documentation link to README files --- README.md | 2 ++ README_cn.md | 2 ++ scripts/release-publish.sh | 3 +++ 3 files changed, 7 insertions(+) diff --git a/README.md b/README.md index ca47a7d..3714662 100644 --- a/README.md +++ b/README.md @@ -113,6 +113,8 @@ flowchart TD ## ⚡ Quick Start +Full documentation: https://vsync.xiaominglab.com + ### Installation ```bash diff --git a/README_cn.md b/README_cn.md index 20ca577..4b2e0ae 100644 --- a/README_cn.md +++ b/README_cn.md @@ -113,6 +113,8 @@ flowchart TD ## ⚡ 快速开始 +完整文档:https://vsync.xiaominglab.com + ### 安装 ```bash diff --git a/scripts/release-publish.sh b/scripts/release-publish.sh index 25d06b0..0a7de79 100644 --- a/scripts/release-publish.sh +++ b/scripts/release-publish.sh @@ -1,6 +1,9 @@ #!/usr/bin/env bash set -euo pipefail +cp README.md cli/README.md +cp README_cn.md cli/README_cn.md + pnpm --filter @nicepkg/vsync run build pnpm ci:publish pnpm changeset tag From b0e23bf810896c6214ceb94b1cc48abc9dc98c55 Mon Sep 17 00:00:00 2001 From: jinmingyang <2214962083@qq.com> Date: Mon, 26 Jan 2026 23:03:15 +0800 Subject: [PATCH 09/16] chore: add changeset for release v1.0.9 with patch for @nicepkg/vsync --- .changeset/{short-coins-push.md => wet-streets-stay.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename .changeset/{short-coins-push.md => wet-streets-stay.md} (62%) diff --git a/.changeset/short-coins-push.md b/.changeset/wet-streets-stay.md similarity index 62% rename from .changeset/short-coins-push.md rename to .changeset/wet-streets-stay.md index c1b6e28..8594ef8 100644 --- a/.changeset/short-coins-push.md +++ b/.changeset/wet-streets-stay.md @@ -2,4 +2,4 @@ "@nicepkg/vsync": patch --- -fix cli not working +release v1.0.9 From 245879cfd8feed245750d711c3c9e161fc52c46f Mon Sep 17 00:00:00 2001 From: jinmingyang <2214962083@qq.com> Date: Tue, 27 Jan 2026 09:24:17 +0800 Subject: [PATCH 10/16] chore: update documentation links to absolute paths and remove obsolete changeset --- .changeset/wet-streets-stay.md | 5 --- website/content/en/_meta.ts | 4 +- website/content/en/docs/advanced-features.mdx | 6 +-- website/content/en/docs/cli-commands.mdx | 6 +-- website/content/en/docs/configuration.mdx | 6 +-- website/content/en/docs/core-concepts.mdx | 6 +-- website/content/en/docs/getting-started.mdx | 26 ++++++------- website/content/en/docs/index.mdx | 18 ++++----- website/content/en/docs/quick-reference.mdx | 38 +++++++++---------- website/content/zh/_meta.ts | 4 +- website/content/zh/docs/advanced-features.mdx | 6 +-- website/content/zh/docs/cli-commands.mdx | 6 +-- website/content/zh/docs/configuration.mdx | 6 +-- website/content/zh/docs/core-concepts.mdx | 6 +-- website/content/zh/docs/getting-started.mdx | 26 ++++++------- website/content/zh/docs/index.mdx | 18 ++++----- website/content/zh/docs/quick-reference.mdx | 38 +++++++++---------- 17 files changed, 110 insertions(+), 115 deletions(-) delete mode 100644 .changeset/wet-streets-stay.md diff --git a/.changeset/wet-streets-stay.md b/.changeset/wet-streets-stay.md deleted file mode 100644 index 8594ef8..0000000 --- a/.changeset/wet-streets-stay.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@nicepkg/vsync": patch ---- - -release v1.0.9 diff --git a/website/content/en/_meta.ts b/website/content/en/_meta.ts index 70ec68b..8bce0a1 100644 --- a/website/content/en/_meta.ts +++ b/website/content/en/_meta.ts @@ -23,7 +23,7 @@ export default { commands: { title: "Commands", type: "page", - href: "./docs/cli-commands", + href: "/en/docs/cli-commands", }, [packageJson.version]: { title: `v${packageJson.version}`, @@ -31,7 +31,7 @@ export default { items: { contributing: { title: "Contributing", - href: "./contributing", + href: "/en/contributing", }, changelog: { title: "Changelog", diff --git a/website/content/en/docs/advanced-features.mdx b/website/content/en/docs/advanced-features.mdx index 3d79ed8..92fe650 100644 --- a/website/content/en/docs/advanced-features.mdx +++ b/website/content/en/docs/advanced-features.mdx @@ -447,6 +447,6 @@ cat .vsync.json ## Next Steps -- Check the [FAQ](../faq) for common questions -- Read about [Contributing](../../contributing) to vsync -- Explore [Configuration](../configuration) details +- Check the [FAQ](/en/docs/faq) for common questions +- Read about [Contributing](/en/contributing) to vsync +- Explore [Configuration](/en/docs/configuration) details diff --git a/website/content/en/docs/cli-commands.mdx b/website/content/en/docs/cli-commands.mdx index 6aaefd2..f2a50f6 100644 --- a/website/content/en/docs/cli-commands.mdx +++ b/website/content/en/docs/cli-commands.mdx @@ -549,6 +549,6 @@ vsync sync --help ## Next Steps -- Learn about [Advanced Features](../advanced-features) -- Check the [FAQ](../faq) for troubleshooting -- Explore [Configuration](../configuration) options +- Learn about [Advanced Features](/en/docs/advanced-features) +- Check the [FAQ](/en/docs/faq) for troubleshooting +- Explore [Configuration](/en/docs/configuration) options diff --git a/website/content/en/docs/configuration.mdx b/website/content/en/docs/configuration.mdx index 0754c27..af063cd 100644 --- a/website/content/en/docs/configuration.mdx +++ b/website/content/en/docs/configuration.mdx @@ -325,6 +325,6 @@ Always use variable references, never hardcode: ## Next Steps -- Learn all [CLI Commands](../cli-commands) -- Explore [Advanced Features](../advanced-features) -- Check the [FAQ](../faq) for troubleshooting +- Learn all [CLI Commands](/en/docs/cli-commands) +- Explore [Advanced Features](/en/docs/advanced-features) +- Check the [FAQ](/en/docs/faq) for troubleshooting diff --git a/website/content/en/docs/core-concepts.mdx b/website/content/en/docs/core-concepts.mdx index 334b3f1..fa0e324 100644 --- a/website/content/en/docs/core-concepts.mdx +++ b/website/content/en/docs/core-concepts.mdx @@ -247,6 +247,6 @@ Quick command shortcuts. Now that you understand the core concepts: -- Learn about [Configuration](../configuration) file structure -- Explore [CLI Commands](../cli-commands) in detail -- Discover [Advanced Features](../advanced-features) like symlinks +- Learn about [Configuration](/en/docs/configuration) file structure +- Explore [CLI Commands](/en/docs/cli-commands) in detail +- Discover [Advanced Features](/en/docs/advanced-features) like symlinks diff --git a/website/content/en/docs/getting-started.mdx b/website/content/en/docs/getting-started.mdx index d0e5d35..192035f 100644 --- a/website/content/en/docs/getting-started.mdx +++ b/website/content/en/docs/getting-started.mdx @@ -47,7 +47,7 @@ For global user-level configuration: vsync init --user ``` -> 💡 **Tip**: Learn more about [project vs user levels](../core-concepts#configuration-layers) in Core Concepts. +> 💡 **Tip**: Learn more about [project vs user levels](/en/docs/core-concepts#configuration-layers) in Core Concepts. ### Interactive Setup @@ -79,7 +79,7 @@ The CLI will guide you through the setup process: ✅ Setup complete! Run vsync sync to start syncing ``` -> 📚 **Learn more**: See [Configuration](../configuration) for detailed config options. +> 📚 **Learn more**: See [Configuration](/en/docs/configuration) for detailed config options. ### 2. Sync Your Configs @@ -96,7 +96,7 @@ vsync sync --dry-run vsync sync --prune ``` -> 🔍 **Details**: Understand [sync modes](../core-concepts#sync-modes) in Core Concepts. +> 🔍 **Details**: Understand [sync modes](/en/docs/core-concepts#sync-modes) in Core Concepts. ## Understanding the Output @@ -130,11 +130,11 @@ cursor: Now that you've installed and initialized vsync: -1. **Learn the Concepts**: Understand [Core Concepts](../core-concepts) like sync modes and layers -2. **Configure Tools**: Explore [Configuration](../configuration) options for each tool -3. **Master Commands**: Check out all [CLI Commands](../cli-commands) -4. **Quick Reference**: Use the [Quick Reference](../quick-reference) cheat sheet -5. **Advanced Usage**: Dive into [Advanced Features](../advanced-features) like symlinks +1. **Learn the Concepts**: Understand [Core Concepts](/en/docs/core-concepts) like sync modes and layers +2. **Configure Tools**: Explore [Configuration](/en/docs/configuration) options for each tool +3. **Master Commands**: Check out all [CLI Commands](/en/docs/cli-commands) +4. **Quick Reference**: Use the [Quick Reference](/en/docs/quick-reference) cheat sheet +5. **Advanced Usage**: Dive into [Advanced Features](/en/docs/advanced-features) like symlinks ## Real-World Examples @@ -157,7 +157,7 @@ vsync init --user # Configure which tools to sync vsync sync --user # Sync personal Skills, MCP servers globally ``` -> 💡 **Related**: Learn about [configuration layers](../core-concepts#configuration-layers). +> 💡 **Related**: Learn about [configuration layers](/en/docs/core-concepts#configuration-layers). ### Migration Between Tools @@ -169,7 +169,7 @@ vsync init # Choose Cursor as SOURCE (reference standard) vsync sync # All configs migrated instantly! ``` -> 📖 **More info**: See [FAQ - Migration Questions](../faq#migration-questions). +> 📖 **More info**: See [FAQ - Migration Questions](/en/docs/faq#migration-questions). ## Troubleshooting @@ -185,12 +185,12 @@ Make sure the tool's configuration directory exists (e.g., `.claude/`, `.cursor/ On macOS/Linux, you may need to grant permissions for file operations. Check that you have write access to the target directories. -> 🔧 **More help**: See the [FAQ](../faq#troubleshooting) for detailed troubleshooting. +> 🔧 **More help**: See the [FAQ](/en/docs/faq#troubleshooting) for detailed troubleshooting. ## Getting Help - Run `vsync --help` for command overview - Run `vsync --help` for specific command help -- Check the [FAQ](../faq) for common questions -- Use the [Quick Reference](../quick-reference) for command examples +- Check the [FAQ](/en/docs/faq) for common questions +- Use the [Quick Reference](/en/docs/quick-reference) for command examples - Open an issue on [GitHub](https://github.com/nicepkg/vsync/issues) diff --git a/website/content/en/docs/index.mdx b/website/content/en/docs/index.mdx index 30def32..a8d0dae 100644 --- a/website/content/en/docs/index.mdx +++ b/website/content/en/docs/index.mdx @@ -21,19 +21,19 @@ Welcome to the vsync documentation! Here you'll find everything you need to sync ### Getting Started -- **[Getting Started](../getting-started)** - Installation, initialization, and first sync -- **[Core Concepts](../core-concepts)** - Understanding sync modes, layers, and workflows +- **[Getting Started](/en/docs/getting-started)** - Installation, initialization, and first sync +- **[Core Concepts](/en/docs/core-concepts)** - Understanding sync modes, layers, and workflows ### Reference -- **[Configuration](../configuration)** - Config file structure and tool-specific formats -- **[CLI Commands](../cli-commands)** - Complete command reference with examples -- **[Quick Reference](../quick-reference)** - Command cheat sheet and common patterns +- **[Configuration](/en/docs/configuration)** - Config file structure and tool-specific formats +- **[CLI Commands](/en/docs/cli-commands)** - Complete command reference with examples +- **[Quick Reference](/en/docs/quick-reference)** - Command cheat sheet and common patterns ### Advanced -- **[Advanced Features](../advanced-features)** - Symlinks, performance optimization, and more -- **[FAQ](../faq)** - Common questions and troubleshooting +- **[Advanced Features](/en/docs/advanced-features)** - Symlinks, performance optimization, and more +- **[FAQ](/en/docs/faq)** - Common questions and troubleshooting ## Supported AI Tools @@ -91,6 +91,6 @@ vsync sync - **GitHub Issues**: [Report bugs or request features](https://github.com/nicepkg/vsync/issues) - **CLI Help**: Run `vsync --help` or `vsync --help` -- **Contributing**: Check out the [Contributing Guide](../../contributing) +- **Contributing**: Check out the [Contributing Guide](/en/contributing) -Ready to get started? Head over to [Getting Started](../getting-started)! +Ready to get started? Head over to [Getting Started](/en/docs/getting-started)! diff --git a/website/content/en/docs/quick-reference.mdx b/website/content/en/docs/quick-reference.mdx index 30090f2..cddf611 100644 --- a/website/content/en/docs/quick-reference.mdx +++ b/website/content/en/docs/quick-reference.mdx @@ -33,7 +33,7 @@ vsync init --user vsync sync --user ``` -**[Learn more →](../getting-started)** +**[Learn more →](/en/docs/getting-started)** ### Daily Sync @@ -68,7 +68,7 @@ vsync clean skill/old-skill vsync sync --prune ``` -**[Learn more →](../cli-commands#clean)** +**[Learn more →](/en/docs/cli-commands#clean)** ## Sync Modes @@ -82,7 +82,7 @@ vsync sync - ✅ Updates existing items - ❌ Never deletes -**[Learn more →](../core-concepts#safe-mode-default)** +**[Learn more →](/en/docs/core-concepts#safe-mode-default)** ### Prune Mode @@ -94,7 +94,7 @@ vsync sync --prune - ✅ Updates existing items - ⚠️ Deletes items not in source -**[Learn more →](../core-concepts#prune-mode)** +**[Learn more →](/en/docs/core-concepts#prune-mode)** ## Configuration Layers @@ -118,7 +118,7 @@ vsync sync --user # Syncs global configs **Use for**: Personal preferences, global skills -**[Learn more →](../core-concepts#configuration-layers)** +**[Learn more →](/en/docs/core-concepts#configuration-layers)** ## Command Examples @@ -206,7 +206,7 @@ vsync clean --user vsync clean skill/old-skill -y ``` -**[Learn more →](../cli-commands#clean)** +**[Learn more →](/en/docs/cli-commands#clean)** ### import @@ -237,7 +237,7 @@ vsync import ../other-project --user } ``` -**[Learn more →](../configuration)** +**[Learn more →](/en/docs/configuration)** ### Key Settings @@ -261,7 +261,7 @@ vsync import ../other-project --user | OpenCode | `{env:VAR}` | `{env:API_KEY}` | | Codex | No interpolation | Direct value | -**[Learn more →](../configuration#mcp-configuration-differences)** +**[Learn more →](/en/docs/configuration#mcp-configuration-differences)** ### Config File Locations @@ -272,7 +272,7 @@ vsync import ../other-project --user | OpenCode | `opencode.json(c)` | `~/.opencode/opencode.json` | | Codex | `config.toml` | `~/.codex/config.toml` | -**[Learn more →](../configuration#supported-tools)** +**[Learn more →](/en/docs/configuration#supported-tools)** ## Common Patterns @@ -297,7 +297,7 @@ vsync sync run: npx @nicepkg/vsync sync --yes ``` -**[Learn more →](../advanced-features#cicd-integration)** +**[Learn more →](/en/docs/advanced-features#cicd-integration)** ### Migration Workflow @@ -312,7 +312,7 @@ vsync plan vsync sync ``` -**[Learn more →](../faq#migration-questions)** +**[Learn more →](/en/docs/faq#migration-questions)** ## Exit Codes @@ -360,14 +360,14 @@ mkdir -p ~/.cursor vsync init ``` -**[More troubleshooting →](../faq#troubleshooting)** +**[More troubleshooting →](/en/docs/faq#troubleshooting)** ## Related Resources -- **[Getting Started](../getting-started)** - Detailed installation guide -- **[Core Concepts](../core-concepts)** - Understanding vsync -- **[CLI Commands](../cli-commands)** - Full command reference -- **[Configuration](../configuration)** - Config file details -- **[Advanced Features](../advanced-features)** - Symlinks, performance -- **[FAQ](../faq)** - Common questions -- **[Contributing](../../contributing)** - Development guide +- **[Getting Started](/en/docs/getting-started)** - Detailed installation guide +- **[Core Concepts](/en/docs/core-concepts)** - Understanding vsync +- **[CLI Commands](/en/docs/cli-commands)** - Full command reference +- **[Configuration](/en/docs/configuration)** - Config file details +- **[Advanced Features](/en/docs/advanced-features)** - Symlinks, performance +- **[FAQ](/en/docs/faq)** - Common questions +- **[Contributing](/en/contributing)** - Development guide diff --git a/website/content/zh/_meta.ts b/website/content/zh/_meta.ts index 5f45b04..f7434c3 100644 --- a/website/content/zh/_meta.ts +++ b/website/content/zh/_meta.ts @@ -23,7 +23,7 @@ export default { commands: { title: "CLI 命令", type: "page", - href: "./docs/cli-commands", + href: "/zh/docs/cli-commands", }, [packageJson.version]: { title: `v${packageJson.version}`, @@ -31,7 +31,7 @@ export default { items: { contributing: { title: "贡献指南", - href: "./contributing", + href: "/zh/contributing", }, changelog: { title: "更新日志", diff --git a/website/content/zh/docs/advanced-features.mdx b/website/content/zh/docs/advanced-features.mdx index 7748b5b..30fd9f6 100644 --- a/website/content/zh/docs/advanced-features.mdx +++ b/website/content/zh/docs/advanced-features.mdx @@ -447,6 +447,6 @@ cat .vsync.json ## 下一步 -- 查看 [FAQ](../faq) 了解常见问题 -- 阅读关于[贡献](../../contributing)到 vsync -- 探索[配置](../configuration)详情 +- 查看 [FAQ](/zh/docs/faq) 了解常见问题 +- 阅读关于[贡献](/zh/contributing)到 vsync +- 探索[配置](/zh/docs/configuration)详情 diff --git a/website/content/zh/docs/cli-commands.mdx b/website/content/zh/docs/cli-commands.mdx index 313c963..5c68958 100644 --- a/website/content/zh/docs/cli-commands.mdx +++ b/website/content/zh/docs/cli-commands.mdx @@ -549,6 +549,6 @@ vsync sync --help ## 下一步 -- 了解[高级功能](../advanced-features) -- 查看 [FAQ](../faq) 进行故障排除 -- 探索[配置](../configuration)选项 +- 了解[高级功能](/zh/docs/advanced-features) +- 查看 [FAQ](/zh/docs/faq) 进行故障排除 +- 探索[配置](/zh/docs/configuration)选项 diff --git a/website/content/zh/docs/configuration.mdx b/website/content/zh/docs/configuration.mdx index 852116d..f53f3ff 100644 --- a/website/content/zh/docs/configuration.mdx +++ b/website/content/zh/docs/configuration.mdx @@ -325,6 +325,6 @@ vsync 在 `.vsync-cache/manifest.json` 维护 manifest: ## 下一步 -- 学习所有 [CLI 命令](../cli-commands) -- 探索[高级功能](../advanced-features) -- 查看 [FAQ](../faq) 进行故障排除 +- 学习所有 [CLI 命令](/zh/docs/cli-commands) +- 探索[高级功能](/zh/docs/advanced-features) +- 查看 [FAQ](/zh/docs/faq) 进行故障排除 diff --git a/website/content/zh/docs/core-concepts.mdx b/website/content/zh/docs/core-concepts.mdx index a86a0c2..8e66dd2 100644 --- a/website/content/zh/docs/core-concepts.mdx +++ b/website/content/zh/docs/core-concepts.mdx @@ -247,6 +247,6 @@ vsync **从不展开**环境变量——它保留语法: 现在您理解了核心概念: -- 了解[配置](../configuration)文件结构 -- 详细探索 [CLI 命令](../cli-commands) -- 发现[高级功能](../advanced-features),如 symlinks +- 了解[配置](/zh/docs/configuration)文件结构 +- 详细探索 [CLI 命令](/zh/docs/cli-commands) +- 发现[高级功能](/zh/docs/advanced-features),如 symlinks diff --git a/website/content/zh/docs/getting-started.mdx b/website/content/zh/docs/getting-started.mdx index 2ee6ad6..45bfa74 100644 --- a/website/content/zh/docs/getting-started.mdx +++ b/website/content/zh/docs/getting-started.mdx @@ -47,7 +47,7 @@ vsync init vsync init --user ``` -> 💡 **提示**:在核心概念中了解更多关于[项目层与用户层](../core-concepts#configuration-layers)的信息。 +> 💡 **提示**:在核心概念中了解更多关于[项目层与用户层](/zh/docs/core-concepts#configuration-layers)的信息。 ### 交互式设置 @@ -79,7 +79,7 @@ CLI 将引导您完成设置过程: ✅ 设置完成!运行 vsync sync 开始同步 ``` -> 📚 **了解更多**:查看[配置指南](../configuration)了解详细配置选项。 +> 📚 **了解更多**:查看[配置指南](/zh/docs/configuration)了解详细配置选项。 ### 2. 同步您的配置 @@ -96,7 +96,7 @@ vsync sync --dry-run vsync sync --prune ``` -> 🔍 **详情**:在核心概念中理解[同步模式](../core-concepts#sync-modes)。 +> 🔍 **详情**:在核心概念中理解[同步模式](/zh/docs/core-concepts#sync-modes)。 ## 理解输出 @@ -130,11 +130,11 @@ cursor: 现在您已经安装并初始化了 vsync: -1. **学习概念**:理解[核心概念](../core-concepts),如同步模式和层级 -2. **配置工具**:探索每个工具的[配置](../configuration)选项 -3. **掌握命令**:查看所有 [CLI 命令](../cli-commands) -4. **快速参考**:使用[快速参考](../quick-reference)速查表 -5. **高级用法**:深入了解[高级功能](../advanced-features),如 symlinks +1. **学习概念**:理解[核心概念](/zh/docs/core-concepts),如同步模式和层级 +2. **配置工具**:探索每个工具的[配置](/zh/docs/configuration)选项 +3. **掌握命令**:查看所有 [CLI 命令](/zh/docs/cli-commands) +4. **快速参考**:使用[快速参考](/zh/docs/quick-reference)速查表 +5. **高级用法**:深入了解[高级功能](/zh/docs/advanced-features),如 symlinks ## 实际示例 @@ -157,7 +157,7 @@ vsync init --user # 配置要同步哪些工具 vsync sync --user # 全局同步个人 Skills、MCP 服务器 ``` -> 💡 **相关**:了解[配置层级](../core-concepts#configuration-layers)。 +> 💡 **相关**:了解[配置层级](/zh/docs/core-concepts#configuration-layers)。 ### 工具间迁移 @@ -169,7 +169,7 @@ vsync init # 选择 Cursor 作为 SOURCE(参考标准) vsync sync # 所有配置立即迁移! ``` -> 📖 **更多信息**:查看 [FAQ - 迁移问题](../faq#migration-questions)。 +> 📖 **更多信息**:查看 [FAQ - 迁移问题](/zh/docs/faq#migration-questions)。 ## 故障排除 @@ -185,12 +185,12 @@ vsync sync # 所有配置立即迁移! 在 macOS/Linux 上,您可能需要授予文件操作权限。检查您是否具有目标目录的写入权限。 -> 🔧 **更多帮助**:查看 [FAQ](../faq#troubleshooting) 获取详细的故障排除。 +> 🔧 **更多帮助**:查看 [FAQ](/zh/docs/faq#troubleshooting) 获取详细的故障排除。 ## 获取帮助 - 运行 `vsync --help` 获取命令概览 - 运行 `vsync --help` 获取特定命令帮助 -- 查看 [FAQ](../faq) 了解常见问题 -- 使用[快速参考](../quick-reference)获取命令示例 +- 查看 [FAQ](/zh/docs/faq) 了解常见问题 +- 使用[快速参考](/zh/docs/quick-reference)获取命令示例 - 在 [GitHub](https://github.com/nicepkg/vsync/issues) 上提交 issue diff --git a/website/content/zh/docs/index.mdx b/website/content/zh/docs/index.mdx index 56190dd..dc8bda5 100644 --- a/website/content/zh/docs/index.mdx +++ b/website/content/zh/docs/index.mdx @@ -21,19 +21,19 @@ description: vsync 完整指南 - 一条命令同步 AI 氛围编程工具 (Clau ### 入门 -- **[快速开始](../getting-started)** - 安装、初始化和首次同步 -- **[核心概念](../core-concepts)** - 理解同步模式、层级和工作流 +- **[快速开始](/zh/docs/getting-started)** - 安装、初始化和首次同步 +- **[核心概念](/zh/docs/core-concepts)** - 理解同步模式、层级和工作流 ### 参考 -- **[配置指南](../configuration)** - 配置文件结构和工具特定格式 -- **[CLI 命令](../cli-commands)** - 完整命令参考和示例 -- **[快速参考](../quick-reference)** - 命令速查表和常用模式 +- **[配置指南](/zh/docs/configuration)** - 配置文件结构和工具特定格式 +- **[CLI 命令](/zh/docs/cli-commands)** - 完整命令参考和示例 +- **[快速参考](/zh/docs/quick-reference)** - 命令速查表和常用模式 ### 进阶 -- **[高级功能](../advanced-features)** - Symlinks、性能优化等 -- **[常见问题](../faq)** - 常见问题和故障排除 +- **[高级功能](/zh/docs/advanced-features)** - Symlinks、性能优化等 +- **[常见问题](/zh/docs/faq)** - 常见问题和故障排除 ## 支持的 AI 工具 @@ -91,6 +91,6 @@ vsync sync - **GitHub Issues**:[报告 bug 或请求功能](https://github.com/nicepkg/vsync/issues) - **CLI 帮助**:运行 `vsync --help` 或 `vsync --help` -- **贡献**:查看[贡献指南](../../contributing) +- **贡献**:查看[贡献指南](/zh/contributing) -准备好开始了吗?前往[快速开始](../getting-started)! +准备好开始了吗?前往[快速开始](/zh/docs/getting-started)! diff --git a/website/content/zh/docs/quick-reference.mdx b/website/content/zh/docs/quick-reference.mdx index 0301f70..716cc2b 100644 --- a/website/content/zh/docs/quick-reference.mdx +++ b/website/content/zh/docs/quick-reference.mdx @@ -33,7 +33,7 @@ vsync init --user vsync sync --user ``` -**[了解更多 →](../getting-started)** +**[了解更多 →](/zh/docs/getting-started)** ### 日常同步 @@ -68,7 +68,7 @@ vsync clean skill/old-skill vsync sync --prune ``` -**[了解更多 →](../cli-commands#clean)** +**[了解更多 →](/zh/docs/cli-commands#clean)** ## 同步模式 @@ -82,7 +82,7 @@ vsync sync - ✅ 更新现有项 - ❌ 从不删除 -**[了解更多 →](../core-concepts#safe-mode-default)** +**[了解更多 →](/zh/docs/core-concepts#safe-mode-default)** ### Prune 模式 @@ -94,7 +94,7 @@ vsync sync --prune - ✅ 更新现有项 - ⚠️ 删除源中不存在的项 -**[了解更多 →](../core-concepts#prune-mode)** +**[了解更多 →](/zh/docs/core-concepts#prune-mode)** ## 配置层级 @@ -118,7 +118,7 @@ vsync sync --user # 同步全局配置 **用于**: 个人偏好、全局技能 -**[了解更多 →](../core-concepts#configuration-layers)** +**[了解更多 →](/zh/docs/core-concepts#configuration-layers)** ## 命令示例 @@ -206,7 +206,7 @@ vsync clean --user vsync clean skill/old-skill -y ``` -**[了解更多 →](../cli-commands#clean)** +**[了解更多 →](/zh/docs/cli-commands#clean)** ### import @@ -237,7 +237,7 @@ vsync import ../other-project --user } ``` -**[了解更多 →](../configuration)** +**[了解更多 →](/zh/docs/configuration)** ### 关键设置 @@ -261,7 +261,7 @@ vsync import ../other-project --user | OpenCode | `{env:VAR}` | `{env:API_KEY}` | | Codex | 无插值 | 直接值 | -**[了解更多 →](../configuration#mcp-configuration-differences)** +**[了解更多 →](/zh/docs/configuration#mcp-configuration-differences)** ### 配置文件位置 @@ -272,7 +272,7 @@ vsync import ../other-project --user | OpenCode | `opencode.json(c)` | `~/.opencode/opencode.json` | | Codex | `config.toml` | `~/.codex/config.toml` | -**[了解更多 →](../configuration#supported-tools)** +**[了解更多 →](/zh/docs/configuration#supported-tools)** ## 常用模式 @@ -297,7 +297,7 @@ vsync sync run: npx @nicepkg/vsync sync --yes ``` -**[了解更多 →](../advanced-features#cicd-integration)** +**[了解更多 →](/zh/docs/advanced-features#cicd-integration)** ### 迁移工作流 @@ -312,7 +312,7 @@ vsync plan vsync sync ``` -**[了解更多 →](../faq#migration-questions)** +**[了解更多 →](/zh/docs/faq#migration-questions)** ## 退出代码 @@ -360,14 +360,14 @@ mkdir -p ~/.cursor vsync init ``` -**[更多故障排除 →](../faq#troubleshooting)** +**[更多故障排除 →](/zh/docs/faq#troubleshooting)** ## 相关资源 -- **[快速开始](../getting-started)** - 详细安装指南 -- **[核心概念](../core-concepts)** - 理解 vsync -- **[CLI 命令](../cli-commands)** - 完整命令参考 -- **[配置指南](../configuration)** - 配置文件详情 -- **[高级功能](../advanced-features)** - Symlinks、性能 -- **[常见问题](../faq)** - 常见问题 -- **[贡献指南](../../contributing)** - 开发指南 +- **[快速开始](/zh/docs/getting-started)** - 详细安装指南 +- **[核心概念](/zh/docs/core-concepts)** - 理解 vsync +- **[CLI 命令](/zh/docs/cli-commands)** - 完整命令参考 +- **[配置指南](/zh/docs/configuration)** - 配置文件详情 +- **[高级功能](/zh/docs/advanced-features)** - Symlinks、性能 +- **[常见问题](/zh/docs/faq)** - 常见问题 +- **[贡献指南](/zh/contributing)** - 开发指南 From 2df48a8ebbbe8a72824510e44a37797472b77e60 Mon Sep 17 00:00:00 2001 From: jinmingyang <2214962083@qq.com> Date: Tue, 27 Jan 2026 10:04:36 +0800 Subject: [PATCH 11/16] build: migrate from changesets to semantic-release Co-Authored-By: Claude Opus 4.5 --- .changeset/README.md | 8 - .changeset/config.json | 13 - .claude/commands/commit.md | 18 +- .claude/commands/create-pr.md | 103 +- .github/workflows/pr-title.yml | 11 +- .github/workflows/release.yaml | 64 +- .vscode/settings.json | 2 +- CHANGELOG.md | 243 ++++ cli/CHANGELOG.md | 55 - package.json | 13 +- pnpm-lock.yaml | 2234 +++++++++++++++++++++++++------- release.config.cjs | 24 + scripts/release-publish.sh | 9 - website/content/en/_meta.ts | 2 +- website/content/zh/_meta.ts | 2 +- 15 files changed, 2126 insertions(+), 675 deletions(-) delete mode 100644 .changeset/README.md delete mode 100644 .changeset/config.json create mode 100644 CHANGELOG.md delete mode 100644 cli/CHANGELOG.md create mode 100644 release.config.cjs delete mode 100644 scripts/release-publish.sh diff --git a/.changeset/README.md b/.changeset/README.md deleted file mode 100644 index e5b6d8d..0000000 --- a/.changeset/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Changesets - -Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works -with multi-package repos, or single-package repos to help you version and publish your code. You can -find the full documentation for it [in our repository](https://github.com/changesets/changesets) - -We have a quick list of common questions to get you started engaging with this project in -[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) diff --git a/.changeset/config.json b/.changeset/config.json deleted file mode 100644 index 169d2f4..0000000 --- a/.changeset/config.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "$schema": "https://unpkg.com/@changesets/config/schema.json", - "changelog": ["@changesets/changelog-github", { "repo": "nicepkg/vsync" }], - "commit": false, - "access": "public", - "baseBranch": "main", - "updateInternalDependencies": "patch", - "ignore": ["website"], - "privatePackages": { - "version": true, - "tag": false - } -} diff --git a/.claude/commands/commit.md b/.claude/commands/commit.md index e683c0d..0bad8df 100644 --- a/.claude/commands/commit.md +++ b/.claude/commands/commit.md @@ -6,6 +6,7 @@ argument-hint: [optional message] # Create Git Commit Create a git commit following Angular/Conventional Commits format. +This repo uses semantic-release, so commit messages directly drive versioning. ## Context @@ -27,10 +28,14 @@ type(scope): subject **Rules:** -- Subject must be max 100 characters -- Use lowercase for type and scope +- Header must be <= 100 characters +- Type and scope must be lowercase +- Subject must be lowercase - No period at the end of subject - Use imperative mood: "add feature" not "added feature" +- Scope is optional, but if used must be one of: `website`, `docs`, `deps` + - Use `docs` for README/markdown only changes + - Use `website` for `website/` changes ### Commit Types @@ -53,13 +58,16 @@ type(scope): subject Common scopes in this project: - `website` - website folder changes +- `docs` - documentation only changes - `deps` - Dependencies +- `cli` - cli folder vsync package changes ### Examples ``` feat(website): add hotel card component chore(deps): update React to v19 +docs(docs): update README with new setup instructions docs: update README with new setup instructions style: format code with prettier ``` @@ -67,7 +75,7 @@ style: format code with prettier ## Task 1. If $ARGUMENTS provided, use as commit message hint -2. Analyze the staged/unstaged changes -3. Stage relevant files with `git add` +2. Analyze staged/unstaged changes and choose a single coherent scope +3. Stage relevant files with `git add` (avoid unrelated files) 4. Create commit with appropriate type, scope (if applicable), and subject -5. Keep subject concise (max 100 chars), focus on "what" changed +5. Keep subject concise (<= 100 chars), focus on "what" changed diff --git a/.claude/commands/create-pr.md b/.claude/commands/create-pr.md index 665ba8d..11fab6d 100644 --- a/.claude/commands/create-pr.md +++ b/.claude/commands/create-pr.md @@ -3,9 +3,22 @@ description: Create GitHub Pull Request following Angular commit convention argument-hint: [optional description] --- -# Create Pull Request +# Create Pull Request (Semantic-release Friendly) -Create a GitHub Pull Request following the project's Angular commit convention. +Create a GitHub Pull Request that works with semantic-release. +This repo defaults to **Squash and merge**, so the **PR title becomes the release commit**. +Therefore the PR title MUST follow Conventional Commits _exactly_: + +``` +(): +``` + +**Hard rules (must pass CI):** + +- Subject must be lowercase +- Subject must NOT end with a period +- Header length must be <= 100 characters +- Scope is optional, but if used must be one of: `website`, `docs`, `deps`, `cli` ## Context @@ -18,19 +31,21 @@ Create a GitHub Pull Request following the project's Angular commit convention. ## Prerequisites -1. Check if `gh` CLI is available and authenticated: +1. Ensure `gh` CLI is available and authenticated: + ```bash gh auth status ``` -2. Ensure all changes are committed: +2. Ensure all changes are committed and branch is pushed: ```bash git status + git push -u origin HEAD ``` ## PR Title Format (Angular Convention) -**IMPORTANT**: PR titles MUST follow Angular commit convention. This is enforced by GitHub Action. +**IMPORTANT**: PR title MUST follow Angular/Conventional Commit format because squash uses it as the release commit. ``` (): @@ -38,19 +53,19 @@ Create a GitHub Pull Request following the project's Angular commit convention. ### Types -| Type | Description | -|------|-------------| -| `feat` | A new feature | -| `fix` | A bug fix | -| `docs` | Documentation only changes | -| `style` | Changes that do not affect the meaning of the code | -| `refactor` | A code change that neither fixes a bug nor adds a feature | -| `perf` | A code change that improves performance | -| `test` | Adding missing tests or correcting existing tests | -| `build` | Changes that affect the build system or external dependencies | -| `ci` | Changes to CI configuration files and scripts | -| `chore` | Other changes that don't modify src or test files | -| `revert` | Reverts a previous commit | +| Type | Description | +| ---------- | ------------------------------------------------------------- | +| `feat` | A new feature | +| `fix` | A bug fix | +| `docs` | Documentation only changes | +| `style` | Changes that do not affect the meaning of the code | +| `refactor` | A code change that neither fixes a bug nor adds a feature | +| `perf` | A code change that improves performance | +| `test` | Adding missing tests or correcting existing tests | +| `build` | Changes that affect the build system or external dependencies | +| `ci` | Changes to CI configuration files and scripts | +| `chore` | Other changes that don't modify src or test files | +| `revert` | Reverts a previous commit | ### Scopes (optional) @@ -77,66 +92,50 @@ refactor: simplify authentication logic ## Creating a Pull Request -### Basic Command - -```bash -gh pr create \ - --title "feat(website): your descriptive title" \ - --body "## Description - -Brief summary of changes. +### Fill the PR Template -Fixes #123 - -## Type of Change - -- [x] New feature - -## Checklist +Use `.github/PULL_REQUEST_TEMPLATE.md` as the base. Fill in the summary, fixes, and type. -- [x] Code follows style guidelines -- [x] Self-review completed -- [x] No new warnings" \ - --base main -``` - -### Using HEREDOC for Complex Descriptions +### Recommended Command (template-based) ```bash -gh pr create --title "feat(website): add new feature" --body "$(cat <<'EOF' +gh pr create \ + --title "feat(scope): short, lowercase summary" \ + --body "$(cat <<'EOF' ## Description -Brief summary of the changes and the motivation behind them. +Brief summary of the change and why it matters. Fixes #123 ## Type of Change - [ ] Bug fix (non-breaking change which fixes an issue) -- [x] New feature (non-breaking change which adds functionality) +- [ ] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) - [ ] Documentation update ## Checklist -- [x] My code follows the style guidelines of this project -- [x] I have performed a self-review of my code -- [x] I have made corresponding changes to the documentation -- [x] My changes generate no new warnings +- [ ] My code follows the style guidelines of this project +- [ ] I have performed a self-review of my code +- [ ] I have commented my code, particularly in hard-to-understand areas +- [ ] I have made corresponding changes to the documentation +- [ ] My changes generate no new warnings +- [ ] Any dependent changes have been merged and published ## Screenshots (if applicable) N/A EOF -)" --base main +)" \ + --base main ``` -### Create as Draft - -Add `--draft` flag for work in progress: +### Draft PR (WIP) ```bash -gh pr create --title "feat: wip feature" --body "..." --base main --draft +gh pr create --title "feat(scope): wip summary" --body "WIP" --base main --draft ``` ## Useful Commands diff --git a/.github/workflows/pr-title.yml b/.github/workflows/pr-title.yml index ce6bd91..6a7090d 100644 --- a/.github/workflows/pr-title.yml +++ b/.github/workflows/pr-title.yml @@ -1,8 +1,14 @@ # ============================================================================= # PR Title Validation # ============================================================================= -# Validates that PR titles follow Angular commit convention. -# This ensures consistent and meaningful PR titles for changelog generation. +# Validates PR titles using Conventional Commits (semantic-release friendly). +# This repo uses **Squash and merge**, so the PR title becomes the release commit. +# Keeping titles compliant ensures correct version bumps and clean changelogs. +# +# Title requirements: +# - Format: (): +# - Subject: lowercase, no trailing period, <= 100 chars total header +# - Scope: optional; if present must be one of the allowed scopes below # # Format: (): # Example: feat(website): add dark mode toggle @@ -50,6 +56,7 @@ jobs: website docs deps + cli # Ensure subject doesn't start with uppercase subjectPattern: ^(?![A-Z]).+$ subjectPatternError: | diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index e11fa36..f3901c4 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -3,12 +3,6 @@ name: Release on: push: branches: [main] - paths: - - '.changeset/**' - - 'package.json' - - 'pnpm-lock.yaml' - # optional: include package manifests if you want release to run when versions are bumped - - 'cli/package.json' workflow_dispatch: concurrency: @@ -23,6 +17,18 @@ permissions: jobs: release: runs-on: ubuntu-latest + strategy: + fail-fast: false + max-parallel: 1 + matrix: + package: + - name: "@nicepkg/vsync" + dir: "cli" + copyReadme: "true" + # add new packages here + # - name: "@nicepkg/vsync-core" + # dir: "core" + # copyReadme: "false" steps: - uses: actions/checkout@v6 with: @@ -31,27 +37,33 @@ jobs: - name: Setup Node.js and pnpm uses: ./.github/actions/setup-node-pnpm - - name: Create Release PR or Publish - uses: changesets/action@v1 - with: - # use git-cli so symlinks in the repo don't break GitHub API commits - commitMode: git-cli - setupGitUser: true - commit: "chore: version packages" - title: "chore: version packages" - - # calculate version + generate changelog + update lockfile (very important) - version: pnpm version-packages - - # build before publish (to avoid empty dist) - # then publish (you currently use pnpm publish -r) - # then tag (to allow action to push tags + create GitHub Releases) - publish: bash ./scripts/release-publish.sh - - # explicitly enable GitHub Releases - createGithubReleases: true - + - name: Check package exists + id: package-check + shell: bash + run: | + if [ -f "${{ matrix.package.dir }}/package.json" ]; then + echo "exists=true" >> "$GITHUB_OUTPUT" + else + echo "exists=false" >> "$GITHUB_OUTPUT" + fi + + - name: Copy README files into package + if: steps.package-check.outputs.exists == 'true' && matrix.package.copyReadme == 'true' + shell: bash + run: | + cp README.md "${{ matrix.package.dir }}/README.md" + cp README_cn.md "${{ matrix.package.dir }}/README_cn.md" + + - name: Build package + if: steps.package-check.outputs.exists == 'true' + run: pnpm --filter ${{ matrix.package.name }} build + + - name: Run semantic-release + if: steps.package-check.outputs.exists == 'true' + run: pnpm run semantic-release env: + SEMREL_PKG_ROOT: ${{ matrix.package.dir }} + SEMREL_PKG_NAME: ${{ matrix.package.name }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.vscode/settings.json b/.vscode/settings.json index 3d54339..963c52f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -99,7 +99,7 @@ "[mdx]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, - "cSpell.words": ["MCPO", "opencode", "vsync"], + "cSpell.words": ["MCPO", "nicepkg", "opencode", "SEMREL", "vsync"], // i18n-ally Configuration for CLI workspace "i18n-ally.localesPaths": ["cli/src/locales"], diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..ecc4e6b --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,243 @@ +# Changelog + +## @nicepkg/vsync@1.0.9 - 2026-01-26 + +- chore: version packages (#10) (de127cb) +- chore: release v1.0.9 (#9) (4d0fa67) + +## @nicepkg/vsync@1.0.8 - 2026-01-26 + +- chore: version packages (#8) (ff31b86) +- chore: release 1.0.8 (#7) (9b07770) + +## @nicepkg/vsync@1.0.7 - 2026-01-26 + +- chore: version packages (#6) (07d41f7) +- chore: release v1.0.7 (#5) (3a9d217) +- chore: version packages (#4) (a780db1) +- Merge pull request #3 from nicepkg/dev (bcba769) +- Merge pull request #2 from nicepkg/changeset-release/main (81c4ebf) +- chore: version packages (62bf590) +- Merge pull request #1 from nicepkg/dev (1206ca2) +- chore: release version 1.0.5 and update package configuration (b703993) +- refactor: update VibeConfig to VSyncConfig across the codebase (58bc89f) +- refactor: rename vsync to vsync across the project (0909155) +- chore: release version 1.0.4 and update CHANGELOG (898ebf9) +- feat: enhance MCP server handling and streamline configuration management (c76faf2) +- chore: version packages (#11) (af752f9) +- refactor(workflows): streamline release process with dedicated script (#10) (63604c1) +- chore: release version 1.0.3 and update CHANGELOG (1c782cd) +- refactor(workflows): streamline release process with dedicated script (32afad1) +- Merge pull request #9 from nicepkg/changeset-release/main (71b9723) +- chore: version packages (96f1b2a) +- Merge pull request #8 from nicepkg/dev (47ce245) +- refactor(registry): implement extensible plugin system with dynamic registration (83f3082) +- Merge pull request #7 from nicepkg/changeset-release/main (151e9cc) +- chore: version packages (893ef95) +- Merge pull request #6 from nicepkg/dev (bd999a3) +- chore(vsync): release version 1.0.1 and add CHANGELOG (696bf9b) +- chore(vsync): add first version of vsync patch (8da5e12) +- fix(workflows): simplify publish command in release workflow (c789b01) +- Merge pull request #5 from nicepkg/changeset-release/main (fcdafd4) +- chore: version packages (47d66e0) +- Merge pull request #4 from nicepkg/dev (42f7aeb) +- chore(vsync): add initial version for vsync patch (f6b7442) +- fix(workflows): update commit key in release workflow from 'commitMessage' to 'commit' (8886eb3) +- refactor(quality): eliminate code smells and improve maintainability (f0bc7cf) +- refactor(adapters): extract path resolution logic into dedicated resolver (7904f52) +- refactor(errors): unify error handling with severity-based strategy (308a1e9) +- Merge pull request #3 from nicepkg/dev (8c3bdab) +- refactor(sync-executor): eliminate type assertions with type-safe generics (bac7085) +- refactor(sync): break up God Method into focused functions (8dbc36f) +- chore: add initial version for vsync patch and update CI workflow to remove push trigger (8f9e1b8) +- Merge pull request #2 from nicepkg/dev (79ebd19) +- chore(release): switch to git-cli for commit mode to support symlinks and set up Git user (0369c56) +- Merge pull request #1 from nicepkg/dev (fcba900) +- refactor(sync): enhance error handling and type safety in sync operations (a967906) +- refactor(adapters): simplify item reading methods and enhance type safety (b643457) +- refactor(sync): streamline item reading and error handling in sync operations (bbf64c2) +- fix: enhance error handling and logging in sync commands (716e753) +- refactor(tests): update mocks for config-initializer and increase timeout for E2E (029ab56) +- refactor: unify environment variable transformation and streamline sync UI interactions (8da65c3) +- refactor: consolidate language configuration and improve file operations (4c60711) +- feat(config): implement DRY config validation with lazy field initialization (908e922) +- refactor(i18n): separate language config from project config (ec3ad70) +- feat(i18n): auto-prompt for language preference on first run (6379c8a) +- refactor: extract ensureConfig to shared utility (DRY) (55b6256) +- feat(sync): auto-prompt for init when config not found (1b8a475) +- fix: preserve user-specified name field in YAML frontmatter (b635da3) +- fix: exclude 'name' field from metadata to fix hash mismatch (87767fe) +- feat(adapter): introduce capabilities interface and implement in BaseAdapter and CodexAdapter (1ab3c8f) +- fix(symlink): normalize Windows symlink paths and improve test assertions (dcfafe2) +- feat(commands): add projectDir and config.level parameters to plan, status, and sync commands (bc1b767) +- feat(diff): enhance hash comparison logic for write-only targets and update manifest handling (aed70e5) +- feat(manifest): update manifest path structure and improve status command output (73f272d) +- feat(sync): add debug logging and hash retrieval for sync operations (e365e5a) +- feat(sync): enhance error handling and logging in sync plan execution (952996f) +- feat(planner): enhance sync plan output to include tool counts in section headers (64133c3) +- feat(errors): introduce NotSupportError for unsupported features (b651d77) +- refactor(planner): enhance sync plan output with internationalization support (324adb0) +- feat(ux): smart confirmation defaults based on operation safety (7224272) +- fix(ui): correct operation count display in sync plan (c1e0e68) +- refactor(ui): dramatically improve sync plan output readability (b913855) +- fix(sync): respect sync_config when generating plan (8539853) +- refactor(init): remove eager cache and manifest creation (a34687e) +- feat(init): add agents and commands to sync options (0359f8f) +- fix: resolve commander version conflict and allow minimal user config (47a0077) +- refactor: change prompt type from "list" to "select" across multiple command files (259bb2c) +- chore: update CI workflow to pin pkg-pr-new version and improve output parsing (51e2b84) +- test: make user-level paths OS-agnostic (ba3ccef) +- chore: restrict CI workflow to only trigger on main branch (ddc27fe) +- chore: refactor CI workflow to use reusable test configuration and update test paths (1f96ced) +- chore: update CI and deployment workflows to include test execution and wrangler installation (c900c0b) +- chore: update dependencies and workflows (fd44066) +- build: release 1.0.0 (26b2c24) +- feat: add comprehensive documentation for vsync (3d0c6f2) +- feat: enhance documentation and configuration for vsync (5ddf6f6) +- feat: enhance visual elements and interactions in 3D hero component (d47fc7a) +- feat: enhance 3D hero component with new visualizations and animations (ed7be8e) +- docs: update landing page content to enhance clarity and feature descriptions (e6d3f46) +- docs: update PRD with version 1.0.0 details and enhance section descriptions (414b08d) +- docs: update PRD to reflect version 1.0.0 and enhance feature descriptions (50e2e03) +- chore: update release workflow to use bash for publishing commands (43ce662) +- chore: update release workflow to trigger on specific file changes (7b3d2e5) +- chore: enhance GitHub workflows for deployment and preview comments (b3b37f6) +- refactor: update package structure and add changeset support (df58266) +- fix(scripts): correct AdapterConfig parameter name in benchmark script (853a6cf) +- feat(performance): implement benchmark utilities and measure improvements (2b08e75) +- docs: update TASKS.md with completed E2E tests (e4d88fe) +- test: add comprehensive E2E tests for MCP, agents, and commands (8a57d98) +- test: add comprehensive symlink E2E tests (Phase 6.3) (7c8e7b8) +- test: add E2E tests with DRY and high cohesion design (Phase 6.3) (1e84472) +- fix: correct manifest TargetStatus format in integration tests (7d31426) +- fix: correct OpenCode environment variable format to {env:VAR} (423b6ee) +- fix: resolve integration test failures (Phase 6.2) (164855d) +- fix: resolve TypeScript and ESLint errors in integration tests (57d3763) +- test: add integration tests for full sync flow (Phase 6.2) (b1149c1) +- docs: update TASKS.md to mark error message improvements complete (6ab36f7) +- feat(errors): add comprehensive error formatting utility (bdd81a5) +- docs: update TASKS.md to mark debug mode task complete (35e2260) +- feat(debug): add debug logging utility with --debug flag (f2bd65d) +- docs: update TASKS.md to mark --yes flag task complete (30df643) +- feat: add --yes flag to sync and clean commands for CI/CD automation (4046c0b) +- feat(i18n): complete import command i18n integration (0bde2de) +- fix(symlink): integrate rollback support into sync workflow (dc18cbf) +- feat(symlink): add rollback support for safe error recovery (5c1873c) +- feat(symlink): add first-time sync prompt for symlink usage (6c83ac2) +- feat(i18n): add custom framework configuration for i18n-ally (ec94015) +- feat(i18n): integrate translations into status command (2a326b3) +- feat(i18n): integrate translations into list command (fdf9469) +- feat(i18n): integrate translations into clean command (d393b1a) +- feat(i18n): integrate translations into plan command (c363fd5) +- feat(i18n): integrate translations into sync command (c6c69d2) +- feat(i18n): integrate translations into init command as reference pattern (08fbdf4) +- docs(i18n): add language configuration documentation and complete Phase 10 (4ad69ad) +- feat(i18n): initialize i18n system at CLI startup (8fb8ff4) +- feat(i18n): implement first-run language detection and bilingual prompt (860ca51) +- refactor: streamline import paths and enhance language support (835d591) +- feat(config): add language preference support for user-level configuration (fa5b4f4) +- feat(i18n): implement lightweight i18n infrastructure with English and Chinese support (270aa4a) +- feat: integrate symlink support into sync workflow (fdab014) +- docs: update Phase 9 progress in TASKS.md (17207d3) +- feat(adapters): add symlink handling to BaseAdapter for skills directories (606ecf6) +- feat(core): implement symlink sync handler for skills directories (d8ad8d9) +- feat(utils): implement cross-platform symlink utilities (4a8282e) +- docs: mark Phase 9.1 as complete in TASKS.md (a199911) +- feat(config): add symlink support configuration for skills (f1a13b9) +- chore: update TASKS.md to remove completed tasks and adjust phase statuses (616793c) +- feat(core): implement incremental sync optimization with file caching (fd8877a) +- feat: implement ParallelSyncOrchestrator and SyncExecutor (3f2091d) +- chore: update TASKS.md to reflect version bump to 3.1.0 (cbb1c1d) +- refactor: streamline adapter methods by consolidating read and write operation (a4575ae) +- feat: enhance Claude Code adapter to support multiple MCP server types (f8c862d) +- refactor: remove validation methods from adapter implementations (c4d784a) +- refactor: consolidate adapter implementations by extending BaseAdapter (c1d226d) +- feat: implement support file handling in adapters (1b21d91) +- refactor: remove configFormat, capabilities, and isReadOnly from ToolAdapter implementations (9dc268a) +- docs: add global configuration details for Claude Code in ai-tools and prd documentation (e938fda) +- feat: enhance adapter configuration with level support and update file handling (e1dd008) +- docs: update Codex configuration details to reflect changes in file structure and format (1a2b380) +- refactor: reorganize file operations and update adapter implementations (2b21902) +- chore: remove unused '@types/inquirer' dependency and add refactor plan for adapter architecture (5f0c346) +- refactor: flatten directory structure by removing extra cli layer (29f6d2b) +- feat(cli): add import command for cross-project config import (468101c) +- feat: add Codex adapter with full TOML support for v1.1 (8128830) +- docs: mark Phase 7.3 Commands Synchronization as complete (01f5f33) +- feat(phase-7.3): implement command synchronization support (d855673) +- docs: mark Phase 7.2 Agents Synchronization as complete (2c5af99) +- feat(phase-7.2): implement agent synchronization support (2c720f6) +- feat(core): implement user-level config merging for Phase 7.1 (daa42fa) +- docs: add detailed v1.1 (Phase 7-8) task breakdown (782914c) +- feat(cli): add error recovery with rollback to sync command (65b0918) +- feat(core): implement rollback mechanism for safe error recovery (a3300ce) +- docs: mark Phase 5.2 Environment Variable Preservation as complete (5ba78ce) +- feat: add fsync to atomic write for crash-safe file operations (0ea84a4) +- chore: update ESLint linting command to remove max-warnings restriction (1fcb30f) +- refactor: standardize ESLint configuration and improve code formatting (5878da8) +- fix: complete TargetStatus and ManifestItem type fixes (d83ecdd) +- fix: resolve type errors and replace paths with TypeScript aliases (98b6277) +- refactor: add TypeScript path aliases and improve typecheck coverage (2560744) +- docs(tasks): add TypeScript path aliases refactor task (c834e7b) +- refactor: remove MCP security feature to simplify user experience (1700b7d) +- feat(cli): implement clean command with target/source removal modes (141eb45) +- feat(cli): implement vsync list command with table output (ad726f3) +- feat(cli): implement vsync status command (15f6f74) +- feat(cli): implement vsync plan command with detailed output (0cfc46c) +- docs: mark Phase 4.3 (vsync sync command) as complete (9cb6f89) +- feat(cli): implement vsync sync command (4dd1559) +- docs: mark Phase 4.2 (vsync init command) as complete (7cdcf09) +- feat(cli): implement vsync init command with interactive prompts (2bba6ef) +- docs: mark Phase 4.1 (CLI Framework Setup) as complete (6dfeb74) +- feat(cli): implement CLI framework with Commander.js (74d5600) +- docs: mark Phase 3 complete - all diff and plan system implemented (2cd224a) +- feat(core): implement manifest update operations (981e805) +- docs: mark Phase 3.3 (Plan Generator) as complete (6c93bd9) +- feat(core): implement plan generator with formatting and validation (c4c2e87) +- docs: mark Phase 3.1 and 3.2 as complete (2631f23) +- feat(core): implement difference calculator for Phase 3.2 (5378da2) +- docs: mark Phase 2.5 (Adapter Registry) and Phase 2 as complete (68d79a9) +- feat(adapters): implement adapter registry for Phase 2.5 (c842618) +- docs: mark Phase 2.4 (OpenCode Adapter) as complete (4f7b758) +- feat(adapters): implement OpenCode adapter for Phase 2.4 (44e9aa7) +- docs: mark Phase 2.3 (Cursor Adapter) as complete (a96b32b) +- feat(adapters): implement Cursor adapter for Phase 2.3 (68e782f) +- docs: mark Phase 2.2 (Claude Code Adapter) as complete (0021dc8) +- feat(adapters): implement Claude Code adapter for Phase 2.2 (3e45530) +- feat(adapters): define base adapter interface for Phase 2.1 (ad7c69b) +- feat(core): implement Phase 1.3 and 1.4 - config/manifest managers and utilities (7608066) +- feat(types): implement core type definitions for Phase 1.2 (a338a6a) +- chore: update ESLint configuration and remove Prettier settings for CLI workspace (3c4ce9d) +- feat(lint): add ESLint and Prettier configuration for CLI workspace (18fbb37) +- refactor(build): bundle all dependencies for faster npx usage (dc6b30c) +- feat(core): initialize CLI workspace with TypeScript and build tooling (52de3c8) +- docs: update project structure for pnpm monorepo with cli workspace (8e80593) +- feat: restructure project for vsync with new task management and CLI commands (631cb36) +- chore: remove CHECKLIST.md after project setup completion (af76423) +- feat: complete vsync project setup with full customization (ef5b668) +- docs: update project configuration with new username and repository link, and refine Chinese slogan (e0b9f65) +- chore: remove example configuration files and add initial project configuration for vsync (2563f4a) +- chore: update pnpm-lock.yaml to include TypeScript 5.9.3, Zod 4.3.6, and framer-motion 12.29.0 (6361214) +- chore: update .gitignore, package.json, and ESLint configuration (5871db0) +- docs: update clone URLs in README files to point to the new repository name (23b6dff) +- docs: update clone URLs in README files to reflect new repository owner (c5aac1e) +- docs: update title of Product Requirements Document for clarity (d8f1694) +- feat: add content marketer and search specialist agents and research capabilities (927b471) +- feat: introduce frontend-design skill for creating high-quality, distinctive web interfaces (0f56e4c) +- feat: add comprehensive React and Next.js best practices documentation (345146b) +- docs: enhance README with detailed workflow, automation features, and shared skills for AI tools (0517a3f) +- chore: update README guidelines and enhance validation script for project setup (14be40c) +- feat: introduce automation guidelines and CLI tools for streamlined operations (1174058) +- feat: add MCP server configurations for Claude, Cursor, Codex, and OpenCode (5011f19) +- feat: add commands for code review, fixing GitHub issues, and reviewing pull requests (b2f42f1) +- feat: add commands for creating Git commits and pull requests following Angular convention (23cf187) +- chore: update package.json for testing commands, enhance CI (445844b) +- chore: update GitHub issue and pull request templates, add CI workflow, and adjust pre-commit hooks (c2bda09) +- feat: add standard GitHub Actions token naming conventions and example workflows (d7bbfd7) +- feat: implement commit convention and add Husky with Commitlint for validation (f3dc2f4) +- feat: add symbolic link for Claude agent documentation (3d4d487) +- feat: create symbolic links for Claude skills in multiple directories (5859429) +- feat: add settings configuration for Claude with permissions and server options (5c3e698) +- feat: add project setup documentation and checklist (7bf79cd) +- chore: update linting commands and fix formatting in meta files (6bfcf58) +- chore: update project configuration and add VSCode settings (9bf609a) +- feat: init project (5941cee) diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md deleted file mode 100644 index 53ec7bf..0000000 --- a/cli/CHANGELOG.md +++ /dev/null @@ -1,55 +0,0 @@ -# vsync - -## 1.0.9 - -### Patch Changes - -- [#9](https://github.com/nicepkg/vsync/pull/9) [`4d0fa67`](https://github.com/nicepkg/vsync/commit/4d0fa673ae319790120e93e9bf27bd83d3491e19) Thanks [@2214962083](https://github.com/2214962083)! - release v1.0.9 - -## 1.0.8 - -### Patch Changes - -- [#7](https://github.com/nicepkg/vsync/pull/7) [`9b07770`](https://github.com/nicepkg/vsync/commit/9b07770d51b9e3229bc69167af24ade3fa031f89) Thanks [@2214962083](https://github.com/2214962083)! - fix cli not working - -## 1.0.7 - -### Patch Changes - -- [#5](https://github.com/nicepkg/vsync/pull/5) [`3a9d217`](https://github.com/nicepkg/vsync/commit/3a9d217164dcf777ae0673f2e19583caf93813b7) Thanks [@2214962083](https://github.com/2214962083)! - release first version 10 - -## 1.0.6 - -### Patch Changes - -- [#3](https://github.com/nicepkg/vsync/pull/3) [`bcba769`](https://github.com/nicepkg/vsync/commit/bcba769564b20250208dce11d09ef6c1f1cf85c4) Thanks [@2214962083](https://github.com/2214962083)! - release first version 09 - -## 1.0.5 - -### Patch Changes - -- [#1](https://github.com/nicepkg/vsync/pull/1) [`b703993`](https://github.com/nicepkg/vsync/commit/b7039932001698ccbcadc3481ad980f9ae4a7c48) Thanks [@2214962083](https://github.com/2214962083)! - release first version 08 - -## 1.0.4 - -### Patch Changes - -- [#10](https://github.com/nicepkg/vsync/pull/10) [`63604c1`](https://github.com/nicepkg/vsync/commit/63604c1250efe9b4e39712e6178ff71852736945) Thanks [@2214962083](https://github.com/2214962083)! - release first version 06 - -## 1.0.3 - -### Patch Changes - -- [#8](https://github.com/nicepkg/vsync/pull/8) [`83f3082`](https://github.com/nicepkg/vsync/commit/83f308251c4afa649d4ed1fe785315f89ac9ba2f) Thanks [@2214962083](https://github.com/2214962083)! - release first version 05 - -## 1.0.2 - -### Patch Changes - -- [#6](https://github.com/nicepkg/vsync/pull/6) [`8da5e12`](https://github.com/nicepkg/vsync/commit/8da5e121708595544db269575fba06e02444c378) Thanks [@2214962083](https://github.com/2214962083)! - first version 04 - -## 1.0.1 - -### Patch Changes - -- [#4](https://github.com/nicepkg/vsync/pull/4) [`f6b7442`](https://github.com/nicepkg/vsync/commit/f6b74428b6ce2b0ca1a5ce2f707b81ff70ea86be) Thanks [@2214962083](https://github.com/2214962083)! - first version 03 diff --git a/package.json b/package.json index ead1c38..e2e89a7 100644 --- a/package.json +++ b/package.json @@ -23,22 +23,25 @@ "typecheck": "pnpm -r run typecheck", "clean": "rm -rf node_modules vsync/node_modules website/node_modules website/.next", "prepare": "husky", - "changeset": "changeset", - "version-packages": "changeset version && pnpm install --lockfile-only", - "ci:publish": "pnpm -r publish --access public --no-git-checks" + "release": "semantic-release" }, "engines": { "node": ">=24.0.0", "pnpm": ">=10.0.0" }, "devDependencies": { - "@changesets/changelog-github": "^0.5.2", - "@changesets/cli": "^2.29.8", "@commitlint/cli": "^20.3.1", "@commitlint/config-conventional": "^20.3.1", "@commitlint/types": "^20.3.1", + "@semantic-release/changelog": "^6.0.3", + "@semantic-release/commit-analyzer": "^13.0.1", + "@semantic-release/git": "^10.0.1", + "@semantic-release/github": "^12.0.2", + "@semantic-release/npm": "^13.1.3", + "@semantic-release/release-notes-generator": "^14.1.0", "eslint": "^9.39.2", "husky": "^9.1.7", + "semantic-release": "^25.0.2", "typescript": "^5.9.3", "wrangler": "^4.60.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 02c935b..1706ea7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,12 +8,6 @@ importers: .: devDependencies: - '@changesets/changelog-github': - specifier: ^0.5.2 - version: 0.5.2 - '@changesets/cli': - specifier: ^2.29.8 - version: 2.29.8(@types/node@25.0.10) '@commitlint/cli': specifier: ^20.3.1 version: 20.3.1(@types/node@25.0.10)(typescript@5.9.3) @@ -23,12 +17,33 @@ importers: '@commitlint/types': specifier: ^20.3.1 version: 20.3.1 + '@semantic-release/changelog': + specifier: ^6.0.3 + version: 6.0.3(semantic-release@25.0.2(typescript@5.9.3)) + '@semantic-release/commit-analyzer': + specifier: ^13.0.1 + version: 13.0.1(semantic-release@25.0.2(typescript@5.9.3)) + '@semantic-release/git': + specifier: ^10.0.1 + version: 10.0.1(semantic-release@25.0.2(typescript@5.9.3)) + '@semantic-release/github': + specifier: ^12.0.2 + version: 12.0.2(semantic-release@25.0.2(typescript@5.9.3)) + '@semantic-release/npm': + specifier: ^13.1.3 + version: 13.1.3(semantic-release@25.0.2(typescript@5.9.3)) + '@semantic-release/release-notes-generator': + specifier: ^14.1.0 + version: 14.1.0(semantic-release@25.0.2(typescript@5.9.3)) eslint: specifier: ^9.39.2 version: 9.39.2(jiti@2.6.1) husky: specifier: ^9.1.7 version: 9.1.7 + semantic-release: + specifier: ^25.0.2 + version: 25.0.2(typescript@5.9.3) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -351,6 +366,18 @@ importers: packages: + '@actions/core@2.0.2': + resolution: {integrity: sha512-Ast1V7yHbGAhplAsuVlnb/5J8Mtr/Zl6byPPL+Qjq3lmfIgWF1ak1iYfF/079cRERiuTALTXkSuEUdZeDCfGtA==} + + '@actions/exec@2.0.0': + resolution: {integrity: sha512-k8ngrX2voJ/RIN6r9xB82NVqKpnMRtxDoiO+g3olkIUpQNqjArXrCQceduQZCQj3P3xm32pChRLqRrtXTlqhIw==} + + '@actions/http-client@3.0.1': + resolution: {integrity: sha512-SbGS8c/vySbNO3kjFgSW77n83C4MQx/Yoe+b1hAdpuvfHxnkHzDq2pWljUpAA56Si1Gae/7zjeZsV0CYjmLo/w==} + + '@actions/io@2.0.0': + resolution: {integrity: sha512-Jv33IN09XLO+0HS79aaODsvIRyduiF7NY/F6LYeK5oeUmrsz7aFdRphQjFoESF4jS7lMauDOttKALcpapVDIAg==} + '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -920,67 +947,6 @@ packages: '@braintree/sanitize-url@7.1.1': resolution: {integrity: sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==} - '@changesets/apply-release-plan@7.0.14': - resolution: {integrity: sha512-ddBvf9PHdy2YY0OUiEl3TV78mH9sckndJR14QAt87KLEbIov81XO0q0QAmvooBxXlqRRP8I9B7XOzZwQG7JkWA==} - - '@changesets/assemble-release-plan@6.0.9': - resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} - - '@changesets/changelog-git@0.2.1': - resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} - - '@changesets/changelog-github@0.5.2': - resolution: {integrity: sha512-HeGeDl8HaIGj9fQHo/tv5XKQ2SNEi9+9yl1Bss1jttPqeiASRXhfi0A2wv8yFKCp07kR1gpOI5ge6+CWNm1jPw==} - - '@changesets/cli@2.29.8': - resolution: {integrity: sha512-1weuGZpP63YWUYjay/E84qqwcnt5yJMM0tep10Up7Q5cS/DGe2IZ0Uj3HNMxGhCINZuR7aO9WBMdKnPit5ZDPA==} - hasBin: true - - '@changesets/config@3.1.2': - resolution: {integrity: sha512-CYiRhA4bWKemdYi/uwImjPxqWNpqGPNbEBdX1BdONALFIDK7MCUj6FPkzD+z9gJcvDFUQJn9aDVf4UG7OT6Kog==} - - '@changesets/errors@0.2.0': - resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} - - '@changesets/get-dependents-graph@2.1.3': - resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} - - '@changesets/get-github-info@0.7.0': - resolution: {integrity: sha512-+i67Bmhfj9V4KfDeS1+Tz3iF32btKZB2AAx+cYMqDSRFP7r3/ZdGbjCo+c6qkyViN9ygDuBjzageuPGJtKGe5A==} - - '@changesets/get-release-plan@4.0.14': - resolution: {integrity: sha512-yjZMHpUHgl4Xl5gRlolVuxDkm4HgSJqT93Ri1Uz8kGrQb+5iJ8dkXJ20M2j/Y4iV5QzS2c5SeTxVSKX+2eMI0g==} - - '@changesets/get-version-range-type@0.4.0': - resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} - - '@changesets/git@3.0.4': - resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} - - '@changesets/logger@0.1.1': - resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} - - '@changesets/parse@0.4.2': - resolution: {integrity: sha512-Uo5MC5mfg4OM0jU3up66fmSn6/NE9INK+8/Vn/7sMVcdWg46zfbvvUSjD9EMonVqPi9fbrJH9SXHn48Tr1f2yA==} - - '@changesets/pre@2.0.2': - resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} - - '@changesets/read@0.6.6': - resolution: {integrity: sha512-P5QaN9hJSQQKJShzzpBT13FzOSPyHbqdoIBUd2DJdgvnECCyO6LmAOWSV+O8se2TaZJVwSXjL+v9yhb+a9JeJg==} - - '@changesets/should-skip-package@0.1.2': - resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} - - '@changesets/types@4.1.0': - resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} - - '@changesets/types@6.1.0': - resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} - - '@changesets/write@0.4.0': - resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} - '@chevrotain/cst-dts-gen@11.0.3': resolution: {integrity: sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==} @@ -1039,6 +1005,10 @@ packages: cpu: [x64] os: [win32] + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + '@commitlint/cli@20.3.1': resolution: {integrity: sha512-NtInjSlyev/+SLPvx/ulz8hRE25Wf5S9dLNDcIwazq0JyB4/w1ROF/5nV0ObPTX8YpRaKYeKtXDYWqumBNHWsw==} engines: {node: '>=v18'} @@ -1477,6 +1447,10 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@fastify/busboy@2.1.1': + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + engines: {node: '>=14'} + '@floating-ui/core@1.7.3': resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} @@ -1724,15 +1698,6 @@ packages: '@types/node': optional: true - '@inquirer/external-editor@1.0.3': - resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@inquirer/external-editor@2.0.3': resolution: {integrity: sha512-LgyI7Agbda74/cL5MvA88iDpvdXI2KuMBCGRkbCl2Dg1vzHeOgs+s0SDcXV7b+WZJrv2+ERpWSM65Fpi9VfY3w==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} @@ -1845,12 +1810,6 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@manypkg/find-root@1.1.0': - resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} - - '@manypkg/get-packages@1.1.3': - resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - '@mdx-js/mdx@3.1.1': resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} @@ -2032,6 +1991,54 @@ packages: resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} engines: {node: '>=12.4.0'} + '@octokit/auth-token@6.0.0': + resolution: {integrity: sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==} + engines: {node: '>= 20'} + + '@octokit/core@7.0.6': + resolution: {integrity: sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==} + engines: {node: '>= 20'} + + '@octokit/endpoint@11.0.2': + resolution: {integrity: sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ==} + engines: {node: '>= 20'} + + '@octokit/graphql@9.0.3': + resolution: {integrity: sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==} + engines: {node: '>= 20'} + + '@octokit/openapi-types@27.0.0': + resolution: {integrity: sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==} + + '@octokit/plugin-paginate-rest@14.0.0': + resolution: {integrity: sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==} + engines: {node: '>= 20'} + peerDependencies: + '@octokit/core': '>=6' + + '@octokit/plugin-retry@8.0.3': + resolution: {integrity: sha512-vKGx1i3MC0za53IzYBSBXcrhmd+daQDzuZfYDd52X5S0M2otf3kVZTVP8bLA3EkU0lTvd1WEC2OlNNa4G+dohA==} + engines: {node: '>= 20'} + peerDependencies: + '@octokit/core': '>=7' + + '@octokit/plugin-throttling@11.0.3': + resolution: {integrity: sha512-34eE0RkFCKycLl2D2kq7W+LovheM/ex3AwZCYN8udpi6bxsyjZidb2McXs69hZhLmJlDqTSP8cH+jSRpiaijBg==} + engines: {node: '>= 20'} + peerDependencies: + '@octokit/core': ^7.0.0 + + '@octokit/request-error@7.1.0': + resolution: {integrity: sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==} + engines: {node: '>= 20'} + + '@octokit/request@10.0.7': + resolution: {integrity: sha512-v93h0i1yu4idj8qFPZwjehoJx4j3Ntn+JhXsdJrG9pYaX6j/XRz2RmasMUHtNgQD39nrv/VwTWSqK0RNXR8upA==} + engines: {node: '>= 20'} + + '@octokit/types@16.0.0': + resolution: {integrity: sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==} + '@pagefind/darwin-arm64@1.4.0': resolution: {integrity: sha512-2vMqkbv3lbx1Awea90gTaBsvpzgRs7MuSgKDxW0m9oV1GPZCZbZBJg/qL83GIUEN2BFlY46dtUZi54pwH+/pTQ==} cpu: [arm64] @@ -2066,6 +2073,18 @@ packages: resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@pnpm/config.env-replace@1.1.0': + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + engines: {node: '>=12.22.0'} + + '@pnpm/network.ca-file@1.0.2': + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} + + '@pnpm/npm-conf@3.0.2': + resolution: {integrity: sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==} + engines: {node: '>=12'} + '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} @@ -2925,6 +2944,53 @@ packages: '@rushstack/eslint-patch@1.15.0': resolution: {integrity: sha512-ojSshQPKwVvSMR8yT2L/QtUkV5SXi/IfDiJ4/8d6UbTPjiHVmxZzUAzGD8Tzks1b9+qQkZa0isUOvYObedITaw==} + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + + '@semantic-release/changelog@6.0.3': + resolution: {integrity: sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==} + engines: {node: '>=14.17'} + peerDependencies: + semantic-release: '>=18.0.0' + + '@semantic-release/commit-analyzer@13.0.1': + resolution: {integrity: sha512-wdnBPHKkr9HhNhXOhZD5a2LNl91+hs8CC2vsAVYxtZH3y0dV3wKn+uZSN61rdJQZ8EGxzWB3inWocBHV9+u/CQ==} + engines: {node: '>=20.8.1'} + peerDependencies: + semantic-release: '>=20.1.0' + + '@semantic-release/error@3.0.0': + resolution: {integrity: sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==} + engines: {node: '>=14.17'} + + '@semantic-release/error@4.0.0': + resolution: {integrity: sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==} + engines: {node: '>=18'} + + '@semantic-release/git@10.0.1': + resolution: {integrity: sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==} + engines: {node: '>=14.17'} + peerDependencies: + semantic-release: '>=18.0.0' + + '@semantic-release/github@12.0.2': + resolution: {integrity: sha512-qyqLS+aSGH1SfXIooBKjs7mvrv0deg8v+jemegfJg1kq6ji+GJV8CO08VJDEsvjp3O8XJmTTIAjjZbMzagzsdw==} + engines: {node: ^22.14.0 || >= 24.10.0} + peerDependencies: + semantic-release: '>=24.1.0' + + '@semantic-release/npm@13.1.3': + resolution: {integrity: sha512-q7zreY8n9V0FIP1Cbu63D+lXtRAVAIWb30MH5U3TdrfXt6r2MIrWCY0whAImN53qNvSGp0Zt07U95K+Qp9GpEg==} + engines: {node: ^22.14.0 || >= 24.10.0} + peerDependencies: + semantic-release: '>=20.1.0' + + '@semantic-release/release-notes-generator@14.1.0': + resolution: {integrity: sha512-CcyDRk7xq+ON/20YNR+1I/jP7BYKICr1uKd1HHpROSnnTdGqOTburi4jcRiTYz0cpfhxSloQO3cGhnoot7IEkA==} + engines: {node: '>=20.8.1'} + peerDependencies: + semantic-release: '>=20.1.0' + '@shikijs/core@3.21.0': resolution: {integrity: sha512-AXSQu/2n1UIQekY8euBJlvFYZIw0PHY63jUzGbrOma4wPxzznJXTXkri+QcHeBNaFxiiOljKxxJkVSoB3PjbyA==} @@ -2951,10 +3017,18 @@ packages: '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + '@sindresorhus/is@7.2.0': resolution: {integrity: sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==} engines: {node: '>=18'} + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + '@speed-highlight/core@1.2.14': resolution: {integrity: sha512-G4ewlBNhUtlLvrJTb88d2mdy2KRijzs4UhnlrOSRT4bmjh/IqNElZa3zkrZ+TC47TwtlDWzVLFADljF1Ijp5hA==} @@ -3352,12 +3426,12 @@ packages: '@types/nlcst@2.0.3': resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@25.0.10': resolution: {integrity: sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg==} + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + '@types/offscreencanvas@2019.7.3': resolution: {integrity: sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==} @@ -3626,15 +3700,27 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + + aggregate-error@5.0.0: + resolution: {integrity: sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==} + engines: {node: '>=18'} + ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} + ansi-escapes@7.2.0: + resolution: {integrity: sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==} + engines: {node: '>=18'} ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} @@ -3644,6 +3730,10 @@ packages: resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -3664,6 +3754,9 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + argv-formatter@1.0.0: + resolution: {integrity: sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==} + aria-hidden@1.2.6: resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} engines: {node: '>=10'} @@ -3686,10 +3779,6 @@ packages: array-iterate@2.0.1: resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - array.prototype.findlast@1.2.5: resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} engines: {node: '>= 0.4'} @@ -3772,9 +3861,8 @@ packages: resolution: {integrity: sha512-agD0MgJFUP/4nvjqzIB29zRPUuCF7Ge6mEv9s8dHrtYD7QWXRcx75rOADE/d5ah1NI+0vkDl0yorDd5U852IQQ==} hasBin: true - better-path-resolve@1.0.0: - resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} - engines: {node: '>=4'} + before-after-hook@4.0.0: + resolution: {integrity: sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==} better-react-mathjax@2.3.0: resolution: {integrity: sha512-K0ceQC+jQmB+NLDogO5HCpqmYf18AU2FxDbLdduYgkHYWZApFggkHE4dIaXCV1NqeoscESYXXo1GSkY6fA295w==} @@ -3790,6 +3878,9 @@ packages: boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + bottleneck@2.19.5: + resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} + brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} @@ -3854,6 +3945,10 @@ packages: resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -3862,6 +3957,10 @@ packages: resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} @@ -3889,21 +3988,34 @@ packages: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} - ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - class-variance-authority@0.7.1: resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + + clean-stack@5.3.0: + resolution: {integrity: sha512-9ngPTOhYGQqNVSfeJkYXHmF7AGWp4/nN5D/QqNQs3Dvxd1Kk/WpjHfNujKHYUQ/5CoGyOyFNoWSPk5afzP0QVg==} + engines: {node: '>=14.16'} + cli-cursor@5.0.0: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} + cli-highlight@2.1.11: + resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} + hasBin: true + cli-spinners@3.4.0: resolution: {integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==} engines: {node: '>=18.20'} + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} + cli-width@4.1.0: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} @@ -3915,10 +4027,17 @@ packages: resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} engines: {node: '>=18'} + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} + cliui@9.0.1: + resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} + engines: {node: '>=20'} + clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} @@ -3935,10 +4054,16 @@ packages: collapse-white-space@2.1.0: resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -3977,6 +4102,9 @@ packages: confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + consola@3.4.2: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} @@ -3985,15 +4113,37 @@ packages: resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} engines: {node: '>=16'} + conventional-changelog-angular@8.1.0: + resolution: {integrity: sha512-GGf2Nipn1RUCAktxuVauVr1e3r8QrLP/B0lEUsFktmGqc3ddbQkhoJZHJctVU829U1c6mTSWftrVOCHaL85Q3w==} + engines: {node: '>=18'} + conventional-changelog-conventionalcommits@7.0.2: resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} engines: {node: '>=16'} + conventional-changelog-writer@8.2.0: + resolution: {integrity: sha512-Y2aW4596l9AEvFJRwFGJGiQjt2sBYTjPD18DdvxX9Vpz0Z7HQ+g1Z+6iYDAm1vR3QOJrDBkRHixHK/+FhkR6Pw==} + engines: {node: '>=18'} + hasBin: true + + conventional-commits-filter@5.0.0: + resolution: {integrity: sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==} + engines: {node: '>=18'} + conventional-commits-parser@5.0.0: resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} engines: {node: '>=16'} hasBin: true + conventional-commits-parser@6.2.1: + resolution: {integrity: sha512-20pyHgnO40rvfI0NGF/xiEoFMkXDtkF8FwHvk5BokoFoCuTQRI8vrNCNFWUOfuolKJMm1tPCHc8GgYEtr1XRNA==} + engines: {node: '>=18'} + hasBin: true + + convert-hrtime@5.0.0: + resolution: {integrity: sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==} + engines: {node: '>=12'} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -4004,6 +4154,9 @@ packages: core-js-compat@3.48.0: resolution: {integrity: sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==} + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + cose-base@1.0.3: resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} @@ -4045,6 +4198,10 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + crypto-random-string@4.0.0: + resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} + engines: {node: '>=12'} + css-select@5.2.2: resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} @@ -4242,9 +4399,6 @@ packages: resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} - dataloader@1.4.0: - resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} - date-fns-jalali@4.1.0-0: resolution: {integrity: sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg==} @@ -4277,6 +4431,10 @@ packages: decode-named-character-reference@1.3.0: resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -4302,10 +4460,6 @@ packages: detect-gpu@5.0.70: resolution: {integrity: sha512-bqerEP1Ese6nt3rFkwPnGbsUF9a4q+gMmpTVVOEzoCyeCc+y7/RvJnQZJx1JwhgQI5Ntg0Kgat8Uu7XpBqnz1w==} - detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -4350,10 +4504,6 @@ packages: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} - dotenv@8.6.0: - resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} - engines: {node: '>=10'} - draco3d@1.5.7: resolution: {integrity: sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ==} @@ -4361,6 +4511,9 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + duplexer2@0.1.4: + resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} + electron-to-chromium@1.5.267: resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} @@ -4386,14 +4539,13 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + emojilib@2.4.0: + resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} + enhanced-resolve@5.18.4: resolution: {integrity: sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==} engines: {node: '>=10.13.0'} - enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} - engines: {node: '>=8.6'} - entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -4402,10 +4554,18 @@ packages: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} + env-ci@11.2.0: + resolution: {integrity: sha512-D5kWfzkmaOQDioPmiviWAVtKmpPT4/iJmMVQxWxMPJTFyTkdc5JQUfc5iXEeWxcOdsYTKSAiA/Age4NUOqKsRA==} + engines: {node: ^18.17 || >=20.6.1} + env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + error-ex@1.3.4: resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} @@ -4467,6 +4627,10 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -4669,10 +4833,18 @@ packages: eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} + execa@9.6.1: + resolution: {integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==} + engines: {node: ^18.19.0 || >=20.5.0} + expect-type@1.3.0: resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} @@ -4684,8 +4856,8 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - extendable-error@0.1.7: - resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + fast-content-type-parse@3.0.0: + resolution: {integrity: sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==} fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -4735,6 +4907,14 @@ packages: fflate@0.8.2: resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + figures@2.0.0: + resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==} + engines: {node: '>=4'} + + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -4743,9 +4923,13 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} + find-up-simple@1.0.1: + resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} + engines: {node: '>=18'} + + find-up@2.1.0: + resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} + engines: {node: '>=4'} find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} @@ -4755,6 +4939,10 @@ packages: resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} engines: {node: '>=18'} + find-versions@6.0.0: + resolution: {integrity: sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==} + engines: {node: '>=18'} + fix-dts-default-cjs-exports@1.0.1: resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} @@ -4787,13 +4975,12 @@ packages: react-dom: optional: true - fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} + from2@2.3.0: + resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} - fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} + fs-extra@11.3.3: + resolution: {integrity: sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==} + engines: {node: '>=14.14'} fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} @@ -4803,6 +4990,10 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + function-timeout@1.0.2: + resolution: {integrity: sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==} + engines: {node: '>=18'} + function.prototype.name@1.1.8: resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} engines: {node: '>= 0.4'} @@ -4838,10 +5029,22 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-stream@7.0.1: + resolution: {integrity: sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==} + engines: {node: '>=16'} + get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} + get-symbol-description@1.1.0: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} @@ -4849,6 +5052,9 @@ packages: get-tsconfig@4.13.0: resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} + git-log-parser@1.2.1: + resolution: {integrity: sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==} + git-raw-commits@4.0.0: resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} engines: {node: '>=16'} @@ -4877,10 +5083,6 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - glsl-noise@0.0.0: resolution: {integrity: sha512-b/ZCF6amfAUb7dJM/MxRs7AetQEahYzJ8PtgfrmEdtw6uyGOr+ZSGtgjFm6mfsBkxJ4d2W7kg+Nlqzqvn3Bc0w==} @@ -4888,6 +5090,9 @@ packages: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} + graceful-fs@4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -4898,10 +5103,19 @@ packages: hachure-fill@0.5.2: resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} + handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + has-bigints@1.1.0: resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} engines: {node: '>= 0.4'} + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -4976,23 +5190,50 @@ packages: hermes-parser@0.25.1: resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} + highlight.js@10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + hls.js@1.6.15: resolution: {integrity: sha512-E3a5VwgXimGHwpRGV+WxRTKeSp2DW5DI5MWv34ulL3t5UNmyJWCQ1KmLEHbYzcfThfXG8amBL+fCYPneGHC4VA==} + hook-std@4.0.0: + resolution: {integrity: sha512-IHI4bEVOt3vRUDJ+bFA9VUJlo7SzvFARPNLw75pqSmAOP2HmTWfFJtPvLBrDrlgjEYXY9zs7SFdHPQaJShkSCQ==} + engines: {node: '>=20'} + + hosted-git-info@7.0.2: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} + + hosted-git-info@9.0.2: + resolution: {integrity: sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==} + engines: {node: ^20.17.0 || >=22.9.0} + html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - human-id@4.1.3: - resolution: {integrity: sha512-tsYlhAYpjCKa//8rXZ9DqKEawhPoSytweBC2eNvcaDK+57RZLHGqNs3PZTQO6yekLFSuvA6AlnAfrw1uBvtb+Q==} - hasBin: true + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} + human-signals@8.0.1: + resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} + engines: {node: '>=18.18.0'} + husky@9.1.7: resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} engines: {node: '>=18'} @@ -5024,6 +5265,10 @@ packages: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} + import-from-esm@2.0.0: + resolution: {integrity: sha512-YVt14UZCgsX1vZQ3gKjkWVdBdHQ6eu3MPU1TBgL1H5orXe2+jWD006WCPPtOuwlQm10NuzOW5WawiF1Q9veW8g==} + engines: {node: '>=18.20'} + import-meta-resolve@4.2.0: resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} @@ -5031,6 +5276,24 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + indent-string@5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + engines: {node: '>=12'} + + index-to-position@1.2.0: + resolution: {integrity: sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==} + engines: {node: '>=18'} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + ini@4.1.1: resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -5064,6 +5327,10 @@ packages: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} + into-stream@7.0.0: + resolution: {integrity: sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==} + engines: {node: '>=12'} + is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} @@ -5191,18 +5458,22 @@ packages: resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} engines: {node: '>= 0.4'} + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + is-string@1.1.1: resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} - is-subdir@1.2.0: - resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} - engines: {node: '>=4'} - is-symbol@1.1.1: resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} engines: {node: '>= 0.4'} @@ -5231,10 +5502,6 @@ packages: resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} - is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - is-wsl@3.1.0: resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} @@ -5243,12 +5510,19 @@ packages: resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==} engines: {node: '>=18'} + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + issue-parser@7.0.1: + resolution: {integrity: sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==} + engines: {node: ^18.17 || >=20.6.1} + istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} @@ -5270,6 +5544,10 @@ packages: peerDependencies: react: ^19.0.0 + java-properties@1.0.2: + resolution: {integrity: sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==} + engines: {node: '>= 0.6.0'} + jiti@2.6.1: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true @@ -5300,6 +5578,9 @@ packages: json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} @@ -5328,8 +5609,8 @@ packages: jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} - jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + jsonfile@6.2.0: + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} @@ -5458,13 +5739,17 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + load-tsconfig@0.2.5: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + locate-path@2.0.0: + resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} + engines: {node: '>=4'} locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} @@ -5483,12 +5768,21 @@ packages: lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + lodash.capitalize@4.2.1: + resolution: {integrity: sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==} + lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + lodash.escaperegexp@4.1.2: + resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} + lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + lodash.kebabcase@4.1.1: resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} @@ -5507,6 +5801,9 @@ packages: lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + lodash.uniqby@4.7.0: + resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} + lodash.upperfirst@4.3.1: resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} @@ -5527,6 +5824,13 @@ packages: lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@11.2.5: + resolution: {integrity: sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -5547,6 +5851,10 @@ packages: magicast@0.5.1: resolution: {integrity: sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==} + make-asynchronous@1.0.1: + resolution: {integrity: sha512-T9BPOmEOhp6SmV25SwLVcHK4E6JyG/coH3C6F1NjNXSziv/fd4GmsqMk8YR6qpPOswfaOCApSNkZv6fxoaYFcQ==} + engines: {node: '>=18'} + make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} @@ -5558,6 +5866,17 @@ packages: markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + marked-terminal@7.3.0: + resolution: {integrity: sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw==} + engines: {node: '>=16.0.0'} + peerDependencies: + marked: '>=1 <16' + + marked@15.0.12: + resolution: {integrity: sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==} + engines: {node: '>= 18'} + hasBin: true + marked@16.4.2: resolution: {integrity: sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==} engines: {node: '>= 20'} @@ -5635,6 +5954,10 @@ packages: resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} engines: {node: '>=16.10'} + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} + merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -5771,6 +6094,15 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} + mime@4.1.0: + resolution: {integrity: sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==} + engines: {node: '>=16'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -5814,10 +6146,6 @@ packages: motion-utils@12.27.2: resolution: {integrity: sha512-B55gcoL85Mcdt2IEStY5EEAsrMSVE2sI14xQ/uAdPL+mfQxhKKFaEag9JmfxedJOR4vZpBGoPeC/Gm13I/4g5Q==} - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - mrmime@2.0.1: resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} @@ -5849,6 +6177,12 @@ packages: resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} engines: {node: '>= 0.6'} + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + nerf-dart@1.0.0: + resolution: {integrity: sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==} + next-themes@0.4.6: resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==} peerDependencies: @@ -5898,26 +6232,113 @@ packages: no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true + node-emoji@2.2.0: + resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==} + engines: {node: '>=18'} node-releases@2.0.27: resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + normalize-package-data@6.0.2: + resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} + engines: {node: ^16.14.0 || >=18.0.0} + + normalize-package-data@8.0.0: + resolution: {integrity: sha512-RWk+PI433eESQ7ounYxIp67CYuVsS1uYSonX3kA6ps/3LWfjVQa/ptEg6Y3T6uAMq1mWpX9PQ+qx+QaHpsc7gQ==} + engines: {node: ^20.17.0 || >=22.9.0} + + normalize-url@8.1.1: + resolution: {integrity: sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==} + engines: {node: '>=14.16'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} + npm-to-yarn@3.0.1: resolution: {integrity: sha512-tt6PvKu4WyzPwWUzy/hvPFqn+uwXO0K1ZHka8az3NnrhWJDmSqI8ncWq0fkL0k/lmmi5tAC11FXwXuh0rFbt1A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + npm@11.8.0: + resolution: {integrity: sha512-n19sJeW+RGKdkHo8SCc5xhSwkKhQUFfZaFzSc+EsYXLjSqIV0tl72aDYQVuzVvfrbysGwdaQsNLNy58J10EBSQ==} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + bundledDependencies: + - '@isaacs/string-locale-compare' + - '@npmcli/arborist' + - '@npmcli/config' + - '@npmcli/fs' + - '@npmcli/map-workspaces' + - '@npmcli/metavuln-calculator' + - '@npmcli/package-json' + - '@npmcli/promise-spawn' + - '@npmcli/redact' + - '@npmcli/run-script' + - '@sigstore/tuf' + - abbrev + - archy + - cacache + - chalk + - ci-info + - cli-columns + - fastest-levenshtein + - fs-minipass + - glob + - graceful-fs + - hosted-git-info + - ini + - init-package-json + - is-cidr + - json-parse-even-better-errors + - libnpmaccess + - libnpmdiff + - libnpmexec + - libnpmfund + - libnpmorg + - libnpmpack + - libnpmpublish + - libnpmsearch + - libnpmteam + - libnpmversion + - make-fetch-happen + - minimatch + - minipass + - minipass-pipeline + - ms + - node-gyp + - nopt + - npm-audit-report + - npm-install-checks + - npm-package-arg + - npm-pick-manifest + - npm-profile + - npm-registry-fetch + - npm-user-validate + - p-map + - pacote + - parse-conflict-json + - proc-log + - qrcode-terminal + - read + - semver + - spdx-expression-parse + - ssri + - supports-color + - tar + - text-table + - tiny-relative-date + - treeverse + - validate-npm-package-name + - which + nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -5956,6 +6377,10 @@ packages: obug@2.1.1: resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} @@ -5978,20 +6403,29 @@ packages: resolution: {integrity: sha512-53uuLsXHOAJl5zLrUrzY9/kE+uIFEx7iaH4g2BIJQK4LZjY4LpCCYZVKDWIkL+F01wAaCg93duQ1whnK/AmY1A==} engines: {node: '>=20'} - outdent@0.5.0: - resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - own-keys@1.0.1: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} - p-filter@2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + p-each-series@3.0.0: + resolution: {integrity: sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==} + engines: {node: '>=12'} + + p-event@6.0.1: + resolution: {integrity: sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==} + engines: {node: '>=16.17'} + + p-filter@4.1.0: + resolution: {integrity: sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==} + engines: {node: '>=18'} + + p-is-promise@3.0.0: + resolution: {integrity: sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==} engines: {node: '>=8'} - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} + p-limit@1.3.0: + resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} + engines: {node: '>=4'} p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} @@ -6001,9 +6435,9 @@ packages: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} + p-locate@2.0.0: + resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} + engines: {node: '>=4'} p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} @@ -6013,16 +6447,25 @@ packages: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} + p-map@7.0.4: + resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} + engines: {node: '>=18'} - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} + p-reduce@2.1.0: + resolution: {integrity: sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==} + engines: {node: '>=8'} - package-manager-detector@0.2.11: - resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} + p-reduce@3.0.0: + resolution: {integrity: sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==} + engines: {node: '>=12'} + + p-timeout@6.1.4: + resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} + engines: {node: '>=14.16'} + + p-try@1.0.0: + resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} + engines: {node: '>=4'} package-manager-detector@1.6.0: resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} @@ -6038,16 +6481,37 @@ packages: parse-entities@4.0.2: resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} + parse-json@8.3.0: + resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} + engines: {node: '>=18'} + parse-latin@7.0.0: resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + parse-numeric-range@1.3.0: resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} + parse5-htmlparser2-tree-adapter@6.0.1: + resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} + + parse5@5.1.1: + resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} + + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} @@ -6057,6 +6521,10 @@ packages: path-data-parser@0.1.0: resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -6097,14 +6565,18 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} pirates@4.0.7: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} + pkg-conf@2.1.0: + resolution: {integrity: sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==} + engines: {node: '>=4'} + pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} @@ -6210,16 +6682,18 @@ packages: prettier-plugin-svelte: optional: true - prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - prettier@3.8.1: resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} engines: {node: '>=14'} hasBin: true + pretty-ms@9.3.0: + resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} + engines: {node: '>=18'} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + promise-worker-transferable@1.0.4: resolution: {integrity: sha512-bN+0ehEnrXfxV2ZQvU2PetO0n4gqBD4ulq3MI1WOPLgr7/Mg9yRQkX5+0v1vagr74ZTsl7XtzlaYDo2EuCeYJw==} @@ -6229,16 +6703,20 @@ packages: property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - quansync@0.2.11: - resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} - queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + react-compiler-runtime@19.1.0-rc.3: resolution: {integrity: sha512-Cssogys2XZu6SqxRdX2xd8cQAf57BBvFbLEBlIa77161lninbKUn/EqbecCe7W3eqDQfg3rIoOwzExzgCh7h/g==} peerDependencies: @@ -6334,9 +6812,24 @@ packages: resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} engines: {node: '>=0.10.0'} - read-yaml-file@1.1.0: - resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} - engines: {node: '>=6'} + read-package-up@11.0.0: + resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} + engines: {node: '>=18'} + + read-package-up@12.0.0: + resolution: {integrity: sha512-Q5hMVBYur/eQNWDdbF4/Wqqr9Bjvtrw2kjGxxBbKLbx8bVCL8gcArjTy8zDUuLGQicftpMuU0riQNcAsbtOVsw==} + engines: {node: '>=20'} + + read-pkg@10.0.0: + resolution: {integrity: sha512-A70UlgfNdKI5NSvTTfHzLQj7NJRpJ4mT5tGafkllJ4wh71oYuGm/pzphHcmW4s35iox56KSK721AihodoXSc/A==} + engines: {node: '>=20'} + + read-pkg@9.0.1: + resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} + engines: {node: '>=18'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} readdirp@4.1.2: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} @@ -6397,6 +6890,10 @@ packages: resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} engines: {node: '>=4'} + registry-auth-token@5.1.1: + resolution: {integrity: sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==} + engines: {node: '>=14'} + regjsgen@0.8.0: resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} @@ -6526,6 +7023,9 @@ packages: resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + safe-push-apply@1.0.0: resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} engines: {node: '>= 0.4'} @@ -6547,6 +7047,20 @@ packages: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} engines: {node: '>=4'} + semantic-release@25.0.2: + resolution: {integrity: sha512-6qGjWccl5yoyugHt3jTgztJ9Y0JVzyH8/Voc/D8PlLat9pwxQYXz7W1Dpnq5h0/G5GCYGUaDSlYcyk3AMh5A6g==} + engines: {node: ^22.14.0 || >= 24.10.0} + hasBin: true + + semver-diff@5.0.0: + resolution: {integrity: sha512-0HbGtOm+S7T6NGQ/pxJSJipJvc4DK3FcRVMRkhsIwJDJ4Jcz5DQC1cPPzB5GhzyHjwttW878HaWQq46CkL3cqg==} + engines: {node: '>=12'} + deprecated: Deprecated as the semver package now supports this built-in. + + semver-regex@4.0.5: + resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==} + engines: {node: '>=12'} + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -6605,16 +7119,23 @@ packages: siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + signale@1.4.0: + resolution: {integrity: sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==} + engines: {node: '>=6'} + sirv@3.0.2: resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} engines: {node: '>=18'} - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + skin-tone@2.0.0: + resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} engines: {node: '>=8'} slash@5.1.0: @@ -6634,6 +7155,10 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + source-map@0.7.6: resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} engines: {node: '>= 12'} @@ -6641,13 +7166,28 @@ packages: space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - spawndamnit@3.0.1: - resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} + spawn-error-forwarder@1.0.0: + resolution: {integrity: sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.22: + resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} speech-rule-engine@4.1.2: resolution: {integrity: sha512-S6ji+flMEga+1QU79NDbwZ8Ivf0S/MpupQQiIC0rTpU/ZTKgcajijJJb1OcByBQDjrXCN1/DJtGz4ZJeBMPGJw==} hasBin: true + split2@1.0.0: + resolution: {integrity: sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==} + split2@4.2.0: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} @@ -6681,6 +7221,9 @@ packages: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} + stream-combiner2@1.1.1: + resolution: {integrity: sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==} + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -6716,6 +7259,9 @@ packages: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} @@ -6735,10 +7281,22 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -6770,14 +7328,26 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true + super-regex@1.1.0: + resolution: {integrity: sha512-WHkws2ZflZe41zj6AolvvmaTrWds/VuyeYr9iPVv/oQeaIoVxMKaushfFWpOGDT+GuBrM/sVqF8KUCYQlSSTdQ==} + engines: {node: '>=18'} + supports-color@10.2.2: resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} engines: {node: '>=18'} + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + supports-hyperlinks@3.2.0: + resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} + engines: {node: '>=14.18'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -6806,6 +7376,10 @@ packages: tabbable@6.4.0: resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} + tagged-tag@1.0.0: + resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} + engines: {node: '>=20'} + tailwind-merge@3.4.0: resolution: {integrity: sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==} @@ -6816,9 +7390,13 @@ packages: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} - term-size@2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} + temp-dir@3.0.0: + resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} + engines: {node: '>=14.16'} + + tempy@3.1.2: + resolution: {integrity: sha512-pD3+21EbFZFBKDnVztX32wU6IBwkalOduWdx1OKvB5y6y1f2Xn8HU/U6o9EmlfdSyUYe9IybirmYPj/7rilA6Q==} + engines: {node: '>=14.16'} text-extensions@2.4.0: resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} @@ -6844,9 +7422,16 @@ packages: three@0.182.0: resolution: {integrity: sha512-GbHabT+Irv+ihI1/f5kIIsZ+Ef9Sl5A1Y7imvS5RQjWgtTPfPnZ43JmlYI7NtCRDK9zir20lQpfg8/9Yd02OvQ==} + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + time-span@5.1.0: + resolution: {integrity: sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==} + engines: {node: '>=12'} + tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} @@ -6880,8 +7465,9 @@ packages: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + traverse@0.6.8: + resolution: {integrity: sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==} + engines: {node: '>= 0.4'} tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} @@ -6955,6 +7541,10 @@ packages: tunnel-rat@0.1.2: resolution: {integrity: sha512-lR5VHmkPhzdhrM092lI2nACsLO4QubF0/yoOhzX7c+wIpbN1GjHNzCc91QlpxBi+cnx8vVJ+Ur6vL5cEoQPFpQ==} + tunnel@0.0.6: + resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} + engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} + tw-animate-css@1.4.0: resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==} @@ -6970,6 +7560,22 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} + type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + + type-fest@5.4.1: + resolution: {integrity: sha512-xygQcmneDyzsEuKZrFbRMne5HDqMs++aFzefrJTgEIKjQ3rekM+RPfFCVq2Gp1VIDqddoYeppCj4Pcb+RZW0GQ==} + engines: {node: '>=20'} + typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} @@ -7001,6 +7607,11 @@ packages: ufo@1.6.3: resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} + uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} + engines: {node: '>=0.8.0'} + hasBin: true + unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} @@ -7008,6 +7619,10 @@ packages: undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + undici@5.29.0: + resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} + engines: {node: '>=14.0'} + undici@7.18.2: resolution: {integrity: sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==} engines: {node: '>=20.18.1'} @@ -7019,6 +7634,10 @@ packages: resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} engines: {node: '>=4'} + unicode-emoji-modifier-base@1.0.0: + resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} + engines: {node: '>=4'} + unicode-match-property-ecmascript@2.0.0: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} engines: {node: '>=4'} @@ -7035,9 +7654,17 @@ packages: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + unique-string@3.0.0: + resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} + engines: {node: '>=12'} + unist-util-find-after@5.0.0: resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} @@ -7080,9 +7707,12 @@ packages: unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} + universal-user-agent@7.0.3: + resolution: {integrity: sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} unrs-resolver@1.11.1: resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} @@ -7096,6 +7726,10 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + url-join@5.0.0: + resolution: {integrity: sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + use-callback-ref@1.3.3: resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} @@ -7121,6 +7755,9 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + utility-types@3.11.0: resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} engines: {node: '>= 4'} @@ -7129,6 +7766,9 @@ packages: resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} hasBin: true + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + vaul@1.1.2: resolution: {integrity: sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==} peerDependencies: @@ -7244,18 +7884,15 @@ packages: web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + web-worker@1.2.0: + resolution: {integrity: sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==} + webgl-constants@1.1.1: resolution: {integrity: sha512-LkBXKjU5r9vAW7Gcu3T5u+5cvSvh5WwINdr0C+9jpzVB41cjQAP5ePArDtk/WHYdVj0GefCgM73BA7FlIiNtdg==} webgl-sdf-generator@1.1.1: resolution: {integrity: sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA==} - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -7289,6 +7926,9 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + workerd@1.20260120.0: resolution: {integrity: sha512-R6X/VQOkwLTBGLp4VRUwLQZZVxZ9T9J8pGiJ6GQUMaRkY7TVWrCSkVfoNMM1/YyFsY5UYhhPoQe5IehnhZ3Pdw==} engines: {node: '>=16'} @@ -7324,6 +7964,10 @@ packages: utf-8-validate: optional: true + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -7336,14 +7980,30 @@ packages: engines: {node: '>= 14.6'} hasBin: true + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + yargs-parser@22.0.0: + resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} + yargs@18.0.0: + resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -7412,6 +8072,22 @@ packages: snapshots: + '@actions/core@2.0.2': + dependencies: + '@actions/exec': 2.0.0 + '@actions/http-client': 3.0.1 + + '@actions/exec@2.0.0': + dependencies: + '@actions/io': 2.0.0 + + '@actions/http-client@3.0.1': + dependencies: + tunnel: 0.0.6 + undici: 5.29.0 + + '@actions/io@2.0.0': {} + '@alloc/quick-lru@5.2.0': {} '@antfu/install-pkg@1.1.0': @@ -8155,165 +8831,6 @@ snapshots: '@braintree/sanitize-url@7.1.1': {} - '@changesets/apply-release-plan@7.0.14': - dependencies: - '@changesets/config': 3.1.2 - '@changesets/get-version-range-type': 0.4.0 - '@changesets/git': 3.0.4 - '@changesets/should-skip-package': 0.1.2 - '@changesets/types': 6.1.0 - '@manypkg/get-packages': 1.1.3 - detect-indent: 6.1.0 - fs-extra: 7.0.1 - lodash.startcase: 4.4.0 - outdent: 0.5.0 - prettier: 2.8.8 - resolve-from: 5.0.0 - semver: 7.7.3 - - '@changesets/assemble-release-plan@6.0.9': - dependencies: - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.3 - '@changesets/should-skip-package': 0.1.2 - '@changesets/types': 6.1.0 - '@manypkg/get-packages': 1.1.3 - semver: 7.7.3 - - '@changesets/changelog-git@0.2.1': - dependencies: - '@changesets/types': 6.1.0 - - '@changesets/changelog-github@0.5.2': - dependencies: - '@changesets/get-github-info': 0.7.0 - '@changesets/types': 6.1.0 - dotenv: 8.6.0 - transitivePeerDependencies: - - encoding - - '@changesets/cli@2.29.8(@types/node@25.0.10)': - dependencies: - '@changesets/apply-release-plan': 7.0.14 - '@changesets/assemble-release-plan': 6.0.9 - '@changesets/changelog-git': 0.2.1 - '@changesets/config': 3.1.2 - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.3 - '@changesets/get-release-plan': 4.0.14 - '@changesets/git': 3.0.4 - '@changesets/logger': 0.1.1 - '@changesets/pre': 2.0.2 - '@changesets/read': 0.6.6 - '@changesets/should-skip-package': 0.1.2 - '@changesets/types': 6.1.0 - '@changesets/write': 0.4.0 - '@inquirer/external-editor': 1.0.3(@types/node@25.0.10) - '@manypkg/get-packages': 1.1.3 - ansi-colors: 4.1.3 - ci-info: 3.9.0 - enquirer: 2.4.1 - fs-extra: 7.0.1 - mri: 1.2.0 - p-limit: 2.3.0 - package-manager-detector: 0.2.11 - picocolors: 1.1.1 - resolve-from: 5.0.0 - semver: 7.7.3 - spawndamnit: 3.0.1 - term-size: 2.2.1 - transitivePeerDependencies: - - '@types/node' - - '@changesets/config@3.1.2': - dependencies: - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.3 - '@changesets/logger': 0.1.1 - '@changesets/types': 6.1.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - micromatch: 4.0.8 - - '@changesets/errors@0.2.0': - dependencies: - extendable-error: 0.1.7 - - '@changesets/get-dependents-graph@2.1.3': - dependencies: - '@changesets/types': 6.1.0 - '@manypkg/get-packages': 1.1.3 - picocolors: 1.1.1 - semver: 7.7.3 - - '@changesets/get-github-info@0.7.0': - dependencies: - dataloader: 1.4.0 - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - - '@changesets/get-release-plan@4.0.14': - dependencies: - '@changesets/assemble-release-plan': 6.0.9 - '@changesets/config': 3.1.2 - '@changesets/pre': 2.0.2 - '@changesets/read': 0.6.6 - '@changesets/types': 6.1.0 - '@manypkg/get-packages': 1.1.3 - - '@changesets/get-version-range-type@0.4.0': {} - - '@changesets/git@3.0.4': - dependencies: - '@changesets/errors': 0.2.0 - '@manypkg/get-packages': 1.1.3 - is-subdir: 1.2.0 - micromatch: 4.0.8 - spawndamnit: 3.0.1 - - '@changesets/logger@0.1.1': - dependencies: - picocolors: 1.1.1 - - '@changesets/parse@0.4.2': - dependencies: - '@changesets/types': 6.1.0 - js-yaml: 4.1.1 - - '@changesets/pre@2.0.2': - dependencies: - '@changesets/errors': 0.2.0 - '@changesets/types': 6.1.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - - '@changesets/read@0.6.6': - dependencies: - '@changesets/git': 3.0.4 - '@changesets/logger': 0.1.1 - '@changesets/parse': 0.4.2 - '@changesets/types': 6.1.0 - fs-extra: 7.0.1 - p-filter: 2.1.0 - picocolors: 1.1.1 - - '@changesets/should-skip-package@0.1.2': - dependencies: - '@changesets/types': 6.1.0 - '@manypkg/get-packages': 1.1.3 - - '@changesets/types@4.1.0': {} - - '@changesets/types@6.1.0': {} - - '@changesets/write@0.4.0': - dependencies: - '@changesets/types': 6.1.0 - fs-extra: 7.0.1 - human-id: 4.1.3 - prettier: 2.8.8 - '@chevrotain/cst-dts-gen@11.0.3': dependencies: '@chevrotain/gast': 11.0.3 @@ -8354,6 +8871,9 @@ snapshots: '@cloudflare/workerd-windows-64@1.20260120.0': optional: true + '@colors/colors@1.5.0': + optional: true + '@commitlint/cli@20.3.1(@types/node@25.0.10)(typescript@5.9.3)': dependencies: '@commitlint/format': 20.3.1 @@ -8690,6 +9210,8 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 + '@fastify/busboy@2.1.1': {} + '@floating-ui/core@1.7.3': dependencies: '@floating-ui/utils': 0.2.10 @@ -8896,13 +9418,6 @@ snapshots: optionalDependencies: '@types/node': 25.0.10 - '@inquirer/external-editor@1.0.3(@types/node@25.0.10)': - dependencies: - chardet: 2.1.1 - iconv-lite: 0.7.2 - optionalDependencies: - '@types/node': 25.0.10 - '@inquirer/external-editor@2.0.3(@types/node@25.0.10)': dependencies: chardet: 2.1.1 @@ -9007,22 +9522,6 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@manypkg/find-root@1.1.0': - dependencies: - '@babel/runtime': 7.28.6 - '@types/node': 12.20.55 - find-up: 4.1.0 - fs-extra: 8.1.0 - - '@manypkg/get-packages@1.1.3': - dependencies: - '@babel/runtime': 7.28.6 - '@changesets/types': 4.1.0 - '@manypkg/find-root': 1.1.0 - fs-extra: 8.1.0 - globby: 11.1.0 - read-yaml-file: 1.1.0 - '@mdx-js/mdx@3.1.1': dependencies: '@types/estree': 1.0.8 @@ -9178,6 +9677,65 @@ snapshots: '@nolyfill/is-core-module@1.0.39': {} + '@octokit/auth-token@6.0.0': {} + + '@octokit/core@7.0.6': + dependencies: + '@octokit/auth-token': 6.0.0 + '@octokit/graphql': 9.0.3 + '@octokit/request': 10.0.7 + '@octokit/request-error': 7.1.0 + '@octokit/types': 16.0.0 + before-after-hook: 4.0.0 + universal-user-agent: 7.0.3 + + '@octokit/endpoint@11.0.2': + dependencies: + '@octokit/types': 16.0.0 + universal-user-agent: 7.0.3 + + '@octokit/graphql@9.0.3': + dependencies: + '@octokit/request': 10.0.7 + '@octokit/types': 16.0.0 + universal-user-agent: 7.0.3 + + '@octokit/openapi-types@27.0.0': {} + + '@octokit/plugin-paginate-rest@14.0.0(@octokit/core@7.0.6)': + dependencies: + '@octokit/core': 7.0.6 + '@octokit/types': 16.0.0 + + '@octokit/plugin-retry@8.0.3(@octokit/core@7.0.6)': + dependencies: + '@octokit/core': 7.0.6 + '@octokit/request-error': 7.1.0 + '@octokit/types': 16.0.0 + bottleneck: 2.19.5 + + '@octokit/plugin-throttling@11.0.3(@octokit/core@7.0.6)': + dependencies: + '@octokit/core': 7.0.6 + '@octokit/types': 16.0.0 + bottleneck: 2.19.5 + + '@octokit/request-error@7.1.0': + dependencies: + '@octokit/types': 16.0.0 + + '@octokit/request@10.0.7': + dependencies: + '@octokit/endpoint': 11.0.2 + '@octokit/request-error': 7.1.0 + '@octokit/types': 16.0.0 + fast-content-type-parse: 3.0.0 + universal-user-agent: 7.0.3 + + '@octokit/types@16.0.0': + dependencies: + '@octokit/openapi-types': 27.0.0 + '@pagefind/darwin-arm64@1.4.0': optional: true @@ -9198,6 +9756,18 @@ snapshots: '@pkgr/core@0.2.9': {} + '@pnpm/config.env-replace@1.1.0': {} + + '@pnpm/network.ca-file@1.0.2': + dependencies: + graceful-fs: 4.2.10 + + '@pnpm/npm-conf@3.0.2': + dependencies: + '@pnpm/config.env-replace': 1.1.0 + '@pnpm/network.ca-file': 1.0.2 + config-chain: 1.1.13 + '@polka/url@1.0.0-next.29': {} '@poppinss/colors@4.1.6': @@ -10068,25 +10638,125 @@ snapshots: '@rushstack/eslint-patch@1.15.0': {} - '@shikijs/core@3.21.0': - dependencies: - '@shikijs/types': 3.21.0 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 - hast-util-to-html: 9.0.5 + '@sec-ant/readable-stream@0.4.1': {} - '@shikijs/engine-javascript@3.21.0': + '@semantic-release/changelog@6.0.3(semantic-release@25.0.2(typescript@5.9.3))': dependencies: - '@shikijs/types': 3.21.0 - '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 4.3.4 + '@semantic-release/error': 3.0.0 + aggregate-error: 3.1.0 + fs-extra: 11.3.3 + lodash: 4.17.23 + semantic-release: 25.0.2(typescript@5.9.3) - '@shikijs/engine-oniguruma@3.21.0': + '@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.2(typescript@5.9.3))': dependencies: - '@shikijs/types': 3.21.0 - '@shikijs/vscode-textmate': 10.0.2 - - '@shikijs/langs@3.21.0': + conventional-changelog-angular: 8.1.0 + conventional-changelog-writer: 8.2.0 + conventional-commits-filter: 5.0.0 + conventional-commits-parser: 6.2.1 + debug: 4.4.3 + import-from-esm: 2.0.0 + lodash-es: 4.17.23 + micromatch: 4.0.8 + semantic-release: 25.0.2(typescript@5.9.3) + transitivePeerDependencies: + - supports-color + + '@semantic-release/error@3.0.0': {} + + '@semantic-release/error@4.0.0': {} + + '@semantic-release/git@10.0.1(semantic-release@25.0.2(typescript@5.9.3))': + dependencies: + '@semantic-release/error': 3.0.0 + aggregate-error: 3.1.0 + debug: 4.4.3 + dir-glob: 3.0.1 + execa: 5.1.1 + lodash: 4.17.23 + micromatch: 4.0.8 + p-reduce: 2.1.0 + semantic-release: 25.0.2(typescript@5.9.3) + transitivePeerDependencies: + - supports-color + + '@semantic-release/github@12.0.2(semantic-release@25.0.2(typescript@5.9.3))': + dependencies: + '@octokit/core': 7.0.6 + '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6) + '@octokit/plugin-retry': 8.0.3(@octokit/core@7.0.6) + '@octokit/plugin-throttling': 11.0.3(@octokit/core@7.0.6) + '@semantic-release/error': 4.0.0 + aggregate-error: 5.0.0 + debug: 4.4.3 + dir-glob: 3.0.1 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + issue-parser: 7.0.1 + lodash-es: 4.17.23 + mime: 4.1.0 + p-filter: 4.1.0 + semantic-release: 25.0.2(typescript@5.9.3) + tinyglobby: 0.2.15 + undici: 7.18.2 + url-join: 5.0.0 + transitivePeerDependencies: + - supports-color + + '@semantic-release/npm@13.1.3(semantic-release@25.0.2(typescript@5.9.3))': + dependencies: + '@actions/core': 2.0.2 + '@semantic-release/error': 4.0.0 + aggregate-error: 5.0.0 + env-ci: 11.2.0 + execa: 9.6.1 + fs-extra: 11.3.3 + lodash-es: 4.17.23 + nerf-dart: 1.0.0 + normalize-url: 8.1.1 + npm: 11.8.0 + rc: 1.2.8 + read-pkg: 10.0.0 + registry-auth-token: 5.1.1 + semantic-release: 25.0.2(typescript@5.9.3) + semver: 7.7.3 + tempy: 3.1.2 + + '@semantic-release/release-notes-generator@14.1.0(semantic-release@25.0.2(typescript@5.9.3))': + dependencies: + conventional-changelog-angular: 8.1.0 + conventional-changelog-writer: 8.2.0 + conventional-commits-filter: 5.0.0 + conventional-commits-parser: 6.2.1 + debug: 4.4.3 + get-stream: 7.0.1 + import-from-esm: 2.0.0 + into-stream: 7.0.0 + lodash-es: 4.17.23 + read-package-up: 11.0.0 + semantic-release: 25.0.2(typescript@5.9.3) + transitivePeerDependencies: + - supports-color + + '@shikijs/core@3.21.0': + dependencies: + '@shikijs/types': 3.21.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@3.21.0': + dependencies: + '@shikijs/types': 3.21.0 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.4 + + '@shikijs/engine-oniguruma@3.21.0': + dependencies: + '@shikijs/types': 3.21.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@3.21.0': dependencies: '@shikijs/types': 3.21.0 @@ -10110,8 +10780,12 @@ snapshots: '@shikijs/vscode-textmate@10.0.2': {} + '@sindresorhus/is@4.6.0': {} + '@sindresorhus/is@7.2.0': {} + '@sindresorhus/merge-streams@4.0.0': {} + '@speed-highlight/core@1.2.14': {} '@standard-schema/spec@1.1.0': {} @@ -10509,12 +11183,12 @@ snapshots: dependencies: '@types/unist': 3.0.3 - '@types/node@12.20.55': {} - '@types/node@25.0.10': dependencies: undici-types: 7.16.0 + '@types/normalize-package-data@2.4.4': {} + '@types/offscreencanvas@2019.7.3': {} '@types/react-dom@19.2.3(@types/react@19.2.9)': @@ -10795,6 +11469,18 @@ snapshots: acorn@8.15.0: {} + agent-base@7.1.4: {} + + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + + aggregate-error@5.0.0: + dependencies: + clean-stack: 5.3.0 + indent-string: 5.0.0 + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 @@ -10809,12 +11495,18 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - ansi-colors@4.1.3: {} + ansi-escapes@7.2.0: + dependencies: + environment: 1.1.0 ansi-regex@5.0.1: {} ansi-regex@6.2.2: {} + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 @@ -10831,6 +11523,8 @@ snapshots: argparse@2.0.1: {} + argv-formatter@1.0.0: {} + aria-hidden@1.2.6: dependencies: tslib: 2.8.1 @@ -10857,8 +11551,6 @@ snapshots: array-iterate@2.0.1: {} - array-union@2.1.0: {} - array.prototype.findlast@1.2.5: dependencies: call-bind: 1.0.8 @@ -10964,9 +11656,7 @@ snapshots: baseline-browser-mapping@2.9.17: {} - better-path-resolve@1.0.0: - dependencies: - is-windows: 1.0.2 + before-after-hook@4.0.0: {} better-react-mathjax@2.3.0(react@19.2.3): dependencies: @@ -10981,6 +11671,8 @@ snapshots: boolbase@1.0.0: {} + bottleneck@2.19.5: {} + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 @@ -11045,6 +11737,12 @@ snapshots: chai@6.2.2: {} + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -11052,6 +11750,8 @@ snapshots: chalk@5.6.2: {} + char-regex@1.0.2: {} + character-entities-html4@2.1.0: {} character-entities-legacy@3.0.0: {} @@ -11080,18 +11780,37 @@ snapshots: dependencies: readdirp: 4.1.2 - ci-info@3.9.0: {} - class-variance-authority@0.7.1: dependencies: clsx: 2.1.1 + clean-stack@2.2.0: {} + + clean-stack@5.3.0: + dependencies: + escape-string-regexp: 5.0.0 + cli-cursor@5.0.0: dependencies: restore-cursor: 5.1.0 + cli-highlight@2.1.11: + dependencies: + chalk: 4.1.2 + highlight.js: 10.7.3 + mz: 2.7.0 + parse5: 5.1.1 + parse5-htmlparser2-tree-adapter: 6.0.1 + yargs: 16.2.0 + cli-spinners@3.4.0: {} + cli-table3@0.6.5: + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + cli-width@4.1.0: {} client-only@0.0.1: {} @@ -11102,12 +11821,24 @@ snapshots: is-wsl: 3.1.0 is64bit: 2.0.0 + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + cliui@8.0.1: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + cliui@9.0.1: + dependencies: + string-width: 7.2.0 + strip-ansi: 7.1.2 + wrap-ansi: 9.0.2 + clsx@2.1.1: {} cmdk@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): @@ -11126,10 +11857,16 @@ snapshots: collapse-white-space@2.1.0: {} + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + color-convert@2.0.1: dependencies: color-name: 1.1.4 + color-name@1.1.3: {} + color-name@1.1.4: {} comma-separated-tokens@2.0.3: {} @@ -11155,16 +11892,34 @@ snapshots: confbox@0.1.8: {} + config-chain@1.1.13: + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + consola@3.4.2: {} conventional-changelog-angular@7.0.0: dependencies: compare-func: 2.0.0 + conventional-changelog-angular@8.1.0: + dependencies: + compare-func: 2.0.0 + conventional-changelog-conventionalcommits@7.0.2: dependencies: compare-func: 2.0.0 + conventional-changelog-writer@8.2.0: + dependencies: + conventional-commits-filter: 5.0.0 + handlebars: 4.7.8 + meow: 13.2.0 + semver: 7.7.3 + + conventional-commits-filter@5.0.0: {} + conventional-commits-parser@5.0.0: dependencies: JSONStream: 1.3.5 @@ -11172,6 +11927,12 @@ snapshots: meow: 12.1.1 split2: 4.2.0 + conventional-commits-parser@6.2.1: + dependencies: + meow: 13.2.0 + + convert-hrtime@5.0.0: {} + convert-source-map@2.0.0: {} cookie@1.1.1: {} @@ -11180,6 +11941,8 @@ snapshots: dependencies: browserslist: 4.28.1 + core-util-is@1.0.3: {} + cose-base@1.0.3: dependencies: layout-base: 1.0.2 @@ -11223,6 +11986,10 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + crypto-random-string@4.0.0: + dependencies: + type-fest: 1.4.0 + css-select@5.2.2: dependencies: boolbase: 1.0.0 @@ -11455,8 +12222,6 @@ snapshots: es-errors: 1.3.0 is-data-view: 1.0.2 - dataloader@1.4.0: {} - date-fns-jalali@4.1.0-0: {} date-fns@4.1.0: {} @@ -11477,6 +12242,8 @@ snapshots: dependencies: character-entities: 2.0.2 + deep-extend@0.6.0: {} + deep-is@0.1.4: {} deepmerge@4.3.1: {} @@ -11503,8 +12270,6 @@ snapshots: dependencies: webgl-constants: 1.1.1 - detect-indent@6.1.0: {} - detect-libc@2.1.2: {} detect-node-es@1.1.0: {} @@ -11557,8 +12322,6 @@ snapshots: dependencies: is-obj: 2.0.0 - dotenv@8.6.0: {} - draco3d@1.5.7: {} dunder-proto@1.0.1: @@ -11567,6 +12330,10 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + duplexer2@0.1.4: + dependencies: + readable-stream: 2.3.8 + electron-to-chromium@1.5.267: {} embla-carousel-react@8.6.0(react@19.2.3): @@ -11587,22 +12354,26 @@ snapshots: emoji-regex@9.2.2: {} + emojilib@2.4.0: {} + enhanced-resolve@5.18.4: dependencies: graceful-fs: 4.2.11 tapable: 2.3.0 - enquirer@2.4.1: - dependencies: - ansi-colors: 4.1.3 - strip-ansi: 6.0.1 - entities@4.5.0: {} entities@6.0.1: {} + env-ci@11.2.0: + dependencies: + execa: 8.0.1 + java-properties: 1.0.2 + env-paths@2.2.1: {} + environment@1.1.0: {} + error-ex@1.3.4: dependencies: is-arrayish: 0.2.1 @@ -11786,6 +12557,8 @@ snapshots: escalade@3.2.0: {} + escape-string-regexp@1.0.5: {} + escape-string-regexp@4.0.0: {} escape-string-regexp@5.0.0: {} @@ -12067,6 +12840,18 @@ snapshots: eventemitter3@4.0.7: {} + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + execa@8.0.1: dependencies: cross-spawn: 7.0.6 @@ -12079,6 +12864,21 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 + execa@9.6.1: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + cross-spawn: 7.0.6 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.1 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.3.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + yoctocolors: 2.1.2 + expect-type@1.3.0: {} extend-shallow@2.0.1: @@ -12087,7 +12887,7 @@ snapshots: extend@3.0.2: {} - extendable-error@0.1.7: {} + fast-content-type-parse@3.0.0: {} fast-deep-equal@3.1.3: {} @@ -12133,6 +12933,14 @@ snapshots: fflate@0.8.2: {} + figures@2.0.0: + dependencies: + escape-string-regexp: 1.0.5 + + figures@6.1.0: + dependencies: + is-unicode-supported: 2.1.0 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -12141,10 +12949,11 @@ snapshots: dependencies: to-regex-range: 5.0.1 - find-up@4.1.0: + find-up-simple@1.0.1: {} + + find-up@2.1.0: dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 + locate-path: 2.0.0 find-up@5.0.0: dependencies: @@ -12157,6 +12966,11 @@ snapshots: path-exists: 5.0.0 unicorn-magic: 0.1.0 + find-versions@6.0.0: + dependencies: + semver-regex: 4.0.5 + super-regex: 1.1.0 + fix-dts-default-cjs-exports@1.0.1: dependencies: magic-string: 0.30.21 @@ -12185,23 +12999,24 @@ snapshots: react: 19.2.3 react-dom: 19.2.3(react@19.2.3) - fs-extra@7.0.1: + from2@2.3.0: dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 + inherits: 2.0.4 + readable-stream: 2.3.8 - fs-extra@8.1.0: + fs-extra@11.3.3: dependencies: graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 + jsonfile: 6.2.0 + universalify: 2.0.1 fsevents@2.3.3: optional: true function-bind@1.1.2: {} + function-timeout@1.0.2: {} + function.prototype.name@1.1.8: dependencies: call-bind: 1.0.8 @@ -12241,8 +13056,17 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 + get-stream@6.0.1: {} + + get-stream@7.0.1: {} + get-stream@8.0.1: {} + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 + get-symbol-description@1.1.0: dependencies: call-bound: 1.0.4 @@ -12253,6 +13077,15 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + git-log-parser@1.2.1: + dependencies: + argv-formatter: 1.0.0 + spawn-error-forwarder: 1.0.0 + split2: 1.0.0 + stream-combiner2: 1.1.1 + through2: 2.0.5 + traverse: 0.6.8 + git-raw-commits@4.0.0: dependencies: dargs: 8.1.0 @@ -12280,19 +13113,12 @@ snapshots: define-properties: 1.2.1 gopd: 1.2.0 - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.3 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 - glsl-noise@0.0.0: {} gopd@1.2.0: {} + graceful-fs@4.2.10: {} + graceful-fs@4.2.11: {} gray-matter@4.0.3: @@ -12304,8 +13130,19 @@ snapshots: hachure-fill@0.5.2: {} + handlebars@4.7.8: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.19.3 + has-bigints@1.1.0: {} + has-flag@3.0.0: {} + has-flag@4.0.0: {} has-property-descriptors@1.0.2: @@ -12477,16 +13314,44 @@ snapshots: dependencies: hermes-estree: 0.25.1 + highlight.js@10.7.3: {} + hls.js@1.6.15: {} + hook-std@4.0.0: {} + + hosted-git-info@7.0.2: + dependencies: + lru-cache: 10.4.3 + + hosted-git-info@9.0.2: + dependencies: + lru-cache: 11.2.5 + html-escaper@2.0.2: {} html-void-elements@3.0.0: {} - human-id@4.1.3: {} + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + human-signals@2.1.0: {} human-signals@5.0.0: {} + human-signals@8.0.1: {} + husky@9.1.7: {} iconv-lite@0.6.3: @@ -12510,10 +13375,27 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 + import-from-esm@2.0.0: + dependencies: + debug: 4.4.3 + import-meta-resolve: 4.2.0 + transitivePeerDependencies: + - supports-color + import-meta-resolve@4.2.0: {} imurmurhash@0.1.4: {} + indent-string@4.0.0: {} + + indent-string@5.0.0: {} + + index-to-position@1.2.0: {} + + inherits@2.0.4: {} + + ini@1.3.8: {} + ini@4.1.1: {} inline-style-parser@0.2.7: {} @@ -12545,6 +13427,11 @@ snapshots: internmap@2.0.3: {} + into-stream@7.0.0: + dependencies: + from2: 2.3.0 + p-is-promise: 3.0.0 + is-alphabetical@2.0.1: {} is-alphanumerical@2.0.1: @@ -12662,17 +13549,17 @@ snapshots: dependencies: call-bound: 1.0.4 + is-stream@2.0.1: {} + is-stream@3.0.0: {} + is-stream@4.0.1: {} + is-string@1.1.1: dependencies: call-bound: 1.0.4 has-tostringtag: 1.0.2 - is-subdir@1.2.0: - dependencies: - better-path-resolve: 1.0.0 - is-symbol@1.1.1: dependencies: call-bound: 1.0.4 @@ -12700,8 +13587,6 @@ snapshots: call-bound: 1.0.4 get-intrinsic: 1.3.0 - is-windows@1.0.2: {} - is-wsl@3.1.0: dependencies: is-inside-container: 1.0.0 @@ -12710,10 +13595,20 @@ snapshots: dependencies: system-architecture: 0.1.0 + isarray@1.0.0: {} + isarray@2.0.5: {} isexe@2.0.0: {} + issue-parser@7.0.1: + dependencies: + lodash.capitalize: 4.2.1 + lodash.escaperegexp: 4.1.2 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.uniqby: 4.7.0 + istanbul-lib-coverage@3.2.2: {} istanbul-lib-report@3.0.1: @@ -12743,6 +13638,8 @@ snapshots: transitivePeerDependencies: - '@types/react' + java-properties@1.0.2: {} + jiti@2.6.1: {} joycon@3.1.1: {} @@ -12764,6 +13661,8 @@ snapshots: json-buffer@3.0.1: {} + json-parse-better-errors@1.0.2: {} + json-parse-even-better-errors@2.3.1: {} json-schema-traverse@0.4.1: {} @@ -12787,7 +13686,9 @@ snapshots: jsonc-parser@3.3.1: {} - jsonfile@4.0.0: + jsonfile@6.2.0: + dependencies: + universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 @@ -12894,11 +13795,19 @@ snapshots: lines-and-columns@1.2.4: {} + load-json-file@4.0.0: + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + load-tsconfig@0.2.5: {} - locate-path@5.0.0: + locate-path@2.0.0: dependencies: - p-locate: 4.1.0 + p-locate: 2.0.0 + path-exists: 3.0.0 locate-path@6.0.0: dependencies: @@ -12914,10 +13823,16 @@ snapshots: lodash.camelcase@4.3.0: {} + lodash.capitalize@4.2.1: {} + lodash.debounce@4.0.8: {} + lodash.escaperegexp@4.1.2: {} + lodash.isplainobject@4.0.6: {} + lodash.isstring@4.0.1: {} + lodash.kebabcase@4.1.1: {} lodash.merge@4.6.2: {} @@ -12930,6 +13845,8 @@ snapshots: lodash.uniq@4.5.0: {} + lodash.uniqby@4.7.0: {} + lodash.upperfirst@4.3.1: {} lodash@4.17.23: {} @@ -12949,6 +13866,10 @@ snapshots: dependencies: tslib: 2.8.1 + lru-cache@10.4.3: {} + + lru-cache@11.2.5: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -12972,6 +13893,12 @@ snapshots: '@babel/types': 7.28.6 source-map-js: 1.2.1 + make-asynchronous@1.0.1: + dependencies: + p-event: 6.0.1 + type-fest: 4.41.0 + web-worker: 1.2.0 + make-dir@4.0.0: dependencies: semver: 7.7.3 @@ -12980,6 +13907,19 @@ snapshots: markdown-table@3.0.4: {} + marked-terminal@7.3.0(marked@15.0.12): + dependencies: + ansi-escapes: 7.2.0 + ansi-regex: 6.2.2 + chalk: 5.6.2 + cli-highlight: 2.1.11 + cli-table3: 0.6.5 + marked: 15.0.12 + node-emoji: 2.2.0 + supports-hyperlinks: 3.2.0 + + marked@15.0.12: {} + marked@16.4.2: {} math-intrinsics@1.1.0: {} @@ -13183,6 +14123,8 @@ snapshots: meow@12.1.1: {} + meow@13.2.0: {} + merge-stream@2.0.0: {} merge2@1.4.1: {} @@ -13504,6 +14446,10 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 + mime@4.1.0: {} + + mimic-fn@2.1.0: {} + mimic-fn@4.0.0: {} mimic-function@5.0.1: {} @@ -13552,8 +14498,6 @@ snapshots: motion-utils@12.27.2: {} - mri@1.2.0: {} - mrmime@2.0.1: {} ms@2.1.3: {} @@ -13574,6 +14518,10 @@ snapshots: negotiator@1.0.0: {} + neo-async@2.6.2: {} + + nerf-dart@1.0.0: {} + next-themes@0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: react: 19.2.3 @@ -13677,18 +14625,46 @@ snapshots: lower-case: 2.0.2 tslib: 2.8.1 - node-fetch@2.7.0: + node-emoji@2.2.0: dependencies: - whatwg-url: 5.0.0 + '@sindresorhus/is': 4.6.0 + char-regex: 1.0.2 + emojilib: 2.4.0 + skin-tone: 2.0.0 node-releases@2.0.27: {} + normalize-package-data@6.0.2: + dependencies: + hosted-git-info: 7.0.2 + semver: 7.7.3 + validate-npm-package-license: 3.0.4 + + normalize-package-data@8.0.0: + dependencies: + hosted-git-info: 9.0.2 + semver: 7.7.3 + validate-npm-package-license: 3.0.4 + + normalize-url@8.1.1: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + npm-run-path@5.3.0: dependencies: path-key: 4.0.0 + npm-run-path@6.0.0: + dependencies: + path-key: 4.0.0 + unicorn-magic: 0.3.0 + npm-to-yarn@3.0.1: {} + npm@11.8.0: {} + nth-check@2.1.1: dependencies: boolbase: 1.0.0 @@ -13737,6 +14713,10 @@ snapshots: obug@2.1.1: {} + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + onetime@6.0.0: dependencies: mimic-fn: 4.0.0 @@ -13773,21 +14753,27 @@ snapshots: stdin-discarder: 0.2.2 string-width: 8.1.0 - outdent@0.5.0: {} - own-keys@1.0.1: dependencies: get-intrinsic: 1.3.0 object-keys: 1.1.1 safe-push-apply: 1.0.0 - p-filter@2.1.0: + p-each-series@3.0.0: {} + + p-event@6.0.1: + dependencies: + p-timeout: 6.1.4 + + p-filter@4.1.0: dependencies: - p-map: 2.1.0 + p-map: 7.0.4 + + p-is-promise@3.0.0: {} - p-limit@2.3.0: + p-limit@1.3.0: dependencies: - p-try: 2.2.0 + p-try: 1.0.0 p-limit@3.1.0: dependencies: @@ -13797,9 +14783,9 @@ snapshots: dependencies: yocto-queue: 1.2.2 - p-locate@4.1.0: + p-locate@2.0.0: dependencies: - p-limit: 2.3.0 + p-limit: 1.3.0 p-locate@5.0.0: dependencies: @@ -13809,13 +14795,15 @@ snapshots: dependencies: p-limit: 4.0.0 - p-map@2.1.0: {} + p-map@7.0.4: {} - p-try@2.2.0: {} + p-reduce@2.1.0: {} - package-manager-detector@0.2.11: - dependencies: - quansync: 0.2.11 + p-reduce@3.0.0: {} + + p-timeout@6.1.4: {} + + p-try@1.0.0: {} package-manager-detector@1.6.0: {} @@ -13842,6 +14830,11 @@ snapshots: is-decimal: 2.0.1 is-hexadecimal: 2.0.1 + parse-json@4.0.0: + dependencies: + error-ex: 1.3.4 + json-parse-better-errors: 1.0.2 + parse-json@5.2.0: dependencies: '@babel/code-frame': 7.28.6 @@ -13849,6 +14842,12 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + parse-json@8.3.0: + dependencies: + '@babel/code-frame': 7.28.6 + index-to-position: 1.2.0 + type-fest: 4.41.0 + parse-latin@7.0.0: dependencies: '@types/nlcst': 2.0.3 @@ -13858,8 +14857,18 @@ snapshots: unist-util-visit-children: 3.0.0 vfile: 6.0.3 + parse-ms@4.0.0: {} + parse-numeric-range@1.3.0: {} + parse5-htmlparser2-tree-adapter@6.0.1: + dependencies: + parse5: 6.0.1 + + parse5@5.1.1: {} + + parse5@6.0.1: {} + parse5@7.3.0: dependencies: entities: 6.0.1 @@ -13868,6 +14877,8 @@ snapshots: path-data-parser@0.1.0: {} + path-exists@3.0.0: {} + path-exists@4.0.0: {} path-exists@5.0.0: {} @@ -13890,10 +14901,15 @@ snapshots: picomatch@4.0.3: {} - pify@4.0.1: {} + pify@3.0.0: {} pirates@4.0.7: {} + pkg-conf@2.1.0: + dependencies: + find-up: 2.1.0 + load-json-file: 4.0.0 + pkg-types@1.3.1: dependencies: confbox: 0.1.8 @@ -13942,10 +14958,14 @@ snapshots: dependencies: prettier: 3.8.1 - prettier@2.8.8: {} - prettier@3.8.1: {} + pretty-ms@9.3.0: + dependencies: + parse-ms: 4.0.0 + + process-nextick-args@2.0.1: {} + promise-worker-transferable@1.0.4: dependencies: is-promise: 2.2.2 @@ -13959,12 +14979,19 @@ snapshots: property-information@7.1.0: {} - punycode@2.3.1: {} + proto-list@1.2.4: {} - quansync@0.2.11: {} + punycode@2.3.1: {} queue-microtask@1.2.3: {} + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + react-compiler-runtime@19.1.0-rc.3(react@19.2.3): dependencies: react: 19.2.3 @@ -14051,12 +15078,43 @@ snapshots: react@19.2.3: {} - read-yaml-file@1.1.0: + read-package-up@11.0.0: dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.2 - pify: 4.0.1 - strip-bom: 3.0.0 + find-up-simple: 1.0.1 + read-pkg: 9.0.1 + type-fest: 4.41.0 + + read-package-up@12.0.0: + dependencies: + find-up-simple: 1.0.1 + read-pkg: 10.0.0 + type-fest: 5.4.1 + + read-pkg@10.0.0: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 8.0.0 + parse-json: 8.3.0 + type-fest: 5.4.1 + unicorn-magic: 0.3.0 + + read-pkg@9.0.1: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 6.0.2 + parse-json: 8.3.0 + type-fest: 4.41.0 + unicorn-magic: 0.1.0 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 readdirp@4.1.2: {} @@ -14153,6 +15211,10 @@ snapshots: unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.2.1 + registry-auth-token@5.1.1: + dependencies: + '@pnpm/npm-conf': 3.0.2 + regjsgen@0.8.0: {} regjsparser@0.13.0: @@ -14386,6 +15448,8 @@ snapshots: has-symbols: 1.1.0 isarray: 2.0.5 + safe-buffer@5.1.2: {} + safe-push-apply@1.0.0: dependencies: es-errors: 1.3.0 @@ -14410,6 +15474,47 @@ snapshots: extend-shallow: 2.0.1 kind-of: 6.0.3 + semantic-release@25.0.2(typescript@5.9.3): + dependencies: + '@semantic-release/commit-analyzer': 13.0.1(semantic-release@25.0.2(typescript@5.9.3)) + '@semantic-release/error': 4.0.0 + '@semantic-release/github': 12.0.2(semantic-release@25.0.2(typescript@5.9.3)) + '@semantic-release/npm': 13.1.3(semantic-release@25.0.2(typescript@5.9.3)) + '@semantic-release/release-notes-generator': 14.1.0(semantic-release@25.0.2(typescript@5.9.3)) + aggregate-error: 5.0.0 + cosmiconfig: 9.0.0(typescript@5.9.3) + debug: 4.4.3 + env-ci: 11.2.0 + execa: 9.6.1 + figures: 6.1.0 + find-versions: 6.0.0 + get-stream: 6.0.1 + git-log-parser: 1.2.1 + hook-std: 4.0.0 + hosted-git-info: 9.0.2 + import-from-esm: 2.0.0 + lodash-es: 4.17.23 + marked: 15.0.12 + marked-terminal: 7.3.0(marked@15.0.12) + micromatch: 4.0.8 + p-each-series: 3.0.0 + p-reduce: 3.0.0 + read-package-up: 12.0.0 + resolve-from: 5.0.0 + semver: 7.7.3 + semver-diff: 5.0.0 + signale: 1.4.0 + yargs: 18.0.0 + transitivePeerDependencies: + - supports-color + - typescript + + semver-diff@5.0.0: + dependencies: + semver: 7.7.3 + + semver-regex@4.0.5: {} + semver@6.3.1: {} semver@7.7.3: {} @@ -14516,15 +15621,25 @@ snapshots: siginfo@2.0.0: {} + signal-exit@3.0.7: {} + signal-exit@4.1.0: {} + signale@1.4.0: + dependencies: + chalk: 2.4.2 + figures: 2.0.0 + pkg-conf: 2.1.0 + sirv@3.0.2: dependencies: '@polka/url': 1.0.0-next.29 mrmime: 2.0.1 totalist: 3.0.1 - slash@3.0.0: {} + skin-tone@2.0.0: + dependencies: + unicode-emoji-modifier-base: 1.0.0 slash@5.1.0: {} @@ -14540,14 +15655,27 @@ snapshots: source-map-js@1.2.1: {} + source-map@0.6.1: {} + source-map@0.7.6: {} space-separated-tokens@2.0.2: {} - spawndamnit@3.0.1: + spawn-error-forwarder@1.0.0: {} + + spdx-correct@3.2.0: dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.22 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.22 + + spdx-license-ids@3.0.22: {} speech-rule-engine@4.1.2: dependencies: @@ -14555,6 +15683,10 @@ snapshots: commander: 13.1.0 wicked-good-xpath: 1.3.0 + split2@1.0.0: + dependencies: + through2: 2.0.5 + split2@4.2.0: {} sprintf-js@1.0.3: {} @@ -14579,6 +15711,11 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 + stream-combiner2@1.1.1: + dependencies: + duplexer2: 0.1.4 + readable-stream: 2.3.8 + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -14646,6 +15783,10 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 @@ -14663,8 +15804,14 @@ snapshots: strip-bom@3.0.0: {} + strip-final-newline@2.0.0: {} + strip-final-newline@3.0.0: {} + strip-final-newline@4.0.0: {} + + strip-json-comments@2.0.1: {} + strip-json-comments@3.1.1: {} style-to-js@1.1.21: @@ -14694,12 +15841,27 @@ snapshots: tinyglobby: 0.2.15 ts-interface-checker: 0.1.13 + super-regex@1.1.0: + dependencies: + function-timeout: 1.0.2 + make-asynchronous: 1.0.1 + time-span: 5.1.0 + supports-color@10.2.2: {} + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 + supports-hyperlinks@3.2.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + supports-preserve-symlinks-flag@1.0.0: {} suspend-react@0.1.3(react@19.2.3): @@ -14726,13 +15888,22 @@ snapshots: tabbable@6.4.0: {} + tagged-tag@1.0.0: {} + tailwind-merge@3.4.0: {} tailwindcss@4.1.18: {} tapable@2.3.0: {} - term-size@2.2.1: {} + temp-dir@3.0.0: {} + + tempy@3.1.2: + dependencies: + is-stream: 3.0.0 + temp-dir: 3.0.0 + type-fest: 2.19.0 + unique-string: 3.0.0 text-extensions@2.4.0: {} @@ -14760,8 +15931,17 @@ snapshots: three@0.182.0: {} + through2@2.0.5: + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + through@2.3.8: {} + time-span@5.1.0: + dependencies: + convert-hrtime: 5.0.0 + tiny-invariant@1.3.3: {} tinybench@2.9.0: {} @@ -14789,7 +15969,7 @@ snapshots: totalist@3.0.1: {} - tr46@0.0.3: {} + traverse@0.6.8: {} tree-kill@1.2.2: {} @@ -14876,6 +16056,8 @@ snapshots: - immer - react + tunnel@0.0.6: {} + tw-animate-css@1.4.0: {} twoslash-protocol@0.3.6: {} @@ -14892,6 +16074,16 @@ snapshots: dependencies: prelude-ls: 1.2.1 + type-fest@1.4.0: {} + + type-fest@2.19.0: {} + + type-fest@4.41.0: {} + + type-fest@5.4.1: + dependencies: + tagged-tag: 1.0.0 + typed-array-buffer@1.0.3: dependencies: call-bound: 1.0.4 @@ -14940,6 +16132,9 @@ snapshots: ufo@1.6.3: {} + uglify-js@3.19.3: + optional: true + unbox-primitive@1.1.0: dependencies: call-bound: 1.0.4 @@ -14949,6 +16144,10 @@ snapshots: undici-types@7.16.0: {} + undici@5.29.0: + dependencies: + '@fastify/busboy': 2.1.1 + undici@7.18.2: {} unenv@2.0.0-rc.24: @@ -14957,6 +16156,8 @@ snapshots: unicode-canonical-property-names-ecmascript@2.0.1: {} + unicode-emoji-modifier-base@1.0.0: {} + unicode-match-property-ecmascript@2.0.0: dependencies: unicode-canonical-property-names-ecmascript: 2.0.1 @@ -14968,6 +16169,8 @@ snapshots: unicorn-magic@0.1.0: {} + unicorn-magic@0.3.0: {} + unified@11.0.5: dependencies: '@types/unist': 3.0.3 @@ -14978,6 +16181,10 @@ snapshots: trough: 2.2.0 vfile: 6.0.3 + unique-string@3.0.0: + dependencies: + crypto-random-string: 4.0.0 + unist-util-find-after@5.0.0: dependencies: '@types/unist': 3.0.3 @@ -15045,7 +16252,9 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 - universalify@0.1.2: {} + universal-user-agent@7.0.3: {} + + universalify@2.0.1: {} unrs-resolver@1.11.1: dependencies: @@ -15081,6 +16290,8 @@ snapshots: dependencies: punycode: 2.3.1 + url-join@5.0.0: {} + use-callback-ref@1.3.3(@types/react@19.2.9)(react@19.2.3): dependencies: react: 19.2.3 @@ -15100,10 +16311,17 @@ snapshots: dependencies: react: 19.2.3 + util-deprecate@1.0.2: {} + utility-types@3.11.0: {} uuid@11.1.0: {} + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + vaul@1.1.2(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) @@ -15218,17 +16436,12 @@ snapshots: web-namespaces@2.0.1: {} + web-worker@1.2.0: {} + webgl-constants@1.1.1: {} webgl-sdf-generator@1.1.1: {} - webidl-conversions@3.0.1: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 @@ -15283,6 +16496,8 @@ snapshots: word-wrap@1.2.5: {} + wordwrap@1.0.0: {} + workerd@1.20260120.0: optionalDependencies: '@cloudflare/workerd-darwin-64': 1.20260120.0 @@ -15321,14 +16536,30 @@ snapshots: ws@8.18.0: {} + xtend@4.0.2: {} + y18n@5.0.8: {} yallist@3.1.1: {} yaml@2.8.2: {} + yargs-parser@20.2.9: {} + yargs-parser@21.1.1: {} + yargs-parser@22.0.0: {} + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + yargs@17.7.2: dependencies: cliui: 8.0.1 @@ -15339,6 +16570,15 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + yargs@18.0.0: + dependencies: + cliui: 9.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + string-width: 7.2.0 + y18n: 5.0.8 + yargs-parser: 22.0.0 + yocto-queue@0.1.0: {} yocto-queue@1.2.2: {} diff --git a/release.config.cjs b/release.config.cjs new file mode 100644 index 0000000..d8072a4 --- /dev/null +++ b/release.config.cjs @@ -0,0 +1,24 @@ +const pkgRoot = process.env.SEMREL_PKG_ROOT || "cli"; +const pkgName = process.env.SEMREL_PKG_NAME || "@nicepkg/vsync"; +const changelogFile = "CHANGELOG.md"; +const assets = [`${pkgRoot}/package.json`, changelogFile]; + +module.exports = { + branches: ["main"], + tagFormat: `${pkgName}@\${version}`, + plugins: [ + ["@semantic-release/commit-analyzer", { preset: "conventionalcommits" }], + ["@semantic-release/release-notes-generator", { preset: "conventionalcommits" }], + ["@semantic-release/changelog", { changelogFile }], + ["@semantic-release/npm", { pkgRoot, npmPublish: true }], + [ + "@semantic-release/git", + { + assets, + message: + `chore(release): ${pkgName} \${nextRelease.version} [skip ci]\n\n\${nextRelease.notes}`, + }, + ], + "@semantic-release/github", + ], +}; diff --git a/scripts/release-publish.sh b/scripts/release-publish.sh deleted file mode 100644 index 0a7de79..0000000 --- a/scripts/release-publish.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -cp README.md cli/README.md -cp README_cn.md cli/README_cn.md - -pnpm --filter @nicepkg/vsync run build -pnpm ci:publish -pnpm changeset tag diff --git a/website/content/en/_meta.ts b/website/content/en/_meta.ts index 8bce0a1..eb67ac4 100644 --- a/website/content/en/_meta.ts +++ b/website/content/en/_meta.ts @@ -35,7 +35,7 @@ export default { }, changelog: { title: "Changelog", - href: "https://github.com/nicepkg/vsync/blob/main/cli/CHANGELOG.md", + href: "https://github.com/nicepkg/vsync/blob/main/CHANGELOG.md", }, release: { title: "Release", diff --git a/website/content/zh/_meta.ts b/website/content/zh/_meta.ts index f7434c3..ad6ef4a 100644 --- a/website/content/zh/_meta.ts +++ b/website/content/zh/_meta.ts @@ -35,7 +35,7 @@ export default { }, changelog: { title: "更新日志", - href: "https://github.com/nicepkg/vsync/blob/main/cli/CHANGELOG.md", + href: "https://github.com/nicepkg/vsync/blob/main/CHANGELOG.md", }, release: { title: "发布", From 918a4731bc62be36d75a4916cc147484dad3d943 Mon Sep 17 00:00:00 2001 From: jinmingyang <2214962083@qq.com> Date: Tue, 27 Jan 2026 10:10:17 +0800 Subject: [PATCH 12/16] fix: update release command in GitHub Actions workflow --- .github/workflows/release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index f3901c4..a71d37d 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -60,7 +60,7 @@ jobs: - name: Run semantic-release if: steps.package-check.outputs.exists == 'true' - run: pnpm run semantic-release + run: pnpm run release env: SEMREL_PKG_ROOT: ${{ matrix.package.dir }} SEMREL_PKG_NAME: ${{ matrix.package.name }} From 96cdbcfeb38b7f2df0e6a0dae3d2cb8e49da1389 Mon Sep 17 00:00:00 2001 From: jinmingyang <2214962083@qq.com> Date: Tue, 27 Jan 2026 10:20:54 +0800 Subject: [PATCH 13/16] docs: format changelog with consistent version headers and commit links Co-Authored-By: Claude Opus 4.5 --- CHANGELOG.md | 480 +++++++++++++++++++++++++-------------------------- 1 file changed, 239 insertions(+), 241 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a11b71a..33bb5ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,249 +1,247 @@ ## 1.0.10 (2026-01-27) -* fix: update release workflow and documentation (#13) ([5787a19](https://github.com/nicepkg/vsync/commit/5787a19)), closes [#13](https://github.com/nicepkg/vsync/issues/13) -* build: migrate from changesets to semantic-release (#12) ([1f39e61](https://github.com/nicepkg/vsync/commit/1f39e61)), closes [#12](https://github.com/nicepkg/vsync/issues/12) -* docs: update website (#11) ([4b5145b](https://github.com/nicepkg/vsync/commit/4b5145b)), closes [#11](https://github.com/nicepkg/vsync/issues/11) +- fix: update release workflow and documentation (#13) ([5787a19](https://github.com/nicepkg/vsync/commit/5787a19)), closes [#13](https://github.com/nicepkg/vsync/issues/13) +- build: migrate from changesets to semantic-release (#12) ([1f39e61](https://github.com/nicepkg/vsync/commit/1f39e61)), closes [#12](https://github.com/nicepkg/vsync/issues/12) +- docs: update website (#11) ([4b5145b](https://github.com/nicepkg/vsync/commit/4b5145b)), closes [#11](https://github.com/nicepkg/vsync/issues/11) -# Changelog +## 1.0.9 (2026-01-26) -## @nicepkg/vsync@1.0.9 - 2026-01-26 +- chore: version packages (#10) ([de127cb](https://github.com/nicepkg/vsync/commit/de127cb)) +- chore: release v1.0.9 (#9) ([4d0fa67](https://github.com/nicepkg/vsync/commit/4d0fa67)) -- chore: version packages (#10) (de127cb) -- chore: release v1.0.9 (#9) (4d0fa67) +## 1.0.8 (2026-01-26) -## @nicepkg/vsync@1.0.8 - 2026-01-26 +- chore: version packages (#8) ([ff31b86](https://github.com/nicepkg/vsync/commit/ff31b86)) +- chore: release 1.0.8 (#7) ([9b07770](https://github.com/nicepkg/vsync/commit/9b07770)) -- chore: version packages (#8) (ff31b86) -- chore: release 1.0.8 (#7) (9b07770) +## 1.0.7 (2026-01-26) -## @nicepkg/vsync@1.0.7 - 2026-01-26 - -- chore: version packages (#6) (07d41f7) -- chore: release v1.0.7 (#5) (3a9d217) -- chore: version packages (#4) (a780db1) -- Merge pull request #3 from nicepkg/dev (bcba769) -- Merge pull request #2 from nicepkg/changeset-release/main (81c4ebf) -- chore: version packages (62bf590) -- Merge pull request #1 from nicepkg/dev (1206ca2) -- chore: release version 1.0.5 and update package configuration (b703993) -- refactor: update VibeConfig to VSyncConfig across the codebase (58bc89f) -- refactor: rename vsync to vsync across the project (0909155) -- chore: release version 1.0.4 and update CHANGELOG (898ebf9) -- feat: enhance MCP server handling and streamline configuration management (c76faf2) -- chore: version packages (#11) (af752f9) -- refactor(workflows): streamline release process with dedicated script (#10) (63604c1) -- chore: release version 1.0.3 and update CHANGELOG (1c782cd) -- refactor(workflows): streamline release process with dedicated script (32afad1) -- Merge pull request #9 from nicepkg/changeset-release/main (71b9723) -- chore: version packages (96f1b2a) -- Merge pull request #8 from nicepkg/dev (47ce245) -- refactor(registry): implement extensible plugin system with dynamic registration (83f3082) -- Merge pull request #7 from nicepkg/changeset-release/main (151e9cc) -- chore: version packages (893ef95) -- Merge pull request #6 from nicepkg/dev (bd999a3) -- chore(vsync): release version 1.0.1 and add CHANGELOG (696bf9b) -- chore(vsync): add first version of vsync patch (8da5e12) -- fix(workflows): simplify publish command in release workflow (c789b01) -- Merge pull request #5 from nicepkg/changeset-release/main (fcdafd4) -- chore: version packages (47d66e0) -- Merge pull request #4 from nicepkg/dev (42f7aeb) -- chore(vsync): add initial version for vsync patch (f6b7442) -- fix(workflows): update commit key in release workflow from 'commitMessage' to 'commit' (8886eb3) -- refactor(quality): eliminate code smells and improve maintainability (f0bc7cf) -- refactor(adapters): extract path resolution logic into dedicated resolver (7904f52) -- refactor(errors): unify error handling with severity-based strategy (308a1e9) -- Merge pull request #3 from nicepkg/dev (8c3bdab) -- refactor(sync-executor): eliminate type assertions with type-safe generics (bac7085) -- refactor(sync): break up God Method into focused functions (8dbc36f) -- chore: add initial version for vsync patch and update CI workflow to remove push trigger (8f9e1b8) -- Merge pull request #2 from nicepkg/dev (79ebd19) -- chore(release): switch to git-cli for commit mode to support symlinks and set up Git user (0369c56) -- Merge pull request #1 from nicepkg/dev (fcba900) -- refactor(sync): enhance error handling and type safety in sync operations (a967906) -- refactor(adapters): simplify item reading methods and enhance type safety (b643457) -- refactor(sync): streamline item reading and error handling in sync operations (bbf64c2) -- fix: enhance error handling and logging in sync commands (716e753) -- refactor(tests): update mocks for config-initializer and increase timeout for E2E (029ab56) -- refactor: unify environment variable transformation and streamline sync UI interactions (8da65c3) -- refactor: consolidate language configuration and improve file operations (4c60711) -- feat(config): implement DRY config validation with lazy field initialization (908e922) -- refactor(i18n): separate language config from project config (ec3ad70) -- feat(i18n): auto-prompt for language preference on first run (6379c8a) -- refactor: extract ensureConfig to shared utility (DRY) (55b6256) -- feat(sync): auto-prompt for init when config not found (1b8a475) -- fix: preserve user-specified name field in YAML frontmatter (b635da3) -- fix: exclude 'name' field from metadata to fix hash mismatch (87767fe) -- feat(adapter): introduce capabilities interface and implement in BaseAdapter and CodexAdapter (1ab3c8f) -- fix(symlink): normalize Windows symlink paths and improve test assertions (dcfafe2) -- feat(commands): add projectDir and config.level parameters to plan, status, and sync commands (bc1b767) -- feat(diff): enhance hash comparison logic for write-only targets and update manifest handling (aed70e5) -- feat(manifest): update manifest path structure and improve status command output (73f272d) -- feat(sync): add debug logging and hash retrieval for sync operations (e365e5a) -- feat(sync): enhance error handling and logging in sync plan execution (952996f) -- feat(planner): enhance sync plan output to include tool counts in section headers (64133c3) -- feat(errors): introduce NotSupportError for unsupported features (b651d77) -- refactor(planner): enhance sync plan output with internationalization support (324adb0) -- feat(ux): smart confirmation defaults based on operation safety (7224272) -- fix(ui): correct operation count display in sync plan (c1e0e68) -- refactor(ui): dramatically improve sync plan output readability (b913855) -- fix(sync): respect sync_config when generating plan (8539853) -- refactor(init): remove eager cache and manifest creation (a34687e) -- feat(init): add agents and commands to sync options (0359f8f) -- fix: resolve commander version conflict and allow minimal user config (47a0077) -- refactor: change prompt type from "list" to "select" across multiple command files (259bb2c) -- chore: update CI workflow to pin pkg-pr-new version and improve output parsing (51e2b84) -- test: make user-level paths OS-agnostic (ba3ccef) -- chore: restrict CI workflow to only trigger on main branch (ddc27fe) -- chore: refactor CI workflow to use reusable test configuration and update test paths (1f96ced) -- chore: update CI and deployment workflows to include test execution and wrangler installation (c900c0b) -- chore: update dependencies and workflows (fd44066) -- build: release 1.0.0 (26b2c24) -- feat: add comprehensive documentation for vsync (3d0c6f2) -- feat: enhance documentation and configuration for vsync (5ddf6f6) -- feat: enhance visual elements and interactions in 3D hero component (d47fc7a) -- feat: enhance 3D hero component with new visualizations and animations (ed7be8e) -- docs: update landing page content to enhance clarity and feature descriptions (e6d3f46) -- docs: update PRD with version 1.0.0 details and enhance section descriptions (414b08d) -- docs: update PRD to reflect version 1.0.0 and enhance feature descriptions (50e2e03) -- chore: update release workflow to use bash for publishing commands (43ce662) -- chore: update release workflow to trigger on specific file changes (7b3d2e5) -- chore: enhance GitHub workflows for deployment and preview comments (b3b37f6) -- refactor: update package structure and add changeset support (df58266) -- fix(scripts): correct AdapterConfig parameter name in benchmark script (853a6cf) -- feat(performance): implement benchmark utilities and measure improvements (2b08e75) -- docs: update TASKS.md with completed E2E tests (e4d88fe) -- test: add comprehensive E2E tests for MCP, agents, and commands (8a57d98) -- test: add comprehensive symlink E2E tests (Phase 6.3) (7c8e7b8) -- test: add E2E tests with DRY and high cohesion design (Phase 6.3) (1e84472) -- fix: correct manifest TargetStatus format in integration tests (7d31426) -- fix: correct OpenCode environment variable format to {env:VAR} (423b6ee) -- fix: resolve integration test failures (Phase 6.2) (164855d) -- fix: resolve TypeScript and ESLint errors in integration tests (57d3763) -- test: add integration tests for full sync flow (Phase 6.2) (b1149c1) -- docs: update TASKS.md to mark error message improvements complete (6ab36f7) -- feat(errors): add comprehensive error formatting utility (bdd81a5) -- docs: update TASKS.md to mark debug mode task complete (35e2260) -- feat(debug): add debug logging utility with --debug flag (f2bd65d) -- docs: update TASKS.md to mark --yes flag task complete (30df643) -- feat: add --yes flag to sync and clean commands for CI/CD automation (4046c0b) -- feat(i18n): complete import command i18n integration (0bde2de) -- fix(symlink): integrate rollback support into sync workflow (dc18cbf) -- feat(symlink): add rollback support for safe error recovery (5c1873c) -- feat(symlink): add first-time sync prompt for symlink usage (6c83ac2) -- feat(i18n): add custom framework configuration for i18n-ally (ec94015) -- feat(i18n): integrate translations into status command (2a326b3) -- feat(i18n): integrate translations into list command (fdf9469) -- feat(i18n): integrate translations into clean command (d393b1a) -- feat(i18n): integrate translations into plan command (c363fd5) -- feat(i18n): integrate translations into sync command (c6c69d2) -- feat(i18n): integrate translations into init command as reference pattern (08fbdf4) -- docs(i18n): add language configuration documentation and complete Phase 10 (4ad69ad) -- feat(i18n): initialize i18n system at CLI startup (8fb8ff4) -- feat(i18n): implement first-run language detection and bilingual prompt (860ca51) -- refactor: streamline import paths and enhance language support (835d591) -- feat(config): add language preference support for user-level configuration (fa5b4f4) -- feat(i18n): implement lightweight i18n infrastructure with English and Chinese support (270aa4a) -- feat: integrate symlink support into sync workflow (fdab014) -- docs: update Phase 9 progress in TASKS.md (17207d3) -- feat(adapters): add symlink handling to BaseAdapter for skills directories (606ecf6) -- feat(core): implement symlink sync handler for skills directories (d8ad8d9) -- feat(utils): implement cross-platform symlink utilities (4a8282e) -- docs: mark Phase 9.1 as complete in TASKS.md (a199911) -- feat(config): add symlink support configuration for skills (f1a13b9) -- chore: update TASKS.md to remove completed tasks and adjust phase statuses (616793c) -- feat(core): implement incremental sync optimization with file caching (fd8877a) -- feat: implement ParallelSyncOrchestrator and SyncExecutor (3f2091d) -- chore: update TASKS.md to reflect version bump to 3.1.0 (cbb1c1d) -- refactor: streamline adapter methods by consolidating read and write operation (a4575ae) -- feat: enhance Claude Code adapter to support multiple MCP server types (f8c862d) -- refactor: remove validation methods from adapter implementations (c4d784a) -- refactor: consolidate adapter implementations by extending BaseAdapter (c1d226d) -- feat: implement support file handling in adapters (1b21d91) -- refactor: remove configFormat, capabilities, and isReadOnly from ToolAdapter implementations (9dc268a) -- docs: add global configuration details for Claude Code in ai-tools and prd documentation (e938fda) -- feat: enhance adapter configuration with level support and update file handling (e1dd008) -- docs: update Codex configuration details to reflect changes in file structure and format (1a2b380) -- refactor: reorganize file operations and update adapter implementations (2b21902) -- chore: remove unused '@types/inquirer' dependency and add refactor plan for adapter architecture (5f0c346) -- refactor: flatten directory structure by removing extra cli layer (29f6d2b) -- feat(cli): add import command for cross-project config import (468101c) -- feat: add Codex adapter with full TOML support for v1.1 (8128830) -- docs: mark Phase 7.3 Commands Synchronization as complete (01f5f33) -- feat(phase-7.3): implement command synchronization support (d855673) -- docs: mark Phase 7.2 Agents Synchronization as complete (2c5af99) -- feat(phase-7.2): implement agent synchronization support (2c720f6) -- feat(core): implement user-level config merging for Phase 7.1 (daa42fa) -- docs: add detailed v1.1 (Phase 7-8) task breakdown (782914c) -- feat(cli): add error recovery with rollback to sync command (65b0918) -- feat(core): implement rollback mechanism for safe error recovery (a3300ce) -- docs: mark Phase 5.2 Environment Variable Preservation as complete (5ba78ce) -- feat: add fsync to atomic write for crash-safe file operations (0ea84a4) -- chore: update ESLint linting command to remove max-warnings restriction (1fcb30f) -- refactor: standardize ESLint configuration and improve code formatting (5878da8) -- fix: complete TargetStatus and ManifestItem type fixes (d83ecdd) -- fix: resolve type errors and replace paths with TypeScript aliases (98b6277) -- refactor: add TypeScript path aliases and improve typecheck coverage (2560744) -- docs(tasks): add TypeScript path aliases refactor task (c834e7b) -- refactor: remove MCP security feature to simplify user experience (1700b7d) -- feat(cli): implement clean command with target/source removal modes (141eb45) -- feat(cli): implement vsync list command with table output (ad726f3) -- feat(cli): implement vsync status command (15f6f74) -- feat(cli): implement vsync plan command with detailed output (0cfc46c) -- docs: mark Phase 4.3 (vsync sync command) as complete (9cb6f89) -- feat(cli): implement vsync sync command (4dd1559) -- docs: mark Phase 4.2 (vsync init command) as complete (7cdcf09) -- feat(cli): implement vsync init command with interactive prompts (2bba6ef) -- docs: mark Phase 4.1 (CLI Framework Setup) as complete (6dfeb74) -- feat(cli): implement CLI framework with Commander.js (74d5600) -- docs: mark Phase 3 complete - all diff and plan system implemented (2cd224a) -- feat(core): implement manifest update operations (981e805) -- docs: mark Phase 3.3 (Plan Generator) as complete (6c93bd9) -- feat(core): implement plan generator with formatting and validation (c4c2e87) -- docs: mark Phase 3.1 and 3.2 as complete (2631f23) -- feat(core): implement difference calculator for Phase 3.2 (5378da2) -- docs: mark Phase 2.5 (Adapter Registry) and Phase 2 as complete (68d79a9) -- feat(adapters): implement adapter registry for Phase 2.5 (c842618) -- docs: mark Phase 2.4 (OpenCode Adapter) as complete (4f7b758) -- feat(adapters): implement OpenCode adapter for Phase 2.4 (44e9aa7) -- docs: mark Phase 2.3 (Cursor Adapter) as complete (a96b32b) -- feat(adapters): implement Cursor adapter for Phase 2.3 (68e782f) -- docs: mark Phase 2.2 (Claude Code Adapter) as complete (0021dc8) -- feat(adapters): implement Claude Code adapter for Phase 2.2 (3e45530) -- feat(adapters): define base adapter interface for Phase 2.1 (ad7c69b) -- feat(core): implement Phase 1.3 and 1.4 - config/manifest managers and utilities (7608066) -- feat(types): implement core type definitions for Phase 1.2 (a338a6a) -- chore: update ESLint configuration and remove Prettier settings for CLI workspace (3c4ce9d) -- feat(lint): add ESLint and Prettier configuration for CLI workspace (18fbb37) -- refactor(build): bundle all dependencies for faster npx usage (dc6b30c) -- feat(core): initialize CLI workspace with TypeScript and build tooling (52de3c8) -- docs: update project structure for pnpm monorepo with cli workspace (8e80593) -- feat: restructure project for vsync with new task management and CLI commands (631cb36) -- chore: remove CHECKLIST.md after project setup completion (af76423) -- feat: complete vsync project setup with full customization (ef5b668) -- docs: update project configuration with new username and repository link, and refine Chinese slogan (e0b9f65) -- chore: remove example configuration files and add initial project configuration for vsync (2563f4a) -- chore: update pnpm-lock.yaml to include TypeScript 5.9.3, Zod 4.3.6, and framer-motion 12.29.0 (6361214) -- chore: update .gitignore, package.json, and ESLint configuration (5871db0) -- docs: update clone URLs in README files to point to the new repository name (23b6dff) -- docs: update clone URLs in README files to reflect new repository owner (c5aac1e) -- docs: update title of Product Requirements Document for clarity (d8f1694) -- feat: add content marketer and search specialist agents and research capabilities (927b471) -- feat: introduce frontend-design skill for creating high-quality, distinctive web interfaces (0f56e4c) -- feat: add comprehensive React and Next.js best practices documentation (345146b) -- docs: enhance README with detailed workflow, automation features, and shared skills for AI tools (0517a3f) -- chore: update README guidelines and enhance validation script for project setup (14be40c) -- feat: introduce automation guidelines and CLI tools for streamlined operations (1174058) -- feat: add MCP server configurations for Claude, Cursor, Codex, and OpenCode (5011f19) -- feat: add commands for code review, fixing GitHub issues, and reviewing pull requests (b2f42f1) -- feat: add commands for creating Git commits and pull requests following Angular convention (23cf187) -- chore: update package.json for testing commands, enhance CI (445844b) -- chore: update GitHub issue and pull request templates, add CI workflow, and adjust pre-commit hooks (c2bda09) -- feat: add standard GitHub Actions token naming conventions and example workflows (d7bbfd7) -- feat: implement commit convention and add Husky with Commitlint for validation (f3dc2f4) -- feat: add symbolic link for Claude agent documentation (3d4d487) -- feat: create symbolic links for Claude skills in multiple directories (5859429) -- feat: add settings configuration for Claude with permissions and server options (5c3e698) -- feat: add project setup documentation and checklist (7bf79cd) -- chore: update linting commands and fix formatting in meta files (6bfcf58) -- chore: update project configuration and add VSCode settings (9bf609a) -- feat: init project (5941cee) +- chore: version packages (#6) ([07d41f7](https://github.com/nicepkg/vsync/commit/07d41f7)) +- chore: release v1.0.7 (#5) ([3a9d217](https://github.com/nicepkg/vsync/commit/3a9d217)) +- chore: version packages (#4) ([a780db1](https://github.com/nicepkg/vsync/commit/a780db1)) +- Merge pull request #3 from nicepkg/dev ([bcba769](https://github.com/nicepkg/vsync/commit/bcba769)) +- Merge pull request #2 from nicepkg/changeset-release/main ([81c4ebf](https://github.com/nicepkg/vsync/commit/81c4ebf)) +- chore: version packages ([62bf590](https://github.com/nicepkg/vsync/commit/62bf590)) +- Merge pull request #1 from nicepkg/dev ([1206ca2](https://github.com/nicepkg/vsync/commit/1206ca2)) +- chore: release version 1.0.5 and update package configuration ([b703993](https://github.com/nicepkg/vsync/commit/b703993)) +- refactor: update VibeConfig to VSyncConfig across the codebase ([58bc89f](https://github.com/nicepkg/vsync/commit/58bc89f)) +- refactor: rename vsync to vsync across the project ([0909155](https://github.com/nicepkg/vsync/commit/0909155)) +- chore: release version 1.0.4 and update CHANGELOG ([898ebf9](https://github.com/nicepkg/vsync/commit/898ebf9)) +- feat: enhance MCP server handling and streamline configuration management ([c76faf2](https://github.com/nicepkg/vsync/commit/c76faf2)) +- chore: version packages (#11) ([af752f9](https://github.com/nicepkg/vsync/commit/af752f9)) +- refactor(workflows): streamline release process with dedicated script (#10) ([63604c1](https://github.com/nicepkg/vsync/commit/63604c1)) +- chore: release version 1.0.3 and update CHANGELOG ([1c782cd](https://github.com/nicepkg/vsync/commit/1c782cd)) +- refactor(workflows): streamline release process with dedicated script ([32afad1](https://github.com/nicepkg/vsync/commit/32afad1)) +- Merge pull request #9 from nicepkg/changeset-release/main ([71b9723](https://github.com/nicepkg/vsync/commit/71b9723)) +- chore: version packages ([96f1b2a](https://github.com/nicepkg/vsync/commit/96f1b2a)) +- Merge pull request #8 from nicepkg/dev ([47ce245](https://github.com/nicepkg/vsync/commit/47ce245)) +- refactor(registry): implement extensible plugin system with dynamic registration ([83f3082](https://github.com/nicepkg/vsync/commit/83f3082)) +- Merge pull request #7 from nicepkg/changeset-release/main ([151e9cc](https://github.com/nicepkg/vsync/commit/151e9cc)) +- chore: version packages ([893ef95](https://github.com/nicepkg/vsync/commit/893ef95)) +- Merge pull request #6 from nicepkg/dev ([bd999a3](https://github.com/nicepkg/vsync/commit/bd999a3)) +- chore(vsync): release version 1.0.1 and add CHANGELOG ([696bf9b](https://github.com/nicepkg/vsync/commit/696bf9b)) +- chore(vsync): add first version of vsync patch ([8da5e12](https://github.com/nicepkg/vsync/commit/8da5e12)) +- fix(workflows): simplify publish command in release workflow ([c789b01](https://github.com/nicepkg/vsync/commit/c789b01)) +- Merge pull request #5 from nicepkg/changeset-release/main ([fcdafd4](https://github.com/nicepkg/vsync/commit/fcdafd4)) +- chore: version packages ([47d66e0](https://github.com/nicepkg/vsync/commit/47d66e0)) +- Merge pull request #4 from nicepkg/dev ([42f7aeb](https://github.com/nicepkg/vsync/commit/42f7aeb)) +- chore(vsync): add initial version for vsync patch ([f6b7442](https://github.com/nicepkg/vsync/commit/f6b7442)) +- fix(workflows): update commit key in release workflow from 'commitMessage' to 'commit' ([8886eb3](https://github.com/nicepkg/vsync/commit/8886eb3)) +- refactor(quality): eliminate code smells and improve maintainability ([f0bc7cf](https://github.com/nicepkg/vsync/commit/f0bc7cf)) +- refactor(adapters): extract path resolution logic into dedicated resolver ([7904f52](https://github.com/nicepkg/vsync/commit/7904f52)) +- refactor(errors): unify error handling with severity-based strategy ([308a1e9](https://github.com/nicepkg/vsync/commit/308a1e9)) +- Merge pull request #3 from nicepkg/dev ([8c3bdab](https://github.com/nicepkg/vsync/commit/8c3bdab)) +- refactor(sync-executor): eliminate type assertions with type-safe generics ([bac7085](https://github.com/nicepkg/vsync/commit/bac7085)) +- refactor(sync): break up God Method into focused functions ([8dbc36f](https://github.com/nicepkg/vsync/commit/8dbc36f)) +- chore: add initial version for vsync patch and update CI workflow to remove push trigger ([8f9e1b8](https://github.com/nicepkg/vsync/commit/8f9e1b8)) +- Merge pull request #2 from nicepkg/dev ([79ebd19](https://github.com/nicepkg/vsync/commit/79ebd19)) +- chore(release): switch to git-cli for commit mode to support symlinks and set up Git user ([0369c56](https://github.com/nicepkg/vsync/commit/0369c56)) +- Merge pull request #1 from nicepkg/dev ([fcba900](https://github.com/nicepkg/vsync/commit/fcba900)) +- refactor(sync): enhance error handling and type safety in sync operations ([a967906](https://github.com/nicepkg/vsync/commit/a967906)) +- refactor(adapters): simplify item reading methods and enhance type safety ([b643457](https://github.com/nicepkg/vsync/commit/b643457)) +- refactor(sync): streamline item reading and error handling in sync operations ([bbf64c2](https://github.com/nicepkg/vsync/commit/bbf64c2)) +- fix: enhance error handling and logging in sync commands ([716e753](https://github.com/nicepkg/vsync/commit/716e753)) +- refactor(tests): update mocks for config-initializer and increase timeout for E2E ([029ab56](https://github.com/nicepkg/vsync/commit/029ab56)) +- refactor: unify environment variable transformation and streamline sync UI interactions ([8da65c3](https://github.com/nicepkg/vsync/commit/8da65c3)) +- refactor: consolidate language configuration and improve file operations ([4c60711](https://github.com/nicepkg/vsync/commit/4c60711)) +- feat(config): implement DRY config validation with lazy field initialization ([908e922](https://github.com/nicepkg/vsync/commit/908e922)) +- refactor(i18n): separate language config from project config ([ec3ad70](https://github.com/nicepkg/vsync/commit/ec3ad70)) +- feat(i18n): auto-prompt for language preference on first run ([6379c8a](https://github.com/nicepkg/vsync/commit/6379c8a)) +- refactor: extract ensureConfig to shared utility (DRY) ([55b6256](https://github.com/nicepkg/vsync/commit/55b6256)) +- feat(sync): auto-prompt for init when config not found ([1b8a475](https://github.com/nicepkg/vsync/commit/1b8a475)) +- fix: preserve user-specified name field in YAML frontmatter ([b635da3](https://github.com/nicepkg/vsync/commit/b635da3)) +- fix: exclude 'name' field from metadata to fix hash mismatch ([87767fe](https://github.com/nicepkg/vsync/commit/87767fe)) +- feat(adapter): introduce capabilities interface and implement in BaseAdapter and CodexAdapter ([1ab3c8f](https://github.com/nicepkg/vsync/commit/1ab3c8f)) +- fix(symlink): normalize Windows symlink paths and improve test assertions ([dcfafe2](https://github.com/nicepkg/vsync/commit/dcfafe2)) +- feat(commands): add projectDir and config.level parameters to plan, status, and sync commands ([bc1b767](https://github.com/nicepkg/vsync/commit/bc1b767)) +- feat(diff): enhance hash comparison logic for write-only targets and update manifest handling ([aed70e5](https://github.com/nicepkg/vsync/commit/aed70e5)) +- feat(manifest): update manifest path structure and improve status command output ([73f272d](https://github.com/nicepkg/vsync/commit/73f272d)) +- feat(sync): add debug logging and hash retrieval for sync operations ([e365e5a](https://github.com/nicepkg/vsync/commit/e365e5a)) +- feat(sync): enhance error handling and logging in sync plan execution ([952996f](https://github.com/nicepkg/vsync/commit/952996f)) +- feat(planner): enhance sync plan output to include tool counts in section headers ([64133c3](https://github.com/nicepkg/vsync/commit/64133c3)) +- feat(errors): introduce NotSupportError for unsupported features ([b651d77](https://github.com/nicepkg/vsync/commit/b651d77)) +- refactor(planner): enhance sync plan output with internationalization support ([324adb0](https://github.com/nicepkg/vsync/commit/324adb0)) +- feat(ux): smart confirmation defaults based on operation safety ([7224272](https://github.com/nicepkg/vsync/commit/7224272)) +- fix(ui): correct operation count display in sync plan ([c1e0e68](https://github.com/nicepkg/vsync/commit/c1e0e68)) +- refactor(ui): dramatically improve sync plan output readability ([b913855](https://github.com/nicepkg/vsync/commit/b913855)) +- fix(sync): respect sync_config when generating plan ([8539853](https://github.com/nicepkg/vsync/commit/8539853)) +- refactor(init): remove eager cache and manifest creation ([a34687e](https://github.com/nicepkg/vsync/commit/a34687e)) +- feat(init): add agents and commands to sync options ([0359f8f](https://github.com/nicepkg/vsync/commit/0359f8f)) +- fix: resolve commander version conflict and allow minimal user config ([47a0077](https://github.com/nicepkg/vsync/commit/47a0077)) +- refactor: change prompt type from "list" to "select" across multiple command files ([259bb2c](https://github.com/nicepkg/vsync/commit/259bb2c)) +- chore: update CI workflow to pin pkg-pr-new version and improve output parsing ([51e2b84](https://github.com/nicepkg/vsync/commit/51e2b84)) +- test: make user-level paths OS-agnostic ([ba3ccef](https://github.com/nicepkg/vsync/commit/ba3ccef)) +- chore: restrict CI workflow to only trigger on main branch ([ddc27fe](https://github.com/nicepkg/vsync/commit/ddc27fe)) +- chore: refactor CI workflow to use reusable test configuration and update test paths ([1f96ced](https://github.com/nicepkg/vsync/commit/1f96ced)) +- chore: update CI and deployment workflows to include test execution and wrangler installation ([c900c0b](https://github.com/nicepkg/vsync/commit/c900c0b)) +- chore: update dependencies and workflows ([fd44066](https://github.com/nicepkg/vsync/commit/fd44066)) +- build: release 1.0.0 ([26b2c24](https://github.com/nicepkg/vsync/commit/26b2c24)) +- feat: add comprehensive documentation for vsync ([3d0c6f2](https://github.com/nicepkg/vsync/commit/3d0c6f2)) +- feat: enhance documentation and configuration for vsync ([5ddf6f6](https://github.com/nicepkg/vsync/commit/5ddf6f6)) +- feat: enhance visual elements and interactions in 3D hero component ([d47fc7a](https://github.com/nicepkg/vsync/commit/d47fc7a)) +- feat: enhance 3D hero component with new visualizations and animations ([ed7be8e](https://github.com/nicepkg/vsync/commit/ed7be8e)) +- docs: update landing page content to enhance clarity and feature descriptions ([e6d3f46](https://github.com/nicepkg/vsync/commit/e6d3f46)) +- docs: update PRD with version 1.0.0 details and enhance section descriptions ([414b08d](https://github.com/nicepkg/vsync/commit/414b08d)) +- docs: update PRD to reflect version 1.0.0 and enhance feature descriptions ([50e2e03](https://github.com/nicepkg/vsync/commit/50e2e03)) +- chore: update release workflow to use bash for publishing commands ([43ce662](https://github.com/nicepkg/vsync/commit/43ce662)) +- chore: update release workflow to trigger on specific file changes ([7b3d2e5](https://github.com/nicepkg/vsync/commit/7b3d2e5)) +- chore: enhance GitHub workflows for deployment and preview comments ([b3b37f6](https://github.com/nicepkg/vsync/commit/b3b37f6)) +- refactor: update package structure and add changeset support ([df58266](https://github.com/nicepkg/vsync/commit/df58266)) +- fix(scripts): correct AdapterConfig parameter name in benchmark script ([853a6cf](https://github.com/nicepkg/vsync/commit/853a6cf)) +- feat(performance): implement benchmark utilities and measure improvements ([2b08e75](https://github.com/nicepkg/vsync/commit/2b08e75)) +- docs: update TASKS.md with completed E2E tests ([e4d88fe](https://github.com/nicepkg/vsync/commit/e4d88fe)) +- test: add comprehensive E2E tests for MCP, agents, and commands ([8a57d98](https://github.com/nicepkg/vsync/commit/8a57d98)) +- test: add comprehensive symlink E2E tests (Phase 6.3) ([7c8e7b8](https://github.com/nicepkg/vsync/commit/7c8e7b8)) +- test: add E2E tests with DRY and high cohesion design (Phase 6.3) ([1e84472](https://github.com/nicepkg/vsync/commit/1e84472)) +- fix: correct manifest TargetStatus format in integration tests ([7d31426](https://github.com/nicepkg/vsync/commit/7d31426)) +- fix: correct OpenCode environment variable format to {env:VAR} ([423b6ee](https://github.com/nicepkg/vsync/commit/423b6ee)) +- fix: resolve integration test failures (Phase 6.2) ([164855d](https://github.com/nicepkg/vsync/commit/164855d)) +- fix: resolve TypeScript and ESLint errors in integration tests ([57d3763](https://github.com/nicepkg/vsync/commit/57d3763)) +- test: add integration tests for full sync flow (Phase 6.2) ([b1149c1](https://github.com/nicepkg/vsync/commit/b1149c1)) +- docs: update TASKS.md to mark error message improvements complete ([6ab36f7](https://github.com/nicepkg/vsync/commit/6ab36f7)) +- feat(errors): add comprehensive error formatting utility ([bdd81a5](https://github.com/nicepkg/vsync/commit/bdd81a5)) +- docs: update TASKS.md to mark debug mode task complete ([35e2260](https://github.com/nicepkg/vsync/commit/35e2260)) +- feat(debug): add debug logging utility with --debug flag ([f2bd65d](https://github.com/nicepkg/vsync/commit/f2bd65d)) +- docs: update TASKS.md to mark --yes flag task complete ([30df643](https://github.com/nicepkg/vsync/commit/30df643)) +- feat: add --yes flag to sync and clean commands for CI/CD automation ([4046c0b](https://github.com/nicepkg/vsync/commit/4046c0b)) +- feat(i18n): complete import command i18n integration ([0bde2de](https://github.com/nicepkg/vsync/commit/0bde2de)) +- fix(symlink): integrate rollback support into sync workflow ([dc18cbf](https://github.com/nicepkg/vsync/commit/dc18cbf)) +- feat(symlink): add rollback support for safe error recovery ([5c1873c](https://github.com/nicepkg/vsync/commit/5c1873c)) +- feat(symlink): add first-time sync prompt for symlink usage ([6c83ac2](https://github.com/nicepkg/vsync/commit/6c83ac2)) +- feat(i18n): add custom framework configuration for i18n-ally ([ec94015](https://github.com/nicepkg/vsync/commit/ec94015)) +- feat(i18n): integrate translations into status command ([2a326b3](https://github.com/nicepkg/vsync/commit/2a326b3)) +- feat(i18n): integrate translations into list command ([fdf9469](https://github.com/nicepkg/vsync/commit/fdf9469)) +- feat(i18n): integrate translations into clean command ([d393b1a](https://github.com/nicepkg/vsync/commit/d393b1a)) +- feat(i18n): integrate translations into plan command ([c363fd5](https://github.com/nicepkg/vsync/commit/c363fd5)) +- feat(i18n): integrate translations into sync command ([c6c69d2](https://github.com/nicepkg/vsync/commit/c6c69d2)) +- feat(i18n): integrate translations into init command as reference pattern ([08fbdf4](https://github.com/nicepkg/vsync/commit/08fbdf4)) +- docs(i18n): add language configuration documentation and complete Phase 10 ([4ad69ad](https://github.com/nicepkg/vsync/commit/4ad69ad)) +- feat(i18n): initialize i18n system at CLI startup ([8fb8ff4](https://github.com/nicepkg/vsync/commit/8fb8ff4)) +- feat(i18n): implement first-run language detection and bilingual prompt ([860ca51](https://github.com/nicepkg/vsync/commit/860ca51)) +- refactor: streamline import paths and enhance language support ([835d591](https://github.com/nicepkg/vsync/commit/835d591)) +- feat(config): add language preference support for user-level configuration ([fa5b4f4](https://github.com/nicepkg/vsync/commit/fa5b4f4)) +- feat(i18n): implement lightweight i18n infrastructure with English and Chinese support ([270aa4a](https://github.com/nicepkg/vsync/commit/270aa4a)) +- feat: integrate symlink support into sync workflow ([fdab014](https://github.com/nicepkg/vsync/commit/fdab014)) +- docs: update Phase 9 progress in TASKS.md ([17207d3](https://github.com/nicepkg/vsync/commit/17207d3)) +- feat(adapters): add symlink handling to BaseAdapter for skills directories ([606ecf6](https://github.com/nicepkg/vsync/commit/606ecf6)) +- feat(core): implement symlink sync handler for skills directories ([d8ad8d9](https://github.com/nicepkg/vsync/commit/d8ad8d9)) +- feat(utils): implement cross-platform symlink utilities ([4a8282e](https://github.com/nicepkg/vsync/commit/4a8282e)) +- docs: mark Phase 9.1 as complete in TASKS.md ([a199911](https://github.com/nicepkg/vsync/commit/a199911)) +- feat(config): add symlink support configuration for skills ([f1a13b9](https://github.com/nicepkg/vsync/commit/f1a13b9)) +- chore: update TASKS.md to remove completed tasks and adjust phase statuses ([616793c](https://github.com/nicepkg/vsync/commit/616793c)) +- feat(core): implement incremental sync optimization with file caching ([fd8877a](https://github.com/nicepkg/vsync/commit/fd8877a)) +- feat: implement ParallelSyncOrchestrator and SyncExecutor ([3f2091d](https://github.com/nicepkg/vsync/commit/3f2091d)) +- chore: update TASKS.md to reflect version bump to 3.1.0 ([cbb1c1d](https://github.com/nicepkg/vsync/commit/cbb1c1d)) +- refactor: streamline adapter methods by consolidating read and write operation ([a4575ae](https://github.com/nicepkg/vsync/commit/a4575ae)) +- feat: enhance Claude Code adapter to support multiple MCP server types ([f8c862d](https://github.com/nicepkg/vsync/commit/f8c862d)) +- refactor: remove validation methods from adapter implementations ([c4d784a](https://github.com/nicepkg/vsync/commit/c4d784a)) +- refactor: consolidate adapter implementations by extending BaseAdapter ([c1d226d](https://github.com/nicepkg/vsync/commit/c1d226d)) +- feat: implement support file handling in adapters ([1b21d91](https://github.com/nicepkg/vsync/commit/1b21d91)) +- refactor: remove configFormat, capabilities, and isReadOnly from ToolAdapter implementations ([9dc268a](https://github.com/nicepkg/vsync/commit/9dc268a)) +- docs: add global configuration details for Claude Code in ai-tools and prd documentation ([e938fda](https://github.com/nicepkg/vsync/commit/e938fda)) +- feat: enhance adapter configuration with level support and update file handling ([e1dd008](https://github.com/nicepkg/vsync/commit/e1dd008)) +- docs: update Codex configuration details to reflect changes in file structure and format ([1a2b380](https://github.com/nicepkg/vsync/commit/1a2b380)) +- refactor: reorganize file operations and update adapter implementations ([2b21902](https://github.com/nicepkg/vsync/commit/2b21902)) +- chore: remove unused '@types/inquirer' dependency and add refactor plan for adapter architecture ([5f0c346](https://github.com/nicepkg/vsync/commit/5f0c346)) +- refactor: flatten directory structure by removing extra cli layer ([29f6d2b](https://github.com/nicepkg/vsync/commit/29f6d2b)) +- feat(cli): add import command for cross-project config import ([468101c](https://github.com/nicepkg/vsync/commit/468101c)) +- feat: add Codex adapter with full TOML support for v1.1 ([8128830](https://github.com/nicepkg/vsync/commit/8128830)) +- docs: mark Phase 7.3 Commands Synchronization as complete ([01f5f33](https://github.com/nicepkg/vsync/commit/01f5f33)) +- feat(phase-7.3): implement command synchronization support ([d855673](https://github.com/nicepkg/vsync/commit/d855673)) +- docs: mark Phase 7.2 Agents Synchronization as complete ([2c5af99](https://github.com/nicepkg/vsync/commit/2c5af99)) +- feat(phase-7.2): implement agent synchronization support ([2c720f6](https://github.com/nicepkg/vsync/commit/2c720f6)) +- feat(core): implement user-level config merging for Phase 7.1 ([daa42fa](https://github.com/nicepkg/vsync/commit/daa42fa)) +- docs: add detailed v1.1 (Phase 7-8) task breakdown ([782914c](https://github.com/nicepkg/vsync/commit/782914c)) +- feat(cli): add error recovery with rollback to sync command ([65b0918](https://github.com/nicepkg/vsync/commit/65b0918)) +- feat(core): implement rollback mechanism for safe error recovery ([a3300ce](https://github.com/nicepkg/vsync/commit/a3300ce)) +- docs: mark Phase 5.2 Environment Variable Preservation as complete ([5ba78ce](https://github.com/nicepkg/vsync/commit/5ba78ce)) +- feat: add fsync to atomic write for crash-safe file operations ([0ea84a4](https://github.com/nicepkg/vsync/commit/0ea84a4)) +- chore: update ESLint linting command to remove max-warnings restriction ([1fcb30f](https://github.com/nicepkg/vsync/commit/1fcb30f)) +- refactor: standardize ESLint configuration and improve code formatting ([5878da8](https://github.com/nicepkg/vsync/commit/5878da8)) +- fix: complete TargetStatus and ManifestItem type fixes ([d83ecdd](https://github.com/nicepkg/vsync/commit/d83ecdd)) +- fix: resolve type errors and replace paths with TypeScript aliases ([98b6277](https://github.com/nicepkg/vsync/commit/98b6277)) +- refactor: add TypeScript path aliases and improve typecheck coverage ([2560744](https://github.com/nicepkg/vsync/commit/2560744)) +- docs(tasks): add TypeScript path aliases refactor task ([c834e7b](https://github.com/nicepkg/vsync/commit/c834e7b)) +- refactor: remove MCP security feature to simplify user experience ([1700b7d](https://github.com/nicepkg/vsync/commit/1700b7d)) +- feat(cli): implement clean command with target/source removal modes ([141eb45](https://github.com/nicepkg/vsync/commit/141eb45)) +- feat(cli): implement vsync list command with table output ([ad726f3](https://github.com/nicepkg/vsync/commit/ad726f3)) +- feat(cli): implement vsync status command ([15f6f74](https://github.com/nicepkg/vsync/commit/15f6f74)) +- feat(cli): implement vsync plan command with detailed output ([0cfc46c](https://github.com/nicepkg/vsync/commit/0cfc46c)) +- docs: mark Phase 4.3 (vsync sync command) as complete ([9cb6f89](https://github.com/nicepkg/vsync/commit/9cb6f89)) +- feat(cli): implement vsync sync command ([4dd1559](https://github.com/nicepkg/vsync/commit/4dd1559)) +- docs: mark Phase 4.2 (vsync init command) as complete ([7cdcf09](https://github.com/nicepkg/vsync/commit/7cdcf09)) +- feat(cli): implement vsync init command with interactive prompts ([2bba6ef](https://github.com/nicepkg/vsync/commit/2bba6ef)) +- docs: mark Phase 4.1 (CLI Framework Setup) as complete ([6dfeb74](https://github.com/nicepkg/vsync/commit/6dfeb74)) +- feat(cli): implement CLI framework with Commander.js ([74d5600](https://github.com/nicepkg/vsync/commit/74d5600)) +- docs: mark Phase 3 complete - all diff and plan system implemented ([2cd224a](https://github.com/nicepkg/vsync/commit/2cd224a)) +- feat(core): implement manifest update operations ([981e805](https://github.com/nicepkg/vsync/commit/981e805)) +- docs: mark Phase 3.3 (Plan Generator) as complete ([6c93bd9](https://github.com/nicepkg/vsync/commit/6c93bd9)) +- feat(core): implement plan generator with formatting and validation ([c4c2e87](https://github.com/nicepkg/vsync/commit/c4c2e87)) +- docs: mark Phase 3.1 and 3.2 as complete ([2631f23](https://github.com/nicepkg/vsync/commit/2631f23)) +- feat(core): implement difference calculator for Phase 3.2 ([5378da2](https://github.com/nicepkg/vsync/commit/5378da2)) +- docs: mark Phase 2.5 (Adapter Registry) and Phase 2 as complete ([68d79a9](https://github.com/nicepkg/vsync/commit/68d79a9)) +- feat(adapters): implement adapter registry for Phase 2.5 ([c842618](https://github.com/nicepkg/vsync/commit/c842618)) +- docs: mark Phase 2.4 (OpenCode Adapter) as complete ([4f7b758](https://github.com/nicepkg/vsync/commit/4f7b758)) +- feat(adapters): implement OpenCode adapter for Phase 2.4 ([44e9aa7](https://github.com/nicepkg/vsync/commit/44e9aa7)) +- docs: mark Phase 2.3 (Cursor Adapter) as complete ([a96b32b](https://github.com/nicepkg/vsync/commit/a96b32b)) +- feat(adapters): implement Cursor adapter for Phase 2.3 ([68e782f](https://github.com/nicepkg/vsync/commit/68e782f)) +- docs: mark Phase 2.2 (Claude Code Adapter) as complete ([0021dc8](https://github.com/nicepkg/vsync/commit/0021dc8)) +- feat(adapters): implement Claude Code adapter for Phase 2.2 ([3e45530](https://github.com/nicepkg/vsync/commit/3e45530)) +- feat(adapters): define base adapter interface for Phase 2.1 ([ad7c69b](https://github.com/nicepkg/vsync/commit/ad7c69b)) +- feat(core): implement Phase 1.3 and 1.4 - config/manifest managers and utilities ([7608066](https://github.com/nicepkg/vsync/commit/7608066)) +- feat(types): implement core type definitions for Phase 1.2 ([a338a6a](https://github.com/nicepkg/vsync/commit/a338a6a)) +- chore: update ESLint configuration and remove Prettier settings for CLI workspace ([3c4ce9d](https://github.com/nicepkg/vsync/commit/3c4ce9d)) +- feat(lint): add ESLint and Prettier configuration for CLI workspace ([18fbb37](https://github.com/nicepkg/vsync/commit/18fbb37)) +- refactor(build): bundle all dependencies for faster npx usage ([dc6b30c](https://github.com/nicepkg/vsync/commit/dc6b30c)) +- feat(core): initialize CLI workspace with TypeScript and build tooling ([52de3c8](https://github.com/nicepkg/vsync/commit/52de3c8)) +- docs: update project structure for pnpm monorepo with cli workspace ([8e80593](https://github.com/nicepkg/vsync/commit/8e80593)) +- feat: restructure project for vsync with new task management and CLI commands ([631cb36](https://github.com/nicepkg/vsync/commit/631cb36)) +- chore: remove CHECKLIST.md after project setup completion ([af76423](https://github.com/nicepkg/vsync/commit/af76423)) +- feat: complete vsync project setup with full customization ([ef5b668](https://github.com/nicepkg/vsync/commit/ef5b668)) +- docs: update project configuration with new username and repository link, and refine Chinese slogan ([e0b9f65](https://github.com/nicepkg/vsync/commit/e0b9f65)) +- chore: remove example configuration files and add initial project configuration for vsync ([2563f4a](https://github.com/nicepkg/vsync/commit/2563f4a)) +- chore: update pnpm-lock.yaml to include TypeScript 5.9.3, Zod 4.3.6, and framer-motion 12.29.0 ([6361214](https://github.com/nicepkg/vsync/commit/6361214)) +- chore: update .gitignore, package.json, and ESLint configuration ([5871db0](https://github.com/nicepkg/vsync/commit/5871db0)) +- docs: update clone URLs in README files to point to the new repository name ([23b6dff](https://github.com/nicepkg/vsync/commit/23b6dff)) +- docs: update clone URLs in README files to reflect new repository owner ([c5aac1e](https://github.com/nicepkg/vsync/commit/c5aac1e)) +- docs: update title of Product Requirements Document for clarity ([d8f1694](https://github.com/nicepkg/vsync/commit/d8f1694)) +- feat: add content marketer and search specialist agents and research capabilities ([927b471](https://github.com/nicepkg/vsync/commit/927b471)) +- feat: introduce frontend-design skill for creating high-quality, distinctive web interfaces ([0f56e4c](https://github.com/nicepkg/vsync/commit/0f56e4c)) +- feat: add comprehensive React and Next.js best practices documentation ([345146b](https://github.com/nicepkg/vsync/commit/345146b)) +- docs: enhance README with detailed workflow, automation features, and shared skills for AI tools ([0517a3f](https://github.com/nicepkg/vsync/commit/0517a3f)) +- chore: update README guidelines and enhance validation script for project setup ([14be40c](https://github.com/nicepkg/vsync/commit/14be40c)) +- feat: introduce automation guidelines and CLI tools for streamlined operations ([1174058](https://github.com/nicepkg/vsync/commit/1174058)) +- feat: add MCP server configurations for Claude, Cursor, Codex, and OpenCode ([5011f19](https://github.com/nicepkg/vsync/commit/5011f19)) +- feat: add commands for code review, fixing GitHub issues, and reviewing pull requests ([b2f42f1](https://github.com/nicepkg/vsync/commit/b2f42f1)) +- feat: add commands for creating Git commits and pull requests following Angular convention ([23cf187](https://github.com/nicepkg/vsync/commit/23cf187)) +- chore: update package.json for testing commands, enhance CI ([445844b](https://github.com/nicepkg/vsync/commit/445844b)) +- chore: update GitHub issue and pull request templates, add CI workflow, and adjust pre-commit hooks ([c2bda09](https://github.com/nicepkg/vsync/commit/c2bda09)) +- feat: add standard GitHub Actions token naming conventions and example workflows ([d7bbfd7](https://github.com/nicepkg/vsync/commit/d7bbfd7)) +- feat: implement commit convention and add Husky with Commitlint for validation ([f3dc2f4](https://github.com/nicepkg/vsync/commit/f3dc2f4)) +- feat: add symbolic link for Claude agent documentation ([3d4d487](https://github.com/nicepkg/vsync/commit/3d4d487)) +- feat: create symbolic links for Claude skills in multiple directories ([5859429](https://github.com/nicepkg/vsync/commit/5859429)) +- feat: add settings configuration for Claude with permissions and server options ([5c3e698](https://github.com/nicepkg/vsync/commit/5c3e698)) +- feat: add project setup documentation and checklist ([7bf79cd](https://github.com/nicepkg/vsync/commit/7bf79cd)) +- chore: update linting commands and fix formatting in meta files ([6bfcf58](https://github.com/nicepkg/vsync/commit/6bfcf58)) +- chore: update project configuration and add VSCode settings ([9bf609a](https://github.com/nicepkg/vsync/commit/9bf609a)) +- feat: init project ([5941cee](https://github.com/nicepkg/vsync/commit/5941cee)) From 5387c8d83dc81e612655d09ad3b0d8a28b112f3b Mon Sep 17 00:00:00 2001 From: jinmingyang <2214962083@qq.com> Date: Tue, 27 Jan 2026 10:39:58 +0800 Subject: [PATCH 14/16] chore(cli): fix eslint warnings and improve type annotations Co-Authored-By: Claude Opus 4.5 --- cli/eslint.config.mjs | 8 +------- cli/src/utils/i18n.ts | 6 +++--- cli/test/adapters/registry.test.ts | 3 ++- cli/test/commands/sync.test.ts | 7 ++++--- cli/test/core/config-manager.test.ts | 6 +++--- cli/test/core/manifest-manager.test.ts | 3 ++- cli/test/core/parallel-sync.test.ts | 9 +++++---- cli/test/core/sync-executor.test.ts | 2 +- cli/test/index.test.ts | 2 +- cli/test/utils/i18n.test.ts | 3 ++- 10 files changed, 24 insertions(+), 25 deletions(-) diff --git a/cli/eslint.config.mjs b/cli/eslint.config.mjs index 3cf206b..ef14f56 100644 --- a/cli/eslint.config.mjs +++ b/cli/eslint.config.mjs @@ -120,13 +120,7 @@ export default defineConfig( // TypeScript rules "@typescript-eslint/no-unused-vars": "off", // Use unused-imports instead "@typescript-eslint/no-explicit-any": "warn", - "@typescript-eslint/consistent-type-imports": [ - "warn", - { - prefer: "type-imports", - fixStyle: "inline-type-imports", - }, - ], + "@typescript-eslint/consistent-type-imports": "off", // Unused imports plugin "unused-imports/no-unused-imports": "error", diff --git a/cli/src/utils/i18n.ts b/cli/src/utils/i18n.ts index 9225868..2cbbab8 100644 --- a/cli/src/utils/i18n.ts +++ b/cli/src/utils/i18n.ts @@ -105,15 +105,15 @@ export function getCurrentLanguage(): Language { * @param path - Dot-separated path (e.g., "common.yes") * @returns Value at path or undefined */ -function getNestedValue(obj: any, path: string): string | undefined { +function getNestedValue(obj: Translations, path: string): string | undefined { const keys = path.split("."); - let current = obj; + let current: Translations | Record | string | undefined = obj; for (const key of keys) { if (current === undefined || current === null) { return undefined; } - current = current[key]; + current = current[key as keyof Translations] as Record; } return typeof current === "string" ? current : undefined; diff --git a/cli/test/adapters/registry.test.ts b/cli/test/adapters/registry.test.ts index 8bf8005..ac6fad6 100644 --- a/cli/test/adapters/registry.test.ts +++ b/cli/test/adapters/registry.test.ts @@ -4,6 +4,7 @@ import { CodexAdapter } from "@src/adapters/codex.js"; import { CursorAdapter } from "@src/adapters/cursor.js"; import { OpenCodeAdapter } from "@src/adapters/opencode.js"; import { getAdapter, getAvailableTools } from "@src/adapters/registry.js"; +import type { ToolName } from "@src/types/config.js"; import { isSamePath } from "../utils/path.js"; describe("Adapter Registry", () => { @@ -69,7 +70,7 @@ describe("Adapter Registry", () => { it("should throw error for unsupported tool", () => { expect(() => getAdapter({ - tool: "invalid-tool" as any, // Testing invalid tool name + tool: "invalid-tool" as ToolName, // Testing invalid tool name baseDir: "/test", level: "project", }), diff --git a/cli/test/commands/sync.test.ts b/cli/test/commands/sync.test.ts index 79b6066..229eadc 100644 --- a/cli/test/commands/sync.test.ts +++ b/cli/test/commands/sync.test.ts @@ -2,6 +2,7 @@ import { createHash } from "node:crypto"; import { readFile } from "node:fs/promises"; import { join, resolve } from "node:path"; import mockFs from "mock-fs"; +import type FileSystem from "mock-fs/lib/filesystem.js"; import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; import { readSourceConfig, @@ -62,7 +63,7 @@ describe("Sync Command", () => { }; beforeEach(() => { - const mockFsConfig: any = { + const mockFsConfig: FileSystem.DirectoryItems = { [TEST_HOME]: { // Add user-level config with language to avoid prompts ".vsync.json": JSON.stringify({ @@ -121,7 +122,7 @@ describe("Sync Command", () => { it("should throw error if config not found", async () => { const TEST_EMPTY = process.platform === "win32" ? "C:\\empty" : "/empty"; - const mockFsConfig: any = { + const mockFsConfig: FileSystem.DirectoryItems = { [TEST_EMPTY]: {}, }; mockFs(mockFsConfig); @@ -341,7 +342,7 @@ describe("Sync Command", () => { }); it("should handle manifest load errors gracefully", async () => { - const mockFsConfig: any = { + const mockFsConfig: FileSystem.DirectoryItems = { [TEST_HOME]: { // Add user-level config with language to avoid prompts ".vsync.json": JSON.stringify({ diff --git a/cli/test/core/config-manager.test.ts b/cli/test/core/config-manager.test.ts index b0bf9f5..72a8f6f 100644 --- a/cli/test/core/config-manager.test.ts +++ b/cli/test/core/config-manager.test.ts @@ -280,7 +280,7 @@ describe("Config Manager", () => { target_tools: ["cursor"], sync_config: { skills: true, mcp: true }, use_symlinks_for_skills: "yes", // Should be boolean - } as any; + } as Omit; const result = validateConfig(config); expect(result.valid).toBe(false); @@ -324,7 +324,7 @@ describe("Config Manager", () => { target_tools: ["cursor"], sync_config: { skills: true, mcp: true }, language: "fr", // Should be 'en' or 'zh' - } as any; + } as Omit; const result = validateConfig(config); expect(result.valid).toBe(false); @@ -339,7 +339,7 @@ describe("Config Manager", () => { target_tools: ["cursor"], sync_config: { skills: true, mcp: true }, language: 123, // Should be string - } as any; + } as Omit; const result = validateConfig(config); expect(result.valid).toBe(false); diff --git a/cli/test/core/manifest-manager.test.ts b/cli/test/core/manifest-manager.test.ts index 00f57ea..947adcf 100644 --- a/cli/test/core/manifest-manager.test.ts +++ b/cli/test/core/manifest-manager.test.ts @@ -2,6 +2,7 @@ import { createHash } from "node:crypto"; import { readFile } from "node:fs/promises"; import { join, resolve } from "node:path"; import mockFs from "mock-fs"; +import type FileSystem from "mock-fs/lib/filesystem.js"; import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; import { loadManifest, @@ -65,7 +66,7 @@ describe("Manifest Manager", () => { }; beforeEach(() => { - const mockFsConfig: any = { + const mockFsConfig: FileSystem.DirectoryItems = { [TEST_HOME]: { ".vsync": { cache: { diff --git a/cli/test/core/parallel-sync.test.ts b/cli/test/core/parallel-sync.test.ts index 904b1c1..4bdc173 100644 --- a/cli/test/core/parallel-sync.test.ts +++ b/cli/test/core/parallel-sync.test.ts @@ -9,6 +9,7 @@ import { type TargetSyncConfig, } from "@src/core/parallel-sync.js"; import { SourceData } from "@src/core/sync-executor.js"; +import type { ToolName } from "@src/types/config.js"; import type { DiffResult } from "@src/types/plan.js"; describe("ParallelSyncOrchestrator", () => { @@ -18,17 +19,17 @@ describe("ParallelSyncOrchestrator", () => { beforeEach(() => { sourceData = new SourceData( - [{ name: "skill1", content: "content1", hash: "hash1" }] as any, - [{ name: "mcp1", type: "stdio", command: "cmd1", hash: "hash2" }] as any, + [{ name: "skill1", content: "content1", hash: "hash1" }], + [{ name: "mcp1", type: "stdio", command: "cmd1", hash: "hash2" }], [], [], ); // Create mock adapters - const createMockAdapter = (toolName: string): ToolAdapter => ({ + const createMockAdapter = (toolName: ToolName): ToolAdapter => ({ toolName, displayName: toolName, - config: { tool: toolName as any, baseDir: "/test", level: "project" }, + config: { tool: toolName, baseDir: "/test", level: "project" }, getConfigDir: vi.fn(() => `.${toolName}`), getConfigPaths: vi.fn(() => []), getMCPConfigPaths: vi.fn(() => []), diff --git a/cli/test/core/sync-executor.test.ts b/cli/test/core/sync-executor.test.ts index ca45d58..464df6b 100644 --- a/cli/test/core/sync-executor.test.ts +++ b/cli/test/core/sync-executor.test.ts @@ -17,7 +17,7 @@ describe("SyncExecutor", () => { mockAdapter = { toolName: "test-tool", displayName: "Test Tool", - config: { tool: "cursor" as any, baseDir: "/test", level: "project" }, + config: { tool: "cursor", baseDir: "/test", level: "project" }, getConfigDir: vi.fn(() => ".test"), getConfigPaths: vi.fn(() => []), getMCPConfigPaths: vi.fn(() => []), diff --git a/cli/test/index.test.ts b/cli/test/index.test.ts index b0511fc..01bfb1c 100644 --- a/cli/test/index.test.ts +++ b/cli/test/index.test.ts @@ -1,8 +1,8 @@ -import { describe, it, expect } from "vitest"; import { mkdtemp, rm, symlink, writeFile } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join, relative } from "node:path"; import { pathToFileURL } from "node:url"; +import { describe, it, expect } from "vitest"; import { isMainModule, main } from "@src/index.js"; describe("CLI Entry Point", () => { diff --git a/cli/test/utils/i18n.test.ts b/cli/test/utils/i18n.test.ts index b16e397..f6cbf67 100644 --- a/cli/test/utils/i18n.test.ts +++ b/cli/test/utils/i18n.test.ts @@ -5,6 +5,7 @@ import { t, setLanguage, getCurrentLanguage, + type Language, } from "@src/utils/i18n.js"; describe("i18n Utilities", () => { @@ -71,7 +72,7 @@ describe("i18n Utilities", () => { }); it("should throw error for unsupported language", async () => { - await expect(loadLanguage("fr" as any)).rejects.toThrow( + await expect(loadLanguage("fr" as Language)).rejects.toThrow( "Unsupported language", ); }); From d3c60ba4d4b90f94eda5e5ec6fc0ae21d25a988c Mon Sep 17 00:00:00 2001 From: jinmingyang <2214962083@qq.com> Date: Tue, 27 Jan 2026 10:40:04 +0800 Subject: [PATCH 15/16] chore(website): fix eslint warnings and formatting Co-Authored-By: Claude Opus 4.5 --- website/eslint.config.mjs | 2 +- website/src/components/home/landing-page.tsx | 4 +++- website/src/components/ui/input-otp.tsx | 4 +++- website/src/components/ui/tree-view.tsx | 5 +++-- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/website/eslint.config.mjs b/website/eslint.config.mjs index aa52689..80746b0 100644 --- a/website/eslint.config.mjs +++ b/website/eslint.config.mjs @@ -146,7 +146,7 @@ export default defineConfig( ], "@typescript-eslint/prefer-nullish-coalescing": "off", "@typescript-eslint/no-explicit-any": "warn", - "@typescript-eslint/no-unnecessary-condition": "warn", + "@typescript-eslint/no-unnecessary-condition": "off", }, }, diff --git a/website/src/components/home/landing-page.tsx b/website/src/components/home/landing-page.tsx index 2f8b5f5..d5a21f7 100644 --- a/website/src/components/home/landing-page.tsx +++ b/website/src/components/home/landing-page.tsx @@ -272,7 +272,9 @@ export function LandingPage({ lang }: { lang: "en" | "zh" }) {
$ - npx @nicepkg/vsync sync + + npx @nicepkg/vsync sync +
diff --git a/website/src/components/ui/input-otp.tsx b/website/src/components/ui/input-otp.tsx index 6090ef6..4922cb8 100644 --- a/website/src/components/ui/input-otp.tsx +++ b/website/src/components/ui/input-otp.tsx @@ -43,7 +43,9 @@ function InputOTPSlot({ index: number; }) { const inputOTPContext = React.useContext(OTPInputContext); - const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}; + + const { char, hasFakeCaret, isActive } = + inputOTPContext?.slots?.[index] ?? {}; return (
- {item.name} + {item.name} {item.actions} From b4cd674bc394ed79b07a4cfe352c28518fe6f965 Mon Sep 17 00:00:00 2001 From: jinmingyang <2214962083@qq.com> Date: Tue, 27 Jan 2026 11:18:28 +0800 Subject: [PATCH 16/16] feat(website): add seo enhancements with sitemap, pwa manifest and structured data Co-Authored-By: Claude Opus 4.5 --- pnpm-lock.yaml | 1562 ++++++++++------- website/content/en/docs/faq.mdx | 4 + website/content/en/index.mdx | 3 +- website/content/zh/docs/faq.mdx | 4 + website/content/zh/index.mdx | 3 +- website/eslint.config.mjs | 23 +- website/package.json | 16 +- website/public/apple-touch-icon.png | Bin 0 -> 6417 bytes website/public/icon-192.png | Bin 0 -> 6646 bytes website/public/icon-512.png | Bin 0 -> 30130 bytes website/public/manifest.json | 32 + website/public/og-image.png | Bin 0 -> 90432 bytes website/public/og-image.svg | 98 ++ website/public/robots.txt | 13 +- website/public/sitemap-en.xml | 84 + website/public/sitemap-zh.xml | 84 + website/public/sitemap.xml | 11 + website/scripts/generate-sitemap.ts | 198 +++ .../src/app/[locale]/[[...mdxPath]]/page.tsx | 1 - website/src/app/layout.tsx | 90 +- website/src/app/not-found.tsx | 177 ++ website/src/components/seo/faq-schema.tsx | 126 ++ website/src/components/seo/json-ld.tsx | 191 ++ website/src/components/ui/tree-view.tsx | 1 - website/src/lib/site-info.ts | 22 +- 25 files changed, 2055 insertions(+), 688 deletions(-) create mode 100644 website/public/apple-touch-icon.png create mode 100644 website/public/icon-192.png create mode 100644 website/public/icon-512.png create mode 100644 website/public/manifest.json create mode 100644 website/public/og-image.png create mode 100644 website/public/og-image.svg create mode 100644 website/public/sitemap-en.xml create mode 100644 website/public/sitemap-zh.xml create mode 100644 website/public/sitemap.xml create mode 100644 website/scripts/generate-sitemap.ts create mode 100644 website/src/app/not-found.tsx create mode 100644 website/src/components/seo/faq-schema.tsx create mode 100644 website/src/components/seo/json-ld.tsx diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1706ea7..3c07d9c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -82,13 +82,13 @@ importers: version: 10.1.8(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) + version: 2.32.0(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-prettier: specifier: ^5.5.5 version: 5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))(prettier@3.8.1) eslint-plugin-unused-imports: specifier: ^4.3.0 - version: 4.3.0(@typescript-eslint/eslint-plugin@8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)) + version: 4.3.0(@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)) gray-matter: specifier: ^4.0.3 version: 4.0.3 @@ -130,97 +130,97 @@ importers: dependencies: '@hookform/resolvers': specifier: ^5.2.2 - version: 5.2.2(react-hook-form@7.71.1(react@19.2.3)) + version: 5.2.2(react-hook-form@7.71.1(react@19.2.4)) '@radix-ui/react-accordion': specifier: ^1.2.12 - version: 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-alert-dialog': specifier: ^1.1.15 - version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-aspect-ratio': specifier: ^1.1.8 - version: 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-avatar': specifier: ^1.1.11 - version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-checkbox': specifier: ^1.3.3 - version: 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-collapsible': specifier: ^1.1.12 - version: 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-context-menu': specifier: ^2.2.16 - version: 2.2.16(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 2.2.16(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-dialog': specifier: ^1.1.15 - version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-dropdown-menu': specifier: ^2.1.16 - version: 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-hover-card': specifier: ^1.1.15 - version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-label': specifier: ^2.1.8 - version: 2.1.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 2.1.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-menubar': specifier: ^1.1.16 - version: 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-navigation-menu': specifier: ^1.2.14 - version: 1.2.14(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.2.14(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-popover': specifier: ^1.1.15 - version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-progress': specifier: ^1.1.8 - version: 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-radio-group': specifier: ^1.3.8 - version: 1.3.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.3.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-scroll-area': specifier: ^1.2.10 - version: 1.2.10(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.2.10(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-select': specifier: ^2.2.6 - version: 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-separator': specifier: ^1.1.8 - version: 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-slider': specifier: ^1.3.6 - version: 1.3.6(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.3.6(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-slot': specifier: ^1.2.4 - version: 1.2.4(@types/react@19.2.9)(react@19.2.3) + version: 1.2.4(@types/react@19.2.9)(react@19.2.4) '@radix-ui/react-switch': specifier: ^1.2.6 - version: 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-tabs': specifier: ^1.1.13 - version: 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-toggle': specifier: ^1.1.10 - version: 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-toggle-group': specifier: ^1.1.11 - version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-tooltip': specifier: ^1.2.8 - version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@react-three/drei': specifier: ^10.7.7 - version: 10.7.7(@react-three/fiber@9.5.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(three@0.182.0))(@types/react@19.2.9)(@types/three@0.182.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(three@0.182.0) + version: 10.7.7(@react-three/fiber@9.5.0(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(three@0.182.0))(@types/react@19.2.9)(@types/three@0.182.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(three@0.182.0) '@react-three/fiber': specifier: ^9.5.0 - version: 9.5.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(three@0.182.0) + version: 9.5.0(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(three@0.182.0) '@t3-oss/env-nextjs': specifier: ^0.13.10 version: 0.13.10(typescript@5.9.3)(zod@4.3.6) '@tanstack/react-query': - specifier: ^5.90.19 - version: 5.90.19(react@19.2.3) + specifier: ^5.90.20 + version: 5.90.20(react@19.2.4) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -229,55 +229,55 @@ importers: version: 2.1.1 cmdk: specifier: ^1.1.1 - version: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) date-fns: specifier: ^4.1.0 version: 4.1.0 embla-carousel-react: specifier: ^8.6.0 - version: 8.6.0(react@19.2.3) + version: 8.6.0(react@19.2.4) framer-motion: - specifier: ^12.29.0 - version: 12.29.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: ^12.29.2 + version: 12.29.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) input-otp: specifier: ^1.4.2 - version: 1.4.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.4.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) lucide-react: specifier: ^0.563.0 - version: 0.563.0(react@19.2.3) + version: 0.563.0(react@19.2.4) next: specifier: ^15.2.3 - version: 15.5.9(@babel/core@7.28.6)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 15.5.9(@babel/core@7.28.6)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) next-themes: specifier: ^0.4.6 - version: 0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) nextra: specifier: ^4.6.1 - version: 4.6.1(next@15.5.9(@babel/core@7.28.6)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + version: 4.6.1(next@15.5.9(@babel/core@7.28.6)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) nextra-theme-docs: specifier: ^4.6.1 - version: 4.6.1(@types/react@19.2.9)(next@15.5.9(@babel/core@7.28.6)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(nextra@4.6.1(next@15.5.9(@babel/core@7.28.6)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)) + version: 4.6.1(@types/react@19.2.9)(next@15.5.9(@babel/core@7.28.6)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(nextra@4.6.1(next@15.5.9(@babel/core@7.28.6)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4)) react: - specifier: ^19.2.3 - version: 19.2.3 + specifier: ^19.2.4 + version: 19.2.4 react-day-picker: specifier: ^9.13.0 - version: 9.13.0(react@19.2.3) + version: 9.13.0(react@19.2.4) react-dom: - specifier: ^19.2.3 - version: 19.2.3(react@19.2.3) + specifier: ^19.2.4 + version: 19.2.4(react@19.2.4) react-hook-form: specifier: ^7.71.1 - version: 7.71.1(react@19.2.3) + version: 7.71.1(react@19.2.4) react-resizable-panels: - specifier: ^4.4.1 - version: 4.4.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: ^4.5.2 + version: 4.5.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) recharts: specifier: 2.15.4 - version: 2.15.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 2.15.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) sonner: specifier: ^2.0.7 - version: 2.0.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 2.0.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4) tailwind-merge: specifier: ^3.4.0 version: 3.4.0 @@ -286,13 +286,13 @@ importers: version: 0.182.0 vaul: specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) zod: specifier: ^4.3.6 version: 4.3.6 zustand: specifier: ^5.0.10 - version: 5.0.10(@types/react@19.2.9)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)) + version: 5.0.10(@types/react@19.2.9)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4)) devDependencies: '@eslint/eslintrc': specifier: ^3.3.3 @@ -329,7 +329,7 @@ importers: version: 10.1.8(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) + version: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-prettier: specifier: ^5.5.5 version: 5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1))(prettier@3.8.1) @@ -354,6 +354,9 @@ importers: tailwindcss: specifier: ^4.1.18 version: 4.1.18 + tsx: + specifier: ^4.21.0 + version: 4.21.0 tw-animate-css: specifier: ^1.4.0 version: 1.4.0 @@ -361,8 +364,8 @@ importers: specifier: ^5.9.3 version: 5.9.3 typescript-eslint: - specifier: ^8.53.1 - version: 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: ^8.54.0 + version: 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) packages: @@ -3244,11 +3247,11 @@ packages: '@tailwindcss/postcss@4.1.18': resolution: {integrity: sha512-Ce0GFnzAOuPyfV5SxjXGn0CubwGcuDB0zcdaPuCSzAa/2vII24JTkH+I6jcbXLb1ctjZMZZI6OjDaLPJQL1S0g==} - '@tanstack/query-core@5.90.19': - resolution: {integrity: sha512-GLW5sjPVIvH491VV1ufddnfldyVB+teCnpPIvweEfkpRx7CfUmUGhoh9cdcUKBh/KwVxk22aNEDxeTsvmyB/WA==} + '@tanstack/query-core@5.90.20': + resolution: {integrity: sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==} - '@tanstack/react-query@5.90.19': - resolution: {integrity: sha512-qTZRZ4QyTzQc+M0IzrbKHxSeISUmRB3RPGmao5bT+sI6ayxSRhn0FXEnT5Hg3as8SBFcRosrXXRFB+yAcxVxJQ==} + '@tanstack/react-query@5.90.20': + resolution: {integrity: sha512-vXBxa+qeyveVO7OA0jX1z+DeyCA4JKnThKv411jd5SORpBKgkcVnYKCiBgECvADvniBX7tobwBmg01qq9JmMJw==} peerDependencies: react: ^18 || ^19 @@ -3474,6 +3477,14 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/eslint-plugin@8.54.0': + resolution: {integrity: sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.54.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/parser@8.53.1': resolution: {integrity: sha512-nm3cvFN9SqZGXjmw5bZ6cGmvJSyJPn0wU9gHAZZHDnZl2wF9PhHv78Xf06E0MaNk4zLVHL8hb2/c32XvyJOLQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3481,22 +3492,45 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/parser@8.54.0': + resolution: {integrity: sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/project-service@8.53.1': resolution: {integrity: sha512-WYC4FB5Ra0xidsmlPb+1SsnaSKPmS3gsjIARwbEkHkoWloQmuzcfypljaJcR78uyLA1h8sHdWWPHSLDI+MtNog==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/project-service@8.54.0': + resolution: {integrity: sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/scope-manager@8.53.1': resolution: {integrity: sha512-Lu23yw1uJMFY8cUeq7JlrizAgeQvWugNQzJp8C3x8Eo5Jw5Q2ykMdiiTB9vBVOOUBysMzmRRmUfwFrZuI2C4SQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.54.0': + resolution: {integrity: sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/tsconfig-utils@8.53.1': resolution: {integrity: sha512-qfvLXS6F6b1y43pnf0pPbXJ+YoXIC7HKg0UGZ27uMIemKMKA6XH2DTxsEDdpdN29D+vHV07x/pnlPNVLhdhWiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/tsconfig-utils@8.54.0': + resolution: {integrity: sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/type-utils@8.53.1': resolution: {integrity: sha512-MOrdtNvyhy0rHyv0ENzub1d4wQYKb2NmIqG7qEqPWFW7Mpy2jzFC3pQ2yKDvirZB7jypm5uGjF2Qqs6OIqu47w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3504,16 +3538,33 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/type-utils@8.54.0': + resolution: {integrity: sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/types@8.53.1': resolution: {integrity: sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.54.0': + resolution: {integrity: sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.53.1': resolution: {integrity: sha512-RGlVipGhQAG4GxV1s34O91cxQ/vWiHJTDHbXRr0li2q/BGg3RR/7NM8QDWgkEgrwQYCvmJV9ichIwyoKCQ+DTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/typescript-estree@8.54.0': + resolution: {integrity: sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@8.53.1': resolution: {integrity: sha512-c4bMvGVWW4hv6JmDUEG7fSYlWOl3II2I4ylt0NM+seinYQlZMQIaKaXIIVJWt9Ofh6whrpM+EdDQXKXjNovvrg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3521,10 +3572,21 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@8.54.0': + resolution: {integrity: sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/visitor-keys@8.53.1': resolution: {integrity: sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.54.0': + resolution: {integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript/vfs@1.6.2': resolution: {integrity: sha512-hoBwJwcbKHmvd2QVebiytN1aELvpk9B74B4L1mFm/XT1Q/VOYAWl2vQ9AWRFtQq8zmz6enTpfTV8WRc4ATjW/g==} peerDependencies: @@ -4961,8 +5023,8 @@ packages: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} - framer-motion@12.29.0: - resolution: {integrity: sha512-1gEFGXHYV2BD42ZPTFmSU9buehppU+bCuOnHU0AD18DKh9j4DuTx47MvqY5ax+NNWRtK32qIcJf1UxKo1WwjWg==} + framer-motion@12.29.2: + resolution: {integrity: sha512-lSNRzBJk4wuIy0emYQ/nfZ7eWhqud2umPKw2QAQki6uKhZPKm2hRQHeQoHTG9MIvfobb+A/LbEWPJU794ZUKrg==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 @@ -6140,11 +6202,11 @@ packages: resolution: {integrity: sha512-d/P1M/RacgM3dB0sJ8rjeRNXxtapkPCUnMGmIN0ixJ16F/E4GUZCvWcSGfWGz8eaXYvn1s9baUwNjI4LOPEjiA==} engines: {node: '>=12.0.0'} - motion-dom@12.29.0: - resolution: {integrity: sha512-3eiz9bb32yvY8Q6XNM4AwkSOBPgU//EIKTZwsSWgA9uzbPBhZJeScCVcBuwwYVqhfamewpv7ZNmVKTGp5qnzkA==} + motion-dom@12.29.2: + resolution: {integrity: sha512-/k+NuycVV8pykxyiTCoFzIVLA95Nb1BFIVvfSu9L50/6K6qNeAYtkxXILy/LRutt7AzaYDc2myj0wkCVVYAPPA==} - motion-utils@12.27.2: - resolution: {integrity: sha512-B55gcoL85Mcdt2IEStY5EEAsrMSVE2sI14xQ/uAdPL+mfQxhKKFaEag9JmfxedJOR4vZpBGoPeC/Gm13I/4g5Q==} + motion-utils@12.29.2: + resolution: {integrity: sha512-G3kc34H2cX2gI63RqU+cZq+zWRRPSsNIOjpdl9TN4AQwC4sgwYPl/Q/Obf/d53nOm569T0fYK+tcoSV50BWx8A==} mrmime@2.0.1: resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} @@ -6728,10 +6790,10 @@ packages: peerDependencies: react: '>=16.8.0' - react-dom@19.2.3: - resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==} + react-dom@19.2.4: + resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==} peerDependencies: - react: ^19.2.3 + react: ^19.2.4 react-hook-form@7.71.1: resolution: {integrity: sha512-9SUJKCGKo8HUSsCO+y0CtqkqI5nNuaDqTxyqPsZPqIwudpj4rCrAz/jZV+jn57bx5gtZKOh3neQu94DXMc+w5w==} @@ -6771,8 +6833,8 @@ packages: '@types/react': optional: true - react-resizable-panels@4.4.1: - resolution: {integrity: sha512-dpM9oI6rGlAq7VYDeafSRA1JmkJv8aNuKySR+tZLQQLfaeqTnQLSM52EcoI/QdowzsjVUCk6jViKS0xHWITVRQ==} + react-resizable-panels@4.5.2: + resolution: {integrity: sha512-PJyyR41poi1O1MvvQzDVtEBRq1x7B/9jB6yoFbm67pm8AvPUUwhljFtxfhaYy8klsmkQ6AvxZgDxXTkDl4vy4Q==} peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 @@ -6808,8 +6870,8 @@ packages: react-dom: optional: true - react@19.2.3: - resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} + react@19.2.4: + resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} engines: {node: '>=0.10.0'} read-package-up@11.0.0: @@ -7599,6 +7661,13 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + typescript-eslint@8.54.0: + resolution: {integrity: sha512-CKsJ+g53QpsNPqbzUsfKVgd3Lny4yKZ1pP4qN3jdMOg/sisIDLGyDMezycquXLE5JsEU0wp3dGNdzig0/fmSVQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} @@ -9221,18 +9290,18 @@ snapshots: '@floating-ui/core': 1.7.3 '@floating-ui/utils': 0.2.10 - '@floating-ui/react-dom@2.1.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@floating-ui/react-dom@2.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@floating-ui/dom': 1.7.4 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@floating-ui/react@0.26.28(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@floating-ui/react@0.26.28(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@floating-ui/react-dom': 2.1.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@floating-ui/react-dom': 2.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@floating-ui/utils': 0.2.10 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) tabbable: 6.4.0 '@floating-ui/utils@0.2.10': {} @@ -9241,20 +9310,20 @@ snapshots: dependencies: tslib: 2.8.1 - '@headlessui/react@2.2.9(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@headlessui/react@2.2.9(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@floating-ui/react': 0.26.28(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@react-aria/focus': 3.21.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@react-aria/interactions': 3.26.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@tanstack/react-virtual': 3.13.18(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - use-sync-external-store: 1.6.0(react@19.2.3) + '@floating-ui/react': 0.26.28(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/focus': 3.21.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/interactions': 3.26.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@tanstack/react-virtual': 3.13.18(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + use-sync-external-store: 1.6.0(react@19.2.4) - '@hookform/resolvers@5.2.2(react-hook-form@7.71.1(react@19.2.3))': + '@hookform/resolvers@5.2.2(react-hook-form@7.71.1(react@19.2.4))': dependencies: '@standard-schema/utils': 0.3.0 - react-hook-form: 7.71.1(react@19.2.3) + react-hook-form: 7.71.1(react@19.2.4) '@humanfs/core@0.19.1': {} @@ -9786,729 +9855,729 @@ snapshots: '@radix-ui/primitive@1.1.3': {} - '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-aspect-ratio@1.1.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-aspect-ratio@1.1.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-avatar@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-avatar@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-context': 1.1.3(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-context': 1.1.3(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.9)(react@19.2.3)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.9)(react@19.2.4)': dependencies: - react: 19.2.3 + react: 19.2.4 optionalDependencies: '@types/react': 19.2.9 - '@radix-ui/react-context-menu@2.2.16(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-context-menu@2.2.16(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-context@1.1.2(@types/react@19.2.9)(react@19.2.3)': + '@radix-ui/react-context@1.1.2(@types/react@19.2.9)(react@19.2.4)': dependencies: - react: 19.2.3 + react: 19.2.4 optionalDependencies: '@types/react': 19.2.9 - '@radix-ui/react-context@1.1.3(@types/react@19.2.9)(react@19.2.3)': + '@radix-ui/react-context@1.1.3(@types/react@19.2.9)(react@19.2.4)': dependencies: - react: 19.2.3 + react: 19.2.4 optionalDependencies: '@types/react': 19.2.9 - '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.4) aria-hidden: 1.2.6 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - react-remove-scroll: 2.7.2(@types/react@19.2.9)(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-remove-scroll: 2.7.2(@types/react@19.2.9)(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-direction@1.1.1(@types/react@19.2.9)(react@19.2.3)': + '@radix-ui/react-direction@1.1.1(@types/react@19.2.9)(react@19.2.4)': dependencies: - react: 19.2.3 + react: 19.2.4 optionalDependencies: '@types/react': 19.2.9 - '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.9)(react@19.2.3)': + '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.9)(react@19.2.4)': dependencies: - react: 19.2.3 + react: 19.2.4 optionalDependencies: '@types/react': 19.2.9 - '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-hover-card@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-hover-card@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-id@1.1.1(@types/react@19.2.9)(react@19.2.3)': + '@radix-ui/react-id@1.1.1(@types/react@19.2.9)(react@19.2.4)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 optionalDependencies: '@types/react': 19.2.9 - '@radix-ui/react-label@2.1.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-label@2.1.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.9)(react@19.2.3) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.9)(react@19.2.4) aria-hidden: 1.2.6 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - react-remove-scroll: 2.7.2(@types/react@19.2.9)(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-remove-scroll: 2.7.2(@types/react@19.2.9)(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-menubar@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-menubar@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.4) aria-hidden: 1.2.6 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - react-remove-scroll: 2.7.2(@types/react@19.2.9)(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-remove-scroll: 2.7.2(@types/react@19.2.9)(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': - dependencies: - '@floating-ui/react-dom': 2.1.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.9)(react@19.2.3) + '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@floating-ui/react-dom': 2.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.9)(react@19.2.4) '@radix-ui/rect': 1.1.1 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-slot': 1.2.4(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-slot': 1.2.4(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-progress@1.1.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-progress@1.1.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-context': 1.1.3(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-context': 1.1.3(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-scroll-area@1.2.10(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-scroll-area@1.2.10(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) aria-hidden: 1.2.6 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - react-remove-scroll: 2.7.2(@types/react@19.2.9)(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-remove-scroll: 2.7.2(@types/react@19.2.9)(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-separator@1.1.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-separator@1.1.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-slider@1.3.6(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-slider@1.3.6(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-slot@1.2.3(@types/react@19.2.9)(react@19.2.3)': + '@radix-ui/react-slot@1.2.3(@types/react@19.2.9)(react@19.2.4)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 optionalDependencies: '@types/react': 19.2.9 - '@radix-ui/react-slot@1.2.4(@types/react@19.2.9)(react@19.2.3)': + '@radix-ui/react-slot@1.2.4(@types/react@19.2.9)(react@19.2.4)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 optionalDependencies: '@types/react': 19.2.9 - '@radix-ui/react-switch@1.2.6(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-switch@1.2.6(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-toggle@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-toggle@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.9)(react@19.2.3)': + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.9)(react@19.2.4)': dependencies: - react: 19.2.3 + react: 19.2.4 optionalDependencies: '@types/react': 19.2.9 - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.9)(react@19.2.3)': + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.9)(react@19.2.4)': dependencies: - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 optionalDependencies: '@types/react': 19.2.9 - '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.9)(react@19.2.3)': + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.9)(react@19.2.4)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 optionalDependencies: '@types/react': 19.2.9 - '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.9)(react@19.2.3)': + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.9)(react@19.2.4)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 optionalDependencies: '@types/react': 19.2.9 - '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.2.9)(react@19.2.3)': + '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.2.9)(react@19.2.4)': dependencies: - react: 19.2.3 - use-sync-external-store: 1.6.0(react@19.2.3) + react: 19.2.4 + use-sync-external-store: 1.6.0(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.9)(react@19.2.3)': + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.9)(react@19.2.4)': dependencies: - react: 19.2.3 + react: 19.2.4 optionalDependencies: '@types/react': 19.2.9 - '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.9)(react@19.2.3)': + '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.9)(react@19.2.4)': dependencies: - react: 19.2.3 + react: 19.2.4 optionalDependencies: '@types/react': 19.2.9 - '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.9)(react@19.2.3)': + '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.9)(react@19.2.4)': dependencies: '@radix-ui/rect': 1.1.1 - react: 19.2.3 + react: 19.2.4 optionalDependencies: '@types/react': 19.2.9 - '@radix-ui/react-use-size@1.1.1(@types/react@19.2.9)(react@19.2.3)': + '@radix-ui/react-use-size@1.1.1(@types/react@19.2.9)(react@19.2.4)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 optionalDependencies: '@types/react': 19.2.9 - '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 '@types/react-dom': 19.2.3(@types/react@19.2.9) '@radix-ui/rect@1.1.1': {} - '@react-aria/focus@3.21.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@react-aria/focus@3.21.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/interactions': 3.26.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@react-aria/utils': 3.32.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@react-types/shared': 3.32.1(react@19.2.3) + '@react-aria/interactions': 3.26.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-aria/utils': 3.32.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@react-types/shared': 3.32.1(react@19.2.4) '@swc/helpers': 0.5.18 clsx: 2.1.1 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/interactions@3.26.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@react-aria/interactions@3.26.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/ssr': 3.9.10(react@19.2.3) - '@react-aria/utils': 3.32.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/ssr': 3.9.10(react@19.2.4) + '@react-aria/utils': 3.32.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@react-stately/flags': 3.1.2 - '@react-types/shared': 3.32.1(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.4) '@swc/helpers': 0.5.18 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@react-aria/ssr@3.9.10(react@19.2.3)': + '@react-aria/ssr@3.9.10(react@19.2.4)': dependencies: '@swc/helpers': 0.5.18 - react: 19.2.3 + react: 19.2.4 - '@react-aria/utils@3.32.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@react-aria/utils@3.32.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@react-aria/ssr': 3.9.10(react@19.2.3) + '@react-aria/ssr': 3.9.10(react@19.2.4) '@react-stately/flags': 3.1.2 - '@react-stately/utils': 3.11.0(react@19.2.3) - '@react-types/shared': 3.32.1(react@19.2.3) + '@react-stately/utils': 3.11.0(react@19.2.4) + '@react-types/shared': 3.32.1(react@19.2.4) '@swc/helpers': 0.5.18 clsx: 2.1.1 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) '@react-stately/flags@3.1.2': dependencies: '@swc/helpers': 0.5.18 - '@react-stately/utils@3.11.0(react@19.2.3)': + '@react-stately/utils@3.11.0(react@19.2.4)': dependencies: '@swc/helpers': 0.5.18 - react: 19.2.3 + react: 19.2.4 - '@react-three/drei@10.7.7(@react-three/fiber@9.5.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(three@0.182.0))(@types/react@19.2.9)(@types/three@0.182.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(three@0.182.0)': + '@react-three/drei@10.7.7(@react-three/fiber@9.5.0(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(three@0.182.0))(@types/react@19.2.9)(@types/three@0.182.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(three@0.182.0)': dependencies: '@babel/runtime': 7.28.6 '@mediapipe/tasks-vision': 0.10.17 '@monogrid/gainmap-js': 3.4.0(three@0.182.0) - '@react-three/fiber': 9.5.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(three@0.182.0) - '@use-gesture/react': 10.3.1(react@19.2.3) + '@react-three/fiber': 9.5.0(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(three@0.182.0) + '@use-gesture/react': 10.3.1(react@19.2.4) camera-controls: 3.1.2(three@0.182.0) cross-env: 7.0.3 detect-gpu: 5.0.70 @@ -10516,48 +10585,48 @@ snapshots: hls.js: 1.6.15 maath: 0.10.8(@types/three@0.182.0)(three@0.182.0) meshline: 3.3.1(three@0.182.0) - react: 19.2.3 + react: 19.2.4 stats-gl: 2.4.2(@types/three@0.182.0)(three@0.182.0) stats.js: 0.17.0 - suspend-react: 0.1.3(react@19.2.3) + suspend-react: 0.1.3(react@19.2.4) three: 0.182.0 three-mesh-bvh: 0.8.3(three@0.182.0) three-stdlib: 2.36.1(three@0.182.0) troika-three-text: 0.52.4(three@0.182.0) - tunnel-rat: 0.1.2(@types/react@19.2.9)(react@19.2.3) - use-sync-external-store: 1.6.0(react@19.2.3) + tunnel-rat: 0.1.2(@types/react@19.2.9)(react@19.2.4) + use-sync-external-store: 1.6.0(react@19.2.4) utility-types: 3.11.0 - zustand: 5.0.10(@types/react@19.2.9)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)) + zustand: 5.0.10(@types/react@19.2.9)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4)) optionalDependencies: - react-dom: 19.2.3(react@19.2.3) + react-dom: 19.2.4(react@19.2.4) transitivePeerDependencies: - '@types/react' - '@types/three' - immer - '@react-three/fiber@9.5.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(three@0.182.0)': + '@react-three/fiber@9.5.0(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(three@0.182.0)': dependencies: '@babel/runtime': 7.28.6 '@types/webxr': 0.5.24 base64-js: 1.5.1 buffer: 6.0.3 - its-fine: 2.0.0(@types/react@19.2.9)(react@19.2.3) - react: 19.2.3 - react-use-measure: 2.1.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + its-fine: 2.0.0(@types/react@19.2.9)(react@19.2.4) + react: 19.2.4 + react-use-measure: 2.1.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4) scheduler: 0.27.0 - suspend-react: 0.1.3(react@19.2.3) + suspend-react: 0.1.3(react@19.2.4) three: 0.182.0 - use-sync-external-store: 1.6.0(react@19.2.3) - zustand: 5.0.10(@types/react@19.2.9)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)) + use-sync-external-store: 1.6.0(react@19.2.4) + zustand: 5.0.10(@types/react@19.2.9)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4)) optionalDependencies: - react-dom: 19.2.3(react@19.2.3) + react-dom: 19.2.4(react@19.2.4) transitivePeerDependencies: - '@types/react' - immer - '@react-types/shared@3.32.1(react@19.2.3)': + '@react-types/shared@3.32.1(react@19.2.4)': dependencies: - react: 19.2.3 + react: 19.2.4 '@rollup/rollup-android-arm-eabi@4.56.0': optional: true @@ -10974,25 +11043,25 @@ snapshots: postcss: 8.5.6 tailwindcss: 4.1.18 - '@tanstack/query-core@5.90.19': {} + '@tanstack/query-core@5.90.20': {} - '@tanstack/react-query@5.90.19(react@19.2.3)': + '@tanstack/react-query@5.90.20(react@19.2.4)': dependencies: - '@tanstack/query-core': 5.90.19 - react: 19.2.3 + '@tanstack/query-core': 5.90.20 + react: 19.2.4 - '@tanstack/react-virtual@3.13.18(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@tanstack/react-virtual@3.13.18(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@tanstack/virtual-core': 3.13.18 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) '@tanstack/virtual-core@3.13.18': {} - '@theguild/remark-mermaid@0.3.0(react@19.2.3)': + '@theguild/remark-mermaid@0.3.0(react@19.2.4)': dependencies: mermaid: 11.12.2 - react: 19.2.3 + react: 19.2.4 unist-util-visit: 5.0.0 '@theguild/remark-npm2yarn@0.3.3': @@ -11240,6 +11309,39 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/type-utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.54.0 + eslint: 9.39.2(jiti@2.6.1) + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + optional: true + + '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/type-utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.54.0 + eslint: 9.39.2(jiti@2.6.1) + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.53.1 @@ -11252,6 +11354,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.54.0 + debug: 4.4.3 + eslint: 9.39.2(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/project-service@8.53.1(typescript@5.9.3)': dependencies: '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.9.3) @@ -11261,15 +11375,33 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/project-service@8.54.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) + '@typescript-eslint/types': 8.54.0 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/scope-manager@8.53.1': dependencies: '@typescript-eslint/types': 8.53.1 '@typescript-eslint/visitor-keys': 8.53.1 + '@typescript-eslint/scope-manager@8.54.0': + dependencies: + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/tsconfig-utils@8.53.1(typescript@5.9.3)': dependencies: typescript: 5.9.3 + '@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + '@typescript-eslint/type-utils@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.53.1 @@ -11282,8 +11414,22 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/type-utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + debug: 4.4.3 + eslint: 9.39.2(jiti@2.6.1) + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/types@8.53.1': {} + '@typescript-eslint/types@8.54.0': {} + '@typescript-eslint/typescript-estree@8.53.1(typescript@5.9.3)': dependencies: '@typescript-eslint/project-service': 8.53.1(typescript@5.9.3) @@ -11299,6 +11445,21 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@8.54.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.54.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/visitor-keys': 8.54.0 + debug: 4.4.3 + minimatch: 9.0.5 + semver: 7.7.3 + tinyglobby: 0.2.15 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) @@ -11310,11 +11471,27 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/visitor-keys@8.53.1': dependencies: '@typescript-eslint/types': 8.53.1 eslint-visitor-keys: 4.2.1 + '@typescript-eslint/visitor-keys@8.54.0': + dependencies: + '@typescript-eslint/types': 8.54.0 + eslint-visitor-keys: 4.2.1 + '@typescript/vfs@1.6.2(typescript@5.9.3)': dependencies: debug: 4.4.3 @@ -11385,10 +11562,10 @@ snapshots: '@use-gesture/core@10.3.1': {} - '@use-gesture/react@10.3.1(react@19.2.3)': + '@use-gesture/react@10.3.1(react@19.2.4)': dependencies: '@use-gesture/core': 10.3.1 - react: 19.2.3 + react: 19.2.4 '@vitest/coverage-v8@4.0.18(vitest@4.0.18)': dependencies: @@ -11658,10 +11835,10 @@ snapshots: before-after-hook@4.0.0: {} - better-react-mathjax@2.3.0(react@19.2.3): + better-react-mathjax@2.3.0(react@19.2.4): dependencies: mathjax-full: 3.2.2 - react: 19.2.3 + react: 19.2.4 bidi-js@1.0.3: dependencies: @@ -11841,14 +12018,14 @@ snapshots: clsx@2.1.1: {} - cmdk@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + cmdk@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.3) - '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.9)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) transitivePeerDependencies: - '@types/react' - '@types/react-dom' @@ -12336,11 +12513,11 @@ snapshots: electron-to-chromium@1.5.267: {} - embla-carousel-react@8.6.0(react@19.2.3): + embla-carousel-react@8.6.0(react@19.2.4): dependencies: embla-carousel: 8.6.0 embla-carousel-reactive-utils: 8.6.0(embla-carousel@8.6.0) - react: 19.2.3 + react: 19.2.4 embla-carousel-reactive-utils@8.6.0(embla-carousel@8.6.0): dependencies: @@ -12606,7 +12783,7 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -12621,6 +12798,26 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 @@ -12650,6 +12847,64 @@ snapshots: - eslint-import-resolver-webpack - supports-color + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.39.2(jiti@2.6.1) + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.39.2(jiti@2.6.1) + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.2(jiti@2.6.1)): dependencies: aria-query: 5.3.2 @@ -12715,11 +12970,11 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-unused-imports@4.3.0(@typescript-eslint/eslint-plugin@8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)): + eslint-plugin-unused-imports@4.3.0(@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)): dependencies: eslint: 9.39.2(jiti@2.6.1) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.54.0(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) eslint-scope@8.4.0: dependencies: @@ -12990,14 +13245,14 @@ snapshots: format@0.2.2: {} - framer-motion@12.29.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + framer-motion@12.29.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - motion-dom: 12.29.0 - motion-utils: 12.27.2 + motion-dom: 12.29.2 + motion-utils: 12.29.2 tslib: 2.8.1 optionalDependencies: - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) from2@2.3.0: dependencies: @@ -13400,10 +13655,10 @@ snapshots: inline-style-parser@0.2.7: {} - input-otp@1.4.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + input-otp@1.4.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) inquirer@13.2.1(@types/node@25.0.10): dependencies: @@ -13631,10 +13886,10 @@ snapshots: has-symbols: 1.1.0 set-function-name: 2.0.2 - its-fine@2.0.0(@types/react@19.2.9)(react@19.2.3): + its-fine@2.0.0(@types/react@19.2.9)(react@19.2.4): dependencies: '@types/react-reconciler': 0.28.9(@types/react@19.2.9) - react: 19.2.3 + react: 19.2.4 transitivePeerDependencies: - '@types/react' @@ -13874,9 +14129,9 @@ snapshots: dependencies: yallist: 3.1.1 - lucide-react@0.563.0(react@19.2.3): + lucide-react@0.563.0(react@19.2.4): dependencies: - react: 19.2.3 + react: 19.2.4 maath@0.10.8(@types/three@0.182.0)(three@0.182.0): dependencies: @@ -14492,11 +14747,11 @@ snapshots: mock-fs@5.5.0: {} - motion-dom@12.29.0: + motion-dom@12.29.2: dependencies: - motion-utils: 12.27.2 + motion-utils: 12.29.2 - motion-utils@12.27.2: {} + motion-utils@12.29.2: {} mrmime@2.0.1: {} @@ -14522,20 +14777,20 @@ snapshots: nerf-dart@1.0.0: {} - next-themes@0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + next-themes@0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - next@15.5.9(@babel/core@7.28.6)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + next@15.5.9(@babel/core@7.28.6)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: '@next/env': 15.5.9 '@swc/helpers': 0.5.15 caniuse-lite: 1.0.30001765 postcss: 8.4.31 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - styled-jsx: 5.1.6(@babel/core@7.28.6)(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + styled-jsx: 5.1.6(@babel/core@7.28.6)(react@19.2.4) optionalDependencies: '@next/swc-darwin-arm64': 15.5.7 '@next/swc-darwin-x64': 15.5.7 @@ -14550,34 +14805,34 @@ snapshots: - '@babel/core' - babel-plugin-macros - nextra-theme-docs@4.6.1(@types/react@19.2.9)(next@15.5.9(@babel/core@7.28.6)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(nextra@4.6.1(next@15.5.9(@babel/core@7.28.6)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)): + nextra-theme-docs@4.6.1(@types/react@19.2.9)(next@15.5.9(@babel/core@7.28.6)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(nextra@4.6.1(next@15.5.9(@babel/core@7.28.6)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4)): dependencies: - '@headlessui/react': 2.2.9(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@headlessui/react': 2.2.9(react-dom@19.2.4(react@19.2.4))(react@19.2.4) clsx: 2.1.1 - next: 15.5.9(@babel/core@7.28.6)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - next-themes: 0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - nextra: 4.6.1(next@15.5.9(@babel/core@7.28.6)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) - react: 19.2.3 - react-compiler-runtime: 19.1.0-rc.3(react@19.2.3) - react-dom: 19.2.3(react@19.2.3) + next: 15.5.9(@babel/core@7.28.6)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + next-themes: 0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + nextra: 4.6.1(next@15.5.9(@babel/core@7.28.6)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + react: 19.2.4 + react-compiler-runtime: 19.1.0-rc.3(react@19.2.4) + react-dom: 19.2.4(react@19.2.4) scroll-into-view-if-needed: 3.1.0 zod: 4.3.6 - zustand: 5.0.10(@types/react@19.2.9)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)) + zustand: 5.0.10(@types/react@19.2.9)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4)) transitivePeerDependencies: - '@types/react' - immer - use-sync-external-store - nextra@4.6.1(next@15.5.9(@babel/core@7.28.6)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3): + nextra@4.6.1(next@15.5.9(@babel/core@7.28.6)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3): dependencies: '@formatjs/intl-localematcher': 0.6.2 - '@headlessui/react': 2.2.9(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@headlessui/react': 2.2.9(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@mdx-js/mdx': 3.1.1 '@napi-rs/simple-git': 0.1.22 '@shikijs/twoslash': 3.21.0(typescript@5.9.3) - '@theguild/remark-mermaid': 0.3.0(react@19.2.3) + '@theguild/remark-mermaid': 0.3.0(react@19.2.4) '@theguild/remark-npm2yarn': 0.3.3 - better-react-mathjax: 2.3.0(react@19.2.3) + better-react-mathjax: 2.3.0(react@19.2.4) clsx: 2.1.1 estree-util-to-js: 2.0.0 estree-util-value-to-estree: 3.5.0 @@ -14589,11 +14844,11 @@ snapshots: mdast-util-gfm: 3.1.0 mdast-util-to-hast: 13.2.1 negotiator: 1.0.0 - next: 15.5.9(@babel/core@7.28.6)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - react: 19.2.3 - react-compiler-runtime: 19.1.0-rc.3(react@19.2.3) - react-dom: 19.2.3(react@19.2.3) - react-medium-image-zoom: 5.4.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + next: 15.5.9(@babel/core@7.28.6)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-compiler-runtime: 19.1.0-rc.3(react@19.2.4) + react-dom: 19.2.4(react@19.2.4) + react-medium-image-zoom: 5.4.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) rehype-katex: 7.0.1 rehype-pretty-code: 0.14.1(shiki@3.21.0) rehype-raw: 7.0.0 @@ -14992,91 +15247,91 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-compiler-runtime@19.1.0-rc.3(react@19.2.3): + react-compiler-runtime@19.1.0-rc.3(react@19.2.4): dependencies: - react: 19.2.3 + react: 19.2.4 - react-day-picker@9.13.0(react@19.2.3): + react-day-picker@9.13.0(react@19.2.4): dependencies: '@date-fns/tz': 1.4.1 date-fns: 4.1.0 date-fns-jalali: 4.1.0-0 - react: 19.2.3 + react: 19.2.4 - react-dom@19.2.3(react@19.2.3): + react-dom@19.2.4(react@19.2.4): dependencies: - react: 19.2.3 + react: 19.2.4 scheduler: 0.27.0 - react-hook-form@7.71.1(react@19.2.3): + react-hook-form@7.71.1(react@19.2.4): dependencies: - react: 19.2.3 + react: 19.2.4 react-is@16.13.1: {} react-is@18.3.1: {} - react-medium-image-zoom@5.4.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + react-medium-image-zoom@5.4.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - react-remove-scroll-bar@2.3.8(@types/react@19.2.9)(react@19.2.3): + react-remove-scroll-bar@2.3.8(@types/react@19.2.9)(react@19.2.4): dependencies: - react: 19.2.3 - react-style-singleton: 2.2.3(@types/react@19.2.9)(react@19.2.3) + react: 19.2.4 + react-style-singleton: 2.2.3(@types/react@19.2.9)(react@19.2.4) tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.9 - react-remove-scroll@2.7.2(@types/react@19.2.9)(react@19.2.3): + react-remove-scroll@2.7.2(@types/react@19.2.9)(react@19.2.4): dependencies: - react: 19.2.3 - react-remove-scroll-bar: 2.3.8(@types/react@19.2.9)(react@19.2.3) - react-style-singleton: 2.2.3(@types/react@19.2.9)(react@19.2.3) + react: 19.2.4 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.9)(react@19.2.4) + react-style-singleton: 2.2.3(@types/react@19.2.9)(react@19.2.4) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.2.9)(react@19.2.3) - use-sidecar: 1.1.3(@types/react@19.2.9)(react@19.2.3) + use-callback-ref: 1.3.3(@types/react@19.2.9)(react@19.2.4) + use-sidecar: 1.1.3(@types/react@19.2.9)(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 - react-resizable-panels@4.4.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + react-resizable-panels@4.5.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - react-smooth@4.0.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + react-smooth@4.0.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: fast-equals: 5.4.0 prop-types: 15.8.1 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - react-transition-group: 4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-transition-group: 4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react-style-singleton@2.2.3(@types/react@19.2.9)(react@19.2.3): + react-style-singleton@2.2.3(@types/react@19.2.9)(react@19.2.4): dependencies: get-nonce: 1.0.1 - react: 19.2.3 + react: 19.2.4 tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.9 - react-transition-group@4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + react-transition-group@4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: '@babel/runtime': 7.28.6 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - react-use-measure@2.1.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + react-use-measure@2.1.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - react: 19.2.3 + react: 19.2.4 optionalDependencies: - react-dom: 19.2.3(react@19.2.3) + react-dom: 19.2.4(react@19.2.4) - react@19.2.3: {} + react@19.2.4: {} read-package-up@11.0.0: dependencies: @@ -15124,15 +15379,15 @@ snapshots: dependencies: decimal.js-light: 2.5.1 - recharts@2.15.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + recharts@2.15.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: clsx: 2.1.1 eventemitter3: 4.0.7 lodash: 4.17.23 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) react-is: 18.3.1 - react-smooth: 4.0.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react-smooth: 4.0.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) recharts-scale: 0.4.5 tiny-invariant: 1.3.3 victory-vendor: 36.9.2 @@ -15648,10 +15903,10 @@ snapshots: dot-case: 3.0.4 tslib: 2.8.1 - sonner@2.0.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + sonner@2.0.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) source-map-js@1.2.1: {} @@ -15822,10 +16077,10 @@ snapshots: dependencies: inline-style-parser: 0.2.7 - styled-jsx@5.1.6(@babel/core@7.28.6)(react@19.2.3): + styled-jsx@5.1.6(@babel/core@7.28.6)(react@19.2.4): dependencies: client-only: 0.0.1 - react: 19.2.3 + react: 19.2.4 optionalDependencies: '@babel/core': 7.28.6 @@ -15864,9 +16119,9 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - suspend-react@0.1.3(react@19.2.3): + suspend-react@0.1.3(react@19.2.4): dependencies: - react: 19.2.3 + react: 19.2.4 svg-parser@2.0.4: {} @@ -16048,9 +16303,9 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - tunnel-rat@0.1.2(@types/react@19.2.9)(react@19.2.3): + tunnel-rat@0.1.2(@types/react@19.2.9)(react@19.2.4): dependencies: - zustand: 4.5.7(@types/react@19.2.9)(react@19.2.3) + zustand: 4.5.7(@types/react@19.2.9)(react@19.2.4) transitivePeerDependencies: - '@types/react' - immer @@ -16128,6 +16383,17 @@ snapshots: transitivePeerDependencies: - supports-color + typescript-eslint@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + typescript@5.9.3: {} ufo@1.6.3: {} @@ -16292,24 +16558,24 @@ snapshots: url-join@5.0.0: {} - use-callback-ref@1.3.3(@types/react@19.2.9)(react@19.2.3): + use-callback-ref@1.3.3(@types/react@19.2.9)(react@19.2.4): dependencies: - react: 19.2.3 + react: 19.2.4 tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.9 - use-sidecar@1.1.3(@types/react@19.2.9)(react@19.2.3): + use-sidecar@1.1.3(@types/react@19.2.9)(react@19.2.4): dependencies: detect-node-es: 1.1.0 - react: 19.2.3 + react: 19.2.4 tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.9 - use-sync-external-store@1.6.0(react@19.2.3): + use-sync-external-store@1.6.0(react@19.2.4): dependencies: - react: 19.2.3 + react: 19.2.4 util-deprecate@1.0.2: {} @@ -16322,11 +16588,11 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vaul@1.1.2(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + vaul@1.1.2(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.9))(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) transitivePeerDependencies: - '@types/react' - '@types/react-dom' @@ -16606,17 +16872,17 @@ snapshots: zod@4.3.6: {} - zustand@4.5.7(@types/react@19.2.9)(react@19.2.3): + zustand@4.5.7(@types/react@19.2.9)(react@19.2.4): dependencies: - use-sync-external-store: 1.6.0(react@19.2.3) + use-sync-external-store: 1.6.0(react@19.2.4) optionalDependencies: '@types/react': 19.2.9 - react: 19.2.3 + react: 19.2.4 - zustand@5.0.10(@types/react@19.2.9)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)): + zustand@5.0.10(@types/react@19.2.9)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4)): optionalDependencies: '@types/react': 19.2.9 - react: 19.2.3 - use-sync-external-store: 1.6.0(react@19.2.3) + react: 19.2.4 + use-sync-external-store: 1.6.0(react@19.2.4) zwitch@2.0.4: {} diff --git a/website/content/en/docs/faq.mdx b/website/content/en/docs/faq.mdx index 4d7b1f0..9b7cfa1 100644 --- a/website/content/en/docs/faq.mdx +++ b/website/content/en/docs/faq.mdx @@ -3,6 +3,10 @@ title: FAQ description: Frequently asked questions about vsync. Get answers on choosing source tools, config overwriting, monorepo support, environment variables, migration, troubleshooting, and performance. --- +import { FaqSchema, vsyncFaqsEn } from '~/components/seo/faq-schema' + + + # Frequently Asked Questions Common questions and answers about using vsync. diff --git a/website/content/en/index.mdx b/website/content/en/index.mdx index ff23ef5..fb8c2f8 100644 --- a/website/content/en/index.mdx +++ b/website/content/en/index.mdx @@ -1,5 +1,6 @@ --- -title: vsync - One config. Many AI tools. Zero pain. +title: vsync - Sync AI Coding Tool Configs | Claude Code, Cursor, OpenCode, Codex +description: "One config. Many AI tools. Zero pain. vsync syncs Skills, MCP servers, Agents & Commands across Claude Code, Cursor, OpenCode and Codex with a single command. Free and open source CLI tool." layout: full search: false sidebar: false diff --git a/website/content/zh/docs/faq.mdx b/website/content/zh/docs/faq.mdx index ef69094..e6d736c 100644 --- a/website/content/zh/docs/faq.mdx +++ b/website/content/zh/docs/faq.mdx @@ -3,6 +3,10 @@ title: 常见问题 description: 关于 vsync 的常见问题。获取有关选择源工具、配置覆盖、monorepo 支持、环境变量、迁移、故障排除和性能的答案。 --- +import { FaqSchema, vsyncFaqsZh } from '~/components/seo/faq-schema' + + + # 常见问题 关于使用 vsync 的常见问题和解答。 diff --git a/website/content/zh/index.mdx b/website/content/zh/index.mdx index 6c292d2..2996c0d 100644 --- a/website/content/zh/index.mdx +++ b/website/content/zh/index.mdx @@ -1,5 +1,6 @@ --- -title: vsync - 一处配置,多个 AI 工具同步,不再折腾。 +title: vsync - AI编程工具配置同步 | Claude Code, Cursor, OpenCode, Codex +description: "一处配置,多个 AI 工具同步,不再折腾。vsync 一条命令同步 Skills、MCP服务器、Agents 和 Commands 到 Claude Code、Cursor、OpenCode 和 Codex。免费开源 CLI 工具。" layout: full search: false sidebar: false diff --git a/website/eslint.config.mjs b/website/eslint.config.mjs index 80746b0..ad91839 100644 --- a/website/eslint.config.mjs +++ b/website/eslint.config.mjs @@ -3,9 +3,7 @@ import { fileURLToPath } from "node:url"; import { FlatCompat } from "@eslint/eslintrc"; import { defineConfig, globalIgnores } from "eslint/config"; import prettier from "eslint-config-prettier/flat"; -import eslintPluginImport from "eslint-plugin-import"; import eslintPluginPrettier from "eslint-plugin-prettier"; -import tseslint from "typescript-eslint"; const configDir = path.dirname(fileURLToPath(import.meta.url)); @@ -40,7 +38,7 @@ const nextConfigs = compat }); export default defineConfig( - // Next.js Core Web Vitals config (includes React, React Hooks, and Next.js rules) + // Next.js Core Web Vitals config (includes React, React Hooks, Next.js, and TypeScript rules) ...nextConfigs, // Prettier config (disables conflicting ESLint rules) @@ -59,11 +57,10 @@ export default defineConfig( ".git/**", ]), - // Custom rules and plugins + // Custom rules for JS/TS files { files: ["**/*.{js,mjs,cjs,jsx,ts,tsx}"], plugins: { - import: eslintPluginImport, prettier: eslintPluginPrettier, }, settings: { @@ -72,7 +69,7 @@ export default defineConfig( }, }, rules: { - // Import rules + // Import rules (plugin already loaded by next/core-web-vitals) "import/no-anonymous-default-export": "warn", "import/order": [ "warn", @@ -101,14 +98,9 @@ export default defineConfig( }, }, - // Additional TypeScript config + // TypeScript-specific rules (without re-extending tseslint configs) { files: ["**/*.{ts,tsx}"], - extends: [ - ...tseslint.configs.recommended, - ...tseslint.configs.recommendedTypeChecked, - ...tseslint.configs.stylisticTypeChecked, - ], languageOptions: { parserOptions: { projectService: true, @@ -163,14 +155,11 @@ export default defineConfig( }, }, - // Markdown files + // Markdown files - ignore by default { files: ["**/*.md"], - plugins: { - prettier: eslintPluginPrettier, - }, rules: { - "prettier/prettier": "warn", + // Disable all rules for markdown }, }, diff --git a/website/package.json b/website/package.json index b7cb944..c571bc0 100644 --- a/website/package.json +++ b/website/package.json @@ -4,7 +4,8 @@ "private": true, "type": "module", "scripts": { - "postbuild": "pagefind --site .next/server/app --output-path public/_pagefind", + "generate-sitemap": "npx tsx scripts/generate-sitemap.ts", + "postbuild": "pagefind --site .next/server/app --output-path public/_pagefind && pnpm generate-sitemap", "build": "next build && pnpm postbuild", "check": "eslint . && tsc --noEmit", "dev": "next dev --turbo", @@ -46,24 +47,24 @@ "@react-three/drei": "^10.7.7", "@react-three/fiber": "^9.5.0", "@t3-oss/env-nextjs": "^0.13.10", - "@tanstack/react-query": "^5.90.19", + "@tanstack/react-query": "^5.90.20", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", "date-fns": "^4.1.0", "embla-carousel-react": "^8.6.0", - "framer-motion": "^12.29.0", + "framer-motion": "^12.29.2", "input-otp": "^1.4.2", "lucide-react": "^0.563.0", "next": "^15.2.3", "next-themes": "^0.4.6", "nextra": "^4.6.1", "nextra-theme-docs": "^4.6.1", - "react": "^19.2.3", + "react": "^19.2.4", "react-day-picker": "^9.13.0", - "react-dom": "^19.2.3", + "react-dom": "^19.2.4", "react-hook-form": "^7.71.1", - "react-resizable-panels": "^4.4.1", + "react-resizable-panels": "^4.5.2", "recharts": "2.15.4", "sonner": "^2.0.7", "tailwind-merge": "^3.4.0", @@ -93,9 +94,10 @@ "prettier": "^3.8.1", "prettier-plugin-tailwindcss": "^0.7.2", "tailwindcss": "^4.1.18", + "tsx": "^4.21.0", "tw-animate-css": "^1.4.0", "typescript": "^5.9.3", - "typescript-eslint": "^8.53.1" + "typescript-eslint": "^8.54.0" }, "ct3aMetadata": { "initVersion": "7.40.0" diff --git a/website/public/apple-touch-icon.png b/website/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..db3b578a3a19a1a1af631acebb91fcd8d4cd14b3 GIT binary patch literal 6417 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 literal 0 HcmV?d00001 diff --git a/website/public/icon-192.png b/website/public/icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..ae36912a325e66c0dce9d34f75a1a079f9b3ca2f GIT binary patch literal 6646 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 literal 0 HcmV?d00001 diff --git a/website/public/icon-512.png b/website/public/icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..91591895ea7925d5a554effdcc6bc7ec4e9ea84a GIT binary patch literal 30130 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 z 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + vsync + + + One config. Many AI tools. Zero pain. + + + + + + Claude Code + + + + Cursor + + + + OpenCode + + + + Codex + + + + + + + vsync.xiaominglab.com + diff --git a/website/public/robots.txt b/website/public/robots.txt index f7c5d05..f19fdc3 100644 --- a/website/public/robots.txt +++ b/website/public/robots.txt @@ -1,4 +1,15 @@ User-agent: * Allow: / +Disallow: /_next/ +Disallow: /api/ -Sitemap: https://[project-domain]/sitemap.xml +# Sitemaps +Sitemap: https://vsync.xiaominglab.com/sitemap.xml +Sitemap: https://vsync.xiaominglab.com/sitemap-en.xml +Sitemap: https://vsync.xiaominglab.com/sitemap-zh.xml + +# Crawl-delay for politeness (optional) +Crawl-delay: 1 + +# Host +Host: https://vsync.xiaominglab.com diff --git a/website/public/sitemap-en.xml b/website/public/sitemap-en.xml new file mode 100644 index 0000000..8b4b043 --- /dev/null +++ b/website/public/sitemap-en.xml @@ -0,0 +1,84 @@ + + + + https://vsync.xiaominglab.com/en/contributing/ + 2026-01-26 + monthly + 0.5 + + + + + https://vsync.xiaominglab.com/en/docs/advanced-features/ + 2026-01-27 + weekly + 0.7 + + + + + https://vsync.xiaominglab.com/en/docs/cli-commands/ + 2026-01-27 + weekly + 0.8 + + + + + https://vsync.xiaominglab.com/en/docs/configuration/ + 2026-01-27 + weekly + 0.8 + + + + + https://vsync.xiaominglab.com/en/docs/core-concepts/ + 2026-01-27 + weekly + 0.8 + + + + + https://vsync.xiaominglab.com/en/docs/faq/ + 2026-01-26 + weekly + 0.6 + + + + + https://vsync.xiaominglab.com/en/docs/getting-started/ + 2026-01-27 + weekly + 0.9 + + + + + https://vsync.xiaominglab.com/en/docs/ + 2026-01-27 + weekly + 0.9 + + + + + https://vsync.xiaominglab.com/en/docs/quick-reference/ + 2026-01-27 + weekly + 0.7 + + + + + https://vsync.xiaominglab.com/en/ + 2026-01-27 + weekly + 1.0 + + + + \ No newline at end of file diff --git a/website/public/sitemap-zh.xml b/website/public/sitemap-zh.xml new file mode 100644 index 0000000..094856a --- /dev/null +++ b/website/public/sitemap-zh.xml @@ -0,0 +1,84 @@ + + + + https://vsync.xiaominglab.com/zh/contributing/ + 2026-01-26 + monthly + 0.5 + + + + + https://vsync.xiaominglab.com/zh/docs/advanced-features/ + 2026-01-27 + weekly + 0.7 + + + + + https://vsync.xiaominglab.com/zh/docs/cli-commands/ + 2026-01-27 + weekly + 0.8 + + + + + https://vsync.xiaominglab.com/zh/docs/configuration/ + 2026-01-27 + weekly + 0.8 + + + + + https://vsync.xiaominglab.com/zh/docs/core-concepts/ + 2026-01-27 + weekly + 0.8 + + + + + https://vsync.xiaominglab.com/zh/docs/faq/ + 2026-01-26 + weekly + 0.6 + + + + + https://vsync.xiaominglab.com/zh/docs/getting-started/ + 2026-01-27 + weekly + 0.9 + + + + + https://vsync.xiaominglab.com/zh/docs/ + 2026-01-27 + weekly + 0.9 + + + + + https://vsync.xiaominglab.com/zh/docs/quick-reference/ + 2026-01-27 + weekly + 0.7 + + + + + https://vsync.xiaominglab.com/zh/ + 2026-01-27 + weekly + 1.0 + + + + \ No newline at end of file diff --git a/website/public/sitemap.xml b/website/public/sitemap.xml new file mode 100644 index 0000000..ed11327 --- /dev/null +++ b/website/public/sitemap.xml @@ -0,0 +1,11 @@ + + + + https://vsync.xiaominglab.com/sitemap-en.xml + 2026-01-27 + + + https://vsync.xiaominglab.com/sitemap-zh.xml + 2026-01-27 + + \ No newline at end of file diff --git a/website/scripts/generate-sitemap.ts b/website/scripts/generate-sitemap.ts new file mode 100644 index 0000000..7a68e79 --- /dev/null +++ b/website/scripts/generate-sitemap.ts @@ -0,0 +1,198 @@ +/** + * Generate sitemap.xml for SEO + * Run after build: npx tsx scripts/generate-sitemap.ts + */ + +import * as fs from "node:fs"; +import * as path from "node:path"; +import { siteConfig } from "../src/lib/site-info"; + +const SITE_URL = siteConfig.url; +const OUTPUT_DIR = path.join(process.cwd(), "out"); +const CONTENT_DIR = path.join(process.cwd(), "content"); + +interface PageInfo { + loc: string; + lastmod: string; + changefreq: string; + priority: string; + alternates?: { locale: string; href: string }[]; +} + +const PRIORITY_MAP: Record = { + "": "1.0", // homepage + docs: "0.9", + "docs/getting-started": "0.9", + "docs/cli-commands": "0.8", + "docs/configuration": "0.8", + "docs/core-concepts": "0.8", + "docs/quick-reference": "0.7", + "docs/advanced-features": "0.7", + "docs/faq": "0.6", + contributing: "0.5", +}; + +const CHANGEFREQ_MAP: Record = { + "": "weekly", + docs: "weekly", + contributing: "monthly", +}; + +function getFilesRecursively(dir: string, basePath = ""): string[] { + const files: string[] = []; + + if (!fs.existsSync(dir)) return files; + + const entries = fs.readdirSync(dir, { withFileTypes: true }); + + for (const entry of entries) { + const relativePath = basePath ? `${basePath}/${entry.name}` : entry.name; + + if (entry.isDirectory()) { + if (!entry.name.startsWith("_") && !entry.name.startsWith(".")) { + files.push( + ...getFilesRecursively(path.join(dir, entry.name), relativePath), + ); + } + } else if (entry.name.endsWith(".mdx") && !entry.name.startsWith("_")) { + const pagePath = relativePath + .replace(/\.mdx$/, "") + .replace(/\/index$/, ""); + files.push(pagePath); + } + } + + return files; +} + +function getLastModified(filePath: string): string { + try { + const stats = fs.statSync(filePath); + const dateStr = stats.mtime.toISOString().split("T")[0]; + return dateStr ?? new Date().toISOString().slice(0, 10); + } catch { + return new Date().toISOString().slice(0, 10); + } +} + +function generatePages(): PageInfo[] { + const pages: PageInfo[] = []; + const locales = ["en", "zh"]; + const enContentDir = path.join(CONTENT_DIR, "en"); + + const enPages = getFilesRecursively(enContentDir); + + for (const pagePath of enPages) { + const normalizedPath = pagePath === "index" ? "" : pagePath; + const enFilePath = path.join(enContentDir, `${pagePath}.mdx`); + const lastmod = getLastModified( + fs.existsSync(enFilePath) + ? enFilePath + : path.join(enContentDir, pagePath, "index.mdx"), + ); + + const priority = PRIORITY_MAP[normalizedPath] || "0.5"; + const changefreq = + CHANGEFREQ_MAP[normalizedPath] || + (normalizedPath.startsWith("docs") ? "weekly" : "monthly"); + + const alternates = locales.map((locale) => ({ + locale, + href: `${SITE_URL}/${locale}${normalizedPath ? `/${normalizedPath}` : ""}/`, + })); + + for (const locale of locales) { + const loc = `${SITE_URL}/${locale}${normalizedPath ? `/${normalizedPath}` : ""}/`; + + pages.push({ + loc, + lastmod, + changefreq, + priority, + alternates, + }); + } + } + + return pages; +} + +function generateSitemapXml(pages: PageInfo[]): string { + const urlEntries = pages + .map((page) => { + const alternateLinks = page.alternates + ? page.alternates + .map( + (alt) => + ` `, + ) + .join("\n") + : ""; + + return ` + ${page.loc} + ${page.lastmod} + ${page.changefreq} + ${page.priority} +${alternateLinks} + `; + }) + .join("\n"); + + return ` + +${urlEntries} +`; +} + +function generateSitemapIndex(): string { + const today = new Date().toISOString().slice(0, 10); + + return ` + + + ${SITE_URL}/sitemap-en.xml + ${today} + + + ${SITE_URL}/sitemap-zh.xml + ${today} + +`; +} + +function main() { + const pages = generatePages(); + + // Generate locale-specific sitemaps + const enPages = pages.filter((p) => p.loc.includes("/en/")); + const zhPages = pages.filter((p) => p.loc.includes("/zh/")); + + const enSitemapXml = generateSitemapXml(enPages); + const zhSitemapXml = generateSitemapXml(zhPages); + + // Generate sitemap index + const sitemapIndex = generateSitemapIndex(); + + // Write to public directory (for dev) and out directory (for build) + const publicDir = path.join(process.cwd(), "public"); + + fs.writeFileSync(path.join(publicDir, "sitemap.xml"), sitemapIndex); + fs.writeFileSync(path.join(publicDir, "sitemap-en.xml"), enSitemapXml); + fs.writeFileSync(path.join(publicDir, "sitemap-zh.xml"), zhSitemapXml); + + console.log(`Generated sitemap.xml with ${pages.length} URLs`); + console.log(` - English: ${enPages.length} pages`); + console.log(` - Chinese: ${zhPages.length} pages`); + + // Also write to out directory if it exists (after build) + if (fs.existsSync(OUTPUT_DIR)) { + fs.writeFileSync(path.join(OUTPUT_DIR, "sitemap.xml"), sitemapIndex); + fs.writeFileSync(path.join(OUTPUT_DIR, "sitemap-en.xml"), enSitemapXml); + fs.writeFileSync(path.join(OUTPUT_DIR, "sitemap-zh.xml"), zhSitemapXml); + console.log("Also copied to out/ directory"); + } +} + +main(); diff --git a/website/src/app/[locale]/[[...mdxPath]]/page.tsx b/website/src/app/[locale]/[[...mdxPath]]/page.tsx index 72d8b2b..cf762b5 100644 --- a/website/src/app/[locale]/[[...mdxPath]]/page.tsx +++ b/website/src/app/[locale]/[[...mdxPath]]/page.tsx @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/unbound-method */ import { generateStaticParamsFor, importPage } from "nextra/pages"; import { useMDXComponents as getMDXComponents } from "../../../../mdx-components"; diff --git a/website/src/app/layout.tsx b/website/src/app/layout.tsx index 3f78f44..28f610a 100644 --- a/website/src/app/layout.tsx +++ b/website/src/app/layout.tsx @@ -1,32 +1,85 @@ -import type { Metadata } from "next"; +import type { Metadata, Viewport } from "next"; import { Head } from "nextra/components"; import "nextra-theme-docs/style.css"; import "../styles/globals.css"; -import { siteConfig } from "~/lib/site-info"; +import { WebsiteJsonLd } from "~/components/seo/json-ld"; +import { siteConfig, authorConfig } from "~/lib/site-info"; + +export const viewport: Viewport = { + width: "device-width", + initialScale: 1, + themeColor: [ + { media: "(prefers-color-scheme: light)", color: "#ffffff" }, + { media: "(prefers-color-scheme: dark)", color: "#0a0a0a" }, + ], +}; export const metadata: Metadata = { title: { - default: siteConfig.name, - template: `%s - ${siteConfig.name}`, + default: `${siteConfig.name} - ${siteConfig.shortDescription}`, + template: `%s | ${siteConfig.name}`, }, description: siteConfig.description, + keywords: siteConfig.keywords, + authors: [{ name: authorConfig.name, url: authorConfig.website }], + creator: authorConfig.name, + publisher: siteConfig.name, metadataBase: new URL(siteConfig.url), + alternates: { + canonical: siteConfig.url, + languages: { + "en-US": "/en", + "zh-CN": "/zh", + "x-default": "/en", + }, + }, openGraph: { - title: siteConfig.name, - description: siteConfig.description, + type: "website", + locale: "en_US", + alternateLocale: ["zh_CN"], url: siteConfig.url, + title: `${siteConfig.name} - ${siteConfig.shortDescription}`, + description: siteConfig.description, siteName: siteConfig.name, - locale: siteConfig.locale, - type: "website", + images: [ + { + url: siteConfig.ogImage, + width: 1200, + height: 630, + alt: `${siteConfig.name} - Sync AI coding tool configurations`, + type: "image/png", + }, + ], }, twitter: { card: "summary_large_image", - title: siteConfig.name, + title: `${siteConfig.name} - ${siteConfig.shortDescription}`, description: siteConfig.description, + site: siteConfig.twitterHandle, + creator: siteConfig.twitterHandle, + images: [siteConfig.ogImage], }, robots: { index: true, follow: true, + googleBot: { + index: true, + follow: true, + "max-video-preview": -1, + "max-image-preview": "large", + "max-snippet": -1, + }, + }, + verification: { + // Add your verification codes here if needed + // google: "your-google-verification-code", + // yandex: "your-yandex-verification-code", + }, + category: "technology", + other: { + "msapplication-TileColor": "#0a0a0a", + "apple-mobile-web-app-capable": "yes", + "apple-mobile-web-app-status-bar-style": "black-translucent", }, }; @@ -38,9 +91,26 @@ export default async function RootLayout({ return ( + {/* Favicon */} + + + + {/* Preconnect for performance */} + + + + {/* DNS prefetch for external resources */} + - {children} + + + {children} + ); } diff --git a/website/src/app/not-found.tsx b/website/src/app/not-found.tsx new file mode 100644 index 0000000..8cb90e6 --- /dev/null +++ b/website/src/app/not-found.tsx @@ -0,0 +1,177 @@ +import Link from "next/link"; +import { siteConfig, githubConfig } from "~/lib/site-info"; + +export default function NotFound() { + return ( + + + 404 - Page Not Found | {siteConfig.name} + + + +