Claude movió la página de uso de /settings/usage a un modal con hash
#settings/usage sobre cualquier URL, así que el content script no se
ejecutaba en ningún sitio. Tres flujos nuevos:
- FAB flotante en claude.ai/* con uso cacheado (X% / Y%); se oculta
mientras el modal real está abierto.
- Inyección del tracker dentro del modal real cuando el usuario lo abre,
anclando estructuralmente sobre la fila del primer progressbar
(locale-proof) en vez de por texto.
- Overlay propio abierto desde el FAB con caché instantánea y refresh
en background si TTL >5 min: intenta pushState+popstate, hash,
click en "Uso" como fallbacks; cierra con botón X o Escape.
Cache en chrome.storage.local; se calienta cuando el usuario abre el
modal por su cuenta. Observers acotados y desconectados agresivamente.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
La página de uso de Claude eliminó el design token text-text-100,
lo que rompía la búsqueda de filas por p.font-base.text-text-100 y
dejaba al tracker sin inyectarse. Reescrito parsePageData para
localizar cada métrica por su etiqueta de texto ("Todos los modelos",
"Sesión actual"), subir hasta el ancestro con [role=progressbar] y
leer aria-valuenow + texto "Se restablece". Robusto ante renombrados
de clases de Claude.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>