Here’s where the time went.
GONE is a private attention mirror for Chrome. It replaces the New Tab page with a factual view of where your active browser time went—without reading page contents or judging what you were doing.
- Last hour, Last 3 hours, and Today views.
- One plain-language reflection using recognizable site favicons.
- First and last observed activity times.
- Total observed active-tab time, places, and average time per place.
- A domain breakdown with Chrome-cached site favicons.
- Previous-period comparisons, an activity timeline, and a factual visit-shape breakdown.
- Activity combined across every Chrome window as focus moves between them.
Only the focused Chrome window is counted. Background windows are not treated as simultaneous attention.
No Node.js or build tools are required.
- Open the latest GONE release.
- Download
GONE-MVP.zipfrom Assets. - Extract the ZIP to a permanent folder. Do not delete that folder after loading it.
- Open
chrome://extensions. - Enable Developer mode in the top-right corner.
- Click Load unpacked.
- Select the extracted folder containing
manifest.json. - Open a new tab, click Continue, and approve tab and favicon access.
You need:
- Chrome or another Chromium-based browser;
- Node.js 20 or newer;
- npm.
git clone https://github.com/randomness11/gone.git
cd gone
npm install
npm run buildThe production extension is created in dist/.
- Open
chrome://extensions. - Enable Developer mode in the top-right corner.
- Click Load unpacked.
- Select the generated
gone/dist/folder—not the repository root. - Confirm that the GONE card shows version
0.6.2. - Open a new tab.
- Click Continue and approve tab and favicon access.
Browse regular websites for a few minutes, including switching between windows if you use more than one. Open a new tab to see the reflection.
The page updates automatically as new timing data is stored. A first-time installation cannot reconstruct activity from before it was installed.
Pull and rebuild the project:
git pull
npm install
npm run buildThen return to chrome://extensions and click the Reload button on the GONE card.
Important: the reflection data updates automatically, but Chrome does not automatically reload changed extension code. After pulling or editing source files, rebuild and use the extension-card Reload button.
After tab access is granted, GONE records timestamped active-tab intervals locally. It reacts to:
- tab activation and navigation;
- Chrome window focus changes;
- tab closure;
- browser startup;
- a one-minute safety checkpoint.
GONE excludes its own New Tab page, Chrome-internal pages, unsupported URLs, and time when Chrome has no focused window. If the background worker sleeps, a single unchecked segment is capped at five minutes to prevent inflated totals.
Intervals are retained locally for eight days. The displayed values are conservative observed active-tab time, not proof that every second was spent reading the page.
The attention mirror runs entirely on the device. It does not call OpenRouter, an AI model, a third-party logo service, or any external API.
Stored locally:
- normalized domains;
- redacted tab titles;
- timestamped active-tab intervals;
- a compact current-tab snapshot used by the extension.
Favicons are read from Chrome's local cache when the breakdown is displayed; GONE does not send domains to a logo provider.
GONE never reads:
- page contents;
- form inputs, messages, cookies, passwords, or keystrokes;
- Chrome browsing history.
There are no content scripts, host permissions, or browsing-history permissions.
| Permission | Why it is used |
|---|---|
storage |
Stores the local attention ledger and extension state. |
alarms |
Runs the one-minute timing checkpoint. |
tabs (requested at runtime) |
Reads the active tab's URL and title so time can be assigned to a normalized domain. |
favicon (requested at runtime) |
Displays Chrome's cached site icons in the breakdown. |
- Confirm you clicked Continue and granted access.
- Browse normal
http://orhttps://pages while Chrome is focused. - Wait at least one minute or switch tabs once, then open a new tab.
- Chrome settings pages and the GONE page itself are intentionally excluded.
GONE counts the window you are actively using. Switch focus to the other Chrome window and browse normally; its activity will join the same local timeline. Tabs left open in an unfocused window do not accumulate time.
- Run
npm run buildagain. - Verify Chrome loaded the
dist/folder. - Click Reload on the extension card at
chrome://extensions. - Open a fresh New Tab.
Open chrome://extensions, find GONE, and inspect the error shown on its card. Make sure the selected folder contains manifest.json directly; if it does not, you selected the wrong folder.
If GONE has helped you see where your browser time goes, you can buy me a coffee.
npm run dev # local Vite preview
npm run typecheck # TypeScript validation
npm run lint # ESLint
npm test # Vitest suite
npm run build # production extension in dist/Before submitting a change, run:
npm run lint
npm run typecheck
npm test
npm run buildpublic/manifest.json Manifest V3 configuration and permissions
src/background/index.ts active-tab tracking and checkpoints
src/dashboard/DashboardApp.tsx onboarding and New Tab states
src/dashboard/components/AttentionMirrorView.tsx reflection, ranges, and domain chart
src/lib/attention.ts interval ledger and range summaries
src/lib/privacy.ts title and URL sanitization