Tags give the ability to mark specific points in history as being important
-
-
-
-
-
-
-
-
v1.0.11
3e1c2a82 · ·v1.0.11 — ClawHub skill publishing + .agents/skills layout + MCP loudness/normalize table fix
-
v1.0.10
d95a335b · ·v1.0.10 — visualize/volume + metadata persist + catalog routes Three real-world bugs fixed: - /v1/audio/visualize/video/volume: ffmpeg showvolume size arg style ("s=WxH" → "w=W:h=H"). - /v1/audio/metadata write mode: now actually persists tagged audio to output_path / output_url (additive — old call shape still works, flagged persisted=false in the response). - /v1/catalog paths: /v1/audio/batch → /v1/batch and /v1/audio/diarize → /v1/audio/diarize/{engine}; new consistency test guards future drift. -
v1.0.9
a2c344ee · ·v1.0.9 — remix single-stem-solo Soloing one stem in /v1/audio/remix (stem_mix={"vocals":1.0, "drums":0.0,"bass":0.0,"other":0.0}) used to fail with "mix_audio requires at least 2 inputs" — the post-separation mix step couldn't handle a single surviving stem. Fix: new audio.apply_gain_db() helper (single-stream ffmpeg volume= pass); remix handler short-circuits to it when exactly one stem survives gain filtering. 483/483 CUDA integration tests passing. -
v1.0.8
2a712557 · ·v1.0.8 — UVR phantom-output root cause + remix stems arg The "model produced no output files" failure that bit every downstream consumer of /v1/audio/restore/uvr-* turned out to be a 3-layer config bug, not a model issue: 1. audio-separator snapshots output_dir at load_model() time; mutating sep.output_dir after load only updates the outer wrapper. Inner model_instance still writes to cwd (/app/, root-owned) → EACCES → library silently catches → audiolla sees "claimed but never written" files and drops them all. 2. output_single_stem filter matched the wrong stem-name namespace (model's own primary_stem_name vs engines.json's primary_stem). 3. Near-silent stem dropper masked layers 1 and 2 on synthetic fixtures. Fix: drop output_single_stem= from the Separator() call (audiolla picks the right stem post-hoc); propagate output_dir to sep.model_instance.output_dir alongside sep.output_dir before each separate() call. Plus a heavy-reverb test fixture + strict UVR output assertions (>= 10 s real WAV, no graceful no-output skip). Also: remix handler now passes stems to separate() (was failing with TypeError, masked pre-v1.0.7 by FastAPI's plain-text 500). 482/482 CUDA integration tests passing.
-
v1.0.7
2238f5a0 · ·v1.0.7 — field aliases + master mode auto-detect + preset/pipeline JSON + JSON 500 Field-name compatibility: /v1/audio/fade +fade_in_sec / +fade_out_sec /v1/audio/eq band.frequency (alias of freq), band.q (alias of width_hz) /v1/audio/similar +file_path_b / +file_url_b Master mode auto-detect — mode is optional; inferred from reference_path / preset. Preset + pipeline endpoints converted from Form/File to JSON body (missed by the v1.0.0 spec-first sweep). New PresetRunRequest + PipelineRunRequest schemas; pipeline steps now a typed array. Global JSON envelope for uncaught 500s — downstream clients that parse response.json() no longer break on unexpected errors. Remix accepts linear-gain shorthand {stem: 0..1} as well as the canonical {stem: {gain_db, mute}}. UVR phantom-output diagnostic: WARNING log lists the actual tmpdir contents alongside the library's claimed output filenames. No API contract removed. Smoke: 405/405 CPU integration tests. -
v1.0.6
342bcd54 · ·v1.0.6 — fix ffprobe error masking + trim end_sec optional + tests Bug fixes: - /v1/audio/info now surfaces real ffprobe stderr instead of "unknown error" (was using -v quiet which muted everything). - /v1/audio/trim end_sec optional; omitting trims to source end. Test harness: fixed container names — audiolla-pytest (CPU) / audiolla-pytest-cuda (CUDA) — pre-killed by exact name at session start. Same image reused, no rebuilds between tests. New regression test for the MP3 info path. Trim test updated for the new optional-end_sec contract. Smoke: 395/395 CPU integration tests. -
v1.0.5
77d28dbb · ·v1.0.5 — pytest test infrastructure + engine logging coverage + bugfixes No API changes. All additive or latent-bug fix. Replaces 71 bash e2e_*.sh scripts with 83 pytest files (479 test functions) under tests/integration/. Session-scoped container, engine-union from markers, atexit + signal cleanup. Full CUDA suite: 470 passed, 9 skipped, 0 failed. 25/25 engines now log inference start/done with size + duration_ms and warn/exception at every raise. 7 framework modules got module-level loggers + key state-transition + error-path logs. Bug fixes: - UVR _STEM_RE regex (newer audio-separator filename format) - UVR phantom-output filter (model claims files it never wrote) - DeepFilterNet needs git on runtime PATH - Dockerfile.cuda was missing COPY presets - pyannote test accepts num_speakers == 0 on synthetic input .gitignore + .dockerignore: extra ML weight + archive + HF/torch cache patterns. Build context now 2.02 MB.
-
v1.0.4
61184f73 · ·v1.0.4 — fix enhance/deepfilter + JSON logging overhaul Bug fix: /v1/audio/enhance/deepfilter no longer 400s before first load. The predicate was checking a private attribute that only exists post-lazy-load. Logging: single centralised init path through audiolla.logging, line-delimited JSON, LOG_LEVEL env var, file:line:func + service / version / pid / host on every record, X-Request-Id correlation honoured both ways (inbound + outbound), per-request summary log level-scaled to status code (DEBUG /healthz, INFO 2xx/3xx, WARN 4xx, ERROR 5xx) with method / path / status / duration_ms / client_ip / user_agent / request+response byte sizes.
-
v1.0.3
ebae8ce0 · ·v1.0.3 — entrypoint mirrors HUGGINGFACE_TOKEN ↔ HF_TOKEN huggingface_hub reads HF_TOKEN as canonical; audiolla's older docs use HUGGINGFACE_TOKEN. Setting one name now unlocks the other so gated downloads (stable-audio-open, musicgen-small, musicgen-medium, pyannote) work regardless of which env var the operator picked. No code path changes — environment normalization only.
-
v1.0.2
06b265d2 · ·v1.0.2 — HF_HUB_OFFLINE default flipped to 0 Image lazy-downloads HF weights on first call instead of refusing all egress by default. Out-of-the-box usability fix for the five text-to- audio engines, ast-tag, clap-embed, pyannote — all of which were returning HTTP 500 on the first request with the previous offline default. Strict-offline deployments: prefetch with `huggingface-cli download <model>` against a mounted `/data/hf` volume, then start the container with `-e HF_HUB_OFFLINE=1`. No API / engine behavior changes — only the env-var default moves.
-
v1.0.1
3288b2c3 · ·v1.0.1 — CI fix: free disk space on ubuntu-latest before CUDA build No code or image changes; functionally identical to v1.0.0. CUDA build in CI was OOMing the runner disk during torch 2.5.1+cu126 unpack (~5 GB on top of the rest of the heavy-deps layer; ubuntu-latest only has ~14 GB free). Reusable workflow bumped to psyb0t/reusable-github-workflows v0.6.0 (SHA 59d43bac747f6bf66eeddb103a845b6dbf367c6b) with `free_disk_space: true` enabled. Frees ~25-30 GB by stripping Android SDK, .NET, Haskell, CodeQL, large apt packages, and preloaded docker images. Tool cache + swap left intact.
-
v1.0.0
5525a1e6 · ·v1.0.0 — stable API milestone Spec-first JSON-everywhere REST API + 5 text-to-audio engines. Skips the v0.24.x line; this tag is both the breaking refactor and the 1.0 stability commitment. Every v0.23.x client breaks. API contract (now stable under semver): - Every audio endpoint takes a JSON body. - Multipart only at PUT /v1/files/{path}. - Audio-producing endpoints require output_path xor output_url. - Raw audio bodies + *_base64 MCP fields removed. - openapi.yaml is the source of truth; Pydantic models regenerate via `make generate`; handler signatures take a single Pydantic body. NEW engines (POST /v1/audio/generate/{engine}, all CUDA-only): - stable-audio-open (Stability Community Licence; 47 s cap; ~12 GB) - musicgen-small (CC-BY-NC; AUDIOLLA_ENABLE_NONCOMMERCIAL=1 gate) - musicgen-medium (CC-BY-NC; same gate; higher quality) - riffusion (CreativeML OpenRAIL-M; spectrogram + Griffin-Lim) - audioldm2 (CC-BY 4.0 — commercial-safe, no opt-in) Plus: matchering/resampy 500 fix (setuptools pinned in heavy-deps), openapi.yaml audit (tags + reusable parameters + standard error set, 17 routes backfilled, paths 73 -> 90), FastAPI serves the static openapi.yaml at /openapi.json, JobAcceptedResponse.status_url contract fix, AudioSeparateRequest.engine field fix, spec-first contract in CLAUDE.md. Smoke: unit 347/347, CPU e2e 63/63 scripts (398/398 tests), CPU + CUDA images build clean. Migration cheatsheet in CHANGELOG.md. -
v0.23.1
3f7c9613 · ·v0.23.1 — README sync for v0.23.0 MCP output_path README MCP section now describes all three output modes (base64 default, output_path staging, output_url presigned PUT) instead of claiming audio over MCP is always base64-encoded. `separate` tool row updated to document the new output_paths={stem:path} per-stem map alongside output_urls. Docs only.