Ctrl K
ComunidadGuías…

CHANGELOG.md

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# Changelog

## Unreleased

- Lyrics writing: a wand on the lyrics field writes original lyrics from the song description, sized to the duration, with the model's section tags; undo restores the previous lyrics. Uses the prompt-enhancement LLM; hidden for instrumentals, disabled in the demo.

## v0.1.2 — 2026-09-26

### Fixes
- Docker image: include the server workspace's own `node_modules`, so the image starts again (v0.1.1 exited with `ERR_MODULE_NOT_FOUND` for `undici`).

## v0.1.1 — 2026-09-26

### Create
- Prompt enhancement: a magic-wand button on the prompt field rewrites the description into a structured Music 3 caption (Global Metadata / Vocal Details / Arrangement) with MiniMax's `music-caption-rewriter` skill, run on an OpenAI-compatible LLM with tool calling (Settings, or `LLM_API` / `LLM_API_KEY` / `LLM_MODEL`). Skill files are fetched on first use and cached in `data/skill-cache/`; undo restores the original text. Disabled in the demo.

### Fixes
- Renders longer than 5 minutes no longer fail with "upstream unreachable: fetch failed": the HTTP client's 300 s header/body timeouts are off for `/v1/audio/speech` (optional `UPSTREAM_TIMEOUT_MS`), and a timeout is reported as "upstream timed out after Ns".
- JSON stores recover from a failed write instead of blocking later writes, and render-progress updates no longer write snapshots to disk.
- Settings updates are all-or-nothing: a rejected field no longer leaves earlier fields half-applied.

### Maintenance
- Dependencies updated (vitest 5); fixes the moderate `qs` advisory.

## v0.1.0 — 2026-08-19

First release. Live demo: https://demo-minimax-music.adambh.dev

### Create & library
- Suno-style create panel: title (random name if empty), style description, lyrics editor with section tag chips, instrumental toggle, duration 5–360 s, 1–4 takes per submit (`seed + i`), advanced seed and format (WAV; FLAC/MP3 shown disabled).
- Templates: built-in default plus saved templates, stored server-side.
- Track feed with cover, take number, duration, seed, render time ("took 5m5s") and time since finish; search over title / style / lyrics in Library.
- Track detail side panel (click a card): large cover with play, status/progress, actions, full style and lyrics, details grid.
- Sticky player with client-side waveform, seek, prev/next, keyboard play/pause.

### Rendering
- Own render queue: one track at a time against the standard blocking `POST /v1/audio/speech`; queued / rendering / done, cancel, retry, estimated progress and ETA. Queued tracks survive a UI-server restart.
- Optional live progress + play-while-rendering when the server advertises `capabilities: ["stream"]` on `/health` (SSE progress and PCM windows; growing WAV served with a live-patched header and Range support). Stock `sgl-omni` keeps the estimated bar.
- "Loading model…" state when `/health` answers 503.

### Server & ops
- Express 5 + TypeScript UI server; JSON stores for library, templates and settings; API key never returned to the browser.
- Settings page: inference server URL + optional API key with "Test connection"; `MUSIC_API` / `MUSIC_API_KEY` env override and lock the fields; compatibility mode switch (treat any server as stock `sgl-omni`).
- Bundled single-GPU inference server (`inference/server.py`) exposing the same API as `sgl-omni serve`, plus the streaming extension.
- Read-only demo mode (`DEMO=1`, `Dockerfile.demo`): showcase library, simulated per-visitor renders, writes refused.
- Docker image (`ghcr.io/adambenhassen/minimax-music-ui`, amd64 + arm64), docker-compose, CI (tests, typecheck, build) and release workflow.