v2.2.4 — Imports Survive Upgrades
Highlights
- Imported data now survives upgrades. Sessions imported from another machine — and the cache that backs them — used to live inside the
.appbundle, which meant every upgrade path (DMG drag-replace, in-app updater, manual rebuild) silently wiped them. Runtime data now lives in~/Library/Application Support/ClaudeUsageTracker/, so it persists across every future upgrade. - One-time migration in the premium updater. If you upgrade through Check for Updates… from v2.2.3, your existing imports are automatically copied to the new location before the old bundle is removed. No action needed.
- No more bundle mutation. The app no longer writes inside its own signed
.appbundle, which keeps the code signature stable and avoids spurious Gatekeeper checks on later launches.
⚠️ Important for existing users upgrading via DMG
If you upgrade by dragging the new .app over the old one in /Applications, your imported sessions will be lost during this one transition only — the OS replaces the whole bundle before this version's migration code can run. Please re-export from v2.2.3 first if you have imports you want to keep.
Premium-build users upgrading via the in-app updater are migrated automatically.
What's changed
feat(app): movesessions-cache.json,scan-index.json,data.js, andlauncher.logfrom<bundle>/Contents/Resources/data/to~/Library/Application Support/ClaudeUsageTracker/feat(collect-usage): honorCLAUDE_USAGE_DATA_DIRenv var (standalone CLI still defaults tosrc/data/)feat(app): injectdata.jsas aWKUserScriptat document start, since it now lives outside the WebView's read-access rootfeat(premium-updater): one-time rescue copies the legacy in-bundle cache to the new user-data dir before deleting the backed-up old bundlechore(build): stop creating an emptyResources/data/in the bundle
Downloads
- macOS Universal (arm64 + x86_64):
Claude-Usage-Tracker-macOS-Universal.zip
Unzip and drag Claude Usage Tracker.app to /Applications.
Full changelog: v2.2.3...v2.2.4