Tags

Tags give the ability to mark specific points in history as being important
  • v2.0.1

    v2.0.1
    
    Documentation only. The README's agent integrations section names [peen](https://github.com/psyb0t/peen) as an example of an agent that reads `.agents/skills/`.
  • v2.0.0

    v2.0.0
    
    Staged files now expire after 24 hours by default. Before upgrading an installation that must keep files indefinitely, set `AUDIOLLA_FILES_TTL=0`. REST and MCP request shapes are unchanged.
    
    - Add configurable staged-file retention with a 24-hour default, disabled with `AUDIOLLA_FILES_TTL=0`. Cross-process leases prevent cleanup during requests and background jobs sharing the same data directory.
    - Reuse Torchbase's Python 3.12 and Torch 2.5.1 CPU/cu124 layers. Copy application source after audio dependencies so source edits preserve the expensive dependency cache.
    - Keep Docker integration tests out of the offline unit-test target.
    - Derive runtime version metadata from the installed package and synchronize the API and agent plugin versions.
  • v1.1.7

    v1.1.7: mirror/archive workflow split, Codeberg mirror, issue pull-back
  • 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.