Browser extension · Project details

Browser noise, replaced byone focused dashboard

A Chrome extension that replaces the new-tab page with a quiet dashboard: a dot-matrix clock, a one-click Pomodoro, bookmarks you actually organise, and widgets you can switch off entirely.

RoleCreator & sole developerTimeline2025 – 2026PlatformChrome MV3 · Vanilla JSStatusv0.2.0 — open beta
CHROME-EXTENSION PREVIEW

Core Tech Stack

JavaScript logo
JavaScript
Chrome MV3 logo
Chrome MV3
CSS3 logo
CSS3
HTML5 logo
HTML5
chrome.storage
IndexedDB
File System API
PREVIEW

Why replace the new tab at all?

2025

You open a new tab dozens of times ...
The replacements that fix the noise...

2026

DESIGNED SOLUTION

One quiet screen with a clock, a timer, and your own bookmarks — every widget beyond that is opt-in. Vanilla ES modules, no build step, no runtime dependencies, no account: the source is what runs.

Log 002 · What it does

one screen, six things on it

01🕒

Dot-Matrix Clock

An LED-style time display built from a CSS grid of dots — no canvas, no font file, no layout thrash. Clicking it starts a Pomodoro, so the most-looked-at element is also the primary action.

CSS GridZero assets
02⏱️

One-Click Pomodoro

Configurable work and break intervals with desktop notifications. Timer state lives in the Application layer, so it survives closing the tab and resumes wherever the next new tab opens.

Notifications APICross-tab state
03🔖

Categorized Bookmarks

Drag-and-drop bookmarks grouped into user-defined categories, with keyboard search over titles and URLs. Stored locally — the extension never asks for a bookmarks-sync permission it doesn't need.

Drag & dropLocal only
04🧩

Toggleable Widgets

Weather, tasks, and calendar are opt-in, not defaults. Each registers itself against the Application layer, so turning one on never touches the clock or the timer — and turning them all off leaves a blank, quiet tab.

Registry patternOpt-in
05🔒

Local-First by Construction

chrome.storage for settings, IndexedDB for bulk data, and periodic backup through the File System API. No account, no telemetry, no remote sync — there is no server to send anything to.

chrome.storageIndexedDB
06📦

Zero Runtime Dependencies

Vanilla ES modules loaded straight by MV3 — no bundler, no transpile step, no node_modules in the shipped extension. What you read in the repo is byte-for-byte what runs in the browser.

No build stepAuditable

Log 004 · Screen by screen

what you actually see

The extension is one page with a handful of states. Each is reachable from the new tab itself — there is no separate options window, no popup, and nothing behind a login.

01 · The new tab
01

The new tab

The default state: dot-matrix clock, date, and nothing else competing for attention.

02 · Pomodoro running
02

Pomodoro running

Clicking the clock starts a session. The countdown replaces the time in the same spot.

03 · Bookmarks
03

Bookmarks

Bookmarks grouped into your own categories, reordered by dragging, filtered by typing.

04 · Widgets on
04

Widgets on

Weather, tasks, and calendar switched on — the fullest the page ever gets.

05 · Settings
05

Settings

Toggle each widget, retheme via CSS variables, and export or restore a backup file.

Log 003 · The layers

four layers, one job each

Dependencies point inward. Presentation and Infrastructure sit on the outside and may both reach Domain — Domain reaches nothing. That rule is what keeps a new widget from touching the clock.

Presentation

Renders the tab and nothing else — no fetching, no persistence, no rules.

Clock viewPomodoro viewBookmark gridWidget shell

Application

Orchestrates use cases. Widgets register here, which is why adding one never edits the clock.

startPomodoroaddBookmarktoggleWidgetrestoreBackup

Domain

depends on nothing

Entities and value objects. Plain JavaScript — knows nothing about Chrome or the DOM.

SessionBookmarkCategoryDuration

Infrastructure

The only layer that talks to the browser. Swap it and the domain never notices.

chrome.storageIndexedDBFile System APIstorage events

Presentation → Application → Domain ← Infrastructure

Appendix · Roadmap

what ships next

Web Store listing

Package v0.2.0 for review so installing stops requiring Developer mode and an unpacked folder.

Widget API for third parties

The registry that widgets already use is internal. Documenting it lets someone add a widget without forking.

Firefox port

MV3 is close enough between browsers that the Infrastructure layer is the only part that should need rewriting — which is the point of putting it there.

A new tab you stop noticing.

No account, no telemetry, no build step — the whole extension is the source you can read, and the best thing it can do is get out of the way.