handbook alignment: profile.updated mirror, health contract, Synapse gateway
Handbook gaps closed (10-platform auth/health/notifications):

- webhooks: handle user.profile_updated — mirror the gnexus-auth profile
  into navi_users (name, contact fields, avatar_url — new column, boot
  migration); role/permissions keep their dedicated events
- auth: avatar_url now flows through the login upsert and the API-token
  resolution path
- /health: status is now the aggregate of the sub-checks (degraded embed
  or hive no longer reports plain ok); embed probe cached for 10 s; body
  grew the machine-readable checks{} map, legacy embed/hive payloads kept
- Synapse: s2s delivery gateway — POST /webhooks/synapse (both spellings),
  per-user delivery secrets (synapse_targets, Fernet-encrypted, shown
  once), verification via gnexus-synapse v0.1.2 client lib, idempotent
  event ids; deliveries are verified and logged for now — navi generates
  no outbound events by decision; web-push stays as the local browser
  channel
- webclient settings: Synapse deliveries panel (add/revoke targets)
1 parent 235df5b commit 8c26abfb45ee57f369b74abf46469b465c609d83
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored 1 day ago
Showing 28 changed files
View
navi/api/routes/auth.py
View
navi/api/routes/health.py
View
navi/api/routes/synapse.py 0 → 100644
View
navi/api/routes/webhooks.py
View
navi/auth/_ddl.py
View
navi/auth/deps.py
View
navi/main.py
View
navi/synapse/__init__.py 0 → 100644
View
navi/synapse/_ddl.py 0 → 100644
View
navi/synapse/store.py 0 → 100644
View
pyproject.toml
View
tests/integration/test_api_routes.py
View
tests/unit/api/test_health.py 0 → 100644
View
tests/unit/api/test_synapse.py 0 → 100644
View
tests/unit/api/test_webhooks.py
View
tests/unit/auth/test_api_tokens.py
View
webclient/dist/assets/index-Cue1zh8w.js 100644 → 0
Not supported
View
webclient/dist/assets/index-DcFugK2V.css 0 → 100644
View
webclient/dist/assets/index-DdLyYrHk.js 0 → 100644
Not supported
View
webclient/dist/assets/index-DwW8GpWa.css 100644 → 0
View
webclient/dist/index.html
View
webclient/dist/sw.js
View
webclient/src/api/index.js
View
webclient/src/components/settings/CreateTargetModal.vue 0 → 100644
View
webclient/src/components/settings/SettingsView.vue
View
webclient/src/components/settings/SynapseTargetsPanel.vue 0 → 100644
View
webclient/src/stores/synapseTargets.js 0 → 100644
View
webclient/tests/unit/api/index.test.js