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

An interval ring around a rising ledger A broken circular ring drawn in a light prism stroke, open at the upper right to show an interval in progress. Inside it stand three bars of increasing height, the tallest on the right, resting on a short baseline — a ledger of finished intervals growing over time.

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.

WhatAnswer
Data collectedNone. Focus Ledger collects and transmits no data about you, to us or to anyone.
Accounts or sign-inNone. There is no account system, no login and no email field anywhere in the extension.
Network requestsNone 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 telemetryNone. No events, no page views, no crash reporting, no advertising identifiers, no third-party scripts.
Website accessNone. 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 requestedSix, all of them local: alarms, storage, notifications, offscreen, idle and contextMenus. Each is explained below.
Where your data livesYour 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 itOptional 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 codeNone. 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 dataThere is no data to sell, share or transfer, to anyone, for any purpose.
Deleting your dataRemoving 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.
ChildrenBecause it collects nothing, it holds no information about anyone, regardless of age.
The permissions, and why each one exists
PermissionWhy
alarmsEnds 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.
storageSaves your settings and your interval history. Local for history, Chrome profile sync for settings and the optional daily roll-up.
notificationsTells you when an interval or a break has finished, with a button to start the next one.
offscreenGives 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.
idleOptional and off by default: pauses a running focus interval when your computer goes idle, so stepping away does not quietly burn an interval.
contextMenusPuts start, pause, stop and history controls on the toolbar icon’s right-click menu.
Host permissionsNone 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.