Actualizaciones del producto

Notas de la versión — 26 de abril de 2026

Bartłomiej Głowacki · CAIO, responsable de AI e I+D
Notas de la versión — 26 de abril de 2026

Hace 19 días lanzamos una gran versión con el módulo de diagnóstico y el análisis de prosodia. Desde entonces el equipo ha impulsado otros 295 cambios — y no son pequeños. En esta versión puedes grabar una sesión ad-hoc antes incluso de que llegue el paciente, tus notas se fusionan con el trabajo de la IA y la transcripción lado a lado en tres columnas, el perfil público del terapeuta vuelve con toda su fuerza, y la aplicación móvil ya tiene tema oscuro. Bajo el capó pasamos por un endurecimiento SOC 2 / HIPAA, una auditoría DDD, y la seudonimización completa de los datos del paciente en el lado de la IA.

💚 Gracias al equipo que impulsó esta versión — con reportes, pruebas, código y paciencia:

  • Bohdan — sesiones ad-hoc, límites de paquete y periodo de gracia, auditoría DDD, facturas KSeF, decenas de correcciones (SCRUM-756, 815, 1267, 1268, 1276, 1280-1290, 1293, 1309-1316, 1353-1357, 1366, 1388, 1391, 1392)
  • Bartek — fusión a 3 vías, 9 análisis de TCC independientes, distorsiones cognitivas, contador de sesiones del paquete (SCRUM-1266, 1320, 1338, 1368-1375, 1385, 1386)
  • Ewa Cylwik / Ewa — PDF de Beck, segunda sesión AITS para el mismo paciente, tema oscuro móvil y estado vacío, mailing multilingüe, colores de la interfaz, unicidad del correo del paciente (SCRUM-883, 898, 902, 1089, 1094, 1297, 1304, 1307, 1319)
  • Joanna — calendario recurrente, ocultar Zoom, cancelación a tiempo, autorreflexión en lugar de la valoración de calidad de sesión (SCRUM-789, 874, 918, 919, 1005)
  • Además Bartlomiej por las distorsiones cognitivas y el contador de sesiones, que se convirtió en la base del nuevo modelo de suscripción

1. ⚡ Sesiones ad-hoc — graba antes de que llegue el paciente

Si alguna vez has tenido que encender rápido una grabadora — porque un paciente se presentó sin avisar, porque es una consulta puntual, porque es una reunión con alguien que aún no está en tus registros — el nuevo módulo de sesión ad-hoc resuelve por completo ese problema.

  • Botón de grabación rápida en el panel web, en la PWA del teléfono y en la aplicación MAUI — un clic inicia la grabación incluso antes de rellenar los datos del paciente
  • Bandeja AdHoc — una bandeja dedicada para grabaciones sin asignar hasta que decidas dónde van
  • AssignPatientModal — asigna la grabación a un paciente existente o crea uno nuevo directamente desde la bandeja
  • Reanudar / Volver a entrar a la sala — termina de grabar una sesión que empezaste antes
  • Retención de huérfanos + autocompletado — las sesiones sin asignar durante X días se cierran automáticamente para que la bandeja se mantenga ordenada
  • Video “Iniciar sin paciente” — en la sala LiveKit puedes empezar una sesión sin chocar con un paciente existente; el AdHoc acaba después en la bandeja

La sección está protegida detrás del código PromptyAI en Configuración — desactivada por defecto, para los usuarios que quieren ver primero el resto. Diseñada e implementada por Bohdan.

2. 📊 Límites de paquete y periodo de gracia — suscripción transparente

Las suscripciones recibieron una revisión completa. Los antiguos planes Starter/Standard están desactivados, sustituidos por Start / Practice / Pro — dimensionados según el volumen real de sesiones mensuales.

  • Contador de sesiones en el panel — ve cuántas sesiones has usado este mes y cuántas quedan en tu paquete
  • Correos de límite — notificaciones automáticas al 80% y al 100% de uso
  • Aviso de mejora de plan — cuando alcanzas el límite, recibes una sugerencia amable de cambio de plan en lugar de un bloqueo total
  • Precios de Stripe + descuentos — el precio que ves en la aplicación proviene directamente de Stripe con los descuentos activos aplicados (el código de beta tester no caduca)
  • Cancelación nativa de suscripción — cancela directamente en la aplicación, sin necesidad de escribir a soporte
  • Periodo de gracia de 14 días — si un pago falla, obtienes 14 días con acceso solo a tu propia cuenta (sin vista previa de pacientes), con correos en T+0 y T+13. La pérdida real de datos solo ocurre tras dos semanas
  • Banner de suscripción — mensaje limpio en la parte superior de la aplicación sin barra vacía entre el menú y la alerta
  • Simulador de límite de sesiones — en el panel de PromptyAI hay un modo de prueba donde puedes ver cómo se comporta la aplicación con un paquete completo

