Replace the Functional Source License with the GNU Affero General Public License v3 across the project, with a paid commercial license retained for proprietary/closed-source use without AGPL obligations (open-core, like Firecrawl). - LICENSE: verbatim AGPL-3.0 text under an AGPL Notice + Scope header; drops the FSL "Competing Use" framing and the 2-year Apache-2.0 conversion. The bundled omnivoice/ TTS model stays Apache-2.0 upstream (AGPL-compatible). - Manifests now declare SPDX AGPL-3.0-only: pyproject.toml, Cargo.toml (normalized from bare AGPL-3.0), and both package.json (added license field). - README.md / README_CN.md: badge, pricing, commercial-use FAQ, License section. - en.json: in-app Commercial License copy reworded to AGPL; the false "converts to Apache 2.0" FAQ removed (+ its renderer block in SupportPage.jsx). Non-English locale strings still describe the old FSL model and are left for a follow-up translation pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
77 lines
2.4 KiB
JSON
77 lines
2.4 KiB
JSON
{
|
|
"name": "omnivoice-studio",
|
|
"private": true,
|
|
"version": "0.3.5",
|
|
"license": "AGPL-3.0-only",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"desktop": "tauri dev",
|
|
"build": "vite build",
|
|
"lint": "eslint .",
|
|
"typecheck": "tsc --noEmit",
|
|
"typecheck:ci": "tsc --noEmit --checkJs false",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:legacy": "node --experimental-strip-types --no-warnings --test ../tests/frontend/*.test.mjs",
|
|
"preview": "vite preview",
|
|
"tauri": "tauri",
|
|
"e2e": "playwright test"
|
|
},
|
|
"dependencies": {
|
|
"@fontsource-variable/inter": "^5.2.8",
|
|
"@fontsource-variable/source-serif-4": "^5.2.9",
|
|
"@fontsource/ibm-plex-mono": "^5.2.7",
|
|
"@radix-ui/react-dialog": "^1.1.15",
|
|
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
|
"@radix-ui/react-popover": "^1.1.15",
|
|
"@radix-ui/react-progress": "^1.1.8",
|
|
"@radix-ui/react-select": "^2.2.6",
|
|
"@radix-ui/react-slider": "^1.3.6",
|
|
"@radix-ui/react-tabs": "^1.1.13",
|
|
"@radix-ui/react-toggle-group": "^1.1.11",
|
|
"@radix-ui/react-tooltip": "^1.2.8",
|
|
"@tailwindcss/vite": "^4.2.4",
|
|
"@tanstack/react-query": "^5.100.8",
|
|
"@tanstack/react-table": "^8.21.3",
|
|
"@tanstack/react-virtual": "^3.13.24",
|
|
"@tauri-apps/plugin-dialog": "^2.7.1",
|
|
"@tauri-apps/plugin-opener": "^2.5.4",
|
|
"@tauri-apps/plugin-process": "^2.3.1",
|
|
"@tauri-apps/plugin-updater": "^2.10.1",
|
|
"@tauri-apps/plugin-window-state": "^2.4.1",
|
|
"country-flag-icons": "^1.6.17",
|
|
"i18next": "^26.0.8",
|
|
"i18next-browser-languagedetector": "^8.2.1",
|
|
"lucide-react": "^1.14.0",
|
|
"qrcode": "^1.5.4",
|
|
"react": "^19.2.5",
|
|
"react-dom": "^19.2.5",
|
|
"react-hot-toast": "^2.6.0",
|
|
"react-i18next": "^17.0.6",
|
|
"react-window": "^2.2.7",
|
|
"tailwindcss": "^4.2.4",
|
|
"wavesurfer.js": "^7.12.6",
|
|
"zustand": "^5.0.12"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^10.0.1",
|
|
"@playwright/test": "^1.60.0",
|
|
"@tauri-apps/api": "^2.11.0",
|
|
"@tauri-apps/cli": "^2.11.0",
|
|
"@testing-library/jest-dom": "^6.9.1",
|
|
"@testing-library/react": "^16.3.2",
|
|
"@types/react": "^19.2.14",
|
|
"@types/react-dom": "^19.2.3",
|
|
"@vitejs/plugin-react": "^6.0.1",
|
|
"eslint": "^10.3.0",
|
|
"eslint-plugin-react-hooks": "^7.1.1",
|
|
"eslint-plugin-react-refresh": "^0.5.2",
|
|
"globals": "^17.6.0",
|
|
"jsdom": "^29.1.1",
|
|
"typescript": "^6.0.3",
|
|
"vite": "^8.0.10",
|
|
"vitest": "^4.1.5"
|
|
}
|
|
}
|