Artem Akymenko
b7026a666d
refactor(shutdown): move shutdown logic in one place
2026-07-12 20:19:33 +03:00
Artem Akymenko
d8fcfb1cce
chore: normalize line endings to LF, add .gitattributes
...
- Add .gitattributes with text=auto eol=lf for all text files
- Renormalize all files in index to LF line endings
- Fixes massive whitespace-only diffs between main and feature branch
2026-07-12 16:20:42 +03:00
Artem Akymenko
c094b94704
feat(tts-plugin): complete Plugin Architecture refactor
...
- Normalize Pipeline public API: create_pipeline(plugin_id, *, lang_code, device)
- EngineConfig: add lang_code field per Architecture Amendment #1
- Kokoro plugin reads config.lang_code (fixes functional regression)
- Static voice catalog in PluginManifest.voices (None = dynamic/VoiceLister)
- get_voices() reads from manifest without creating Engine
- Remove dead kwargs (sample_rate, auto_download, total_steps) from SuperTonic
- Clean up unused imports and dead code in engine implementations
- Fix test expectations for VoiceLister (mock overrides)
- Add clear_preview_pipelines() for resource management
2026-07-12 16:20:20 +03:00
Artem Akymenko
a76d338931
refactor: remove compatibility layer, use Plugin Architecture directly
...
- Delete abogen/tts_plugin/compat.py (CompatBackend, create_backend, get_metadata, etc.)
- Add abogen/tts_plugin/utils.py with direct Plugin Manager functions:
get_voices, get_default_voice, is_plugin_registered, resolve_voice_to_plugin, create_pipeline
- Update all 16 consumer files to import from utils instead of compat
- Update __init__.py to re-export utils instead of compat
- Update 5 test files and add TestNoCompatLayer regression tests
- All 493 tests pass
2026-07-12 16:20:06 +03:00
Artem Akymenko
985e16f1f8
feat: migrate remaining consumers to new Plugin Architecture
...
- Add compatibility functions to tts_plugin/compat.py:
- get_metadata(): returns TTSBackendMetadata with voices
- is_registered_backend(): checks if plugin is loaded
- resolve_backend_for_voice(): resolves backend for voice spec
- get_default_voice(): gets default voice for backend
- Update tts_plugin/__init__.py to export new functions
- Migrate all consumers from old tts_backend_registry:
- WebUI: conversion_runner, debug_tts_runner, routes/api, routes/utils/*
- PyQt UI: gui, predownload_gui, voice_formula_gui
- Voice utilities: voice_cache, voice_formulas, voice_profiles
- Other: subtitle_utils, utils, predownload_gui (root)
- Update tests to use new plugin architecture
Old architecture remains intact as fallback.
2026-07-12 16:20:06 +03:00
Artem Akymenko
1d50429b87
refactor: migrate core modules to use TTSBackendMetadata.voices via registry
...
Replace direct imports of VOICES_INTERNAL and DEFAULT_SUPERTONIC_VOICES
in voice_profiles, voice_formulas, and voice_cache with get_metadata()
from TTSBackendRegistry. Adds get_metadata() top-level function to
tts_backend_registry as symmetric counterpart to register_backend() and
create_backend().
2026-07-08 13:43:52 +00:00
Deniz Şafak
5ae153f841
Reformat using black
2026-01-09 01:36:14 +03:00
JB
10cd2c993c
feat: Add environment variables for voice cache and Hugging Face directory in Docker setup
2025-10-26 08:03:40 -07:00
JB
f35b35c7a9
feat: Enhance EPUB export by grouping chunks for rendering and adding group ID support
2025-10-10 14:43:28 -07:00
JB
f0b6976d12
feat: Enhance voice formula parsing and validation, implement voice asset caching, and add tests for new functionality
2025-10-09 13:37:36 -07:00