Files
SnapOtterandGitHub 5f21588f6c chore: prepare the 2.2.0 release (#660)
Bumps every version surface to 2.2.0, fixes a latent version-coupling bug in the
OCR runtime tests, and stops an absent GPU runner from silently stalling a
release.

Version surfaces: scripts/sync-version.sh covers the 11 workspaces, APP_VERSION,
and the docs release commands across all locales. Root package.json plus the
three surfaces the script never reaches are done by hand: the DOCKERHUB.md banner
and tag table, the docker-tags.md pinning table in 21 locales, and the example
runtimeVersion in tools/image/ocr.md in 21 locales. The release-notes archive step
is deliberately not pre-run, so the notes text stays editable until the release.

Latent bug: runtime-state rejects any runtime whose compatibility.snapotterVersion
is not exactly APP_VERSION, and five fixtures pinned the literal 2.1.0. Since
semantic-release rewrites APP_VERSION on every release, the first PR after any
bump would have gone red for a reason nobody would trace to the release. The
fixtures now derive from APP_VERSION.

GPU runner: sign-ocr-index needs verify-ocr-nvidia on self-hosted hardware, and
the gated manifest job needs ai-bundles, so a missing runner queued instead of
failing and produced no image tags. preflight-gpu-runner claims the same labels
with no dependencies, so it is scheduled first and validates the GPU before the
90-minute build. An API preflight is impossible because listing self-hosted
runners needs Administration:read, which GITHUB_TOKEN cannot hold, so RELEASE.md
carries the maintainer-side check.
2026-07-27 22:09:31 +08:00

56 lines
1.4 KiB
JSON

{
"name": "@snapotter/web",
"version": "2.2.0",
"private": true,
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc -b && vite build",
"preview": "vite preview",
"lint": "biome check src/",
"typecheck": "tsc --noEmit",
"clean": "rm -rf dist"
},
"dependencies": {
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/sortable": "^10.0.0",
"@dnd-kit/utilities": "^3.2.2",
"@sentry/react": "^10.66.0",
"@snapotter/shared": "workspace:*",
"@use-gesture/react": "^10.3.1",
"clsx": "^2.1.0",
"fflate": "^0.8.3",
"fuse.js": "^7.5.0",
"jszip": "^3.10.1",
"konva": "^10",
"lucide-react": "^0.577.0",
"pdfjs-dist": "^6.1.200",
"posthog-js": "^1.404.1",
"qr-code-styling": "^1.9.2",
"react": "^19.2.7",
"react-colorful": "^5",
"react-dom": "^19.2.7",
"react-hotkeys-hook": "^5",
"react-image-crop": "^11.1.2",
"react-konva": "^19",
"react-router": "^8.3.0",
"sonner": "^2.0.7",
"tailwind-merge": "^2.6.0",
"use-image": "^1",
"wavesurfer.js": "^7.12.11",
"zundo": "^2",
"zustand": "^5.0.14"
},
"devDependencies": {
"@sentry/vite-plugin": "^5.4.0",
"@tailwindcss/vite": "^4.3.3",
"@types/react": "^19.2.17",
"@types/react-dom": "^19.0.0",
"@vitejs/plugin-react": "^6.0.4",
"tailwindcss": "^4.3.3",
"typescript": "^5.7.0",
"vite": "^8.1.5"
},
"license": "AGPL-3.0"
}