start: private new-tab dashboard at /start (tasks, notifications, backups/timers, server + containers, service status, trackers, editable links, / search)
All checks were successful
Deploy production / deploy (push) Successful in 2m39s

- home schema: home.links (seeded, owner-editable) and home.snapshots (written by a host collector)
- deploy/home-collector: stdlib Python + systemd user timer (60s) that snapshots /proc stats,
  docker containers, systemd timers, service HTTP checks and ntfy topics via a limited role
- extras/newtab-extension: MV3 new-tab override, zipped to static/newtab-extension.zip
- owner-only pages skip Google Analytics; /trackers/health#body anchor for weigh-ins
This commit is contained in:
2026-10-24 15:21:29 +00:00
parent 61ae72e50b
commit 2bd668bf5e
27 changed files with 18942 additions and 4 deletions

View File

@@ -0,0 +1,19 @@
# New-tab extension
A minimal Chrome / Edge / Brave (Manifest V3) extension that makes every new tab open
[stanrunge.dev/start](https://stanrunge.dev/start), the private dashboard. No permissions,
no tracking: the new-tab page just redirects.
## Install (load unpacked)
1. Download and unzip <https://stanrunge.dev/newtab-extension.zip> (or use this folder from the repo).
2. Open `chrome://extensions` and switch on **Developer mode** (top right).
3. Click **Load unpacked** and pick the unzipped `newtab-extension` folder.
4. Open a new tab. Chrome asks once whether to keep the changed new-tab page: choose **Keep it**.
Log in on stanrunge.dev once in that browser; after that the dashboard opens straight away.
To point it elsewhere, edit the URL in `newtab.html` and `newtab.js`, then press the reload
icon on the extension card. Firefox: set the homepage/new tab with an add-on such as
"New Tab Override" instead.
Rebuild the zip after changes: `bash extras/newtab-extension/build.sh`.

View File

@@ -0,0 +1,13 @@
#!/usr/bin/env bash
# Zip the extension into static/newtab-extension.zip (served at /newtab-extension.zip).
set -euo pipefail
cd "$(dirname "$0")/.."
python3 - <<'PY'
import os, zipfile
out = '../static/newtab-extension.zip'
with zipfile.ZipFile(out, 'w', zipfile.ZIP_DEFLATED) as z:
for name in sorted(os.listdir('newtab-extension')):
if name != 'build.sh':
z.write(os.path.join('newtab-extension', name))
print('wrote static/newtab-extension.zip')
PY

Binary file not shown.

After

Width:  |  Height:  |  Size: 527 B

View File

@@ -0,0 +1,8 @@
{
"manifest_version": 3,
"name": "Stan's start page",
"version": "1.0.0",
"description": "Opens stanrunge.dev/start in every new tab.",
"chrome_url_overrides": { "newtab": "newtab.html" },
"icons": { "128": "icon128.png" }
}

View File

@@ -0,0 +1,17 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>New tab</title>
<!-- Redirect before anything paints; newtab.js does the same as a fallback. -->
<meta http-equiv="refresh" content="0; url=https://stanrunge.dev/start" />
<style>
html {
background: #000;
color-scheme: dark;
}
</style>
<script src="newtab.js"></script>
</head>
<body></body>
</html>

View File

@@ -0,0 +1,3 @@
// MV3 pages can't run inline scripts, so the redirect lives here. Change the URL to point the
// new tab somewhere else (then reload the extension on chrome://extensions).
location.replace('https://stanrunge.dev/start');