Adiciona auto-reload do Chromium via CDP por stream
---
- Adicionado scripts/autoreload.sh: loop com reload via WebSocket CDP raw (net + frames manuais), sem dependências externas; trap de SIGTERM encerra limpo sem aguardar o sleep;
- Adicionado [program:autoreload-{{STREAM_ID}}] em stream.template.conf com autostart=false e autorestart=unexpected;
- Adicionados campos AUTO_RELOAD e AUTO_RELOAD_INTERVAL em reprovision.mjs e supervisor.ts (provisionStream);
- Adicionados campos autoReload e autoReloadInterval em src/types/stream.ts;
- Adicionado autoreload nas listas de startStream e stopStream em supervisor.ts; adicionada função applyAutoReload;
- Adicionado endpoint dedicado POST /api/streams/[id]/autoreload: salva, re-provisiona e aplica sem reiniciar o stream inteiro;
- Adicionado toggle + input de intervalo (minutos) no menu de 3 pontos do card em StreamCard.tsx; toggle pill corrigido com posicionamento left absoluto;
- Atualizado README e CHANGELOG com a nova feature;
---
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
import { NextResponse } from "next/server"
|
||||
import { getStream, saveStream } from "@/lib/db"
|
||||
import { provisionStream, applyAutoReload } from "@/lib/supervisor"
|
||||
|
||||
type Ctx = { params: Promise<{ id: string }> }
|
||||
|
||||
export async function POST(req: Request, { params }: Ctx) {
|
||||
const { id } = await params
|
||||
const stream = getStream(id)
|
||||
if (!stream) return NextResponse.json({ error: "not found" }, { status: 404 })
|
||||
|
||||
const { enabled, interval } = await req.json() as { enabled: boolean; interval?: number }
|
||||
const updated = {
|
||||
...stream,
|
||||
autoReload: enabled,
|
||||
...(interval !== undefined ? { autoReloadInterval: interval } : {}),
|
||||
updatedAt: new Date().toISOString(),
|
||||
}
|
||||
saveStream(updated)
|
||||
provisionStream(updated)
|
||||
applyAutoReload(id)
|
||||
|
||||
return NextResponse.json(updated)
|
||||
}
|
||||
Reference in New Issue
Block a user