49 Commits

Autor SHA1 Mensaje Fecha
0720abcf11 Licencia MIT de Labstream (LICENSE y LICENCIA-ES.md) 2026-10-14 22:06:03 -05:00
Labstream
07f7428869 Manifiesto de la 3.9.0 publicada
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 17:59:20 -05:00
Labstream
58197ffd67 Cerrar lo para todo, continuar sigue por donde iba, convertir antes de ordenar, y lo grande a la vista
Munka: «que al cerrar cierre todos los procesos… que al continuar la cola siga por donde iba y vuelva a generar los
videos que hagan falta… que identifique bien el material… y convertir antes de mover». Cerrar con trabajo avisa y
lo para todo (cola, lectura, respaldo, traer), cierra lo que quede con lo que lanzó y borra lo que quedó a medias.
Lo cortado vuelve a esperar en su sitio (no «cancelado») y al continuar se hace entero; también vuelven los fallos
por un corte y los convertidos que ya no están. Actualizar con la cola en marcha la detiene y sigue sola al volver.
El Convertidor enseña lo grande de la carpeta y qué pasa con cada parte (exportados sin incluir, con un botón).
Convertir va antes de ordenar en los pasos y en Inicio; lo que se está convirtiendo no se mueve, y una carpeta con
algo abierto ya no se copia entera.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 17:55:10 -05:00
Labstream
00b84b4aa7 3.9.0: la cola más rápida: la tarjeta descomprime, dos clips a la vez, y las conversiones sueltas se cierran
Medido en la RTX 5080 del estudio con la cola de Vía Sumapaz (1.920 clips, unas 26 horas): el codificador iba al
46-74 % y el descompresor al 0 %. Con NVDEC un H.264 4K pasa de 0,54× a 0,86× tiempo real; dos a la vez salen a
1,29× entre los dos. Además: al arrancar se cierran las conversiones que quedaron sin su programa (una de las
10:04 seguía colgada a las 17:00), «Detener» cierra el ffmpeg del lector de BRAW, la cola se pide entera por
carpeta (antes, los 500 últimos de todas), y lo encolado que ya no compensa con la regla del 30 % no se convierte.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 17:32:01 -05:00
Labstream
c91473aea4 Manifiesto de la 3.8.1 publicada
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 17:12:52 -05:00
Labstream
8ef3af6ad7 Inventario fiel al disco: mayúsculas de las carpetas, mover durante el escaneo, y no convertir dos veces
Cotejado archivo por archivo cada disco con el inventario: el escaneo estaba completo, pero el inventario
apuntaba la carpeta con las mayúsculas del plan (1.039 fotos en Vía Sumapaz, tres carpetas donde hay una), un
proxy apartado en pleno escaneo quedó dos veces, y los 11 verificados de Línea Gene se habían vuelto a encolar
con la 3.7. Ahora la carpeta se escribe como en el disco y se recuenta donde quedó al final, el escaneo vuelve a
recorrer si la app movió algo mientras, y al reenganchar se quita la conversión que sobra.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:48:55 -05:00
Labstream
eafd1984f3 3.8.1: se convierte todo lo que ahorre al menos un 30 %, con la estimación medida por códec de origen
Munka: «si un archivo se puede optimizar así sea un 30 % se convierta». La regla deja de mirar si el clip pasa de
1 o 2 veces la tasa objetivo y mira el ahorro estimado (ajustable, 30 % de entrada). La estimación sale de las 286
conversiones hechas: H.264 y AV1 de cámara quedan en una fracción, H.265 casi igual. Entran los 11 AV1 de Línea
Gene; dejan de ofrecerse los H.265 que no adelgazan y lo apartado en Duplicados.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:12:17 -05:00
Labstream
7eb5899f04 Manifiesto de la 3.8.0 publicada
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 09:37:52 -05:00
Labstream
c91152a3dd La cola de conversión sigue a los clips cuando se mueven, y «Comparar» en vertical
Los trabajos de la cola apuntaban al clip por su ruta y nadie los avisaba al moverlo: en Línea Gene el plan
llevó «Material Sony» a 00_Grabacion y 138 conversiones fallaron, los 11 verificados no se podían reemplazar y
volver a escanear no los reenganchaba. Ahora se mueven con el clip (plan, Deshacer, renombrar), el convertido
acompaña a su original, al escanear se reenganchan por nombre y peso, antes de convertir se comprueba que el
clip esté, y reemplazar junta antes el convertido con su original. El comparador toma la forma del clip y la
lupa ya no estira el recorte.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 09:33:12 -05:00
Labstream
e74b8f7ece 3.8.0: «database is locked» y los 753 que no se movieron, arreglados; fechas raras, escaneo profundo, buscar, otros discos, banco por fecha y compilar en el estudio
- Tras «Aplicar» en una carpeta grande el inventario se ponía al día con la base tomada más de diez minutos y
  «Buscar clips» se rendía con «database is locked». Ahora las preguntas al disco van antes y en paralelo y
  lo de dentro de cada carpeta se busca por índice: 1,3 s para 2.493 movimientos, mismas filas de archivos
  que antes y 183 carpetas que antes se perdían. La lectura de clips reintenta si la base está ocupada.
