- Se descapó
- 6 de agosto de 2026 a las 11:58 UTC
- Autor
- Kamo
- Compromit
- 145fb64
La insignia de correo nav-top en kamo-internal se refrescó llamando /api/email/carpetas cada 30 segundos, por pestaña del navegador. Ese endpoint camina por el todo el árbol de carpetas y abre cada carpeta de sólo lectura para responder, por lo que el costo de un número entero era un resumen completo del buzón, repetido indefinidamente. El WebSocket que ya existía sólo anunció que el correo había llegado y no llevaba ningún recuento, Así que su trabajo era desencadenar otra encuesta. Publica el conteo en sí: - EmailUnreadSnapshot en NATS email.unread..addr, transmitido a STOMP /topic/email/unread/.memberId. NATS está en el camino porque la cápsula que Observa un cambio rutinariamente no es la cápsula que sostiene el WebSocket del miembro. - EmailUnreadreadPubleder se une por buzón, por lo que una entrega de diez mensajes IDLE o una página de correo marcada leyendo es un viaje mate IMAP y uno publicado, fuera de la El hilo de llamar. - MailReader.getUnreadCount lee una carpeta. El gráfico lo responde desde la carpeta lista que ya devuelve; proveedores respaldados por IMAP lo anulan con un solo STATUS (UNSEEN). - Se publica una instantánea en suscribirse, en los mensajes IDLEAdiados/mensajesLimi de la ley, en los cambios de la bandera IMAP, y a partir de la marca-lea / banderas / movimiento / borrado / spam endpoints. Tres brechas esto también se cierran: - Los cambios de bandera eran invisibles. Leer correo en Roundcube o en un teléfono No se ha preguntado sin añadir o quitar un mensaje, por lo que la insignia sólo cayó cuando el navegador siguiente encuestado. IDLE ahora lleva un MessageChangedListener. - Los buzones de la nube no tienen empujón. EmailWebSocketController resuelto credenciales a través de la tabla de usuarios virtuales de KamoMail, que no tiene fila para un miembro de Microsoft 365 o Google Workspace, así que suscríbete () registró una advertencia y regresó. Ahora se resuelve a través de MailProviderResolver, y IDLE se conecta con la credencial especificaciones (host/port/TLS/XOAUTH2) a través de un compartido ImapStoreFactory.connect en lugar de asumir el anfitrión KamoMail y un contraseña. - Sessions se filtró. Una pestaña cerrada nunca envía /email/cancerito, por lo que buzones se cuentan ahora contadas por sesión de STOMP y publicadas SessionDisconnectEvent. Buzones de correo sin oyente IDLE en vivo. Graph, más allá de la gorra de 50 conexiones, o un hilo IDLE muerto son barridos lado servidor cada 60s y publicados al mismo tema. Eso reemplaza las encuestas por-tab en lugar de empujar: un barrido sirve a cada pestaña un miembro tiene abierto, la membresía se vuelve a probar cada pase por lo que un oyente muerto es Repuntado, y el navegador todavía recibe la cuenta sobre el WebSocket. MessageIndexer ata el correo electrónico. y deserializó todo en él como un mensaje, así que ahora se salta los sujetos fuera de correo electrónico.inbox. que al reducir la suscripción, porque el indexador de metadatos-email es un duradero consumidor y cambiar de sujeto de filtro rechazaría el suscribirse en cada vaina hasta que el duradero fue borrado a mano.