Trabajo conjunto de Bartlomiej (contador y límites, SCRUM-1266) y Bohdan (suscripción, periodo de gracia, aviso de mejora — SCRUM-756, SCRUM-1366, SCRUM-1391, SCRUM-1392).

3. 📝 Fusión a 3 vías para las notas — terapeuta, IA y transcripción en una sola vista

Este es uno de los mayores cambios arquitectónicos bajo el capó, pero el efecto en el trabajo diario es muy visible: cada campo de notas (Notas, Resumen de sesión, secciones de conceptualización) ahora recuerda por separado lo que escribió el terapeuta, lo que generó la IA, y lo que vino del dictáfono / la transcripción.

  • Notas a 3 vías — la vista de notas muestra tres fuentes lado a lado: tu texto, las sugerencias de la IA y la transcripción automática, y tú eliges qué conservar
  • Resumen de sesión a 2 vías + fusión JSON — en el resumen de sesión fusionas tu trabajo con el análisis de la IA en un único documento coherente
  • Separador de marca de tiempo — cuando editas manualmente un campo de IA, el sistema deja un rastro visible de cuándo y de quién es ese fragmento
  • Marcador [IA] desde la primera generación — tus campos no se mezclan con los generados
  • SourceBadge — una píldora colorida con un icono que muestra de dónde viene un fragmento, en lugar de texto en MAYÚSCULAS
  • Sustitución de sección de IA en lugar de añadir — cuando pides regenerar el resumen, la IA reemplaza la sección en lugar de apilar otra copia debajo

Diseñado e implementado por Bartek (SCRUM-1320, SCRUM-1368-1375). Por debajo: i18n completo en 8 idiomas y nuevos contextos DDD.

4. 🔍 Análisis de TCC — 9 informes independientes bajo demanda

El antiguo “generar análisis de TCC” monolítico se dividió en 9 elementos independientes que el terapeuta ejecuta cuando realmente los necesita. Menos espera, más control.

  • 9 análisis independientes — cada uno generado por separado, bajo demanda
  • Engranaje de edición de prompt — haz clic en el engranaje junto a cada análisis para ver/modificar el prompt que usará la IA
  • Sección ANÁLISIS DE TCC detrás del código PromptyAI — sección disponible tras introducir el código en Configuración, para usuarios que prueban nuevas funciones

Las distorsiones cognitivas obtuvieron su propia vista (reportado por Bartlomiej, SCRUM-1385):

  • Vista de datos en lugar de un informe de IA — ves citas concretas de la transcripción etiquetadas por la IA, no una narrativa generada a partir de ellas
  • Todas las citas al expandir — sin filtro de rango de fechas, expandir revela todo
  • Disponible en el menú principal — bajo Conceptualización v2

Se eliminó el antiguo prompt COGNITIVE_DISTORTIONS_INVENTORY (SCRUM-1386).

5. 🌐 Perfil público del terapeuta — renovación completa con paneles de edición

El perfil público bajo la marca aitherapy.support se ha reconstruido por completo.

  • 3 nuevos paneles de edición — biografía, especializaciones y datos de contacto editados en elegantes paneles laterales
  • Modo de edición del propietario — al ver tu propio perfil mientras has iniciado sesión, los botones de edición están a mano
  • Años de experiencia — nuevo campo YearsOfExperience visible en el perfil público
  • Rediseño de color — paleta salvia/lavanda bajo la marca aitherapy.support
  • Sección “Tu privacidad” eliminada — era redundante; el RGPD está en el pie de página
  • Iconos Lucide — tipografía de iconos moderna y limpia