- Las fotos de «Alta» y «Baja» chocaban al juntarse en una carpeta: las subcarpetas con sentido se
  conservan, el plan avisa antes de dos archivos iguales en una fila, y un número entre dos palabras
  («Fiesta 6 Años») ya no se quita.
- Los fallos de «Aplicar» se agrupan por motivo y dicen qué hacer; el banco de material se explica en llano.
- Fechas raras (el reloj de una cámara), escaneo profundo, buscar en todos los clientes, traer lo que el
  cliente tiene en otros discos, el banco por temas o por fecha, y «Calcular de nuevo» más rápido.
- Mover reintenta un momento si el archivo está abierto un instante (lectura de clips, antivirus).
- .github/workflows/publicar.yml para compilar y publicar desde un PC del estudio; las pruebas devuelven
  error si algo falla.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 08:27:27 -05:00
Labstream
41155cd834 Inicio como lista con ✓: lo hecho se queda en su sitio, con cuándo y qué
Al terminar algo (elegir el tipo de trabajo, apartar stock, juntar repetidos, la bandeja, convertir) la ficha
desaparecía sin decir nada y no se sabía por dónde se iba. Ahora cada paso hecho se queda con su ✓ y «Hecho hoy
a las 07:41: …», arriba se cuentan los hechos, y lo que acaba de pasar a hecho se ilumina. Aplicar el plan
apunta qué pasos entraron; elegir el tipo y nombrar una carpeta quedan en la bitácora. «Basura y proxies» deja
de pedirse cuando lo que queda es lo de «No tocar» o lo que va sin marcar.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 07:43:50 -05:00
Labstream
5515ef7dac Manifiesto de la 3.7.0 publicada
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 07:32:39 -05:00
Labstream
cea36ea0c5 3.7.0: auditoría de Vía Sumapaz: «Calcular» ya no se queda gris, banco de material por temas, proxies sin original, y «Qué pesa» por dentro
- El botón «Calcular» (y «Reanudar» la cola, y «Volver a pintar») quedaba deshabilitado para siempre tras
  la primera vez: al cambiar de carpeta «Qué va a pasar» no calculaba nada.
- «material» suelto ya no ignora una carpeta; «No tocar» es un banco de material: los temas se quedan y,
  dentro, las grabaciones van por fecha y cámara, todo sin marcar.
- «Hacer de una vez» y la pasada de la noche ya no mueven basura ni proxies sin marcar; un proxy sin su
  original va sin marcar.
- «Qué pesa» entra nivel a nivel con el detalle de cada carpeta; repetidos, plan e Inicio mucho más rápidos;
  aviso cuando el tipo de trabajo de la carpeta no es el del cliente.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 06:55:38 -05:00
