Versión de la extensiónEscrito en inglés
UsageMeterv1.2.27
17 cambios
- 8 nuevas
- 3 mejoradas
- 6 correcciones
Estas notas de versión solo están disponibles en inglés.
- Nuevo
Leaderboard: Ligue / Global segmented switcher at the top of the Classement card, only shown when you're in a league (defaults to League view, falls back to Global otherwise). New tier explanation card tinted in the league color shows the league name (Bronze → Silver → Gold → Platinum → Diamond → Obsidian), the percentile threshold (e.g. "Top 2%" for Obsidian), a one-line description of the tier, and promote/relegate hints (top 5 promote, bottom 5 relegate — arrows hidden at the top of Obsidian and bottom of Bronze where they don't apply). Tier colors mirror the backend cron: bronze #cd7f32, silver #c0c0c0, gold #ffd700, platinum #e5e4e2, diamond #87ceeb, obsidian #7c3aed
- Nuevo
Badges: 25 new badges in 5 brand-new groups (53 total across 14 groups, up from 28). New groups: XP Milestone (1k / 5k / 25k / 100k XP), Weekend Warrior (5 / 20 / 50 weekend days), Perfectionist (10 / 50 / 200 / 1000 cycles with peak under 25%), Level Up (level 5 / 7 / 10), Challenger (5 / 20 / 50 weekly challenges completed). Every existing group now has 3 or 4 tiers — added a Legendary tier 4 (purple) to first_steps, night_owl, early_bird, zen, pace, limit, survivor and multi-tasker. The "Early Bird 1/1" you used to see is now "1/4" with a progression all the way to 100 mornings before 7am
- Nuevo
BadgeGrid UI: per-group tier counter (2/3 below the dots), header shows both flat count and grouped count (e.g. "6/12 · 5/9 catégories"), and the detail panel now renders a progress bar with current / required value for every unearned tier — so you see "8/10 cycles → Perfectionist II" at a glance instead of just a locked icon. Groups sort earned/in-progress first, fully locked last. Full-mastery checkmark only appears when ALL tiers in a group are unlocked
- Nuevo
5 new badge trigger types in web/src/lib/gamification.ts: total_xp (current totalXp), reach_level (current level), weekend_active (DAYOFWEEK SQL on daily_activity), perfectionist (JSON_EXTRACT on xp_ledger metadata.peak), challenges_completed (count of deviceChallengeProgress.completed). New computeTriggerCounts() helper batches every count in parallel and exposes currentValue/triggerValue per badge in the snapshot — that's what drives the progress bars above
- Corrección
Retroactive badge awarding: buildGamificationSnapshot now re-runs checkAndAwardBadges on every snapshot read (bounded by the 10-min popup cache, so at most ~6 checks/hour per active user). Users who already qualified for a badge but never received it because the badge didn't exist at the time, a previous award attempt was skipped due to a bug, or the trigger type was added later, now automatically get the badge on next popup open. Also fixed: first_sync trigger falls back to counting daily_activity rows when totalSyncDays is 0 (could happen when processSync ran before processHeartbeat on a fresh device), and streak trigger now uses max(currentStreak, longestStreak) so a single missed day doesn't revoke a badge already earned. Companion script web/scripts/recheck-all-badges.ts batch-backfills the whole user base in one shot
- Nuevo
Model breakdown donut chart on the Usage tab — pure SVG (no library), shows the share of this week's usage split across Sonnet (#5b9bd5), Opus (#b45cff) and Claude Design (#ec4899). Center text: the dominant model + its share. Legend on the side lists each model's share % and raw utilization %. Only appears when at least 2 model buckets have data, hidden otherwise to avoid showing a one-color donut. Computed share = bucket_utilization / sum_of_all_bucket_utilizations, so it answers "which model burned my week?" rather than just repeating the per-bucket numbers already shown above
- Nuevo
Export to PDF and Word — two new format buttons in the Pro section of the export modal. PDF uses jsPDF (paginated A4, vector text, role-colored YOU / CLAUDE headers, thinking blocks in italic gray, title + metadata header, page footer). DOCX is hand-rolled — DOCX is just a ZIP of three XML files (Content_Types, .rels, document.xml) and we already had a STORE-method ZIP utility for the code-extraction feature, so the docx npm package is skipped entirely (~250 KB shaved). Opens cleanly in Word, Google Docs, LibreOffice. Both formats added to proFormats and gated to Pro like the existing JSON / HTML exports
- Corrección
Firefox "limit refreshed" notification spam — users on free were getting a system notification every time they opened Firefox after using Claude, with no way to turn it off because the resetCompleted toggle lived in the Pro section with :disabled="!isPro". Meanwhile background.js was firing the notification regardless of Pro status (it only checked prefs.resetCompleted, not the plan). Moved resetCompleted to the free section so the toggle actually works, and removed the :disabled on the other Pro notifications for the same reason — every firing site in background.js only checks the pref, so locking the UI just denied free users an escape hatch. PRO badge above each toggle stays as informational marketing, but you can now actually disable any notification regardless of plan
- Mejorado
GitHub URLs consolidated to PiloteCode/UsageMeterIssues across the codebase — was a mix of PiloteCode/UsageMeter, PiloteCode/UsageMeter, pilotecode/usagemeter (lowercase), and PiloteCode/UsageMeterIssues. Touched package.json (repository.url), src/popup/components/settings/AboutSection.vue (GitHub + Report Bug links), src/README.md (clone command + issues link), and web/src/app/[locale]/bug-report/page.tsx (GitHub issues card on the bug report page)
- Nuevo
Desktop sign-in by code — in Claude Desktop the Google/OAuth redirect opens in the external browser and can't hand the session back to the extension, so login silently failed. New "Sign in with a code" flow: log in on usagemeter.app (which detects ?from=desktop and routes to /account/desktop), it shows an 8-digit PIN, you type it into the extension and it exchanges the PIN for a session token. PIN is single-use, 10-minute TTL, rate-limited. Backed by /api/extension/auth/desktop-pin (issue, session-gated) + /desktop-pin/claim (exchange) and a DesktopLoginPin table. The Google/GitHub buttons auto-route to this flow when running in Desktop
- Corrección
Desktop: extension assets loaded via chrome.runtime.getURL — notably the Claude Code export button icon — were broken because chrome-extension://__usagemeter_desktop__/ doesn't resolve in the injected Electron build (the <img> 404'd). getURL now resolves to the local bridge (http://localhost:9333), which serves every embedded extension file, so icons and other getURL assets render correctly on the desktop app
- Mejorado
Version is now injected from manifest.json at build time (__APP_VERSION__ via Vite define) instead of a hardcoded fallback that drifted out of sync — the desktop About panel used to show a stale 1.2.14 whenever chrome.runtime.getManifest() returned no version. The desktop .exe build also rebuilds dist/ from src/ automatically (with a guard that refuses to package an empty dist/), so the embedded extension version can no longer lag behind the source
- Mejorado
Chat-bar ring mode is now ON by default — the usage ring + Auto-Reply + Export tools take over the "Claude can make mistakes…" disclaimer bar under the composer instead of sitting separately. Turn it back off in Settings → Features → "Chat bar: ring + tools" (existing installs that explicitly saved it OFF keep their choice)
- Corrección
Ring mode left the native "Claude can make mistakes…" text showing ALONGSIDE the UsageMeter chips — the disclaimer text is a bare text node, not a child element, so the old hide-children pass missed it. It's now wrapped in a hidden span (restored when ring mode is turned off), so the bar shows only the chips
- Nuevo
UsageMeter Desktop (the standalone Windows app) now shares ONE data store with the real Claude Desktop — it launches the patched copy with CLAUDE_USER_DATA_DIR pointed at the Microsoft Store app's data container, so the login session, preferences, conversations and MCP config are identical whether you open Claude normally or through UsageMeter. Before, the de-packaged copy wrote to a separate folder, so you appeared logged out / unconfigured (and got usage 403s) when launched via UsageMeter. Build hardening on the side: the .exe build now rebuilds dist/ from src/ first, retries the occasional Windows vite segfault, and aborts rather than ship an .exe with an empty dist/
- Corrección
Popup footer showed the legal + privacy links twice — removed the duplicate footer and kept a single refined row, with Confidentialité now pointing at the bundled privacy.html for Chrome Web Store compliance
- Corrección
The "Usage Reset!" system notification no longer fires for a STALE reset — reopening the browser/extension hours after the 5h window reset used to pop it every time (Pro AND free, since background.js doesn't gate on plan). It now only fires when the reset happened less than 3h ago, derived from the API resets_at timestamp (last reset = resets_at − 5h)