Por debajo, se añadió un endpoint público GET /api/public/therapists — que devuelve los terapeutas con perfiles públicos activos. Base para un directorio de terapeutas.

6. 🎥 Sesiones de video — PiP, intercambio de cámaras, desenfoque de fondo corregido

El video recibió un conjunto de correcciones que notará cualquier terapeuta que realice sesiones a través de la aplicación.

  • PiP / minimizar — minimiza la sala de video a un mini-reproductor flotante y revisa notas en otra pestaña sin cortar la conexión. El micrófono y la cámara siguen funcionando
  • Intercambiar cámaras — cambia quién está en la vista principal y quién en la miniatura con un clic
  • Reanudación de PiP — al volver de la minimización, te saltas la sala de espera (PreJoinLobby) y entras directo a la conversación
  • Audio por participante para diarización — la transcripción separa a los hablantes incluso en PiP
  • Desenfoque de fondo corregido — la CSP bloqueaba MediaPipe WASM; el desenfoque ahora funciona con un clic
  • Interfaz de sesión AITS más limpia — el asistente de IA desapareció de la barra de herramientas, menos ruido visual
  • Overlay de PiP clicable — al eliminar pointerEvents:none y overflow:hidden, los botones de PiP responden a los clics
  • Botón “Unirse a la sesión” — estaba oculto por una anulación de CSS, ahora es visible
  • Closure obsoleto en handleMaximize — corregido; maximizar el PiP ya no genera un error

7. 📐 Conceptualización de Beck v2 y ABC — PDF, alternador de versión, edición de prompt

  • PDF de Beck y ABC v2 — formato corregido e inclusión automática en los materiales de sesión (reportado por Ewa, SCRUM-1297)
  • PDF de Beck — secciones solo con borde, especializaciones en color, iniciales limpias, flecha SVG entre secciones
  • Alternador ABC v1/v2 en Conceptualización v2 — elige qué versión de ABC mostrar
  • Engranaje de edición de prompt en ABC v2 — modifica el prompt de IA en la pestaña ABC v2
  • Exportación a PDF para análisis de IA y ABC por sesión — análisis individuales exportados por separado
  • Pluralización de etiquetas ABC en 8 idiomas — la tabla de conceptualización tiene las formas plurales correctas
  • Corrección de columnas ABC vacías — el backend devuelve los nombres de propiedad en plural correctos

8. 🧾 Facturas y KSeF — selección de pagos + máquina de estados

El sistema de facturación se refactorizó para cumplir con KSeF (el sistema polaco de facturación electrónica nacional).

  • Factura a partir de pagos seleccionados — elige los pagos y el sistema crea una única factura a partir de ellos (instantánea + FK de pago)
  • Punto de entrada “Emitir factura” en la vista financiera del terapeuta — acceso rápido desde el panel
  • Eliminación de partidas en el modal de emisión de factura — corrige errores sobre la marcha
  • Separación dev/prod de KSeF — sandbox y producción funcionan con credenciales separadas
  • Máquina de estados de factura (SCRUM-1357 Bohdan) — Borrador → Emitida → Enviada → Cancelada, con una restricción de base de datos sobre transiciones no permitidas
  • AE KsefToken — token KSeF cifrado con Always Encrypted

Trabajo conjunto de Bohdan (SCRUM-1357, SCRUM-1388).

9. 📅 Calendario, sesiones recurrentes y ubicaciones

El calendario semanal y recurrente recibió decenas de mejoras pequeñas pero visibles — la mayoría reportadas por Joanna y Ewa.

  • Sesiones a partir de las 22:00 — eran invisibles en la cuadrícula semanal, ahora se muestran hasta el final del día
  • Todas las horas en la cuadrícula de franjas recurrentes (SCRUM-874, Joanna)
  • Sesión cancelada a tiempo — no se muestra como “No pagada” (SCRUM-918, Joanna)
  • Etiqueta de recurrencia junto a la franja recurrente (SCRUM-919, Joanna) — ves “semanal”, “quincenal” junto a cada sesión recurrente
  • Ocultar la integración de Zoom en la interfaz (SCRUM-789, Joanna) — Zoom ya no se admite como canal de video
  • Ventana emergente de sesión en el calendario — ya no se oculta fuera de pantalla
  • TherapistAvailability — guardado automático en cada cambio (debounce de 800 ms), sin necesidad de botón de guardar
  • AddSessionModal — opción “crear sesión fuera del horario de disponibilidad” — las excepciones pueden forzar una franja
  • Estado “No-show” (NoShow=5) — nuevo estado, configurable incluso desde sesiones completadas o canceladas
  • RecurringSessionsCalendar — tarjetas de resumen encima de la leyenda y la cuadrícula

