Add comprehensive multi-provider TTS support enabling users to choose between OpenAI, Deepinfra, and custom OpenAI-compatible endpoints. Implement provider-specific voice management with automatic voice restoration per provider-model combination, and migrate package manager to pnpm for improved dependency handling. Key changes: - Add TTS provider selection (OpenAI, Deepinfra, custom-openai) in settings UI - Implement provider-specific model and voice lists with dynamic fetching - Add voice persistence per provider-model combination in savedVoices - Support Deepinfra models: Kokoro-82M, Orpheus-3B, Sesame-1B with their voice libraries - Migrate to pnpm with frozen lockfile for reproducible builds - Update Docker configuration to use pnpm and Deepinfra API defaults - Add migration logic for existing users to infer provider from stored baseUrl - Update test helpers and Playwright configuration for Deepinfra API - Add example docker-compose.yml with Kokoro-FastAPI integration BREAKING CHANGE: Voice selection is now provider-model specific. Previously saved voices will be migrated to the new savedVoices structure, but users may need to reselect voices if switching providers.
52 lines
1.3 KiB
JSON
52 lines
1.3 KiB
JSON
{
|
|
"name": "openreader-webui",
|
|
"version": "0.3.1",
|
|
"private": true,
|
|
"scripts": {
|
|
"dev": "next dev --turbopack -p 3003",
|
|
"build": "next build",
|
|
"start": "next start -p 3003",
|
|
"lint": "next lint",
|
|
"test": "playwright test"
|
|
},
|
|
"dependencies": {
|
|
"@headlessui/react": "^2.2.0",
|
|
"@types/howler": "^2.2.12",
|
|
"@types/string-similarity": "^4.0.2",
|
|
"@types/uuid": "^10.0.0",
|
|
"@vercel/analytics": "^1.5.0",
|
|
"compromise": "^14.14.4",
|
|
"core-js": "^3.41.0",
|
|
"epubjs": "^0.3.93",
|
|
"howler": "^2.2.4",
|
|
"lru-cache": "^11.0.2",
|
|
"next": "^15.2.1",
|
|
"openai": "^4.86.1",
|
|
"pdfjs-dist": "4.8.69",
|
|
"react": "^19.0.0",
|
|
"react-dnd": "^16.0.1",
|
|
"react-dnd-html5-backend": "^16.0.1",
|
|
"react-dom": "^19.0.0",
|
|
"react-dropzone": "^14.3.8",
|
|
"react-hot-toast": "^2.5.2",
|
|
"react-markdown": "^10.1.0",
|
|
"react-pdf": "^9.2.1",
|
|
"react-reader": "^2.0.12",
|
|
"remark-gfm": "^4.0.1",
|
|
"string-similarity": "^4.0.4",
|
|
"uuid": "^11.1.0"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/eslintrc": "^3",
|
|
"@playwright/test": "^1.50.1",
|
|
"@tailwindcss/typography": "^0.5.16",
|
|
"@types/node": "^20",
|
|
"@types/react": "^19",
|
|
"@types/react-dom": "^19",
|
|
"eslint": "^9",
|
|
"eslint-config-next": "15.1.5",
|
|
"postcss": "^8",
|
|
"tailwindcss": "^3.4.1",
|
|
"typescript": "^5"
|
|
}
|
|
}
|