hephaestus/docs/how-to
Erich Blume 11aa25c9f4
All checks were successful
Build / validate (pull_request) Successful in 6m11s
feat(heph-tui,hephd): surface sync health (last-sync age, conflicts, auth failure)
A spoke could be silently failing to sync (expired token → 401, or hub
unreachable) with the only signal buried in the daemon log. Now:

- hephd tracks SyncHealth (last attempt/success time, last error, auth-failure
  flag) from the background sync loop and sync.now, classifying a 401 as an auth
  failure. sync.status returns it plus the pending merge-conflict count.
- heph-tui shows a live status-line indicator (spoke only): '⟳ <age>' since the
  last good sync, red '⚠ auth' when re-login is needed, '⚠ offline' when the hub
  is unreachable, and '⚠ N conflicts' when conflicts are pending. The event loop
  polls on a 2s tick so the age advances and failures appear while idle.
- docs: recommended Authentik access/refresh token validity to stop frequent
  re-logins (with the iOS PWA localStorage-eviction caveat).

Closes the 'Add hub connection status to heph-tui' and 'Spoke sync health:
surface unhealthy state instead of silent 401 spam' backlog items.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 10:19:11 -07:00
..
agent-change-process.md
heph-pwa.md doc(heph-pwa): production runbook — host the app from the hub (indri) with OIDC 2026-06-04 17:17:25 -07:00
host-heph-pwa.md feat(heph-tui,hephd): surface sync health (last-sync age, conflicts, auth failure) 2026-06-06 10:19:11 -07:00
how-to.md doc(heph-pwa): production runbook — host the app from the hub (indri) with OIDC 2026-06-04 17:17:25 -07:00
import-todoist.md
install-heph.md
run-the-daemon.md C2(hephd-self-update): impl service-env-forge-access (public HTTPS, cargo on PATH) 2026-06-04 14:46:34 -07:00
self-update.md C2(hephd-self-update): finalize — single self-update how-to + changelog 2026-06-04 15:00:37 -07:00
set-up-sync-hub.md feat(heph-tui,hephd): surface sync health (last-sync age, conflicts, auth failure) 2026-06-06 10:19:11 -07:00