- index.html: replace Image() probe with fetch(no-cors) + AbortController
timeout. fetch resolves for any network response (incl. 4xx/5xx) so
resolve -> 'up', reject/timeout -> 'down'. Fixes the bug where 401/404
services were marked green.
- services.json: add Homepage service under 'dev' (was missing; the
homepage is one of the public homelab services). Now 21 services.
- services.json: fix ethereum category icon (' Ξ' -> 'Ξ') leading space.
- .gitignore (new): ignore /.playwright-mcp/ and services-page.png.
- git rm --cached the three stray dev artifacts so they leave the repo.
- Add services.json: hand-maintained source of truth with 20 public
homelab services across 7 categories (edge, observability, media,
downloads, ethereum, ai, dev), each with name/url/desc/icon.
- Rewrite index.html: Services section rendered client-side from
services.json with a tiny up/down status probe (green dot = up,
grey = down/unreachable; graceful fallback on CORS/offline).
Keep a small Projects section linking the GitHub orgs so the old
content is not lost.
- Add services grid + status dot styles to styles.css.
- Dockerfile: COPY services.json into the nginx html root.