Fix generation JSON/Lyria errors, add Winamp player, and ship Echoes of the Sahel.

Harden DeepSeek JSON parsing with retry, pre-sanitize Lyria prompts, and instrumental fallback. Add pure HTML Winamp skin at /winamp with playlist export support.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-07 16:38:52 +01:00
parent ec4ca4b7c0
commit 6e92841352
15 changed files with 782 additions and 38 deletions
+8
View File
@@ -16,6 +16,7 @@ def client(tmp_path: Path, monkeypatch):
gateway = tmp_path / "gateway"
gateway.mkdir()
(gateway / "index.html").write_text("<html></html>", encoding="utf-8")
(gateway / "winamp.html").write_text("<html><title>Winamp</title></html>", encoding="utf-8")
(tmp_path / "vocal_cues.json").write_text(
json.dumps(
{
@@ -88,6 +89,13 @@ def test_root_lists_lyria_endpoint(client: TestClient):
r = client.get("/")
assert r.status_code == 200
assert r.json()["endpoints"]["lyria"] == "/api/lyria"
assert r.json()["endpoints"]["winamp"] == "/winamp"
def test_winamp_page(client: TestClient):
r = client.get("/winamp")
assert r.status_code == 200
assert "Winamp" in r.text
def test_lyria_capabilities_without_api_key(client: TestClient):