Repository navigation
Releases: DrummingBird1/timetrack-extension
Release list
TimeTrack v1.4.0
The "backup & sites trust" release — the ten items proposed in the post-1.3.0 roadmap, plus two real bugs found along the way.
Added
- Preview-before-restore — restoring from the cloud now shows a summary (day range, total time, site count, encrypted y/n) and lets you pick replace/merge, instead of a bare confirm dialog.
- Passphrase strength meter under the encryption passphrase field — hand-rolled, no dependency.
- Merge-conflict counts — imports now report how many domain-day records actually changed during a merge.
- 80%-approaching warnings for daily and per-site time limits, alongside the existing 100%-reached notification.
- Snooze on limit notifications — a button suppresses a specific limit for an hour (the first interactive notification buttons in this codebase).
- First/last-visit timestamps in the site drill-down.
- Settings-wide search box.
- Pinned sites — pin any site to the top of the Sites table.
- Domain rename / alias-merge — combine a rebranded site's history into another domain, right from its drill-down.
- Storage-quota warning — one heads-up notification if local storage crosses a soft 250MB threshold.
Fixed
saveSettingscouldn't actually delete a key fromcategoryMap/siteLimits— a real, previously-unnoticed bug that silently broke the existing "remove category mapping" and "clear site limit" actions. Fixed with a newstorage.saveSettingsKey()for exact top-level replacement.- Every background.js notification was Hebrew-only, regardless of the selected UI language. The service worker now properly localizes focus-mode, limit, and weekly-summary notifications into all six shipped languages.
Notes
- Tests: 63 → 74, including integration tests that drive the real 80%/100%/snooze notification flow and the storage warning through the actual
background.jsalarm handler. - No schema change; no new permissions.
Install: download timetrack-v1.4.0.zip, unzip, then load the folder via chrome://extensions → Developer mode → Load unpacked.
TimeTrack v1.3.0
Six-language UI, a new marketing site, refreshed promo art, and an asset archive.
Added
- Six-language UI — Arabic, Russian, Spanish, and French added alongside Hebrew (default) and English. All 249 UI strings, live-switchable between all six, with every
{placeholder}token and emoji verified to match the source exactly. - Marketing website (
store-assets/site/) — replaces the previous privacy-policy-only GitHub Pages page. Bilingual (English/Hebrew) with a live toggle; the privacy policy is now a section within the full site. - 5 new promotional graphics — a hero illustration plus four feature graphics (focus mode, insights, privacy, backup), hand-authored as dependency-free SVG in the app's own visual language.
Changed
i18n.js'sdir()/locale()generalized from a hardcoded Hebrew-is-the-only-RTL-language binary to a per-language lookup table — adding a language no longer means touching direction/locale logic by hand. Same treatment forutils.js's weekday labels and duration units.- Fixed three call sites that set
document.documentElement.langvia the old binary — they now use the normalized language, so Arabic/Russian/Spanish/French pages get a correctlangattribute.
Housekeeping
- Old screenshots, promo images, and superseded build zips moved to a new
archive/folder at the repo root (git history preserved).
Notes
- Tests: 56 → 63. New
i18n.test.jsprogrammatically verifies all six languages have identical keys, identical placeholder tokens, and aren't silently untranslated — a permanent regression guard. - No changes to tracking/focus/backup engine logic in this release.
- The marketing site is built and verified but not yet deployed live to GitHub Pages — that's a separate manual step.
Install: download timetrack-v1.3.0.zip, unzip, then load the folder via chrome://extensions → Developer mode → Load unpacked.
TimeTrack v1.2.1
Patch release fixing two real issues found while auditing the encrypted-backup path in detail, plus closing test-coverage gaps around cloud-backup failure modes. No user-facing feature changes.
Fixed
- crypto.js error handling — a malformed/corrupted encrypted envelope (specifically a bad
salt) used to throw a raw, unhandled error instead of the friendly "backup corrupted" message. The whole decrypt path is now covered, andisEncrypted()also requiressalt/ivto be present. - backup.js corrupted-chunk restore —
restoreFromSync()already handled a missing sync chunk gracefully; a chunk that existed with corrupted content now gets the same friendly error instead of a rawSyntaxError.
Changed
- PBKDF2 iterations raised to 600,000 (from 150,000), matching OWASP's current minimum. Fully backward-compatible —
decryptJSONreads each envelope's own storediterationsvalue, so old backups keep decrypting correctly.
Notes
- Verified empirically: the new regression tests were run against the pre-fix source (via a temporary
git stash) to confirm they actually fail without the fix and pass with it. - Tests: 51 → 56.
- Added GitHub Actions CI (
.github/workflows/test.yml) — this repo had no CI before this release.
Install: download timetrack-v1.2.1.zip, unzip, then load the folder via chrome://extensions → Developer mode → Load unpacked.
TimeTrack v1.2.0
Closes the gaps where a setting worked in the engine but had no way to reach it from the UI, and puts the per-domain hourly data (schema v2) to use.
Added
- Untracked-sites editor — manage the never-track blacklist from Settings, plus a "Don't track this site" action in the per-site drill-down.
- Focus: block/allow specific domains — edit
blockDomains/allowDomainsnext to the category chips, so you can block or allow a single site. - Per-site hourly timeline — the drill-down now charts a site's activity by hour-of-day (from the
dhmap) next to the daily timeline. - Sites: search all history — a toggle to aggregate/search the whole index, not just the selected range.
- Pomodoro long break — optional longer break every N cycles (
longBreakMinutes/longBreakEvery); off by default.
Changed
getLiveis read-only — periodic live-status polling no longer commits a storage write each poll; time is committed by browser events and the 1-minute tick.
Fixed
- Real favicons self-heal — if the optional
faviconpermission is later revoked, the popup/dashboard fall back to generated avatars instead of broken icons.
Notes
- Tests: 48 → 51 (
domainHourly, blacklist tracking, long-break state machine). No schema change (still v2); new focus settings default off. - Deferred: Google Drive OAuth backup, site-table virtualization, onboarding tour, dedicated Webtime Tracker importer.
- The UI still needs a manual in-browser pass before store publishing — DOM rendering and the focus tab-redirect aren't covered by automated tests.
Install: download timetrack-v1.2.0.zip, unzip, then load the folder via chrome://extensions → Developer mode → Load unpacked.
TimeTrack v1.1.0
Focus Pomodoro cycles + allow-list mode, automated insights, per-site peak hour, keyboard shortcuts (Alt+Shift+T/F/D), optional real favicons, CSV import, a wider public-suffix list, and block-page/hardening fixes.
Local-first, no remote code, minimal permissions. 48 automated tests. Full details in CHANGELOG.md.
Load-unpacked the extension/ folder, or use the attached zip.