Skip to content

Módulo vivo en «Después», cola solo sin objetivo, carpeta de salida y limpieza - #4

Merged
Dathinel merged 2 commits into
mainfrom
claude/quirky-hawking-c8tin7
Nov 1, 2026
Merged

Dathinel merged 2 commits into
mainfrom
claude/quirky-hawking-c8tin7

Conversation

@Dathinel

@Dathinel Dathinel commented Nov 1, 2026 •

Copy link
Copy Markdown
Owner

Qué cambia

  1. El módulo de visión queda vivo mientras «Después» esté pulsado. ModuleSession<T> en Rastrear.Core mantiene un módulo entre llamadas (de una en una; si una falla o el proceso muere, se cierra y la siguiente arranca otro). VisionService.CreateSession y MatteFrameAsync(session, …): la ventana arranca Rodaje.Module.Vision.exe con la primera máscara y no lo reinicia al cambiar de herramienta ni de parámetro; se cierra al soltar el botón, al ejecutar, al abrir otro video y al cerrar la ventana (tope de 3 s).
  2. La cola solo admite herramientas sin objetivo. BatchQueue.SupportsTool (todas menos «Seguir»), Enqueue(paths, toolIndex) (con «Seguir» entra solo el primero) y TrimToTool (al cambiar a «Seguir» queda solo el video cargado). La ventana lo avisa en los dos casos.
  3. Preferencia «Carpeta de salida» (carpetaSalida en preferencias.json): «Elegir…» y «Junto al video» en el panel derecho; OutputNaming.OutputPathFor(…, outputFolder) con el mismo esquema de nombres y sin pisar. La carpeta se crea al ejecutar; si se fue, el error queda en ese archivo de la cola.
  4. Menores: ChildProcessRegistry sube a Rastrear.Core; ToolParameters normaliza dispositivo, calidad, objetivo, aspecto y modo en un solo sitio (preferencias y módulo); VisionService.StartModuleAsync sustituye las cuatro copias de ModuleProcess.StartAsync; Exportar copia el resultado y deja _lastOutputFile donde estaba (y no falla al elegir el propio archivo); AtomicFile escribe preferencias.json y ventana.json; TemporaryFolderTest como fixture común; la prueba de cancelar arranca un solo proceso sin hijos (ping.exe directo, sin cmd.exe) y lo ajeno es una entrada falsa.

Pruebas

  • Nuevas: sesión del módulo (vivo entre cuadros, cancelar no lo cierra, fallo y muerte lo rearrancan, llamadas de una en una, cerrar y desechar), comprobación del cuadro sin tocar el módulo, cola con «Seguir» (Enqueue, TrimToTool, textos), carpeta de salida (normalización, persistencia, nombres) y escritura atómica compartida.
  • CI en Windows en verde: la solución entera (Rastrear.App incluida) compila con -warnaserror y las 54 pruebas pasan en 3 s, así que ColaTests queda por debajo de los 2 s. El desarrollo se hizo en Linux, donde corren 47 de las 54 (las de ffmpeg.exe y el módulo Echo necesitan Windows).
  • Lo que juzga Daniel: bloque 10 de docs/pruebas-a-mano.md.

origin/main unido (el resultado del repaso con ratón del 1-nov entró en main a la vez y se conservan los dos textos en pruebas-a-mano.md). No unir: lo revisa Daniel.

🤖 Generated with Claude Code

https://claude.ai/code/session_01CfAg5yzGEiqiahLBhrJ9ZW

… limpieza

- `ModuleSession<T>` en `Rastrear.Core`: un módulo vivo entre llamadas (de una
  en una; se cierra si una falla o el proceso muere y la siguiente arranca
  otro). `VisionService.CreateSession` y `MatteFrameAsync(session, …)`: la
  ventana arranca el módulo de visión con la primera máscara de «Después» y lo
  deja vivo, cambie lo que cambie, hasta soltar el botón, ejecutar, abrir otro
  video o cerrar (con tope de 3 s).
- La cola solo admite herramientas sin objetivo: `BatchQueue.SupportsTool`
  (todas menos «Seguir»), `Enqueue(paths, toolIndex)` (con «Seguir» entra solo
  el primero) y `TrimToTool` (al cambiar a «Seguir» queda el video cargado); la
  ventana lo avisa en cada caso.
- Preferencia «Carpeta de salida» (`carpetaSalida`, `UserPreferences.OutputFolder`,
  `OutputNaming.OutputPathFor(…, outputFolder)`): «Elegir…» y «Junto al video»
  en el panel; la carpeta se crea al ejecutar y si se fue el error queda en ese
  archivo de la cola.
- Menores: `ChildProcessRegistry` sube a `Rastrear.Core`; `ToolParameters`
  normaliza dispositivo, calidad, objetivo, aspecto y modo para preferencias y
  módulo; `VisionService.StartModuleAsync` es el único arranque del módulo;
  Exportar copia el resultado sin cambiar `_lastOutputFile` (y no falla al
  elegir el propio archivo); `AtomicFile` escribe `preferencias.json` y
  `ventana.json`; `TemporaryFolderTest` en las pruebas; la prueba de cancelar
  arranca un solo proceso sin hijos.
- Pruebas: sesión del módulo (vivo entre cuadros, cancelar no lo cierra, fallo
  y muerte lo rearrancan, llamadas de una en una, cerrar y desechar), cola con
  «Seguir», carpeta de salida y escritura atómica. 54 pruebas; 47 corren en
  Linux, las de ffmpeg y Echo necesitan Windows. `Rastrear.App` no se pudo
  compilar aquí (WinUI): revisado con el compilador solo en sintaxis.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CfAg5yzGEiqiahLBhrJ9ZW
…-c8tin7

# Conflicts:
#	docs/pruebas-a-mano.md
@Dathinel
Dathinel merged commit 219d71c into main Nov 1, 2026
1 check passed
@Dathinel
Dathinel deleted the claude/quirky-hawking-c8tin7 branch November 1, 2026 13:13
Dathinel added a commit that referenced this pull request Nov 1, 2026
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants