refactor(config): centralize configuration management in `project_config`
liumaolin
8f68d0a
- Move `config.py` from `core` to root-level `project_config.py`
- Update imports throughout the project to use the new module
- Adjust paths to use centralized constants like `DEFAULT_MODEL_DIR`
- Improve maintainability by unifying configuration for TTS, ASR, and pipelines
- Remove redundant configuration instances in submodules
feat(api/tts-voice-app): add Cantonese (yue) support and improve language-specific defaults
liumaolin
9845a3d
- Extend `language` schema with `yue` option (Cantonese)
- Update default target texts for supported languages
- Dynamically select target text based on task language in `TaskService`
- Add Cantonese to language dropdown in CreateTaskDialog component
feat(api): enhance task file management and download endpoints
liumaolin
8064340
- Update `/tasks/{task_id}/outputs` to include inference configuration details
- Replace `/tasks/{task_id}/outputs/{filename}` with `/tasks/{task_id}/outputs/{file_type}/{filename}` for flexible file downloads
- Support downloading inference outputs, reference audio, and model files
- Add `FileType` validation and path security checks in `TaskService`
- Implement `download_file` method to handle various file types securely
feat(api): add endpoints for inference output management
liumaolin
5357d86
- Add `/tasks/{task_id}/outputs` to fetch inference output files list
- Add `/tasks/{task_id}/outputs/{filename}` to download specific output file
- Extend `QuickModeOptions` with configurable inference options
- Update training pipeline to include optional inference stage
- Add `InferenceOutputsResponse` and related schemas to encapsulate inference outputs
- Implement methods in `TaskService` to handle output file retrieval and secure downloads
- Update `config` to support customizable experiment directories
feat(api): implement local training MVP with adapter pattern
liumaolin
e054d0c
- Add adapter base classes (TaskQueue, Progress, Storage, Database)
- Implement local adapters (AsyncTrainingManager, SQLite, LocalStorage)
- Add Pydantic schemas for tasks, experiments, files, and stages
- Implement service layer (TaskService, ExperimentService, FileService)
- Add API endpoints for Quick Mode (/tasks) and Advanced Mode (/experiments)
- Add adapter factory with dependency injection support
- Update architecture design document with implementation status
feat(api): implement AsyncTrainingManager MVP with SQLite persistence
liumaolin
e43edbb
- Add api_server module with adapter pattern architecture
- Implement AsyncTrainingManager using asyncio.subprocess + SQLite
- Add TaskQueueAdapter abstract base class for future server mode
- Create domain models: Task, TaskStatus, ProgressInfo
- Add run_pipeline.py wrapper script for subprocess execution
- Create config module for centralized environment variables
- Add aiosqlite dependency to pyproject.toml
- Include test config files for pipeline validation
The AsyncTrainingManager provides:
- Async task queue with SQLite persistence
- Real-time progress tracking via stdout JSON parsing
- Task cancellation and status querying
- Progress subscription for SSE streaming
- Application restart recovery support