An Android app for Sky: Children of the Light that tracks the daily shard eruption schedule, sends timely reminders, and lets you customise your launcher icon with a coloured cape.
Based on the incredible webapp by Plutoy.
- Shows the next shard with colour (Red / Black), realm, location, and a live countdown to when it lands
- Displays the current phase: Upcoming → Erupting (started, not yet visible) → Active (visible in-game)
- Lists upcoming occurrences for the next few days with day-group headers
- Tap Skip on any shard day to mark it as done or missed
- The UI, scheduled reminders, and persistent notification all update immediately
- Skips are remembered between sessions and cleared automatically the next day
- Reminders: alerts 1 hour and 5 minutes before each shard lands (respects skips)
- Persistent notification: always-visible status showing the next non-skipped shard, updated live
- Large icon in expanded notifications: red cape for Red shards, white cape for Black shards
- Choose from 12 cape colours in Settings — the launcher icon changes instantly
- Icons use the Android adaptive icon system (circle, squircle, etc. depending on your launcher)
- Optional: keep notifications current even after a device restart by enabling "Start on boot" in Settings
The shard schedule repeats on a fixed cycle determined by the day-of-month in the America/Los_Angeles timezone:
- Colour: odd day → Red, even day → Black
- Realm:
(day − 1) mod 5→ Prairie → Forest → Valley → Wasteland → Vault (repeating) - Group: determines map location, occurrence timing, and which weekdays have no shard
- Occurrences: 3 per day — Red shards every 6 hours, Black shards every 8 hours
No live data or internet connection is required. Remote event overrides are not included.
lib/
shard_calculator.dart Schedule logic (Dart port of sky-shards TypeScript)
home_screen.dart Main UI — hero card, list, skip/undo
notification_service.dart Reminders, persistent notification, skip persistence
settings_screen.dart Cape picker, notification toggles
main.dart App entry + Workmanager background dispatcher
android/app/src/main/
kotlin/.../MainActivity.kt Icon switching (PackageManager)
kotlin/.../BootReceiver.kt Boot-completed receiver → Workmanager
res/mipmap-anydpi-v26/ Adaptive icon XMLs (one per cape colour)
res/drawable-{density}/ Adaptive foreground PNGs (transparent background)
res/mipmap-{density}/ Legacy launcher PNGs (API < 26 fallback)
assets/cape_icons/ 12 source cape PNGs (1024×1024, used in-app and for icon generation)
test/
shard_calculator_test.dart Unit tests for schedule logic
skip_persistence_test.dart Unit tests for skip save/load/prune
Requires Flutter (tested with Flutter 3.x / Dart 3.11). Clone the repo then:
# Get dependencies
flutter pub get
# Run unit tests
flutter test
# Run on a connected device / emulator
flutter run
# Build a release APK
flutter build apk --release --build-number="$(date +%Y%m%d%H)"
# → build/app/outputs/flutter-apk/app-release.apkSchedule logic ported from sky-shards by PlutoyDev.