The @gradio/client was wrapping Radio component values as
{"value": "replace", "__type__": "update"} instead of plain strings,
causing the update_settings Gradio call to fail and crash the server.
- /update-settings: removed Gradio call, settings are applied at save time
- /save-dataset: migrated to REST API (/v1/dataset/save) which accepts
tag_position and other settings directly as strings
- Frontend: pass dataset settings (tag, position, etc.) when saving
- Migrate backend from REST API to Gradio @gradio/client for generation
- Fix Gradio parameter alignment (positions 36-49) for reference/cover audio
- Add LoRA training pipeline with dataset upload, preprocessing, and export
- Add News page with dismiss/restore and GitHub star button
- Add localization info icon in Settings language section
- Fix upload audio URL prefix, add missing MIME types
- Add training API routes and Python preprocess script
- Update i18n with news keys for all languages
Phase 4.3: Largest component change. Adds cascading genre picker using
Phase 3 style data, DiT model selector with backend sync, EditableSlider
for all numeric parameters, LoRA load/unload panel, bulk generate, vocal
gender selector. Batch size max kept at 4 (not 8), inference steps max
kept at 32 (not 200) to prevent OOM. Added LoRA API stubs to api.ts.
Added ditModel to GenerationParams type.
- Add lmModel parameter through full chain (types, API, routes, service)
- Add LM Model dropdown in Advanced Settings (defaults to 0.6B)
- Pass lmModel and lmBackend to format/enhance endpoint
- Update format_sample.py to accept --lm-model and --lm-backend args
- Auto-download model from HuggingFace if not present locally
- Persist model selection in localStorage
- Improve format route error logging with exit code and stdout/stderr
Fixes#9