Las ubicaciones del terapeuta obtuvieron canales de reunión en línea por ubicación:

  • Modo presencial — campos de dirección y ciudad para ubicaciones presenciales
  • Interruptor presencial/en línea en lugar de una casilla — elección de modo más clara
  • Canal en línea por ubicación — distintas ubicaciones pueden tener distintos canales (AITS, Google Meet, enlace externo), propagados automáticamente a las sesiones
  • Salas de reunión permanentes por paciente — cada paciente tiene un enlace permanente a la sala AITS y un enlace externo aparte visible en la configuración del paciente
  • Eliminación de ubicación — corregida (desaparecía de la base de datos pero se quedaba en la lista de la interfaz)

Y por último el tipo de reunión en sesiones recurrentes — corregida la propagación de MeetingType y MeetingLink desde la configuración de la serie recurrente a cada sesión generada y a los correos de recordatorio (SCRUM-902, Ewa).

10. 📱 Aplicación móvil — tema oscuro, bandeja AdHoc, pulido

Móvil pasó a la versión 1.5.0 (build 18) con un montón de cambios visibles para el usuario y algunos retoques de firma para App Store / Play Store.

  • Tema oscuro — modo oscuro completo con encabezados de grupo legibles (SCRUM-1089, Ewa + SCRUM-815)
  • Recordatorios configurables — elige cuándo quieres la notificación de sesión
  • Recordatorio móvil de 15 min — recordatorio previo a la sesión de 15 minutos + aviso cuando las notificaciones del sistema están desactivadas (SCRUM-815, Bohdan)
  • Estado vacío para la lista de sesiones — en lugar de una pantalla en blanco, una incorporación más completa (SCRUM-1094, Ewa)
  • Banner de actualización automática — cuando la aplicación detecta una actualización, muestra un banner de actualización atractivo
  • Bandeja AdHoc + AssignPatient + inicio rápido en MAUI (SCRUM-1289, Bohdan)
  • Inicio rápido PWA móvil para sesiones ad-hoc (SCRUM-1286, Bohdan)
  • Vista web responsiva para teléfono — escritorio sin cambios, en el teléfono el diseño se adapta a la pantalla estrecha
  • Gestor de enlaces profundos en iOS — usa BindingContext, registro de esquema de URL
  • Cadenas de propósito NSLocation en iOS — corrección de ITMS-90683 (App Store rechazaba la compilación sin ellas)
  • Android AAB — paso explícito de jarsigner
  • Materiales de App Store Connect y Google Play — paquete completo más auditoría WCAG 2.2

11. 🔐 Seguridad: SOC 2 / HIPAA, MFA, seudonimización completa de la IA

Bajo la capa de producto realizamos un endurecimiento SOC 2 y HIPAA completo más una auditoría DDD con cinco entregas concretas.

  • Reverificación de MFA para operaciones críticas — para acciones sensibles (cambio de contraseña, exportación de datos) confirmas de nuevo con MFA
  • Códigos de respaldo para MFA — códigos de emergencia si pierdes el teléfono
  • IAnonymizedLlmGateway (SCRUM-1353, Bohdan) — todas las llamadas al modelo de IA ahora pasan por una puerta de enlace de seudonimización. Nombres, fechas, lugares se sustituyen por seudónimos antes de salir de la aplicación; la IA solo recibe la versión anonimizada
  • Seudonimización de notificaciones por correo/SMS (SCRUM-1354) — las plantillas de mensajes tampoco filtran datos del paciente al enviarse
  • Tokens OAuth de Google/Zoom cifrados con Always Encrypted (SCRUM-1355) — los tokens de acceso de integración están cifrados a nivel de columna
  • Indicador Patient.PendingConsent (SCRUM-1356) — los pacientes sin consentimiento activo obtienen un flujo de aplicación forzosa + insignia en el frontend
  • Máquina de estados de factura (SCRUM-1357) — los estados de factura son inmutables en direcciones no válidas, aplicado a nivel de base de datos
  • Inmutabilidad de auditoría + instantánea de usuario en 3 tablas de auditoría — el registro de acciones no se puede modificar a posteriori
  • DeanonymizationAuditLog — cada uso de datos del paciente tras la desanonimización se registra junto con la instantánea de correo y nombre visible del usuario que la realizó
  • Secretos codificados eliminados — todas las claves y contraseñas de appsettings.json trasladadas a Azure Key Vault
  • Always Encrypted para todos los datos de texto de usuario (ADR-0018) — dirección arquitectónica aprobada; más tablas migrarán en la próxima versión
  • Análisis de brechas de cumplimiento ISO/IEC — 95 brechas en 9 estándares mapeadas, con un plan de remediación

