Barra igual a la del Calendario (Hoy, anterior/siguiente, mes y ano; vista a la
derecha), vista Mes por defecto y aviso cuando no hay medicos configurados (antes
la vista Dia quedaba vacia).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Vista Mes tipo calendario (componente reutilizable MonthGrid) y vista Semana con
las citas de todos los medicos filtrados, coloreadas por medico; leyenda de
colores y vista elegida persistida.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Modulo clinic (habilitado por usuario): citas de pacientes para medicos con choques
bloqueantes (medico, paciente con cualquier medico, quirofano/bloqueos recurrentes y
horario de atencion), validados en transaccion con bloqueo de filas para que dos
recepcionistas no tomen el mismo hueco. Recepcion (alcance todos) y medico (alcance
propio). Vista Dia por columnas de medico, Semana y Lista; pacientes con historial;
bloqueos; configuracion de personal, horarios y tipos solo admin/superadmin. Capa de
citas en el calendario personal del medico. Migracion 036.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
El usuario solicita el cambio desde Mi cuenta (correo nuevo + clave actual). Lo
aprueba un admin/superadmin (colaboradores), solo un superadmin (admins) o el propio
superadmin mediante enlace a su correo actual. Tras aprobar se envia confirmacion al
correo nuevo y aviso al actual; al confirmar se aplica el cambio y se cierran todas
las sesiones. Todo el proceso queda en auditoria. Migracion 035.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Calendario personal para todos los roles: reuniones que organizo o me invitaron,
proyectos donde soy dueno/miembro, actividades y tareas donde soy responsable y
tareas recurrentes creadas o compartidas conmigo (solo lectura si no soy el creador).
Filtros Ver (Todo / Solo lo mio / Compartido conmigo) y Mostrar (lista de tipos con
Todo); colores por tipo, vencidos en rojo, compartido marcado con franja.
La pestana Calendario del proyecto muestra todas sus reuniones vinculadas.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Menu Calendario (Mes/Semana/Dia/Agenda) para agendar reuniones con participantes
internos y externos, RSVP, vinculo a proyecto, vencimientos de actividades,
invitaciones iCalendar por correo, recurrencia con excepciones, recordatorios
in-app y aviso de choques. Migracion 034_meetings.sql.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Permisos (superadmin, viewer, busqueda, tareas recurrentes), bootstrap atomico,
revocacion de JWT por version de sesion (028), control optimista de edicion (029),
logo sin SVG + CSP, ingesta endurecida, correos escapados, borradores, paginacion
de proyectos, accesibilidad de dialogos/controles e i18n.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Desplegable con casillas junto al titulo para mostrar/ocultar cada tarjeta,
persistido por usuario en localStorage.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
El service worker servia index.html desde su precache en cada navegacion.
Navegaciones pasan a NetworkFirst (cache solo offline), serve.json agrega
no-cache a html/sw.js e immutable a /assets, y se chequean actualizaciones
del SW cada 30 min y al volver a la pestaña.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
El detalle vive en los popups de las tarjetas; se elimina tambien la consulta
myPendingActivities del backend, que quedaba sin uso.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Las 7 tarjetas abren su lista en un DetailPopup (proyectos o actividades segun
la tarjeta); el bloque "Mis actividades" queda fijo. Nuevas listas de proximos
a vencer y para hoy; "Para hoy" deja de contar eliminadas/cancelados.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Base = actividades no eliminadas, no canceladas y de proyectos no cancelados;
el conteo de vencidas usa el mismo criterio (antes incluia eliminadas).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Base = actividades no eliminadas de proyectos no cancelados; el conteo de
pendientes pasa a usar el mismo criterio (antes incluia eliminadas).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Porcentaje de activos sobre el total sin cancelados, "N de M" y lista de
proyectos activos al hacer clic. La lista de detalle pasa a un componente
compartido con "Proyectos atrasados".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
La tarjeta muestra un medidor semicircular (atrasados/activos) con el valor al
centro; al hacer clic, el bloque inferior lista los proyectos atrasados en vez
de mis actividades. Por ahora solo esta tarjeta.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
El listener de "cerrar al hacer scroll" tambien reaccionaba al scroll del
propio panel, impidiendo llegar a las ultimas opciones.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Reemplaza el checkbox "Ocultar proyectos 100%" para cubrir tambien "solo 100%"
sin combinaciones contradictorias. Persistido en localStorage; migra el valor
del checkbox anterior.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contraseñas: el cierre automatico ahora es por inactividad (no saca al usuario a medio escribir),
token de desbloqueo renovable y contador visible junto al titulo. Equipos: GUID como componente.
Sube la version para que el panel de Actualizaciones ofrezca los cambios 2.15.0 -> 2.16.0
(migraciones 025 y 026, instalador del agente y pestaña Compartir).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Admin/superadmin dan acceso de solo lectura (Resumen, Equipos, Software) a otros usuarios;
el backend valida el acceso en cada endpoint y el menu aparece solo a quien lo tenga.
Migracion 026 (device_viewers).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Instalador .bat generado en el navegador, casilla para ocultar actualizaciones/drivers/componentes
en Software, buscador por pestaña en el detalle, GUIDs como componentes y tokens de ingesta
cifrados (migraciones 024 y 025).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Ingesta POST /api/inventory (JSON/XML, token de instalacion), upsert por deviceid,
historial de cambios, pestañas Resumen/Equipos/Software/Agentes, detalle con buscador
por pestaña y casilla para ocultar actualizaciones/drivers/componentes del software.
Migraciones 023 y 024. Diseño en docs/ARQUITECTURA-INVENTARIO.md.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Contraseñas: "Compartir grupo" aplica el mismo share de solo lectura a todas
las credenciales de un grupo de una vez (el grupo sigue sin ser una unidad
de permiso -- es una accion de conveniencia). El grupo y cada credencial se
marcan con el icono de compartido. "Destruir grupo" ahora tiene dos
opciones: solo desagrupar (como antes) o destruir tambien las N credenciales,
con advertencia explicita del conteo.
Fix de paso en ComboBox (afecta a toda la app): el panel se cerraba solo al
abrirse si el trigger estaba cerca del borde de un contenedor con scroll,
por un micro-scroll automatico del navegador al enfocar el boton.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Solo en el modulo Contraseñas (entradas y grupos): "Eliminar" pasa a decir
"Destruir", con dialogo en tono error (franja roja) y mensaje explicito de
que la destruccion es permanente e irreversible. El resto de la app
(Notas, Proyectos, etc.) sigue igual. El audit_log de borrado ya existia
(usuario/accion/fecha, sin el contenido) -- sin cambios ahi.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>