• v1.0.0 5f952efff0

    v1.0.0
    All checks were successful
    Build & Push Container Image / build (push) Successful in 8m11s
    Stable

    beasty released this 2026-06-14 07:23:18 +00:00 | 0 commits to main since this release

    Infinitune 1.0.0 — Cover-First Radio

    The autonomous radio is now cover-first: instead of generating all-new music, most album tracks are ACE cover renders of real popular songs, reimagined into one cohesive album genre per album.

    Highlights

    • LLM album planner — each 12-track album gets a cohesive target genre, era, vibe, band name, and title, with per-track specs (cover / new / cover-of-cover), real song search targets, per-cover variation (genre / lyrics / both), and full lyrics. If the planner fails, a deterministic template album is generated so the radio never stalls.
    • Cover composition (configurable) — 8 covers + 1 brand-new + 1 cover-of-cover + 2 random fill per album. Tunable via radioCoversPerAlbum, radioNewPerAlbum, radioCoverOfCoverPerAlbum, radioRandomFill, radioSearchRatio, radioSourceLibraryDir, radioCoverNoiseStrength.
    • Source acquisition — per cover slot: a user-seeded URL pool first, then online search vs a NAS library by configured ratio (each falling back to the other), with cover-of-cover reusing the station's own earlier covers. NAS files are transcoded to mp3 via ffmpeg with hash-keyed caching.
    • Sources UI — new /autoplayer/sources page to seed source URLs (with optional genre tag), watch queue status (pending / used / failed), see NAS directory status, and tune the album mix and acquisition ratios.
    • Reimagine page — re-render an existing song or an external URL in a new style via ACE cover.

    Hardening

    • yt-dlp downloader bounded to known media extractors (youtube / soundcloud / bandcamp), closing the arbitrary-URL SSRF/redirect vector; public-IP DNS pre-check kept as defense in depth; download caching by target hash with zero-byte/sidecar validation; URL credential redaction and message-only error logging.
    • Inventory top-ups serialized to prevent over-creating albums under overlapping triggers.
    • Radio WebSocket listeners reference-counted per id so multiple tabs sharing a listener don't drop playback when one closes; listeners re-register on socket reconnect.
    • radio.album_ready only emitted on a real status transition (prevents an unbounded album-ready/top-up event loop); finished songs cleared from the station when the schedule empties so new tracks auto-resume.
    • Per-album count settings clamped to the album-size bound.

    Notes

    • > [!IMPORTANT] New album generation reads new radio* settings; defaults match prior behavior, so no action is required. Cover rendering is slower than text2music (ACE also encodes the reference), and the first cover of a new tensor shape pays a one-time MIOpen tuning cost on AMD GPUs.
    • New: songs.source_url column and cover_sources table (auto-migrated on startup). Optional NAS covers require ffmpeg and a configured radioSourceLibraryDir.

    Powered by human calories and mass GPU cycles.

    Downloads