{ "name": "openless-app", "private": true, "version": "2.0.0-Beta.4+build.20260930", "type": "module", "scripts": { "pretest": "npm run build", "test": "node scripts/frontend-test-runner.mjs", "dev": "vite", "prebuild": "node scripts/android-ipc-import-boundary.test.mjs", "build": "tsc && vite build", "preview": "vite preview", "check:macos-metal-toolchain": "node scripts/verify-macos-metal-toolchain.mjs", "tauri": "tauri", "tauri:android:init": "tauri android init", "tauri:android:dev": "tauri android dev", "tauri:android:build": "node scripts/run-android-tauri-build.mjs --debug", "tauri:android:build:debug": "node scripts/run-android-tauri-build.mjs --debug", "tauri:android:build:release": "node scripts/run-android-tauri-build.mjs --release", "check:android-apk-workflow": "node scripts/android-apk-workflow-contract.test.mjs", "merge:android-v1-manifest": "node scripts/merge-android-v1-manifest.mjs", "merge:android-overlay-manifest": "node scripts/merge-android-overlay-manifest.mjs", "merge:android-shizuku-manifest": "node scripts/merge-android-shizuku-manifest.mjs", "patch:android-shizuku-deps": "node scripts/patch-android-shizuku-deps.mjs", "copy:android-scaffolding": "node scripts/copy-android-scaffolding.mjs", "check:macos-capsule-spaces": "node scripts/macos-capsule-spaces-contract.test.mjs", "check:macos-speech-usage-description": "node scripts/macos-speech-usage-description-contract.test.mjs", "check:hotkey-injection": "node scripts/check-hotkey-injection.mjs", "check:hotkey-side-modifiers": "tsx src/lib/hotkeySideModifiers.test.ts", "check:windows-startup-lifecycle": "node scripts/windows-startup-lifecycle-contract.test.mjs", "check:windows-ui-config": "node scripts/windows-ui-config.test.mjs", "check:pin-persistence-security": "node scripts/pin-persistence-security-contract.test.mjs", "check:android-updater-pubkey": "node scripts/check-android-updater-pubkey.mjs", "check:android-shizuku-scaffolding": "node scripts/merge-android-shizuku-manifest.test.mjs && node scripts/patch-android-shizuku-deps.test.mjs", "format": "prettier --write \"src/**/*.{ts,tsx,css}\" \"android/frontend/**/*.{ts,tsx}\" \"scripts/**/*.{js,mjs,sh}\" \"*.{ts,json,html,sh}\" \"assets/remote-input/*.{js,css,html}\"", "format:check": "prettier --check \"src/**/*.{ts,tsx,css}\" \"android/frontend/**/*.{ts,tsx}\" \"scripts/**/*.{js,mjs,sh}\" \"*.{ts,json,html,sh}\" \"assets/remote-input/*.{js,css,html}\"", "test:ui-motion": "playwright test" }, "dependencies": { "@base-ui/react": "^1.6.0", "@shadcn/react": "^0.2.1", "@tailwindcss/vite": "^4.3.2", "@tauri-apps/api": "^2.1.1", "@tauri-apps/plugin-dialog": "^2.7.2", "@tauri-apps/plugin-shell": "^2.3.5", "@tauri-apps/plugin-updater": "^2.10.1", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "dompurify": "^3.4.8", "framer-motion": "^12.39.0", "i18next": "^26.0.8", "lucide-react": "^1.23.0", "marked": "^11.2.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-i18next": "^17.0.6", "tailwind-merge": "^3.6.0", "tailwindcss": "^4.3.2" }, "devDependencies": { "@playwright/test": "1.63.0", "@tauri-apps/cli": "^2.1.0", "@types/dompurify": "^3.0.5", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@vitejs/plugin-react": "^4.3.3", "js-yaml": "4.3.0", "prettier": "3.9.6", "prettier-plugin-sh": "0.19.0", "shadcn": "^4.13.0", "tsx": "4.23.1", "tw-animate-css": "^1.4.0", "typescript": "^5.6.3", "vite": "^6.4.3" }, "overrides": { "@shadcn/react": { "react": "$react", "@types/react": "$@types/react" } } }