An easy-to-host PDS on the ATProtocol, iPhone and MacOS. Maintain control of your keys and data, always.
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: relay URL configuration — runtime-configurable relay with Keychain persistence #53

open opened by malpercio.dev targeting main from relay-url-config

Summary#

  • Replace compile-time RELAY_CLIENT global static with runtime-configurable relay_client: OnceLock<RelayClient> on AppState; all four Tauri commands migrated to state-based access
  • Add get_relay_url / save_relay_url IPC commands with URL validation (normalize_relay_url), live health-check against /xrpc/_health, and Keychain persistence (store_relay_url / load_relay_url)
  • Add RelayConfigScreen.svelte onboarding step — pre-fills https://relay.ezpds.com, validates format, shows loading spinner and inline errors; returning users skip the screen on launch
  • Startup restore: run() reads relay URL from Keychain and initializes AppState before any command runs

Test plan#

  • cargo test — 6 new tests pass (normalize_relay_url_*, get_relay_url_returns_none_before_save, relay_url_round_trips_through_keychain); 2 pre-existing device_key sandbox failures unrelated to this change
  • cargo clippy -- -D warnings — clean
  • cargo fmt --all --check — clean
  • pnpm check and pnpm build — 0 errors
  • iOS Simulator smoke test — see docs/test-plans/2026-03-27-relay-url-config.md
Labels

None yet.

assignee

None yet.

Participants 1
AT URI
at://did:web:malpercio.dev/sh.tangled.repo.pull/3mi4trautru22
Diff #0

No differences found between the selected revisions.

History

1 round 0 comments
sign up or login to add to the discussion
malpercio.dev submitted #0
patch application failed: error: No valid patches in input (allow with "--allow-empty")
expand 0 comments