From edde9e441fb6b84e9d56215d6e2a8d9338b8f962 Mon Sep 17 00:00:00 2001 From: Christophe Besson Date: Tue, 11 Aug 2026 12:40:13 +0200 Subject: feat(hub): Phase 10.5–10.8, 10.10 — notifications, settings, search, version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 10.5: Notification model + CRUD API (list, mark read, mark all read) Triggered on: group invite, role change, suspend/unsuspend - 10.6: SettingsPage shows role, per-group notification mute (localStorage) - 10.7: GET /v1/groups?q= search filter (ilike on name) - 10.8: NotificationFeed on home page + bell with unread badge in navbar - 10.10: GET /v1/hub/version endpoint for client update checks - 8 new tests (test_notifications.py), 155 total Co-Authored-By: Claude Opus 4.6 --- .../meshbay-hub/src/meshbay_hub/static/style.css | 64 ++++++++++++++++++++++ 1 file changed, 64 insertions(+) (limited to 'packages/meshbay-hub/src/meshbay_hub/static/style.css') diff --git a/packages/meshbay-hub/src/meshbay_hub/static/style.css b/packages/meshbay-hub/src/meshbay_hub/static/style.css index b1b1a7e..3aea648 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/style.css +++ b/packages/meshbay-hub/src/meshbay_hub/static/style.css @@ -1003,3 +1003,67 @@ button:disabled { opacity: 0.5; cursor: not-allowed; } .th-type, .td-type { display: none; } .th-date, .td-date { display: none; } } + +/* ── Notification bell ───────────────────────────────────────────────────── */ + +.nav-notif { + position: relative; + color: var(--text); + text-decoration: none; + font-size: 1.1rem; + margin-right: 4px; +} +.notif-badge { + position: absolute; + top: -6px; + right: -8px; + background: var(--danger); + color: #fff; + font-size: 0.65rem; + padding: 1px 5px; + border-radius: 10px; + font-weight: 700; +} + +/* ── Notification feed ───────────────────────────────────────────────────── */ + +.notif-feed { + margin-bottom: 24px; +} +.notif-feed h3 { + margin: 0 0 8px; + font-size: 1rem; +} +.notif-item { + display: flex; + align-items: center; + gap: 8px; + padding: 8px 12px; + border-radius: var(--radius); + background: var(--bg-surface); + margin-bottom: 4px; + cursor: pointer; + border: 1px solid var(--border); +} +.notif-item:hover { + background: var(--bg-raised); +} +.notif-unread { + border-left: 3px solid var(--primary); + font-weight: 600; +} +.notif-kind { + font-size: 0.75rem; + color: var(--text-secondary); + text-transform: uppercase; + white-space: nowrap; +} +.notif-text { + flex: 1; + font-size: 0.9rem; +} +.notif-time { + font-size: 0.75rem; + color: var(--text-secondary); + white-space: nowrap; +} -- cgit v1.2.3