Tags

Tags give the ability to mark specific points in history as being important
  • v1.1.6

    v1.1.6 — fix missing Codex install command
  • v1.1.5

    v1.1.5 — Claude Code + Codex plugin manifests
  • v1.1.4

    v1.1.4 — CI status badge
  • v1.1.3

    c3b308dc · v1.1.3: add README badges ·
    v1.1.3 — README badges
  • v1.1.2

    v1.1.2 — list on the official MCP Registry (server.json + OIDC publish)
  • v1.1.1

    v1.1.1 — third-party license notices (THIRD_PARTY.md + LICENSES/)
  • v1.1.0

    v1.1.0 — ClawHub plugin + skill/README accuracy pass
  • v1.0.11

    v1.0.11 — ClawHub skill publishing + .agents/skills layout + MCP loudness/normalize table fix
  • v1.0.10

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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.