Commit Graph
35 Commits
Author SHA1 Message Date
DemonGatanjieuandClaude Opus 5.5 49514025c2 Merge main (v1.58 version panel, docs) into feature/audio-voice-studio
Conflicts:
- api/__init__.py, web/styles.css: keep audio routes/styles and add the
  version manager.
- README.md, CHANGELOG.md: take main's released text; this branch's
  0922b27 was an earlier alignment of the same v1.57 notes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W411Z69FC3em9CzpeQEub5
2026-09-23 13:50:55 +00:00
DemonGatanjieuandClaude Opus 5.5 e622850349 feat: version panel with manual update check, switching and rollback
- api/version_manager.py: installed version (local only), published
  releases on request (GitHub API, git tag fallback), switch to a
  published tag, return to the default branch (fast-forward only), undo
  the last switch; refuses to overwrite modified tracked files
- header version chip and "Version & updates" panel; nothing goes online
  until "Check for updates" is clicked; restart via ComfyUI Manager
- zh/en strings, styles, architecture notes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W411Z69FC3em9CzpeQEub5
2026-09-23 13:42:58 +00:00
DemonGatanjieuandClaude Opus 5.5 b319fa1027 feat(audio): show each file's speech in the audio gallery and rescue unsaved previews
The gallery listed file names only, and audio from Preview Audio nodes (the
template used one) lives in ComfyUI's temp folder, so the gallery stayed empty.

- api/audio_metadata.py reads ComfyUI's `prompt` comment from FLAC and
  Ogg/Opus files (read-only) and extracts the TTS node's speech, sample, seed
- gallery rows show the speech (emotion chips, expandable per-segment script),
  voice and seed, with copy-speech; results are cached by mtime/size
- search (?q=) matches speech text and file names
- "unsaved previews" section lists temp audio with "save to gallery", which
  copies into output/audio/ (O_EXCL, never overwrites; the preview is untouched)
- audio_stream serves input/output/temp only; .opus is recognized
- parseTaggedSpeech in audio_script.js reads speech back the way F5-TTS splits it

Also outside the repo: ComfyUI/arona_multivoice_workflow.json now ends in a
Save Audio node (prefix audio/F5-TTS/Arona) instead of Preview Audio.

Verified: 100 Python tests (5 new gallery tests with synthetic FLAC/Opus),
tests/audio_script_rules.mjs, jsdom walkthrough (speech rows, preview save,
search, delete, paging), and a read-only run on the two real temp previews.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W411Z69FC3em9CzpeqEub5
2026-09-23 09:24:05 +00:00
DemonGatanjieuandClaude Opus 5.5 9038637967 fix(audio): harden voice ingestion, streaming and romanization backend
- upload: validate target folder with resolve_within, refuse to overwrite an
  existing voice unless overwrite=1, stage audio/transcripts and swap them in
  together so conversion or disk failures keep the previous voice, drop stale
  .txt/.orig.txt and other-format siblings, write .orig.txt for the native script
- ffmpeg is resolved explicitly (PATH, then portable python dir) with a timeout
- voice/gallery scans run in a worker thread; stems are unique across scan
  folders; audio URLs are percent-encoded and versioned by mtime
- stream and delete only accept audio extensions; paging and template names
  are validated; errors are JSON
- romanizer no longer reads Han-only (Chinese) text as Japanese and reports
  missing pykakasi / hangul-romanize instead of silently succeeding
- extension static files use Cache-Control: no-cache (revalidate) instead of
  no-store; document the deliberate PATH exception in __init__.py

