| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
Merge remote-tracking branch 'origin/main' into fix/offline-reference-asr # Conflicts: # CHANGELOG.md | 3 天前 | |
refactor: split backend into api/core/services/schemas, harden security + fd pressure, add searchable language picker, fix segment fragmentation Backend: - Split monolithic main.py into backend/{api/routers,core,schemas,services} - core/db.py: allowlist-gated migrations, db_conn context manager (kills SQL injection on ALTER) - core/tasks.py: lock-guarded listener add/remove/push, snapshot-before-iterate - services/ffmpeg_utils.py: run_ffmpeg helper with concurrency semaphore, EAGAIN retry, guaranteed reap - services/segmentation.py: Bengali/CJK/Arabic punctuation, ultra-short tier, stitch_adjacent_shorts, bounded-loop merge; public clean_up_segments API - services/model_manager.py: robust lock.locked() handling - api/routers/dub_core.py: job_id traversal guard, thread-safe _active_procs, timeouts on ffmpeg/demucs, POST /dub/cleanup-segments endpoint - api/routers/dub_export.py: guarded SSE listener remove, ffmpeg timeouts via run_ffmpeg - api/routers/exports.py: destination_path validation, safe source resolver, subprocess list-form - api/routers/generation.py: contextlib.suppress on tempfile cleanup, db_conn usage, safe output-path helper - api/routers/system.py: try/finally tmp cleanup, subprocess timeouts - schemas/requests.py: TranslateSegment.id int->str to match hex segment IDs - main.py: threading.Lock around crash log writes Frontend: - components/SearchableSelect.jsx: popover combobox with search, keyboard nav, popular+recent pins, 200-item cap - App.jsx: wire SearchableSelect for dub language / ISO code / voice-gen language; Clean Up segments button; fix blob URL leak (object-shaped prev in setter, unmount cleanup via ref) - components/WaveformTimeline.jsx: explicit <video> detach instead of innerHTML='' to release decoder - index.css: ss-* combobox styles matching Gruvbox theme Tests: - tests/test_segmentation.py (26 cases), test_dub_transcribe.py, test_dub_export_unique.py, conftest.py Chore: - .gitignore: exclude omnivoice.zip, /research/ reference clones - Remove tracked stray root test scripts + crash_log.txt Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> | 5 个月前 | |
fix(auth): reject blank server admin keys | 25 天前 | |
feat: setup wizard, donate page, CI fixes, performance optimizations, and style extraction - Implement donate page and migrate API fetching to react-query hooks - Add setup wizard for batch job management and voice clip editing - Refactor setup router into package (wizard, models, download sub-modules) - Fix 9 CI test failures from setup router refactor - Fix cross-device link error in prefs.py atomic writes - Fix event loop mismatch in export test fixtures - Modernize README with architecture diagram and 13 app screenshots - Defer per-segment disk writes in dub_generate for ~6s faster dubs - Extract 45 inline styles from Launchpad, KeyboardCheatsheet, DubSegmentRow - Add playwright dev dep and screenshot capture script | 4 个月前 | |
Merge feat/catalogue-one-page (with main) into feat/engine-list-detail Conflicts: RecoBanner (deleted here: the recommendation card is gone), ModelStoreTab + EngineCompatibilityMatrix (this branch's rewrite kept), supertonic3 backend (main's own-venv check kept, message without the retired "→ Engines" step), CHANGELOG (base layout + the #2020 line). Carried over from main and the review: - The list row hides Install while only the license review is left (main's #2017 rule, now in the row; Accept lives in the panel). - Engine action aria labels go through i18n (engines.aria*, all 21 locales) instead of hardcoded English. - Every "Model Catalogue → Engines/Models" path main added, plus the frontend strings that still named the retired panes, now point at the one-page catalogue. - test_engine_unavailable_reason_1866 reads the license matcher from its new home, engines/engineDisplay.js. | 10 天前 | |
feat(electron): add full VoiceStudio desktop app | 6 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 3 天前 | ||
| 5 个月前 | ||
| 25 天前 | ||
| 4 个月前 | ||
| 10 天前 | ||
| 6 天前 |