Skip to content

alphabt/mortality

Repository files navigation

Mortality

Your age, counting up live on every new tab.
A quiet, recurring reminder that time is passing.

Try Mortality online

Install · Privacy · Languages · Development · Support

Mortality's light new-tab view showing a live age of 36.234148475, a life-elapsed bar, a birth date of April 18, 1990, and 44% of 82 years lived

One live reading, its context, and room to breathe.

Install

Choose your browser. The store versions replace the new tab page; the online demo runs as an ordinary web page.

Install Mortality from the Chrome Web Store    Install Mortality from Microsoft Edge Add-ons    Install Mortality from Firefox Browser Add-ons

Demo settings stay in this browser's local storage. Only the installed extension becomes your new tab page.

One number, several perspectives

Mortality starts with fractional age, ticking in real time. Switch to calendar age, a live next-birthday countdown, days or weeks lived, estimated time left, lifetime progress, or a life-in-weeks view.

  • Estimates, not predictions. Remaining-life views condition expected lifespan on your current age, using an explicitly selected World (UN 2023) or United States (SSA 2023) baseline. You can also set a custom life expectancy.
  • Personal, not busy. Follow the system light or dark theme, choose a contrast-checked preset, set custom colors, change the numeral style, or add a quiet reflection line beneath the counter.
  • Accessible by design. Mortality supports keyboard use and screen readers, meets WCAG 2.1 AA, and provides a prefers-reduced-motion path.

Mortality's dark life-in-weeks view showing 1,890 lived weeks in light cells, the current week in blue, and 2,374 future weeks in dark cells through an 82-year life expectancy

Life in weeks shows lived time, the present week, and what may remain.

Privacy

Mortality requests only the browser's storage permission. Birth details and preferences stay in extension-local storage unless you explicitly enable browser-account sync.

  • No Mortality account or app backend. There are no analytics or ads, and the developer cannot access your settings.
  • Sync is optional and scoped. One opt-in syncs your theme, counter mode, numeral style, reflection setting, and language. A second can also sync your birth date and time, birth time zone, sex at birth, and selected life-expectancy source or custom years through your browser vendor's sync service.
  • You keep control. The privacy policy explains data controls, export and import, and how to remove synced data.

Languages

Mortality follows the browser or operating-system locale by default and falls back to English. You can choose another language during setup or under Settings → Display. It ships all 55 Chrome-supported extension locales.

View all 55 locale codes

ar, am, bg, bn, ca, cs, da, de, el, en, en_AU, en_GB, en_US, es, es_419, et, fa, fi, fil, fr, gu, he, hi, hr, hu, id, it, ja, kn, ko, lt, lv, ml, mr, ms, nl, no, pl, pt_BR, pt_PT, ro, ru, sk, sl, sr, sv, sw, ta, te, th, tr, uk, vi, zh_CN, and zh_TW.


Development

The shipped extension has no build step and no runtime dependencies. The files in src/ are the extension; npm tooling is for development only, and npm run zip packages only src/.

Start the preview

Install the development dependencies once, then start the local preview:

npm install
npm run dev

In the Copilot app, Run does the same thing and opens the preview in the integrated browser. It starts at http://127.0.0.1:4173/, chooses the next available port when needed, and uses the same local-storage fallback as an ordinary HTTP preview.

Load the extension

Use a real browser to test new-tab behavior:

  • Chrome / Edge: open chrome://extensions, enable Developer mode, select Load unpacked, and choose the src/ folder.
  • Firefox: open about:debuggingThis FirefoxLoad Temporary Add-on and choose src/manifest.json.

Edit a file, then reload the extension to see the change.

Check and package

Task Command
Check formatting npm run format:check
Run the Vitest suite npm test
Re-run tests on change npm run test:watch
Generate a coverage report npm run test:coverage
Run the Chromium smoke test npm run test:chromium
Package the extension npm run zip

Vitest runs against jsdom, covering storage and theming, view renderers, and the full setup → counter → settings flow. Before the real-browser smoke test, install Playwright's pinned Chromium once:

npx playwright install chromium
npm run test:chromium

Packaging produces artifacts/mortality-v<version>.zip, with the version read from src/manifest.json. CI checks formatting, Vitest, the Chromium extension smoke test, and packaging on every pull request through the ci workflow.

Release and publish

Pushing a v* tag runs the release workflow. It reuses the CI gate, packages the extension once, publishes a GitHub Release, and submits that exact asset to the Chrome, Edge, and Firefox stores using scoped store API keys held in repository secrets, never an interactive store login.

Manual or subset publishes use publish-stores. Setup, required secrets, and manual runs are documented in the publish-to-stores skill.

Support

For bugs, questions, or privacy support, open an issue in the public Mortality support tracker. Issues are public, so do not include your birthday or other personal information.

License

Mortality is available under the MIT License © alphabt.

Releases

Packages

Used by

Contributors

Languages