Respaldado por una auditoría DDD completa (Sesiones 1-8, Fases 1-6) — reestructuración del contexto de dominio, documentación de arquitectura, ADR, mermaid + pruebas, guías de actuación, integración con Confluence.

12. 👤 Portal del paciente — análisis en Objetivos, materiales, mejor vista previa

  • Conceptualización de Beck en la pestaña “Objetivos” del paciente — cuando publicas la conceptualización, el paciente la ve en su portal
  • Publicación de análisis en el portal del paciente + preferencias de notificación (SCRUM-1338, Bartlomiej) — controla qué y cuándo recibe el paciente
  • Vista previa de PDF del portaliframe en lugar de embed, la CSP permite blob: (los PDF cargan)
  • Vista previa del portal del paciente desde la vista del terapeuta — ve lo que ve el paciente (chrome en el contenedor, panel 1:1)
  • Materiales de sesión en Azure Blob Storage — SessionMaterial como blob, ya no en el sistema de archivos local
  • Sección de consentimiento / documentos + origen de registro en la configuración del paciente
  • Unicidad global del correo del paciente (SCRUM-898) — un segundo paciente con el mismo correo recibe un 409 y el modal se cierra (SCRUM-898, Ewa)
  • Seeder de plantillas de notificación para SK, CA, RU, UK, LT (SCRUM-883, Joanna) — mailing multilingüe completo
  • Resolución por defecto a la plantilla de la plataforma — cuando un terapeuta no ha sobrescrito la plantilla, se envía la multilingüe predeterminada (SCRUM-883)

13. 🎙️ Transcripción — grabación fiable, añadido de contenido, tiempo real con diarización

  • Añadir a una transcripción existente — sigue grabando en la misma sesión; los segmentos se añaden (la intención sobrevive a una recarga de página)
  • Audio por participante para diarización — la transcripción de video separa a los hablantes en pistas independientes
  • La transcripción sobrevive al PiP — minimizar la sala no interrumpe la grabación
  • Idioma de transcripción desde la configuración de sesión — el STT usa el idioma que has configurado para el paciente
  • Actualización automática de la transcripción al enfocar / visibilitychange / volver del video
  • Confirmación al detener la grabación < 2s — protección contra un WAV vacío por un clic accidental
  • Insignia “Enviando” en la lista de sesiones — ves cuándo una grabación está subiéndose
  • Tiempo real con diarización en la sesión de video — no se iniciaba antes; ahora funciona
  • Copia de seguridad en OPFS + Opus a 48 kbps — la grabación también se guarda localmente en OPFS como respaldo, parámetros de audio unificados
  • Subida directa de audio con SAS (SCRUM-1276, Bohdan) — el audio va directamente a Azure mediante URL SAS, evitando el backend
  • m4a nativo para Azure Speech — m4a manejado de forma nativa, sin conversión
  • Detección de formato por magic bytes (SCRUM-1311, Bohdan) — cuando Content-Type=application/octet-stream, el formato se detecta por el contenido del archivo
  • Hub sin texto en base de datos — el hub SignalR en tiempo real ya no persiste texto en la base de datos; finishPending usa POST multipart como MAUI
  • Corrección de SignalR 1006 — se eliminó skipNegotiation para que Azure SignalR funcione + ajuste de keep-alive
  • Marcador [IA] desde la primera generación + búsqueda fiable del marcador