Verified: new local tests/test_audio_catalog.py (14 tests) plus the existing
Python suite (78 tests) pass in a Linux venv; not yet exercised in ComfyUI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W411Z69FC3em9CzpeqEub5
2026-09-23 07:45:49 +00:00
DemonGatanjieu 2f70ef71b6 feat(audio): add intelligent multi-lingual romanization tool (Japanese & Korean -> Latin) to voice asset uploader 2026-09-22 21:27:45 +08:00
DemonGatanjieu 28bf192b6b feat(audio): implement voice asset ingestion modal with live audio preview and automatic F5-TTS companion transcript persistence 2026-09-22 11:49:26 +08:00
DemonGatanjieu c0f7320977 feat(audio): add 1-click Arona workflow loader and canvas node drop injection 2026-09-21 11:05:34 +08:00
DemonGatanjieu 09b06d1dc7 fix(entry): resolve floating trigger position, boundary clamping, and refresh flicker 2026-09-21 02:02:50 +08:00
DemonGatanjieu 9c2db0f1e9 fix(entry): resolve drag persistence collapse, dock entrapment, and regular refresh cache desync 2026-09-21 01:03:15 +08:00
DemonGatanjieu 28a24da0c1 feat(audio): complete audio sidebar, audio vault gallery, and domain navigation 2026-09-20 12:35:13 +08:00
DemonGatanjieu 3bb144655a feat(audio): add dual-domain mode switcher and Audio Voice Studio workspace 2026-09-20 11:54:38 +08:00
DemonGatanjieu a63a615514 refactor(backend): split shared utility route families 2026-09-18 01:56:10 +08:00
DemonGatanjieu a0c6849878 refactor(materials): separate schema assets and storage 2026-09-18 01:51:00 +08:00
DemonGatanjieu 9cebdbd994 refactor(models): separate catalog recovery metadata and media 2026-09-18 01:43:09 +08:00
DemonGatanjieu 975863bf0f feat(materials): integrate node application and prompt combinations 2026-09-09 11:13:24 +08:00
DemonGatanjieu 393c4e9ade Connect prompt notes to materials and simplify capture pages 2026-09-08 21:36:40 +08:00
DemonGatanjieu f8d159dc11 Improve material library browsing and reuse 2026-09-07 22:47:27 +08:00
DemonGatanjieu b55a23b529 feat(materials): add image workflow snapshot library 2026-09-03 22:11:25 +08:00
DemonGatanjieu b38770cfcc feat(recipes): support renaming parameter notebooks with atomic updates and dialog prompt 2026-08-18 04:29:55 +08:00
DemonGatanjieu 8698905b76 feat: merge Node Assistant and Parameter Notebook with node-type filtering 2026-08-07 03:01:08 +08:00
DemonGatanjieu 2081589ee5 fix(recipe): merge parameter notebooks into recipe detail 2026-08-04 22:24:37 +08:00
DemonGatanjieu f485a46600 feat: extract parameter management to dedicated Parameter Notebooks and implement Parameter Gallery 2026-08-04 17:50:50 +08:00
DemonGatanjieu 9ad487b371 refactor(recipes): simplify gallery matching 2026-08-04 01:46:49 +08:00
DemonGatanjieu acfb24d0ce feat(recipes): add result gallery covers 2026-08-04 01:28:29 +08:00
DemonGatanjieu f26098780d Add secure recipe package transfer 2026-08-02 21:54:31 +08:00
DemonGatanjieu 8a65bb9ea5 Add recipe search diff and action foundations 2026-08-02 21:48:03 +08:00
DemonGatanjieu 9ecb733e64 Add workflow recipe preview foundation 2026-08-02 21:35:24 +08:00
DemonGatanjieu a9d767e72f Add workflow recipe detail foundation 2026-08-02 19:09:37 +08:00
DemonGatanjieu 2d0eebcf77 feat: edit workflow recipes with history 2026-08-02 17:47:22 +08:00
DemonGatanjieu a35e1fa463 feat: add local workflow recipes 2026-08-02 04:40:18 +08:00
DemonGatanjieu 2af795f492 perf: cache metadata and batch model resolution 2026-08-01 21:07:05 +08:00
DemonGatanjieu f62df5a363 chore(snapshot): Auto AI snapshot 2026-08-01 18:36:17 2026-08-01 18:36:18 +08:00
DemonGatanjieu f07459ce80 chore(snapshot): Auto AI snapshot 2026-08-01 15:32:22 2026-08-01 15:32:22 +08:00
DemonGatanjieu 48526d211c chore(snapshot): Auto AI snapshot 2026-07-30 21:25:42 2026-07-30 21:25:42 +08:00
DemonGatanjieu fa5e71a5e4 Add files via upload 2026-07-12 21:59:18 +08:00