Las cuatro funciones que eligió Munka tras la 3.2.0:
- Nueva pieza: crea «NN- Título» en su mes con el número que toca y sus subcarpetas; si la
pieza ya existe, lo dice. Se deshace mientras siga vacía.
- Bandeja de entrada: lo que se deje en _Entrada se reparte por mes, día de rodaje y cámara.
«Traer material» copia una tarjeta comprobando cada archivo (se vuelve a leer y se compara
la huella), conserva la fecha del rodaje y no toca el origen.
- Versiones del mismo clip: dos clips de cámara que se llaman igual, duran lo mismo y tienen
la misma forma son el mismo clip; se queda el de más imagen y el otro va a Duplicados.
- Orden automático, apagado de fábrica: una tarea del Programador de tareas de Windows lanza
«automatico», que lee todas las carpetas y hace solo lo seguro. No toca una carpeta que no
se pueda leer entera ni una cuyo plan mueva más de 3.000 archivos, y si el programa ya está
abierto se lo pide a él. Desinstalar quita la tarea.
De paso: una ruta que empieza por guion bajo ya no pierde el guion al ir a la papelera.
Pruebas: prueba_orden.py 24, probar.py 19, prueba_funcional.py 29, prueba_ventana.py 18
desde el código y 17 con el paquete.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- ventana.py: la ventana es un marco Win32 propio con WebView2 dentro,
manejado por COM con ctypes. Fuera pywebview, pythonnet y clr_loader y
sus binarios sin firmar. Identidad en la barra de tareas, una sola copia
abierta por carpeta de datos, selector de carpetas de Windows, rutas
completas al soltar, avance en la barra de tareas, memoria de posición,
aviso al cerrar con trabajo en marcha, y nada de navegador (menú, F5,
zoom, permisos). Si el motor se cae, se monta de nuevo solo.
- arranque.py y empaquetar.py: el paquete ya no lleva binario propio.
OrganizadorLabstream.exe es pythonw.exe (firmado por la PSF) con otro
nombre y arranca el programa desde sitecustomize; abre con Smart App
Control encendido. Fuera PyInstaller. Al empaquetar se comprueba la firma
de cada binario con Windows y se arranca el motor del paquete.
- instalar.py: accesos directos en Inicio y Escritorio con la identidad de
la ventana, y la línea en Configuración › Aplicaciones. Se ofrece una vez,
la primera que se abre un paquete en un equipo.
- Dos copias sobre los mismos datos ya no se pisan: la segunda trae la
ventana al frente (antes abría el navegador y daba por huérfanas las
conversiones en marcha de la primera). Si el puerto 8765 está ocupado
por otro programa, se toma uno libre.
- Por consola, el paquete ya no consulta si hay versión nueva con las
actualizaciones automáticas apagadas.
- Pruebas: probar.py 17, prueba_funcional.py 26 de 26 y prueba_ventana.py
(nueva), que abre la ventana de verdad: 17 comprobaciones desde el código
y 8 arrancando el paquete por su .exe.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
El programa no sale a la red al arrancar salvo que alguien encienda el
interruptor en Ajustes. Hasta la 2.6.0 el actualizador escribía
«auto: true» él solo en config.json sin que nadie lo eligiera: al arrancar
se apaga; lo que se encienda desde Ajustes queda marcado como elegido y se
respeta.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- firma.py: RSA-2048 PKCS#1 v1.5 SHA-256 sin dependencias; empaquetar.py firma
el manifiesto y actualizador.py exige la firma (CLAVE_PUBLICA incrustada).
- Barra de tareas: tiempo restante estimado a partir del avance.
- Corregido: APLICANDO nunca llegaba al total y «Moviendo» quedaba fijo,
bloqueando desconectar la carpeta.
- probar.py: reglas, firma y recorrido completo sobre una copia temporal.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Primer commit del proyecto. Incluye el rediseño 1.6 (riel de pasos en la barra
lateral), el actualizador con reintentos y respaldo, publicar.sh y la nueva
opción de desconectar carpetas (1.6.1).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>