14. 💬 Notificaciones, configuración del paciente, pequeñas mejoras de UX

  • NotificationTemplatesAdmin — alternador HTML/Texto en el editor de correo
  • NotificationSettings — la vista previa del correo renderiza HTML con respaldo
  • PromptEditModal — reconstruido: pestañas, selector de modelo, nombres de versión obligatorios
  • Reinicio del indicador Hide_dev_ui al cerrar sesión — los indicadores de desarrollador no persisten entre sesiones
  • Paciente de prueba Ann Fauler — equivalente en inglés 1:1 de la polaca Anna Pełnialska para demos solo en inglés
  • Alternador de modo de presentación de la interfaz de desarrollo — cambio rápido a modo presentación
  • Reporte de errores — adjuntos de Jira + etiqueta de quien reporta + botón “Enviar” centrado
  • Bucle de auth-refresh corregido — se abortan las solicitudes y se vuelve al inicio de sesión tras un 401
  • Banner “El servidor está iniciando” — en un arranque en frío (scale-to-zero) mostramos un aviso en lugar de una página en blanco
  • Escala de valoración de sesión — autorreflexión en lugar de valoración de calidad + descargo de responsabilidad (SCRUM-1005, Joanna)
  • Color del botón “Minimizar” cambiado a violeta cobalto (SCRUM-1307, Ewa)
  • Color de la etiqueta “Transcripción” de rojo a verde (SCRUM-1304, Ewa)
  • “Grabar ahora” → “Grabar sesión AdHoc” — nombre de botón más preciso
  • Sandbox con cinta verde en la esquina superior izquierda + prefijo [SANDBOX] en el título — para evitar confusión de entornos, además de una clonación repetible PROD → Sandbox (IaC de Azure y scripts)

✅ Lista de verificación de QA — qué comprobar tras el despliegue

FunciónVerificar
Sesión ad-hoc — Grabación rápidaHaz clic en Grabación rápida en el panel o la PWA — la grabación empieza de inmediato, la sesión llega a la bandeja AdHoc
AssignPatient en la bandeja AdHocAbre una grabación ad-hoc — puedes asignarla a un paciente existente o crear uno nuevo
Límite de paqueteEl panel muestra el contador de sesiones del mes actual y cuántas quedan en el paquete
Periodo de gracia tras un pago fallidoSimulador de suscripción en PromptyAI — fuerza un pago fallido, obtienes acceso solo a la cuenta durante 14 días
Fusión a 3 vías de notasEn los detalles de la sesión, el campo Notas muestra tres fuentes lado a lado (terapeuta / IA / transcripción); puedes elegir qué conservar
9 análisis de TCCLa pestaña de análisis de TCC muestra 9 elementos independientes; cada uno generado bajo demanda; cada uno tiene un engranaje de edición de prompt
Perfil público — panelesAbre tu propio perfil público mientras has iniciado sesión — los paneles de edición de biografía, especialización y contacto son visibles
PiP de videoDurante una sesión de video haz clic en minimizar — la ventana se reduce a mini-reproductor, el micrófono sigue funcionando, regresas sin la sala de espera
Desenfoque de fondoEn la sala de espera de video activa el desenfoque de fondo — funciona de inmediato, sin errores de CSP
PDF de conceptualización de BeckGenera el PDF de la conceptualización — también aparece en los materiales de sesión
Alternador ABC v1/v2En conceptualización v2 puedes cambiar la fuente ABC entre la versión 1 y la 2
Factura a partir de pagos seleccionadosSelecciona varios pagos y haz clic en “Emitir factura” — se genera una única factura a partir de la instantánea
Sesión recurrente con Google MeetLa segunda y tercera sesión de la serie tienen Google Meet configurado correctamente y el correo contiene el enlace correcto
Sesiones desde las 22:00El calendario semanal muestra las sesiones programadas a partir de las 22:00
Estado “No-show”En una sesión completada / cancelada puedes cambiar el estado a “No-show”
Tema oscuro móvilEn la aplicación móvil cambia al tema oscuro — los encabezados de grupo son legibles
Bandeja AdHoc en móvilEl móvil muestra la bandeja ad-hoc y permite asignar un paciente
Reverificación de MFAAl cambiar la contraseña, la aplicación vuelve a pedir MFA
Seudonimización de IAEn los registros ves que los datos del paciente llegan a la IA como seudónimos
Materiales de sesión como blobSube un archivo a los materiales de sesión — acaba en Azure Blob Storage, no en disco local
Unicidad global del correo del pacienteAñade un segundo paciente con el mismo correo — obtienes un 409 y el modal se cierra
Banner “El servidor está iniciando”Tras un periodo de inactividad más largo, la entrada a la aplicación muestra el banner en lugar de una página en blanco