Labstream
0b15a6d788 Manifiesto de la 3.6.0 publicada
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 06:21:03 -05:00
Labstream
93b8f4843d 3.6.0: grabaciones siempre por día y por fuente, grabadoras en su carpeta, y «Organizar carpetas»
Las grabaciones van siempre a su día de rodaje y dentro a una carpeta por fuente; el DJI Mic, la Tascam y
las Zoom se reconocen por su nombre y van a DJI_MIC, TASCAM y ZOOM en vez de caer juntas en AUDIO. El plan
repasa lo ya ordenado sin carpeta de día o con la grabadora en AUDIO. «Mapa» pasa a «Organizar carpetas»:
el árbol salía en fila por una regla CSS del ejemplo de tipo de trabajo; ahora va en vertical a toda la
altura y a la derecha, fijos, «Qué va en esta carpeta» y «¿Dónde va a parar este archivo?».

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 06:11:34 -05:00
Labstream
91618474a0 Inicio dice lo que ya se hizo: el plan se olvida al mover y se vuelve a pensar solo
Auditoría de «mover y reorganizar». El motor movía bien, pero el plan en memoria solo se olvidaba al aplicar
desde «Qué va a pasar»: tras «Hacer las N de una vez», apartar stock, juntar repetidos, reemplazar o deshacer,
Inicio seguía ofreciendo lo ya hecho («5 cambios · Ver y aplicar», «Plan listo: 7 de 9») o, tras deshacer,
daba por hecho lo que volvía a estar en desorden. Ahora cualquier movimiento olvida el plan y lo vuelve a
pensar en segundo plano; un plan sin nada marcado es «hecho», cada ficha dice cuándo se hizo y cuántos
movimientos, y el diagnóstico no cuenta como basura lo que ya está en _Para borrar.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 05:15:22 -05:00
Labstream
0c8caa0116 Manifiesto de la 3.5.0 publicada
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 05:15:22 -05:00
Labstream
ad6efef792 Convertir: horario y pausa si edito, aligerar solo lo viejo, aviso de Windows, resumen de la tanda con CSV, y marcar con criterio
Las tres propuestas que faltaban del lienzo:
- La cola respeta un horario (espera entre clip y clip) y espera si Resolve, Premiere o After Effects
  están usando la tarjeta (nvidia-smi pmon). La pasada automática puede meter en cola lo de más de N
  meses hasta un tope de GB. Al acabar, un aviso de Windows con la identidad del programa.
- Cada tanda deja un resumen en la bitácora (op tanda): clips, pesos, tiempo, nota, fallos, por
  carpeta. Sale en Convertir con «Exportar CSV» y «Abrir la carpeta», y en Historial cuenta clips.
- Barra de marcar con criterio (tamaño, cámara, mes, antigüedad) y buscador.

Pruebas: probar 19, prueba_orden 33, prueba_funcional 32 (nueva: resumen de la tanda), prueba_ventana 18.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-12 14:29:49 -05:00
Labstream
d38c51bd73 Convertir: lista por carpetas con cuánto falta, «comparar» con nota de calidad, y un botón principal según el momento
Munka eligió tres de seis propuestas dibujadas en un lienzo (quedan el horario nocturno, el resumen
al acabar y marcar con criterio):
- La lista va por carpetas (la ruta una sola vez), el clip que se convierte lleva su barra y lo que le
  queda, «primero este» adelanta uno, y los excluidos salen en grupos con su porqué. Antes y después en
  una barra. La cola mide su ritmo y dice cuánto falta y a qué hora acaba (eta en /api/optimizar/cola).
- «Comparar»: el mismo cuadro del original y del convertido en tres instantes, con lupa, y «Medir la
  calidad» (VMAF) que se guarda en el trabajo; braw.py cuadro y braw.py calidad revelan el BRAW con la
  misma curva. Medido: 97,8 en 14 s con un BRAW de 16,5 GB.
- Un solo botón grande según el momento: buscar, convertir (con «reemplazar solo cuando estén
  verificados», optimizar.auto_reemplazar), la tanda con Detener, reanudar, o reemplazar lo verificado.

Pruebas: probar 19, prueba_funcional 31 (nueva: comparar), prueba_ventana 18.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-12 11:43:05 -05:00
Labstream
d92814d16c Convertir: una sola lista con el estado vivo, botones para ver y ordenar, y la barra en la casilla del clip que va
Antes había dos listas: los candidatos con el estado que tenían al pulsar «Buscar» (se quedaba
«corriendo» en un clip ya acabado) y, 700 filas más abajo, la cola con el avance. Ahora cada clip
sale una vez con su estado de verdad; el que se convierte lleva la barra en su casilla y la fila
resaltada. Arriba: ver (todos, por convertir, en cola, terminados, con fallo, excluidos) y ordenar
por (estado, nombre, fecha, tamaño, ahorro; otra vez invierte). Lo convertido muestra el peso real.

Pruebas: probar 19, prueba_ventana 18.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-10 16:08:39 -05:00
Labstream
eca2ce4adf El menú lateral se queda fijo al bajar, y en el plan los nombres parten en vez de cortarse
El cuerpo tenía height:100% (el alto de la ventana), así que su rejilla medía una pantalla y el
lateral «sticky» no tenía recorrido: se iba con el resto. Ahora el cuerpo crece con el contenido y
el lateral se queda donde está mientras baja la zona de la derecha.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-10 11:37:21 -05:00
Labstream
22bf2a8657 3.5.0: «Qué va a pasar» se explica con una carpeta, y una barra dice por dónde va
Munka, con el plan de Diana Méndez delante: «se lee mucho pero se entiende poco», «lo de ordenar
por año y por mes, ¿me toca seleccionar uno a uno o lo hace todo?», y quería una barra para saber
por dónde va y si hace falta algo.

