oncall-mobile-android/AGENTS.md
Mikael Hugo d5694a3206 rename: drop all ntfy heritage — package, log tags, brand, URLs (Tier 2)
Full namespace + token rename across the entire fork. Greenfield, no
backwards-compatibility aliasing.

Package rename
  io.heckel.ntfy.*  →  com.centralcloud.oncall.*
  - 71 .kt + 3 .java + 2 .xml + 1 .gradle file contents rewritten
  - source tree moved under app/src/{main,play,fdroid}/java/com/centralcloud/oncall/
  - namespace updated in app/build.gradle
  - Room schema dir app/schemas/io.heckel.ntfy.* removed (regenerates)

Token sweep
  Ntfy/NTFY/ntfy  →  Oncall/ONCALL/oncall  in all code/resource files,
                     including Japanese translations.
  Affected: log-tag constants (NtfyApplication, NtfyMainActivity, ...),
            BroadcastService SEND_MESSAGE / CONNECTION_ALERT_* action names,
            translated string resources mentioning ntfy.

URL hostnames
  ntfy.sh         →  oncall.hugo.dk
  docs.ntfy.sh    →  docs.oncall.hugo.dk
  ntfy.hugo.dk    →  oncall.hugo.dk
  ntfy.example.com, ntfy.ejemplo.es, ntfy.exemple.cat, ntfy.exemplo.com.br,
  ntfy.exemplo.pt → oncall.* equivalents (i18n example URLs)

Deep-link scheme
  ntfy://  →  oncall://

Backup format
  FILE_MAGIC "ntfy2586" → "oncall26" (greenfield, no existing backups to read)

Verified: zero matches for /ntfy/i across the entire source tree, gradle
files, resources, and AGENTS.md.

DNS reminder: app_base_url default is now https://oncall.hugo.dk — point
that DNS record at the same server as ntfy.hugo.dk (or update the
default in BuildConfig if you prefer a different hostname).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 18:56:34 +02:00

1.6 KiB

mobile/android — Centralcloud On-Call Android App

Role

Engineer's single pane for on-call: paging, conference bridge, and agent chat. Centrally configured — one hardcoded URL, everything else pulled from the server.

Bootstrap

App hits GET https://ops.centralcloud.com/api/android/config on first launch (bearer token from QR/deep-link setup). Receives:

{
  "push_url": "https://push.infra.centralcloud.com",
  "push_topic": "oncall-<user>",
  "push_token": "...",
  "agent_url": "https://ops.centralcloud.com/chat/",
  "agent_token": "...",
  "oncall_url": "https://ops.centralcloud.com/oncall-api/",
  "bridge_url": "https://ops.centralcloud.com/bridge"
}

Features

Feature Backend
Push alerts (DND-bypass) oncall (push.infra.centralcloud.com)
Incident acknowledge / resolve centralcloud-ops API
Join conference bridge Twilio + centralcloud-ops /bridge
Chat with ops agent operations-agent (hermes-agent API)
On-call schedule view centralcloud-ops /oncall-api/ → OnCall

Build

Kotlin + Gradle. Nix flake for reproducible builds. Fastlane for signing + internal distribution.

nix develop
./gradlew assembleDebug
fastlane internal   # push to internal track

Forgejo repo: git.infra.centralcloud.com/centralcloud/mobile-android CI: Forgejo Actions → builds APK → pushes to internal registry

Notifications

oncall topic per engineer, centrally assigned. DND-bypass requires IMPORTANCE_MAX notification channel — already configured. Do NOT use Firebase Cloud Messaging — oncall is the push provider.