🛠️ Lo que arreglamos — la letra pequeña

Además de las grandes funciones, se resolvieron ~80 reportes de testers y usuarios. Lo más destacado:

  • El overlay de PiP no era clicable — corregido
  • Closure obsoleto en handleMaximize — maximizar el PiP ya no genera errores
  • PiP mantiene la conexión — antes room.disconnect() se activaba en la transición de pantalla completa↔PiP
  • El botón “Unirse a la sesión” estaba oculto por una anulación de CSS — descubierto
  • Segunda sesión AITS para el mismo paciente (SCRUM-1319, Ewa) — se elimina el UNIQUE INDEX en Session.VideoInviteToken
  • La numeración de sesiones en conceptualización omite las canceladas (SCRUM-1267, Bohdan)
  • Acceso null-safe a Pagos en GetSessionDetailsAsync (SCRUM-1268, Bohdan)
  • Colisión de sesión de prueba de Anna Pełnialska con Jan a las 14:00 — corregido en el seeder
  • Ralentización del panel — mapeo null-safe en GetTodaySessionsAsync y GetSessionDetailsAsync
  • Actualización automática tras finalizar la grabación desde el micrófono — funciona
  • El respaldo por lotes ya no sobrescribe el texto de grabaciones anteriores ni bloquea la interfaz con el estado Processing
  • Idioma de transcripción desde la configuración de sesión — el STT respeta la preferencia del paciente
  • CSP — se permiten *.clarity.ms, blob: en connect-src, analítica en script-src
  • Bucle de auth-refresh — se abortan las solicitudes tras un 401 y se vuelve al inicio de sesión
  • CSP MediaPipe WASM — el desenfoque de fondo funciona
  • Cinta DEV/SANDBOX también en el FQDN de Azure, no solo en el dominio personalizado
  • Toast falso “Transcripción fallida” al entrar a la sesión — eliminado
  • Toast en lugar de banner rojo por transcripción fallida + eliminado el botón “Resample”
  • Tiempo real con diarización en la sesión de video — se inicia correctamente
  • Streaming de IA — AbortController por controlador en lugar de compartido (BodyStreamBuffer was aborted)
  • Nginx sin root y Azure Container Apps — varias iteraciones para que funcione
  • Bloqueo distribuido (sp_getapplock) — las migraciones al inicio ya no entran en conflicto en despliegues paralelos
  • DbUpdateConcurrencyException en el sondeador de transcripción por lotes (SCRUM-1313, Bohdan)
  • BlobNotFound como estado esperado (SCRUM-1314, Bohdan)
  • Cargas útiles no-JSON del webhook de Stripe (escáneres / bots) — gestionadas silenciosamente (SCRUM-1315, Bohdan)
  • Detección de formato de audio por magic bytes (SCRUM-1311, Bohdan)
  • Subida de audio resiliente + Content-Type defensivo (SCRUM-1293, Bohdan)
  • Migración de FK ActiveEmbeddingModelId → ON DELETE NO ACTION
  • Despliegue del cliente dev — CACHE_BUST=github.sha fuerza la reconstrucción del frontend

Esta es la versión más grande y densa de esta primavera. Si una función te resulta familiar, es porque fue tu solicitud o tu ticket. Gracias por cada reporte y cada captura de pantalla.

Artículo preparado por el equipo de Therapy Support

Therapy Support · Empiece hoy mismo

Recupere tiempo para usted
y para sus pacientes

¿Es usted terapeuta TCC?
Descubra cómo la plataforma apoya su trabajo diario.
Resúmenes de sesión que ordenan el material clínico. Una administración que no estorba.