mirror of
https://github.com/JezzWTF/vibepod.git
synced 2026-06-01 15:22:14 +00:00
13085166fb
- Save every completed generation to SQLite (generation_store.py) with WAV and waveform peaks written to data/generations/<id>/ - Deferred DB write until success — cancelled/errored generations never touch the DB and never appear in the library - Fixed cancel+regenerate IndexError: _reset_scheduler_caches() now directly zeros scheduler._step_index and running state in addition to clearing VibePod cache dicts; same explicit resets added in the fresh path of prepare_noise_scheduler as belt-and-suspenders - Added /library page with GenerationCard, WaveformPreview, waveform fetch, play/pause, download, delete, pagination, empty + error states - Added generation API routes (list, single, audio stream, waveform, delete) proxying to Python server - Added Library nav link to Header with active state - Persist script/speaker/CFG to localStorage so generate page state survives navigation - Updated build plan: Phase 0+1 ticked off, better-sqlite3 moved to Phase 2, architectural note on Python owning all persistence
28 lines
1.2 KiB
TypeScript
28 lines
1.2 KiB
TypeScript
import { NextRequest, NextResponse } from "next/server";
|
|
|
|
const pythonUrl = () => process.env.VIBEVOICE_SERVER_URL ?? "http://localhost:8000";
|
|
|
|
export async function GET(_: NextRequest, { params }: { params: Promise<{ id: string }> }) {
|
|
const { id } = await params;
|
|
try {
|
|
const res = await fetch(`${pythonUrl()}/generations/${id}`, { cache: "no-store" });
|
|
if (!res.ok) return NextResponse.json({ error: "Not found" }, { status: res.status });
|
|
return NextResponse.json(await res.json());
|
|
} catch {
|
|
return NextResponse.json({ error: "Failed to reach server" }, { status: 502 });
|
|
}
|
|
}
|
|
|
|
export async function DELETE(_: NextRequest, { params }: { params: Promise<{ id: string }> }) {
|
|
const { id } = await params;
|
|
try {
|
|
const res = await fetch(`${pythonUrl()}/generations/${id}`, { method: "DELETE" });
|
|
if (res.status === 404)
|
|
return NextResponse.json({ error: "Not found" }, { status: 404 });
|
|
if (!res.ok) return NextResponse.json({ error: "Upstream error" }, { status: res.status });
|
|
return new NextResponse(null, { status: 204 });
|
|
} catch {
|
|
return NextResponse.json({ error: "Failed to reach server" }, { status: 502 });
|
|
}
|
|
}
|