feat(settings): surface push.ntfyUrl in /public/settings for the app #79
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/settings-push-ntfy-url"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What & why
The Android app's M7 Part 2 embedded push distributor needs the shard's client-facing ntfy relay URL to build its device topic endpoint — but the M7 Part 1 backend (#78) only used the
NTFY_*vars server-side and never surfaced them to a client. This adds the one small, additive field the app needs.Changes
settings.getPublic()now returns apush: { ntfyUrl }block, sourced fromNTFY_PUBLIC_URLor the firstNTFY_ALLOWED_ORIGINSentry — never the possibly-internalNTFY_BASE_URL.nullwhen unconfigured, so the app simply shows push as unavailable for that shard.PublicSettingsschema with thepushblock; regeneratedswagger-output.json.publicBrand.test.jscovers null /NTFY_PUBLIC_URLwins + trailing-slash trim /NTFY_ALLOWED_ORIGINSfallback (and thatNTFY_BASE_URLnever leaks)..env.exampledocumentsNTFY_PUBLIC_URL(BACKEND_DESIGN.md updated in the docs PR).Additive, non-sensitive, forward-compatible (an older client just ignores the field; the app decodes a missing
pushto null). Full server suite green (250 pass),npm run swaggerclean.Companion PRs
RunicGateway/Android-appM7 Part 2 (consumes this field).RunicGateway/docs(BACKEND_DESIGN.md + PLAN.md M7 Part 2 landed).AI disclosure
Authored with Claude Code (Claude Opus). Commits carry a
Co-Authored-By: Claudetrailer per org policy.🤖 Generated with Claude Code
The Android app's embedded push distributor (M7 Part 2) needs the shard's client-facing ntfy relay URL to build its device topic endpoint, but the M7 Part 1 backend only used the NTFY_* vars server-side and never surfaced them. Add a `push: { ntfyUrl }` block to settings.getPublic(), sourced from NTFY_PUBLIC_URL or the first NTFY_ALLOWED_ORIGINS entry (never the possibly internal NTFY_BASE_URL); null when unconfigured, so the app shows push as unavailable for that shard. Additive, non-sensitive, forward-compatible. - Extend the PublicSettings swagger schema; regenerate swagger-output.json. - publicBrand.test.js: cover null / NTFY_PUBLIC_URL / NTFY_ALLOWED_ORIGINS. - Document NTFY_PUBLIC_URL in .env.example and (docs PR) BACKEND_DESIGN.md. Full server suite green (250 pass). Co-Authored-By: Claude <noreply@anthropic.com>