Add native iOS app with App Store preparation

iOS app (ios/, SwiftUI, iOS 17+) in the web UI's styling with the Kamon
logo. It covers everything the web interface does except password, API
tokens and backups: dashboard, peers with search and filter, peer detail
with traffic charts, add/edit peers, one-time config with QR code and
share sheet, server settings with apply bar, app settings, data
retention and log viewer.

- Pairing by QR code or pasted pairing code; token kept in the keychain;
  self-signed certificates are pinned by SHA-256 fingerprint.
- Colour providers and logo drawing are nonisolated: SwiftUI's background
  renderer calls them, and main-actor closures crashed there when the
  camera scanner was open.
- App Store: version 1.0, export compliance, privacy manifest, app icon,
  release.sh (archive and upload), listing text, review notes and 6.9"
  screenshots in ios/AppStore.

Server:
- Full-access API tokens may use settings, logs and restart; password,
  tokens, backup/restore and the admin username stay admin-only.
- Web pairing dialog gains "Copy pairing code".
- The development simulator reports health checks in Linux wording.

Claude-Session: https://claude.ai/code/session_01RAnLbyQZ5ZTA7KqwXP98nw
This commit is contained in:
Daniel Redetzke
2026-10-03 18:34:41 +03:00
parent 1543069089
commit f31bb360c9
36 changed files with 3004 additions and 14 deletions
+5 -4
View File
@@ -69,10 +69,11 @@ func (k *simKernel) Sample(string) ([]PeerSample, error) {
func (k *simKernel) Checks(c *Config) []Check {
return []Check{
{"WireGuard interface", true, "simulated (not Linux)"},
{"IPv4 forwarding", true, "simulated"},
{"nftables rules", true, "simulated"},
{"Uplink", true, "IPv4 via eth0 (simulated)"},
// Same wording as on Linux, so screenshots look like a real server.
{"WireGuard interface", true, c.Server.Interface + " is up"},
{"IPv4 forwarding", true, "net.ipv4.ip_forward=1"},
{"nftables rules", true, "table inet " + appName + " present"},
{"Uplink", true, "IPv4 via eth0"},
}
}