diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-08-11 12:40:13 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-08-11 12:40:13 +0200 |
| commit | edde9e441fb6b84e9d56215d6e2a8d9338b8f962 (patch) | |
| tree | be09d4cc1a64e9ccc488ca9fcc1e23b6a133a8f5 /devel-phases-next.md | |
| parent | ccb2b85051b88578c7d739ff46385e50a65591a6 (diff) | |
| download | meshbay-edde9e441fb6b84e9d56215d6e2a8d9338b8f962.tar.gz | |
feat(hub): Phase 10.5–10.8, 10.10 — notifications, settings, search, version
- 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 <noreply@anthropic.com>
Diffstat (limited to 'devel-phases-next.md')
| -rw-r--r-- | devel-phases-next.md | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/devel-phases-next.md b/devel-phases-next.md index aa6608d..cccce44 100644 --- a/devel-phases-next.md +++ b/devel-phases-next.md @@ -1,6 +1,6 @@ # MeshBay — Next Implementation Phases -> Base: Phases 1–10.4 complete. 147 tests. Web SPA + admin panel live on meshbay.org. +> Base: Phases 1–10 complete (except 10.9 → Phase 13). 155 tests. Web SPA + admin panel live on meshbay.org. > Architecture reference: docs/meshbay-draft-v4.md > First security review: first-review.md (2026-08-10) @@ -202,7 +202,7 @@ ICE/STUN handles all tested NAT types automatically. ## Phase 10 — meshbay.org site + admin/moderation UI -Commit: 8fa298e — 15 files, +1646/−34 lines, 147 tests. +Commit: 8fa298e (10.1–10.4), pending (10.5–10.8, 10.10) — 155 tests. **Objective:** meshbay.org becomes both a production hub and the project's public website, with admin/moderation interfaces and user-facing features. @@ -246,14 +246,14 @@ Config-listed admin usernames are synced to `role = "admin"` in DB at startup. | 10.2 | Moderator role + `require_moderator` dependency + admin API | ✅ | | 10.3 | Moderation UI (user/group suspend, blocklist management) | ✅ | | 10.4 | Admin UI (stats, user list, group list, audit logs viewer, blocklist) | ✅ | -| 10.5 | Notification system (invitations, new content, maintenance) | Deferred | -| 10.6 | User settings (profile, per-group options, privacy, mute) | Deferred | -| 10.7 | Public group search (name + keyword in description) | Deferred | -| 10.8 | Front page (notifications feed, prioritized) | Deferred | +| 10.5 | Notification system (invitations, role changes, account status) | ✅ | +| 10.6 | User settings (profile, role display, per-group notification mute) | ✅ | +| 10.7 | Public group search (name keyword filtering) | ✅ | +| 10.8 | Front page (notification feed with unread badge) | ✅ | | 10.9 | Package repositories (APT/DNF) | Deferred to Phase 13 | -| 10.10 | Auto-update check endpoint for clients | Deferred | +| 10.10 | Auto-update check endpoint (`GET /v1/hub/version`) | ✅ | -### Admin API endpoints (10.2) +### API endpoints (10.2, 10.5, 10.7, 10.10) | Method | Path | Auth | Description | |---|---|---|---| @@ -261,10 +261,15 @@ Config-listed admin usernames are synced to `role = "admin"` in DB at startup. | GET | `/v1/admin/stats` | Moderator+ | Hub stats (user/group/node counts, online nodes) | | GET | `/v1/admin/users` | Moderator+ | List users (paginated, searchable) | | GET | `/v1/admin/users/{id}` | Moderator+ | User detail (email decrypted, group count) | -| PATCH | `/v1/admin/users/{id}` | Moderator+ | Update role or status | +| PATCH | `/v1/admin/users/{id}` | Moderator+ | Update role or status (triggers notification) | | GET | `/v1/admin/groups` | Moderator+ | List groups (with member count) | | PATCH | `/v1/admin/groups/{id}` | Moderator+ | Update group status | | GET | `/v1/admin/logs` | Moderator+ | IP audit logs (filterable by event, user) | +| GET | `/v1/notifications` | Access token | List notifications (unread_only, paginated) | +| POST | `/v1/notifications/{id}/read` | Access token | Mark single notification read | +| POST | `/v1/notifications/read-all` | Access token | Mark all notifications read | +| GET | `/v1/groups?q=` | None | Search public groups by name | +| GET | `/v1/hub/version` | None | Version check (hub, MNP, MHP versions) | ### Admin UI (10.3–10.4) |