Email, calendar, and files are now optional store services, not always-on
builtins. Updated README, QUICKSTART, Wiki, and service-developer-guide to
reflect: dynamic nav, optional service install flow, correct egress
identifiers (wireguard_ext/default vs wireguard/cell_internet), removed
builtin/store distinction from manifest reference, 7 core containers.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Steps 3-6 were implemented since this doc was last written. Several
technical details had drifted from the actual code:
- Provision response shape was shown as echoing the password; corrected
to {provisioned: true} to match the security model (passwords are
never returned after creation)
- Restore command flag corrected from -C / to -C <path>; archives use
relative paths so the extraction target must be explicit
- Added ServiceRegistry validation chokepoint note: subdomain and
backend are validated at registration time, before Caddyfile
generation, not at request time
- Added Admin UI note: Accounts tab appears on service pages
- Added -- separator security note for backup command construction
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Tests assumed write to /nonexistent/... fails, but CI runs as root where
Linux allows creating any path. Use unittest.mock.patch on builtins.open
with OSError side_effect so the test is environment-independent.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>