19 Commits

Author SHA1 Message Date
renovate[bot] 7d8c0fce93 chore(deps): update dependency daisyui to v5.6.13 2026-07-04 09:41:07 +00:00
JingleManSweep 921e8f0099 Merge branch 'main' into ui-cosmetic-polish 2026-07-02 22:11:49 +01:00
Louis King 510612d69b feat(web): adopt self-hosted IBM Plex Sans and IBM Plex Mono typography
Replace the OS system font stack with IBM Plex: the variable-weight
sans (100-700, one file per subset) for UI and headings, and Plex Mono
400 for the public keys, packet hashes, and hex that font-mono renders
across the app. Latin + latin-ext subsets only (shipped locales are
en/nl); no italics; mono is never rendered bold here.

Fonts are self-hosted from @fontsource packages via the existing
build.js vendor pipeline (no CDN), copied to static/vendor/fonts/ with
a hard build failure on wrong filenames. Wiring:

- input.css: @theme --font-sans/--font-mono + @font-face rules with
  unicode-ranges taken verbatim from the package CSS; Tailwind v4
  derives the document default from --font-sans, re-fonting daisyUI
  components with no other changes.
- spa.html: preload the latin sans variable woff2 (crossorigin, URL
  identical to the @font-face src) to minimize FOUT.
- charts.js: Chart.defaults.font.family to match (Chart.js otherwise
  uses Helvetica/Arial).
- error.html: name-prepend only; the page stays dependency-free.
- middleware.py: long-term immutable cache for /static/vendor/fonts/
  (stable names referenced from CSS, so ?v= versioning can't apply),
  with a matching test.
- app.css: slight hero-title letter-spacing tightening for Plex at
  display sizes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 21:58:58 +01:00
renovate[bot] 47d1dcec7a chore(deps): update dependency daisyui to v5.6.10 2026-07-02 13:01:43 +00:00
JingleManSweep d90e6c1ff7 Merge branch 'main' into renovate/tailwindcss-monorepo 2026-06-30 22:36:57 +01:00
renovate[bot] 4fa9b9b6ab chore(deps): update dependency daisyui to v5.6.6 2026-06-29 23:16:09 +00:00
renovate[bot] 775c875ef2 chore(deps): update tailwindcss monorepo to v4.3.2 2026-06-29 17:10:38 +00:00
JingleManSweep fa5decde46 Merge branch 'main' into renovate/esbuild-0.x-lockfile 2026-06-12 23:14:26 +01:00
renovate[bot] ad3bc782d7 chore(deps): update dependency esbuild to v0.28.1 2026-06-12 22:12:22 +00:00
renovate[bot] 17d56799cd Update tailwindcss monorepo to v4.3.1 2026-06-12 19:13:24 +00:00
renovate[bot] fc3a11ece3 Update dependency daisyui to v5.5.23 2026-06-07 13:48:51 +00:00
JingleManSweep 09907efa0f Merge branch 'main' into renovate/lit-html-3.x-lockfile 2026-05-19 20:23:06 +01:00
renovate[bot] dda36d70d4 chore(deps): update dependency daisyui to v5.5.20 2026-05-19 00:59:34 +00:00
renovate[bot] b1c58d0124 chore(deps): update dependency lit-html to v3.3.3 2026-05-18 20:47:32 +00:00
renovate[bot] b234183ad3 chore(deps): update tailwindcss monorepo to v4.3.0 2026-05-11 20:34:36 +00:00
renovate[bot] 3bcf691a5a chore(deps): update dependency esbuild to ^0.28.0 2026-05-05 17:41:36 +00:00
Louis King 3057a4841b feat: add esbuild bundling with content-hash cache busting
Bundle SPA JavaScript with esbuild for production builds, generating
content-hashed filenames for immutable caching. Vendor assets (Leaflet,
Chart.js, QRCode.js) get SHA256-based query params. Locale JSON files
get a combined hash version. Falls back to unbuiltsources when dist/
is absent.
2026-05-05 18:27:41 +01:00
renovate[bot] ca92b85b57 Update tailwindcss monorepo to v4.2.4 2026-04-21 19:01:36 +00:00
Louis King 4f202c068b Replace all CDN dependencies with locally built vendor assets
- Add Node.js 22 LTS frontend build stage (package.json, build.js)
- Build Tailwind CSS v4 + DaisyUI v5 via CLI instead of runtime CDN
- Vendor lit-html, Leaflet, Chart.js, QRCode.js locally
- Update Dockerfile with multi-stage Node.js frontend build
- Migrate all DaisyUI v4 CSS variables to v5 syntax in app.css
- Fix dashboard grid layout (static class names for Tailwind JIT)
- Fix map popup transparent background (v5 variable rename)
- Fix leaflet.js.map 404 (include source maps in vendor copy)
- Fix custom page button contrast (remove btn-neutral)
- Replace table-compact with table-sm (DaisyUI v5 rename)
2026-04-20 13:16:13 +01:00