mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-10-15 05:40:47 +08:00
Ship a native WidgetKit extension (routing mode, TUN and system proxy toggles) as part of every macOS build. The extension talks to the Rust backend over an App Group Unix socket with mutual code-signing checks, reuses the backend i18n catalogs, and stays inert on macOS < 14. A beforeBundle hook builds, localizes and pre-signs the extension before Tauri signs the host; pnpm build resolves a single local signing identity automatically and CI keeps using its injected credentials. An Xcode style-preview host is included for iterating on the widget layout. The i18n cleanup scanner now also scans Swift sources so widget-only keys are not flagged unused. Signed-off-by: Tunglies <77394545+Tunglies@users.noreply.github.com>
149 lines
5.0 KiB
JSON
149 lines
5.0 KiB
JSON
{
|
|
"name": "clash-verge",
|
|
"version": "2.5.4",
|
|
"license": "GPL-3.0-only",
|
|
"scripts": {
|
|
"prepare": "husky || true",
|
|
"dev": "node scripts/dev.mjs dev",
|
|
"dev:service": "node scripts/dev.mjs service",
|
|
"dev:sidecar": "node scripts/dev.mjs sidecar",
|
|
"dev:diff": "node scripts/dev.mjs dev",
|
|
"dev:trace": "node scripts/dev.mjs trace",
|
|
"dev:tauri": "cross-env RUST_BACKTRACE=full tauri dev -f tauri-dev",
|
|
"build": "node scripts/build.mjs",
|
|
"build:fast": "node scripts/build.mjs -- --profile fast-release",
|
|
"tauri": "tauri",
|
|
"web:dev": "vite",
|
|
"web:build": "tsc --noEmit && vite build",
|
|
"web:serve": "vite preview",
|
|
"prebuild": "node scripts/prebuild.mjs",
|
|
"updater": "node scripts/updater.mjs",
|
|
"updater-fixed-webview2": "node scripts/updater-fixed-webview2.mjs",
|
|
"release-version": "node scripts/release-version.mjs",
|
|
"release:autobuild": "pnpm release-version autobuild",
|
|
"release:deploytest": "pnpm release-version deploytest",
|
|
"eslint": "pnpm lint",
|
|
"lint": "eslint -c eslint.config.ts --max-warnings=0 --cache --cache-location .eslintcache src",
|
|
"lint:fix": "eslint -c eslint.config.ts --max-warnings=0 --cache --cache-location .eslintcache --fix src",
|
|
"format": "biome format --write .",
|
|
"format:check": "biome format .",
|
|
"i18n:check": "node scripts/cleanup-unused-i18n.mjs",
|
|
"i18n:format": "node scripts/cleanup-unused-i18n.mjs --align --apply",
|
|
"i18n:types": "node scripts/generate-i18n-keys.mjs",
|
|
"typecheck": "tsc --noEmit",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"knip:check": "knip",
|
|
"knip:report": "knip --no-exit-code",
|
|
"perf:build": "node scripts/perf/build.mjs",
|
|
"perf:run": "node scripts/perf/run.mjs",
|
|
"perf:compare": "node scripts/perf/compare.mjs",
|
|
"perf:test": "node --test scripts/perf/report.test.mjs"
|
|
},
|
|
"dependencies": {
|
|
"@dnd-kit/collision": "^0.5.0",
|
|
"@dnd-kit/dom": "^0.5.0",
|
|
"@dnd-kit/helpers": "^0.5.0",
|
|
"@dnd-kit/react": "^0.5.0",
|
|
"@emotion/react": "^11.14.0",
|
|
"@emotion/styled": "^11.14.1",
|
|
"@juggle/resize-observer": "^3.4.0",
|
|
"@monaco-editor/react": "^4.7.0",
|
|
"@mui/icons-material": "^9.0.1",
|
|
"@mui/material": "^9.0.1",
|
|
"@tanstack/react-virtual": "^3.13.25",
|
|
"@tauri-apps/api": "2.11.1",
|
|
"@tauri-apps/plugin-clipboard-manager": "^2.3.2",
|
|
"@tauri-apps/plugin-dialog": "^2.7.1",
|
|
"@tauri-apps/plugin-fs": "^2.5.1",
|
|
"@tauri-apps/plugin-http": "~2.5.9",
|
|
"@tauri-apps/plugin-opener": "2.5.4",
|
|
"@tauri-apps/plugin-updater": "2.10.1",
|
|
"ahooks": "^3.9.7",
|
|
"cidr-block": "^2.3.0",
|
|
"compare-versions": "^6.1.1",
|
|
"dayjs": "1.11.21",
|
|
"foxact": "^0.3.4",
|
|
"foxts": "^5.4.2",
|
|
"i18next": "^26.2.0",
|
|
"js-yaml": "^5.0.0",
|
|
"lodash-es": "^4.18.1",
|
|
"meta-json-schema": "^1.19.25",
|
|
"monaco-editor": "^0.56.0",
|
|
"monaco-yaml": "^5.5.0",
|
|
"nanoid": "^6.0.0",
|
|
"qrcode.react": "^4.2.0",
|
|
"react": "19.2.8",
|
|
"react-dom": "19.2.8",
|
|
"react-error-boundary": "6.1.2",
|
|
"react-hook-form": "^7.76.1",
|
|
"react-i18next": "17.0.11",
|
|
"react-markdown": "10.1.0",
|
|
"react-router": "^8.0.0",
|
|
"rehype-raw": "^7.0.0",
|
|
"rehype-sanitize": "^6.0.0",
|
|
"remark-gfm": "^4.0.1",
|
|
"swr": "^2.4.2",
|
|
"tauri-plugin-mihomo-api": "github:clash-verge-rev/tauri-plugin-mihomo#main",
|
|
"types-pac": "^1.0.3",
|
|
"validator": "^13.15.35"
|
|
},
|
|
"devDependencies": {
|
|
"@actions/github": "^9.1.1",
|
|
"@biomejs/biome": "^2.4.15",
|
|
"@eslint-react/eslint-plugin": "^5.8.5",
|
|
"@eslint/js": "^10.0.1",
|
|
"@tauri-apps/cli": "2.11.4",
|
|
"@types/lodash-es": "^4.17.12",
|
|
"@types/node": "^24.12.4",
|
|
"@types/react": "19.2.18",
|
|
"@types/react-dom": "19.2.4",
|
|
"@types/validator": "^13.15.10",
|
|
"@vitejs/plugin-legacy": "^8.0.2",
|
|
"@vitejs/plugin-react": "^6.0.2",
|
|
"@wdio/tauri-service": "1.3.0",
|
|
"adm-zip": "^0.6.0",
|
|
"axios": "^1.16.1",
|
|
"cli-color": "^2.0.4",
|
|
"commander": "^15.0.0",
|
|
"cross-env": "^10.1.0",
|
|
"eslint": "^10.4.0",
|
|
"eslint-import-resolver-typescript": "^4.4.4",
|
|
"eslint-plugin-es-x": "^10.0.0",
|
|
"eslint-plugin-import-x": "^4.16.2",
|
|
"eslint-plugin-react-compiler": "19.1.0-rc.2",
|
|
"eslint-plugin-react-hooks": "^7.1.1",
|
|
"eslint-plugin-react-refresh": "^0.5.2",
|
|
"eslint-plugin-sukka": "^10.0.0",
|
|
"eslint-plugin-unused-imports": "^4.4.1",
|
|
"glob": "^13.0.6",
|
|
"globals": "^17.6.0",
|
|
"https-proxy-agent": "^9.0.0",
|
|
"husky": "^9.1.7",
|
|
"jiti": "^2.7.0",
|
|
"knip": "6.32.1",
|
|
"lint-staged": "^17.0.5",
|
|
"sass": "^1.100.0",
|
|
"tar": "^7.5.15",
|
|
"terser": "^5.48.0",
|
|
"typescript": "^6.0.3",
|
|
"typescript-eslint": "^8.59.4",
|
|
"vite": "^8.0.14",
|
|
"vite-plugin-svgr": "^5.2.0",
|
|
"vitest": "^5.0.0",
|
|
"webdriverio": "9.30.0",
|
|
"ws": "8.21.0"
|
|
},
|
|
"lint-staged": {
|
|
"*.{ts,tsx,js,mjs}": [
|
|
"eslint --fix --max-warnings=0",
|
|
"biome format --write"
|
|
],
|
|
"*.{css,json}": [
|
|
"biome format --write"
|
|
]
|
|
},
|
|
"type": "module",
|
|
"packageManager": "pnpm@12.4.1"
|
|
}
|