- Una frase arriba y un solo botón, «Aplicar los N cambios»: un clic lo hace todo, en orden.
- Tres fichas, una por paso, con cambios, peso y cuántos quedan sin marcar; se pulsa una y se ve.
- Un ejemplo animado: la fila más representativa del paso como dos ramas de carpetas, «Ahora» y
  «Después», y lo que se mueve vuela de una a otra; debajo, la frase y el porqué. «Otro ejemplo»
  recorre las filas.
- La lista, corta: de dónde → a dónde y la cuenta; el motivo solo con «ver por qué». Lo que no va
  solo queda aparte y contado (cosméticos «01 - Celular» → «01- Celular», y dudosos), con «marcar
  los cosméticos».
- Al aplicar, el servidor cuenta archivo a archivo (/api/aplicando) y la interfaz lo sondea: barra,
  qué se mueve ahora, y al acabar qué se hizo, qué falló y qué queda sin hacer.
- Los avisos van plegados bajo «N cosas que conviene mirar antes de aplicar».

Pruebas: probar 19, prueba_orden 33, prueba_funcional 30 (comprueba que el avance acaba en tantas
de tantas), prueba_ventana 18.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-10 10:59:16 -05:00
Labstream
50da026373 Añadir carpeta: la clase de trabajo se elige entre cuatro tarjetas, y el ejemplo es un árbol
Munka vio el desplegable con las cuatro frases largas y preguntó si se podía presentar mejor.
Ahora las cuatro clases están a la vista, cada una con su título, cómo se ordena y los clientes
que ya van así («como David Reyes, Danney Gómez, Andrea Galeano y 3 más»): se elige por parecido.
Debajo, el ejemplo deja de ser una lista de rutas completas y pasa a ser un árbol: el año y el
mes salen una sola vez, como en el Explorador, y cada carpeta lleva al lado qué guarda.

Los textos de reglas.py quedan como «título · cómo se ordena», sin el «Le hago», para que sirvan
tanto en las tarjetas como en el selector del Mapa y en Ajustes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-10 09:40:19 -05:00
Labstream
0819f2da89 3.4.0: los BRAW se convierten sin Resolve, y lo que no compensa no se reconvierte
Munka no podía reconvertir archivos que antes sí. Auditado sobre la carpeta de Andrea Galeano:

- Los BRAW nunca habían salido: 87 clips (496 GB), tres tandas por el guion de Resolve y ni un
  clip convertido. Ahora los lee el decodificador de Blackmagic que instala Resolve (braw.py,
  en un proceso aparte), sin abrir Resolve, y ffmpeg los codifica como cualquier otro clip.
  Probado con clips del NAS: 15,6 GB → 394 MB con sus 7.004 cuadros, VMAF 96,0 contra el BRAW
  revelado sin pérdida. Las conversiones de BRAW que fallaron por Resolve pasan solas al lector.
- Lo que «antes podía» eran reconversiones de lo ya convertido: ahorraban un 5 % con pérdida.
  Siguen sin ofrecerse, y lo que ya viene comprimido de cámara solo se ofrece si compensa.
- La tarjeta codifica con «uhq»: entre un 19 y un 55 % menos de peso con la misma calidad
  medida, siempre H.265 de 10 bits.
- Una conversión que no aligera (más del 80 % del clip, o reconversión de una conversión) no
  reemplaza al original: queda «no compensa» y lo que salió va a _Para borrar\descartados.

De paso: los MP4 guardan las etiquetas de la cámara; un intento que no pasó la verificación se
puede reintentar; un H.264 de más de 4.096 px de lado va por CPU; el motivo de un fallo se lee
entero; el guion de Resolve llega con tildes y borra su ficha.

Pruebas: prueba_orden.py 33 (una con un BRAW de verdad), probar.py 19, prueba_funcional.py 30,
prueba_ventana.py 18 desde el código y 17 con el paquete.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 13:24:34 -05:00
Labstream
477857db45 3.3.0: lo que entra nuevo ya entra ordenado
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>
2026-10-04 17:05:57 -05:00
Labstream
c419d5d943 3.2.0: el orden mira la forma de las carpetas, no solo su nombre
Medido sobre una carpeta de cliente real (8.207 archivos, 920 GB) antes de tocar nada:

