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

53 lines
1.6 KiB
Markdown

# 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:
```json
{
"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.
```bash
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.