Commit Graph

5 Commits

Author SHA1 Message Date
Carlos Narro
699a8566d0 Simplificar a "FAB abre modal nativo" y añadir hora fin sesión
El usuario prefiere ver la página de Uso nativa de Claude en vez de un
overlay propio. Eso permite borrar mucho código:
- Fuera openOverlayPanel, closeOverlayPanel, setOverlaySpinner,
  renderOverlayWithCache, showOverlayError.
- Fuera refreshInBackground, tryOpenViaPushState/Hash/Click,
  closeUsageModal, waitForDialogWithData — ya no auto-abrimos en
  background.
- Fuera formatAge y CACHE_TTL_MS y OVERLAY_ID y refreshPromise.
- Fuera __claudeUsageTracker (era andamio de debug).
- Fuera bloque de CSS del overlay (~120 líneas).

Nuevo onFabClick: 3 intentos en cascada para abrir el modal nativo de
Claude (hash → pushState+popstate → click en "Uso"). Si los 3 fallan,
warn en consola y queda el manual.

Y siguiendo lo que pediste, en el resumen del tracker (el que se
inyecta dentro del modal) ahora aparece un bloque azul "⏱ Sesión
termina a las HH:MM (en Xh Ym)" justo debajo del bloque verde del
reinicio semanal.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-04 16:04:46 +02:00
Carlos Narro
6e5f589156 Rehidratar Date al cargar caché y refresh no-destructivo
Bug raíz del click-no-abre-overlay: chrome.storage serializa con JSON,
los Date (sessionStartTime, sessionEndTime, estimatedEndDate) volvían
como strings ISO, y createWeeklyTracker llamaba .toLocaleDateString
en un string. rehydrateDates los devuelve a Date al cargar.

Mejoras adicionales:
- showOverlayError ya no destruye el panel si hay tracker visible:
  saca un aviso temporal en el header (auto-oculta a los 7s).
- DOM en el aviso construido con textContent, no innerHTML, para
  cerrar la puerta a XSS aunque el msg sea hardcodeado.
- Limpieza del andamio [CUT-DIAG] usado para encontrar el bug;
  __claudeUsageTracker se queda expuesto para depuración futura.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-04 14:45:00 +02:00
Carlos Narro
673bd0bced Adaptar tracker al nuevo modal de Uso
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>
2026-06-04 13:57:11 +02:00
Carlos Narro
6eeb5f929c mejora semanal 2026-03-20 04:31:17 +01:00
Carlos Narro
ed2d44fc13 first commit 2026-03-18 23:11:18 +01:00