- «Por nombrar» solo pregunta por lo que el plan llega a ver y no sabe resolver; ya no por las
  carpetas de la app ni por lo de dentro de la papelera. Lo aprendido vale por el nombre entero.
- Una carpeta es una grabación por lo que tiene dentro: una pieza montada no se desarma, y lo
  que no es rodaje no acaba en 00_Grabacion\OTROS. Se conserva el nombre de cada sesión.
- Una carpeta que guarda meses o años dentro se abre y cada cosa va a su mes; si la pieza ya
  existe allí, se junta con ella.
- Repaso de lo ya ordenado: lo que está en un mes que no es el de su rodaje vuelve al suyo.
- El año de un clip de Blackmagic sale de los demás clips de su tarjeta y día; un rodaje que
  pasa de medianoche cuenta como uno.
- Un clip convertido sigue siendo de su cámara, y el convertidor no repite lo que ya convirtió.
- «Exportados» junto a «_Exportados» y «_Papelera» junto a «_Para borrar» se juntan.
- «Hacer de una vez» solo mueve lo marcado; lo dudoso que queda no cuenta como pendiente.
- El inventario lleva la versión de las reglas: uno anterior pide escanear otra vez.

Pruebas: prueba_orden.py (nueva, 19 casos), probar.py 19, prueba_funcional.py 26,
prueba_ventana.py 18 desde el código y 17 con el paquete.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 16:33:45 -05:00
Labstream
45ece8f2e7 README: lo de la versión en Aplicaciones era un fallo de medida, no del programa
La consola de la sesión ve y escribe una copia privada de HKEY_CURRENT_USER
(la aplicación de escritorio de Claude está empaquetada). En el Windows de
Munka la línea de Aplicaciones estuvo bien desde el primer momento. Queda
escrito cómo comprobar el registro de verdad: lanzando a través del Explorador.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 12:52:13 -05:00
Labstream
acb945c2ef 3.1.1: la versión que enseña Windows no depende de los accesos directos
Al actualizar a la 3.1.0 la instalación de Munka por su propio botón,
Configuración › Aplicaciones siguió diciendo 3.0.0. Tras actualizarse se
reescribían los dos accesos directos (uno vive en el Escritorio de OneDrive)
antes de apuntar la versión, y si uno no se dejaba reescribir, la versión no
se apuntaba. instalar.al_dia ya no toca un acceso que abre lo que debe, uno
que no se deja no impide lo demás, y la versión se apunta siempre. Con prueba.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 12:37:25 -05:00
Labstream
50562aeaab 3.1.0: se instala solo en su sitio, manual dentro y el puerto para una sola copia
- instalar.py: instalar un paquete lo copia a la carpeta de programas del
  usuario (%LOCALAPPDATA%\Programs\OrganiLAB) con sus datos y su ffmpeg, lo da
  de alta desde ahí y lo vuelve a abrir desde su sitio. Del origen no se borra
  nada: queda instalado-en.txt, que además hace que abrir esa copia abra la
  instalada. Un destino ocupado no se pisa, y si ya hay un OrganiLAB instalado
  lo dice en vez de poner otro encima.
- static/index.html: vista «Manual», con cada función del programa, qué hace
  y cómo lo hace (41 entradas, un apartado por pestaña).
- organizador.py: ServidorLocal pide el puerto en exclusiva. Con «reutilizar
  dirección», en Windows dos copias escuchaban a la vez en el mismo puerto y
  se contestaban la una por la otra sin que nada fallara a la vista.
- Pruebas: probar.py 19, prueba_funcional.py 26 de 26, prueba_ventana.py 18
  desde el código y 17 con el paquete, incluida la instalación entera en un
  equipo de ensayo (ORGANILAB_ENSAYO) que no toca el Windows de verdad.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 12:28:03 -05:00
Labstream
6c21145b1c README: la instalación de Munka se muda a su sitio definitivo y pasa la comprobación de seguridad de Windows
De Descargas a %LOCALAPPDATA%\Programs\OrganiLAB, con sus datos y su ffmpeg.
Smart App Control encendido, 31 de 33 binarios firmados (los otros dos son
ffmpeg y ffprobe, idénticos a los de winget) y Microsoft Defender sin hallazgos.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 11:52:47 -05:00
Labstream
252b1fd00e 3.0.0: OrganiLAB pasa a ser un programa de Windows
- 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>
2026-10-04 09:54:31 -05:00
Labstream
2daffc175a 2.6.2: arranque en blanco
- Una instalación nueva no trae carpetas de fábrica: CONFIG_DEFECTO
  arrancaba con David Reyes, Danney y Camilo apuntando a Z:, W: y N:.
  raices viene vacía; el diccionario de clientes y discos sigue de serie
  porque es conocimiento, no estado.
