Confirmación visible de sesiones asignadas a Buddy
Se añadió un aviso bajo el estado de respaldo, disponible en desktop y móvil. Solo se muestra con una cuenta Buddy actual coincidente y después de una respuesta válida accepted de training_claim. El conteo usa exclusivamente sessions_claimed del servidor: «Se asignaron 3 sesiones ya respaldadas a tu cuenta. Confirmado por el servidor.». Las sesiones que estaban solo en el navegador todavía deben subir por la cola normal; no se cuentan como transferencias remotas ya realizadas.
El servidor existente devuelve sessions_claimed=0 en una repetición de claim. El cliente conserva en IndexedDB una confirmación por cuenta y principal de origen, con propietario y hora de recepción; no guarda tokens ni agrega campos al CSV/JSON. Las repeticiones no suman nuevamente y conservan el número conocido. Si se perdió el primer resultado o se asignó antes de instalar esta interfaz, el conteo histórico no se inventa: se muestra «Vinculación con tu cuenta confirmada por el servidor.». Si hay alguna confirmación de cantidad desconocida, no se presenta un total parcial como si estuviera completo. Cambiar/salir de Buddy oculta el aviso de la cuenta anterior de inmediato.
El mensaje no sustituye la barra: una transferencia confirmada puede convivir con cambios locales todavía pendientes de respaldo. La lectura histórica opcional también conserva la confirmación cuando realiza un claim. No cambian las funciones SQL/Edge, permisos, formatos de Statetty ni el almacenamiento de la web habitual. Se utiliza la respuesta ya existente; no requiere configurar otra vez Supabase.
Validación: 171 pruebas locales aprobadas y Chrome con servicios simulados. Incluye claim aceptado/no aceptado, respuesta incompleta, reintento tras pérdida de respuesta, conservación tras cerrar/reabrir IndexedDB, varias identidades de origen, conteo cero/desconocido, separación por cuenta y ausencia de credenciales en la confirmación. Chrome comprobó el aviso de tres sesiones, recarga con replay de cero manteniendo tres, ninguna suma duplicada y ocultación al salir; también se conservaron el tema claro, las tarjetas grises, los errores de CAPTCHA, la barra móvil y los lotes offline. La cifra tres de la captura es simulada, no corresponde a datos reales del propietario. Captura output/supabase-sync/domain-claim-confirmation.png.
Publicación preparada sobre asosab/main cddf0d0f61dfe7a567ec17d22d5af40ce20ceee8. Rama remota arbatarchery/arbat_frontend:feature/supabase-claim-confirmation, commit 29421ecfb05e3ca9d4099b481c197971bc967313, árbol 70449d281af0d7570401891684d6b3d8ef94c178. La comparación remota contiene solo ocho archivos modificados bajo pruebas/supabase. Aún requiere creación/fusión manual de la propuesta por la restricción de la integración en asosab: https://github.com/asosab/arbat_frontend/compare/main…arbatarchery:feature/supabase-claim-confirmation?expand=1. No se ha publicado automáticamente.
Aviso temporal de diez segundos
El propietario confirmó que vio la asignación de tres sesiones y pidió ocultar el aviso a los diez segundos. Se añadió un temporizador por cuenta/propietario/conteo: los eventos normales de sincronización no lo reinician y el mismo aviso no vuelve a aparecer en esa página tras vencer. Una confirmación diferente puede mostrarse con su propio plazo; salir de Buddy lo oculta inmediatamente. Recargar la página permite mostrar la confirmación nuevamente, durante diez segundos. Los recibos persistentes y los datos no se borran.
Chrome con reloj controlado verificó visibilidad a los cinco segundos, una actualización intermedia sin extender el plazo, ocultación al completar diez segundos y ausencia de reaparición con más eventos. También pasó el recorrido de recarga/replay/cierre de cuenta y el de sincronización con servicios simulados. Cambio público preparado: rama arbatarchery:feature/supabase-claim-timeout, commit dc73c4bae4cb6c7ea8b6b6460e992ee3e1f54a87, árbol 0a4ea3dfdb22fa95a71ef00fbc67947f646e4e2c. Solo modifica sync-ui.js y el HTML para renovar su versión, bajo pruebas/supabase. Falta fusión manual desde https://github.com/asosab/arbat_frontend/compare/main…arbatarchery:feature/supabase-claim-timeout?expand=1.