Now part of CaptureTools
Focus Ledger now ships inside CaptureTools, one extension holding five separate tools that stay isolated from each other. This page still describes Focus Ledger in full. See the suite.
#DHSeaDev — Chrome MV3 — Popup — Interval Timer with Local Statistics
FOCUS LEDGER
Focus Ledger is a Chrome extension that runs timed work and break intervals and keeps a complete, permanent record of every one you finish — on your own machine, with no account and no sign-in. The toolbar badge counts down in whole minutes. Finished intervals are written to a local ledger; breaks and skipped intervals are not, so the record only ever shows work you actually did. A statistics page draws the whole of it: totals, streaks, when in the day you focus, and a daily activity map covering your entire history rather than a recent window.
CHROME WEB STORE LISTING IN PREPARATION
Version 1.0.0 is packaged and gated. Nothing is submitted yet, so this page claims no store listing. The full privacy policy is in the Privacy section below. Questions: dhseadev@gmail.com
Why this exists
On 31 August 2026 the Chrome Web Store removes every remaining Manifest V2 listing. Installs survive but can never update or be reinstalled, and MV2 has not executed on stable Chrome since July 2025. A number of well-liked, well-built extensions go with that deadline — not because anyone lost interest, but because migrating to Manifest V3 is a rewrite rather than a port, and the people who wrote them moved on years ago.
Focus Ledger is a clean-room successor to one of them. The interval timer it replaces was abandoned in 2021 with a 4.8-star rating and ninety thousand users, and the two things its reviewers asked for most — a volume control, and a history that does not stop at nine months — were never built. Both are here.
What it does
Intervals that survive the browser
Focus, short break and long break, each configurable, with a long break after a number of intervals you choose. The timer is a stored deadline rather than a running countdown, so Chrome reclaiming the service worker mid-interval changes nothing.
A badge you can read at a glance
Whole minutes remaining on the toolbar icon, a distinct mark for the final minute, and a paused indicator. Focus and break carry different colours, contrast-checked in both themes.
A ledger, not a counter
Every completed focus interval is recorded with the minute it ended, its length, and the timezone you were in. Breaks are not recorded. Skipped intervals are not recorded. The number is only ever work you actually finished.
Statistics over everything
Totals for today, this week, this month, this year and all time, current and longest streaks, a breakdown of when in the day you focus and which days of the week, and a daily activity map spanning your entire history — not a fixed recent window.
Sound generated on your device
Twenty-eight alert tones, twelve ticking sounds and three kinds of background noise, all synthesised with the Web Audio API. No audio files ship with the extension and none are downloaded. A master volume control comes with them.
Cross-device history, no account
One line per day — how many intervals and how many minutes — travels through your own Chrome profile sync. Individual sessions never leave the device they were recorded on, and there is no server of ours anywhere in the path.
Built to be checked, not just to work
The timer logic, the history codec and every statistic live in a pure module with no browser APIs and no clock of its own — time is always passed in — so the whole of it runs in Node and is tested headless. The service worker is a scheduler and a relay that holds nothing, and it is the only writer of storage on any surface, with a per-key queue in front of every read-modify-write so two events cannot trample each other.
What that bought, in numbers: 172 headless tests, 30 assertions against real Chromium with the extension loaded, and a mutation campaign at 80.6 percent on the files that guard your history. A test shard was handed the original extension’s feature list as a specification, never shown this implementation, and wrote its own suite: 26 items, 1,122 assertions, no failures. That is the evidence that the features actually came across, rather than the code agreeing with itself.
Two defects worth naming, because both were found by stress tests rather than by use. A paused interval that overran its deadline could lose the time it had banked when the service worker was reclaimed — a finished interval came back as a fresh one. And a daily roll-up past roughly forty years would have written more than Chrome’s sync quota allows, silently. Both are fixed, both carry a regression test named for the defect it prevents.
The extension this one succeeds
Focus Ledger is a clean-room rebuild of Marinara: Pomodoro Assistant, written by Chris Schmich and released under the MIT licence. It earned 4.8 stars from around 1,600 ratings and had roughly ninety thousand users when it stopped being updated in January 2021.
Nothing was copied. The MIT licence would have permitted taking the code, and it was deliberately not taken — no source, no assets, no sound files. Its published feature list was read as a specification and the implementation was written fresh. That is why the sound kit is synthesised rather than sampled: the original’s thirty-seven audio files could not come across, and generating them instead removed the licence question entirely, shrank the package, and made a volume control free.
Credit where it is owed. Marinara was a good piece of software and its design decisions were mostly right — the three-phase cycle, the minutes-only badge, the run-length-encoded history, the intraday distribution buckets. Where this build differs, it is usually because Manifest V3 forced the change, or because its own reviewers had asked for something for years. The idea is his; the code is not.
Trademark. Pomodoro and The Pomodoro Technique are registered trademarks of Francesco Cirillo. Focus Ledger is not affiliated with, associated with, or endorsed by Francesco Cirillo, and does not use those marks — it is named and described as a focus and interval timer throughout. The mark is named here only to identify the extension being credited above.
Questions
Does Focus Ledger collect any data or make network requests?
No. There is no server, no analytics, no telemetry and no account. It requests no access to any website, runs no code on any page you visit, and cannot see your browsing. The claim is checked mechanically before every release: the package is scanned for network primitives and remote URLs, and a browser test watches all four of its pages and asserts that zero outbound requests are made.
How does cross-device history work without an account?
Only a daily roll-up syncs — one line per day carrying how many intervals you finished and how many minutes they came to. It travels through the Chrome profile sync you already have, so no server of ours is involved and no sign-in exists. Individual sessions stay on the device that recorded them. If you would rather nothing left the device at all, the setting turns off and export and import still work by file.
What happens to a running interval if Chrome shuts the extension down?
Nothing. Manifest V3 reclaims an extension’s service worker after about thirty seconds of idle, which is why a timer built as a running countdown breaks. Focus Ledger stores a deadline instead and recomputes elapsed time whenever it is asked, so a termination mid-interval is a non-event. It is tested that way: a year of simulated use with the timer serialised and revived after every single operation, roughly fifteen thousand simulated shutdowns, with the recorded history matching exactly.
Is it related to the extension it replaces?
Only by inheritance of ideas. Focus Ledger is a clean-room rebuild of Marinara: Pomodoro Assistant — its feature list was read as a specification and the implementation written fresh, with no code and no assets taken, despite the MIT licence permitting it. Marinara is credited by name and linked on this page.
Privacy
The short version: Focus Ledger makes no network requests, asks for no access to any website, and keeps everything in your own browser. There is no analytics, no account and no telemetry. This section is the extension’s privacy policy.
| What | Answer |
|---|---|
| Data collected | None. Focus Ledger collects and transmits no data about you, to us or to anyone. |
| Accounts or sign-in | None. There is no account system, no login and no email field anywhere in the extension. |
| Network requests | None at all. The extension contains no network code — no fetch, no XMLHttpRequest, no WebSocket, no beacon — and loads no remote fonts, scripts or images. Verified by scanning the package and by a browser test that watches every page for outbound requests. |
| Analytics or telemetry | None. No events, no page views, no crash reporting, no advertising identifiers, no third-party scripts. |
| Website access | None. The extension requests no host permissions, runs no content scripts, and has no way to read any page you visit, any URL, or any cookie. |
| Permissions requested | Six, all of them local: alarms, storage, notifications, offscreen, idle and contextMenus. Each is explained below. |
| Where your data lives | Your interval history and the timer itself live in chrome.storage.local in this browser. Your settings live in chrome.storage.sync, which is Chrome’s own profile sync. |
| What syncs, if you let it | Optional and off with one switch: a daily roll-up of one line per day — a count and a total of minutes — through your own Chrome profile sync. No individual session ever syncs, and no server of ours is in the path. |
| Remote code | None. No eval, no remotely hosted scripts, no CDN libraries, no bundled third-party runtime. Every sound is generated on your device rather than downloaded. |
| Selling or sharing data | There is no data to sell, share or transfer, to anyone, for any purpose. |
| Deleting your data | Removing the extension deletes everything with it. You can also clear the history from the extension’s own statistics page, or export it to a file first. |
| Children | Because it collects nothing, it holds no information about anyone, regardless of age. |
The permissions, and why each one exists
| Permission | Why |
|---|---|
alarms | Ends an interval at the right moment and updates the toolbar badge each minute. Manifest V3 reclaims the service worker after about thirty seconds idle, so a timer cannot simply be held in memory. |
storage | Saves your settings and your interval history. Local for history, Chrome profile sync for settings and the optional daily roll-up. |
notifications | Tells you when an interval or a break has finished, with a button to start the next one. |
offscreen | Gives the extension somewhere to play its sounds from. A service worker has no audio and no DOM, so Chrome requires a small offscreen document for it. |
idle | Optional and off by default: pauses a running focus interval when your computer goes idle, so stepping away does not quietly burn an interval. |
contextMenus | Puts start, pause, stop and history controls on the toolbar icon’s right-click menu. |
| Host permissions | None requested. The extension has no access to any website, which is why it can make the claims above at all. |
Questions about any of this: dhseadev@gmail.com
Credits
Built by #DHSeaDev. Code, art, sound synthesis and tests are hand-written for this project with no bundler, no framework and zero third-party runtime dependencies. It succeeds Marinara: Pomodoro Assistant by Chris Schmich as described in The extension this one succeeds above. Pomodoro and The Pomodoro Technique are registered trademarks of Francesco Cirillo; this project is not affiliated with or endorsed by him and does not use those marks.
Built by #DHSeaDev — dhseadev@gmail.com
More from DHSeaDev
Focus Ledger shares its relay-only service worker and pure-logic-module architecture with the rest of the shelf — see KH4 Companion for the same pattern applied to a countdown. The devlog entry A timer that survives being killed covers why a Manifest V3 timer must not run a countdown at all, and the two stress-test defects that falsified the first version of that claim. Everything else I have built is on the projects page.