Repository navigation
Calidad de vida: preferencias, cola de videos, vista previa, abrir carpeta y atajos - #1
Merged
Merged
Conversation
…p.Windows en LICENCIAS.md docs/legal.md decía que faltaba el enlace a Rodaje en la interfaz (término 1 de su licencia) cuando el diálogo «Acerca de» lo lleva desde la 1.0.0, como ya marcaba la lista de comprobación. LICENCIAS.md no listaba TerraFX.Interop.Windows (MIT), que se compila dentro de Rastrear.App.exe. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CfAg5yC1exGqq77EU7AJWz
UserPreferences (Rastrear.Core/Ui) guarda en preferencias.json la carpeta del último video abierto, la herramienta elegida y los parámetros de las cinco; al cargar recorta lo que no cabe en los controles y un archivo roto vuelve a los valores por defecto. La ventana los aplica al arrancar, los guarda al ejecutar y al cerrar, y los diálogos de abrir y guardar se abren en la última carpeta (IFileDialog::SetFolder). Dos pruebas. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CfAg5yC1exGqq77EU7AJWz
…ancelar sin dejar procesos vivos BatchQueue (Rastrear.Core/Ui) lleva la cola: estado, progreso por archivo y global, «Archivo 2 de 5 · 40 % · Siguiendo», resumen al acabar y reanudar o repetir. OutputNaming deja el resultado junto al video de entrada (clip-fondo.webm, clip-seguimiento.csv…) sin pisar nada. ChildProcessRegistry apunta ffmpeg, ffprobe y el módulo de visión al arrancarlos; TaskExecutionController.CancelAsync, además de cancelar el token, los mata y espera a que salgan, y deja en LeftAliveAfterCancel lo que no salió. La ventana acepta soltar en cualquier parte, filtra lo que no es video, muestra la cola con su estado y ejecuta la herramienta sobre cada uno. Cinco pruebas, una de ellas con un proceso real que cancelar mata. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CfAg5yC1exGqq77EU7AJWz
FramePreview (Rastrear.Core/Ui) recorta el primer cuadro con el rectángulo centrado de OverlayGeometry para el reencuadre y compone la máscara del fondo sobre un tablero de ajedrez o en grises; VisionService.MatteFrameAsync pide al módulo la máscara de un solo cuadro. El botón «Después» del reproductor alterna con el cuadro original y se rehace al cambiar el aspecto, el modo, la calidad o el dispositivo, cancelando la petición anterior. Seguir, detectar y estabilizar no tienen vista previa y el botón lo explica. Dos pruebas sobre píxeles sintéticos. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CfAg5yC1exGqq77EU7AJWz
ResultActions (Rastrear.Core/Ui) da los argumentos de explorer.exe con el archivo seleccionado (o la carpeta si el archivo ya no está) y el texto para el portapapeles. Dos botones bajo «Exportar», activos cuando hay resultado; exportar un video deja la copia como resultado. Una prueba con el lanzador simulado. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CfAg5yC1exGqq77EU7AJWz
…n ella El registro era global y la prueba de cancelar mataba el ffmpeg de otra prueba que corría en paralelo (CI roja en StabilizeTests). Ahora BeginExecution abre un ámbito que viaja con el flujo asíncrono (AsyncLocal) y CancelAsync mata solo lo apuntado en ese ámbito; lo arrancado fuera (el reproductor, otras pruebas) no se toca. La prueba lo comprueba con un proceso ajeno que sigue vivo. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CfAg5yC1exGqq77EU7AJWz
…si falta el módulo de visión KeyboardShortcuts (Rastrear.Core/Ui) decide cuándo vale cada atajo (abrir no mientras corre, empezar con video y sin nada corriendo, cancelar solo corriendo); la ventana los declara como KeyboardAccelerator en la raíz. FindModule lanza VisionModuleMissingException (sigue siendo RastrearUserException con las rutas probadas para la Cli) y la ventana, antes de ejecutar quitar fondo, detectar o reencuadrar, comprueba el módulo y avisa en claro, con un botón «Abrir el Lanzador» si LauncherLocator lo encuentra (RASTREAR_LANZADOR o %LOCALAPPDATA%\Dathinel\Lanzador). Dos pruebas. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CfAg5yC1exGqq77EU7AJWz
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CfAg5yC1exGqq77EU7AJWz
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Funciones de calidad de vida para la ventana, cada una en su commit, con la lógica en
Rastrear.Coreprobada sin UI (35 pruebas en total) y una línea en CHANGELOG «Sin publicar». CI en verde.UserPreferences,preferencias.json); los diálogos se abren en la última carpeta.BatchQueue); el resultado queda junto al video de entrada (OutputNaming). «Cancelar» mata ffmpeg y el módulo de visión que sigan vivos (ChildProcessRegistrypor ejecución +TaskExecutionController.CancelAsync) y avisa si alguno no salió.FramePreview,VisionService.MatteFrameAsync). Seguir, detectar y estabilizar no la tienen: dependen del video entero.ResultActions).Ctrl+O,Ctrl+Enter,Esc(KeyboardShortcuts) y aviso claro si falta el módulo de visión con botón «Abrir el Lanzador» si está en el PC (VisionModuleMissingException,LauncherLocator). La ruta del Lanzador (RASTREAR_LANZADOR,%LOCALAPPDATA%\Dathinel\Lanzador) es una suposición: si se instala en otro sitio, añadirla aLauncherLocator.Candidates.Aparte, un commit corrige
docs/legal.md(la atribución a Rodaje en la interfaz ya estaba desde la 1.0.0) y añade TerraFX.Interop.Windows aLICENCIAS.md. Lo que juzga Daniel a ojo: bloque 8 dedocs/pruebas-a-mano.md.No unir hasta que Daniel lo revise.
🤖 Generated with Claude Code
https://claude.ai/code/session_01CfAg5yC1exGqq77EU7AJWz