oncall-mobile-android/AGENTS.md

54 lines
1.6 KiB
Markdown
Raw Normal View History

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
# 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.