From 63c0dfb9d9b8f12b7749999cd3b583422a30a782 Mon Sep 17 00:00:00 2001 From: Dmitrii Iurco Date: Thu, 28 May 2026 06:58:24 -0400 Subject: [PATCH] docs: document Services UI refactor in wiki Co-Authored-By: Claude Sonnet 4.6 --- Personal Internet Cell – Project Wiki.md | 69 +++++++++++++++++++++--- 1 file changed, 62 insertions(+), 7 deletions(-) diff --git a/Personal Internet Cell – Project Wiki.md b/Personal Internet Cell – Project Wiki.md index cf9a591..cd345eb 100644 --- a/Personal Internet Cell – Project Wiki.md +++ b/Personal Internet Cell – Project Wiki.md @@ -16,12 +16,13 @@ The goal is to give a person full ownership of their core internet services on t 4. [Authentication](#authentication) 5. [API Reference](#api-reference) 6. [DDNS](#ddns) -7. [Service Store](#service-store) -8. [Cell-to-Cell Networking](#cell-to-cell-networking) -9. [Extended Connectivity](#extended-connectivity) -10. [Security Model](#security-model) -11. [Testing](#testing) -12. [Development](#development) +7. [Services UI](#services-ui) +8. [Service Store (Add-ons)](#service-store-add-ons) +9. [Cell-to-Cell Networking](#cell-to-cell-networking) +10. [Extended Connectivity](#extended-connectivity) +11. [Security Model](#security-model) +12. [Testing](#testing) +13. [Development](#development) --- @@ -247,7 +248,61 @@ Supported providers: `pic_ngo`, `cloudflare`, `duckdns`, `noip`, `freedns`. --- -## Service Store +## Services UI + +### Navigation + +The left-hand navigation contains a **Services** group (previously labelled "Store"). Both admin and peer users see this group. It has three collapsible sub-items: **Email**, **Calendar**, and **Files**. + +Legacy paths redirect to their new canonical locations: + +| Old path | New path | +|---|---| +| `/email` | `/services/email` | +| `/calendar` | `/services/calendar` | +| `/files` | `/services/files` | +| `/store` | `/services` | + +### Services page (`/services`) + +The top of the page shows a **Built-in** section with three cards — Email, Calendar, and Files. Each card has a **Manage** link that navigates to the corresponding sub-page. + +Below the Built-in section, the optional add-on store lists third-party services that can be installed or removed (see [Service Store (Add-ons)](#service-store-add-ons)). + +### Service sub-pages — admin view + +Each sub-page at `/services/email`, `/services/calendar`, and `/services/files` shows: + +1. **Connection info** — hostnames, ports, and protocol details (e.g. IMAP/SMTP/Webmail, CalDAV/CardDAV, WebDAV/Filegator). +2. **Service status** — current running state fetched from the API. +3. **Users list** — accounts registered with that service. +4. **Inline config form** — editable fields for that service's settings: + - Email: ports and mail domain. + - Calendar: port and data directory. + - Files: ports, data directory, and per-user quota. + +Config forms save automatically with an 800 ms debounce after the last change. Dirty state persists through navigation: if a user edits the form and navigates away before the debounce fires, clicking **Apply Now** on return still saves the pending changes. + +### Service sub-pages — peer view + +Peers access the same URLs without an admin gate. The peer view shows only: + +- Connection info (hostnames, ports, copy buttons). +- Personal credentials for that service (email address, CalDAV username, or WebDAV username), fetched from `/api/peer/*`. + +The config form and users list are not shown to peers. + +### Settings page + +The Email, Calendar, and Files configuration forms have been removed from the Settings page. Settings now covers: Identity, DDNS, Network (DNS/DHCP/NTP), WireGuard, Routing & Firewall, Vault & Trust, and Backup & Restore. + +### API change + +`GET /api/config` now includes an `installed_services` field — a dict keyed by service ID — listing services currently installed on the cell. + +--- + +## Service Store (Add-ons) `ServiceStoreManager` fetches a manifest index from `http://git.pic.ngo/roof/pic-services/raw/branch/main/index.json`. Each manifest declares: - Container image