- Al abrir no se entra sola en ninguna carpeta: la primera opción del
  desplegable está vacía y la portada enseña «Tus carpetas» con su último
  escaneo, para entrar con un clic.
- Un config.json ilegible se aparta en config.json.roto-<fecha> en vez de
  sustituirse por los valores de fábrica en silencio.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-25 08:10:36 -05:00
Labstream
bcaa80df12 2.6.1: las actualizaciones automáticas, apagadas por defecto
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>
2026-09-25 05:57:48 -05:00
Labstream
1151320bf2 2.6.0: auditoría, 100 % local y 26 funciones verificadas
Sale a la red solo lo que se pide: la tipografía viene con el programa
(static/manrope.woff2) y el comprobador de versiones tiene interruptor en
Ajustes. Nueva prueba funcional (prueba_funcional.py) que levanta una copia
sobre un cliente de ensayo y ejercita las 26 funciones por su API, con una
conversión real: 26 de 26.

Fallos que sacó y quedan arreglados:
- Un renombrado solo de mayúsculas («10- octubre» → «10- Octubre») se
  descartaba en Plan.agregar y en mover; deshacer decía «sitio ocupado».
- Las carpetas que crea el plan no entraban en el inventario hasta el
  siguiente escaneo (_recontar_carpetas las da de alta y recuenta).
- Una fusión de carpetas cortaba en el primer archivo que tropezaba.
- «Viejo» era distinto en convertidor, stock y respaldo: ahora es_viejo.
- /api/actualizacion informaba versión vacía hasta la primera consulta.
- Filas de sueltos por carpeta de origen; mes del stock el más repetido;
  fuera tres rutas sin uso.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-24 20:57:41 -05:00
Labstream
9d4d1e9cc2 2.5.0: las grabaciones bajan hasta el día de rodaje
El año y el mes salían de la fecha de cada archivo desde 2.2.0, pero dentro
del mes iba todo junto: en Camilo, 13 días de rodaje y 907 archivos en la
misma carpeta.

- Nueva variable {dia} («15- Viernes», como los meses) en las plantillas de
  grabación de los cuatro tipos de trabajo, con migración de las guardadas.
- Plan._dias_de_rodaje() cuenta los días distintos por mes y dia_de()
  devuelve "" cuando el mes tuvo un solo rodaje: la carpeta del día solo
  aparece donde hace falta. David Reyes la necesita en 1 de 8 meses,
  Danney en 36 de 57, Camilo en 12 de 26. 186 grupos, cero colisiones.
- Un archivo de cámara suelto también se archiva por su propia fecha:
  plan_archivo hacía «if mes: fm = mes» y se saltaba la regla de 2.2.0.
- «¿Dónde va a parar este archivo?» dice también el día.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 23:06:17 -05:00
Labstream
1ae7a1bb38 2.4.0: el mapa se vuelve interactivo, con colores en Windows
- Cada carpeta lleva el color de lo que guarda (R.COLOR_CUBETA). Lo que
  cuelga de una carpeta con color hereda el suyo; una que mezcla tipos se
  queda neutra.
- «¿Dónde va a parar este archivo?»: donde_iria() resuelve cualquier nombre
  con el mismo clasificador del escaneo y el árbol enciende el destino.
  Debajo, nombres de archivo de verdad de la carpeta conectada.
- Renombrar una carpeta del árbol cambia TODAS las plantillas que pasan por
  ella (00_Grabacion arrastra a CELULAR) y, si se pide, las carpetas que ya
  existen en el disco; queda en la bitácora y se deshace.
- {anio} y {mes} dejan de encajar con cualquier carpeta: solo con algo que
  parezca un año o un mes.
- Colores en el Explorador: .ico generados sin dependencias y asignados con
  SHGetSetFolderCustomSettings, la misma API de «Cambiar icono». Escribir el
  desktop.ini a mano NO basta, y SHGetFileInfo no sirve para comprobarlo:
  no informa de la personalización ni cuando la puso el propio Explorador.
  Ruta de icono relativa, así que los colores viajan con el disco. Si el
  disco no deja marcar la carpeta, se dice y no se deja nada escrito.
