Skip to content

Releases: DrummingBird1/timetrack-extension

TimeTrack v1.4.0

Choose a tag to compare

@DrummingBird1 DrummingBird1 released this 27 Aug 18:46

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

  • saveSettings couldn't actually delete a key from categoryMap/siteLimits — a real, previously-unnoticed bug that silently broke the existing "remove category mapping" and "clear site limit" actions. Fixed with a new storage.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.js alarm 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

Choose a tag to compare

@DrummingBird1 DrummingBird1 released this 22 Aug 21:48

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's dir()/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 for utils.js's weekday labels and duration units.
  • Fixed three call sites that set document.documentElement.lang via the old binary — they now use the normalized language, so Arabic/Russian/Spanish/French pages get a correct lang attribute.

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.js programmatically 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

Choose a tag to compare

@DrummingBird1 DrummingBird1 released this 15 Aug 22:27

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, and isEncrypted() also requires salt/iv to 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 raw SyntaxError.

Changed

  • PBKDF2 iterations raised to 600,000 (from 150,000), matching OWASP's current minimum. Fully backward-compatible — decryptJSON reads each envelope's own stored iterations value, 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

Choose a tag to compare

@DrummingBird1 DrummingBird1 released this 17 Jul 05:20

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/allowDomains next 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 dh map) 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

  • getLive is 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 favicon permission 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

Choose a tag to compare

@DrummingBird1 DrummingBird1 released this 09 Jul 23:16

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.