v1.56.95: notification bell → SolidJS dropdown island (no navigation). New GET /api/notifications returns the viewer's 20 most-recent notifications as JSON (requireAccount-style session via getAccountSessionFromRequest → 401 when absent; loadNotifications + freeNotifications; JSON built with adminJsonStr/api.jsonEscapeStr — the brief's writeJsonStringAlloc doesn't exist). pages.zig appendNavBell now emits <span class=notif-bell-mount data-unread> wrapping a no-JS fallback <a href=/notifications> bell; islands/src/components/NotificationBell.tsx renders an in-place dropdown (fetch-on-open, mark-all-read, per-row mark-read via existing GET /notifications/:id/read, outside-click close) and replaces the fallback on hydration. mountNotificationBells added to index.tsx mount(). Dropped date-fns for a tiny inline relTime() to keep the bundle lean (+5.5KB only: 227→232KB). Dropdown CSS appended to islands/src/index.css (global nav scope, global tokens). writePublicHtml injects islands.js on authenticated pages (guarded against double-inject) so the bell hydrates everywhere the nav shows it; logged-out pages stay lean. Rebuilt + copied dist/islands.js → src/web/static. musl ReleaseSafe build exit 0; tsc clean; zig build test 646 pass / 1 pre-existing team-tier live-PG fail.

dev · 4 weeks ago · 2026-06-17 · 19.4 MB

session: kepr UI fixes · agent: claude-opus-4-8

$ koh steal kepr.uk/kepr@656543fec9dd
·
← 35a19da04189 598a0bf68fad →
⇓ download .face