- .organilab no se escanea y los desktop.ini de la app no son basura.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 22:52:05 -05:00
Labstream
ba186d4a26 2.3.0: proyectos por programa, carpetas vacías y mapa
Tres cosas para la reorganización, pedidas juntas.

Proyectos por programa: la plantilla pasa de 01_Proyectos/{nombre} a
01_Proyectos/{app}/{nombre}, con {app} = el programa que abre el archivo
(R.APPS_PROYECTO, R.app_proyecto). Lo que ya viene en su propia carpeta se
queda con el nombre de esa carpeta; lo que se separa es lo suelto. Las
plantillas guardadas se migran solas si nadie las tocó. Entran extensiones
que caían en «otro»: .sesx, .c4d, .blend, .motn, .aepx, .aet, .prel, .idml,
.psdt, .afpub.

Carpetas vacías: carpetas_vacias() las encuentra desde el inventario y las
comprueba en el disco; borrar_vacias() las quita. Es lo único que la app
borra, y solo porque no hay nada dentro: cada una queda en la bitácora como
rmdir y Deshacer las vuelve a crear con su nombre y en el inventario. No
entra en «Hacer las N de una vez». 29 huecos en David Reyes, 40 en N:.

Mapa: pestaña nueva con el árbol que producen las plantillas de verdad
(mapa_estructura, GET /api/estructura). Al tocar una carpeta dice qué guarda
—derivado de ROL_A_CUBETA y ROL_QUE—, cuánto hay hoy, y deja cambiar el
destino ahí mismo. POST /api/plantillas pasa a fusionar cubeta a cubeta:
guardar una sola plantilla borraba las otras diecinueve.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 22:34:12 -05:00
Labstream
2930320690 2.2.1: el diálogo de añadir carpeta se explica solo
«Cliente» y «Tipo» no decían para qué servían ni qué iba a pasar al confirmar,
y el tipo se describía por a quién se le hace en vez de por cómo queda ordenado.

- Cada campo es una pregunta con una línea debajo que dice qué hace.
- Debajo se ven, armadas con la plantilla de verdad (ESTADO.plantillas), las
  cuatro carpetas donde va a guardar el material; cambian al cambiar el tipo.
- Si el nombre es un cliente que ya existe, se preselecciona SU tipo. Antes
  salía siempre «contenido», así que una segunda carpeta de un cliente de
  pauta o de proyecto se podía registrar con la plantilla equivocada.
- El diálogo dice que al confirmar solo lee y arma una lista, sin mover nada.
- TIPOS_CLIENTE se reescribe en términos de cómo queda ordenado.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 22:12:40 -05:00
Labstream
99d0ba2034 2.2.0: la fecha de verdad manda, sin preguntar nada
- R.fecha_real: la fecha sale de lo más antiguo que sabe el disco. Al copiar en
  Windows la creación pasa a ser la de la copia y la modificación se conserva;
  al renderizar, las dos son nuevas.
- R.base_derivado y _heredar_fechas: un render hereda la fecha del original, en
  la misma carpeta o en otra si el nombre es propio y único. Si hay dos
  candidatos iguales no hereda.
- El plan archiva el material en el mes en que se grabó, no en el que dice la
  carpeta, y explica lo que hizo en vez de pedir una decisión. Los 727 GB de
  las dos carpetas que mentían se resuelven solos.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 22:01:33 -05:00
Labstream
1e1187d28a 2.1.0: el asistente se fusiona con la lista de acciones
Había dos caminos para lo mismo. Ahora encima de la lista sale «Hacer las N de
una vez», que ejecuta seguidas las acciones que no necesitan elegir nada, con
el mismo motor que tenía el asistente. Convertir y respaldar se quedan fuera
porque hay que elegir; lo dudoso nunca entra.

- POST /api/acciones/hacer; acciones() trae  y el progreso.
- Se quita el punto de entrada «Asistente paso a paso» de la interfaz (el
  motor y la entrada por línea de comandos siguen).
- Las acciones de ordenar no cuentan como pendientes sin un plan calculado:
  tras ordenarlo todo la lista seguía diciendo que faltaban dos cosas.

Probado de punta a punta: 19 archivos antes y después, ninguno perdido, árbol
completo ordenado en un clic.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 21:53:50 -05:00
Labstream
6b8bc23941 2.0.0: una sola lista de acciones por carpeta
La pantalla «Carpeta» pasa a ser la lista de todo lo que se puede hacer ahora
mismo, en orden, con la cifra real de cada cosa y su botón. Era la
simplificación de fondo de la auditoría: antes había que bajar tres niveles de
navegación para saber qué faltaba en una carpeta.

