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>
53 lines
1.6 KiB
Markdown
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.
|