From 192b474c60fd93b29ddb926b2611972e7d8d311c Mon Sep 17 00:00:00 2001 From: Deivid Soto Date: Sun, 31 May 2026 10:51:58 +0200 Subject: [PATCH] docs(roadmap): hueco #3 phase 3a closed (direct-play) --- Docs/plans/unarr-agent-roadmap.md | 37 ++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/Docs/plans/unarr-agent-roadmap.md b/Docs/plans/unarr-agent-roadmap.md index 7b9fcbd..16cb251 100644 --- a/Docs/plans/unarr-agent-roadmap.md +++ b/Docs/plans/unarr-agent-roadmap.md @@ -54,7 +54,7 @@ El path HLS **siempre re-encoda** (incluso mp4 h264/aac ya compatible). `DecideA (passthrough/remux) existe pero muerto en el path browser. Sin negociación por capacidades del dispositivo. Sin ABR multi-bitrate. Diseño por fases (3a direct-play / 3b remux-HLS / 3c capability-negotiation / 3d ABR) -en el estado abajo. Fase 3a en implementación. +en el estado abajo. **Fase 3a CERRADA** (CLI c8d7c4b + web 636fbe59); 3b/3c/3d pendientes. ### Huecos medios ⬜ - Sin gestión de espacio en disco (`Statfs`) → disco lleno revienta a mitad. @@ -285,3 +285,38 @@ playMethod), `src/components/stream/HlsStreamPlayer.tsx` (attach nativo). **Empezar por 3a** (valor inmediato — el caso primario de unarr es la biblioteca local escaneada; mp4-h264-aac es común en web-dl/YIFY). 3b/3c/3d como iteraciones. + +**Hecho (Fase 3a CERRADA 2026-05-31):** +- CLI (`feat/unarr-agent` c8d7c4b): `StreamSession.PlayMethod`; `OnStreamSession` + ramifica `direct` → `SetFile(NewDiskFileProvider)` + `MarkSessionReady` (sin + ffmpeg, antes del check de ffmpeg para funcionar con transcode off). `go build` + + `vet` + tests verdes. +- WEB (`feat/unarr-brand` 636fbe59): `decidePlayMethod()` (espeja la rama + passthrough de Go, conservador) + test unitario; gate `supportsDirectPlay` + (`DIRECT_PLAY_MIN_VERSION = 0.9.20`); decisión en la ruta de sesión (solo + library item + sin downscale + `audioIndex == -1`); `buildStreamUrls` mintea + token scope `stream` (paridad Go); `streaming_session.play_method` (migración + 0135) emitido al agente vía `getPendingStreamSessions`; player ramifica a + `