- acciones() y GET /api/carpeta/acciones: todas las cifras salen de consultas
  baratas (0,04-0,23 s en las carpetas reales); el plan solo se usa si ya
  estaba calculado.
- Se conecta la detección de repetidos, que funcionaba pero no tenía botón.
- _gb da terabytes; el peso de «por nombrar» deja de contarse dos veces al
  anidarse (salían totales mayores que el propio disco).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 11:46:41 -05:00
Labstream
2d7fe55265 1.9.0: convertidor, análisis en paralelo y respaldo
- analizar(): 8 hilos, se puede detener, informa de los ilegibles. ffprobe es
  sobre todo espera de red (0,23 s por clip en el NAS).
- Los formatos pesan de verdad distinto (cq_mas por formato): archivo 14,3 MB,
  ligero 8,2 MB, H.264 18,3 MB sobre el mismo clip.
- ProRes sin -qscale: el perfil vuelve a gobernar la tasa.
- motores(): se prueba el croma 4:2:2 de verdad; si la GPU no puede, va por CPU.
- Audio multipista: -c:a copy solo con una pista AAC (nueva columna pistas_audio).
- Raíces anidadas rechazadas al registrarlas.
- Respaldo: incremental contra el archivo de origen, e índice acumulativo.
- Interfaz: las casillas del plan no repintan la lista ni pierden el foco; el
  buscador de Ajustes conserva lo editado; la lista de stock no salta.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 11:08:33 -05:00
Labstream
b492881123 1.8.1: fase 2 de la auditoría
- Plan.marcar_colisiones: dos movimientos que acabarían en el mismo archivo se
  detectan antes de aplicar, se dejan sin marcar y se explican.
- agregar(): los grupos de archivos también comprueban si el destino ya tiene
  un archivo con ese nombre (40 primeros, para no saturar la red).
- actualizar_inventario: las filas de carpetas se reescriben con su ruta nueva
  en vez de borrarse, y se conserva la marca de basura/proxy heredada, para que
  aplicar por pasos no deje los siguientes con 0 archivos y sin fecha.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 10:49:36 -05:00
Labstream
b977fe1b3e 1.8.0: red de seguridad tras la auditoría
- Deshacer vuelve a la interfaz (Historial, Últimos cambios y el aviso al aplicar).
- «Elements» ya no marca como stock lo que tenga dentro: 50,7 GB de material
  propio dejaban de respaldarse y salían como desechables.
- El plan contrasta el mes de la carpeta con la fecha de los archivos y avisa
  cuando no cuadran (727 GB en el material real iban al mes equivocado en verde).
- aplicar(): un archivo bloqueado ya no corta el resto de su grupo.
- Un escaneo interrumpido no reemplaza el inventario bueno.
- Las uniones de carpeta de Windows no se recorren (colgaban el escaneo).
- Abrir una carpeta pasó de 8,83 s a 0,21 s.
- Plantillas: _Papelera migra a _Para borrar.
- .dat/.idx/.bak dejan de ser basura; Cache deja de ser proxies; abreviaturas
  de mes bajan a confianza media.
- Convertidor: varios formatos por clip, originales apartados fuera de
  candidatos, sufijo en modo espejo, temporal borrado al fallar, una sola cola.
- Interfaz: accion() no pisa el estado del botón; rutas de Windows bien recortadas.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 10:43:42 -05:00
Labstream
6bdf6a8457 1.7.0: recorrido paso a paso, sugerencias en Por nombrar, stock por antigüedad, Convertidor con formatos y GPU/CPU, respaldo por lotes, barra de tareas corregida
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 20:48:04 -05:00
Labstream
0895846f34 Plan por pasos en frases, sugerencias en Por nombrar, stock por antigüedad, respaldo por lotes, arrastre con ruta real, barra de tareas
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 20:23:14 -05:00
Labstream
b1f65f94c2 1.6.3: botón Elegir carpeta con el selector de Windows
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 19:52:58 -05:00
Labstream
8b482af652 1.6.2: manifiesto firmado, tiempo estimado en tareas, pruebas automáticas
- 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>
2026-09-15 14:48:47 -05:00
Labstream
8c5153e8ed OrganiLAB 1.6.1: organizador, actualizador, interfaz 1.6 y publicación
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>
2026-09-15 14:26:02 -05:00