Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user