openreader/package.json
Richard Roberson b21bdb3a21 feat(tts): add multi-provider TTS support with Deepinfra and custom OpenAI-compatible endpoints
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.
2025-11-09 15:47:17 -07:00

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"
}
}