| Filename | Latest commit message | Latest commit date |
|---|---|---|
The developer's request of 10 Nov 2026, decided in ADR 0042: on mobile data every app holds its sync back, rows and files alike, and asks. halkyon_app becomes an Android plugin, its first native code, registered in every app by Flutter: HalkyonAppPlugin.java says which network the device is on and whether it is metered as Android has it (no NET_CAPABILITY_NOT_METERED: cellular, a phone's hotspot, Wi-Fi marked metered). Java, so it applies no Kotlin Gradle Plugin. MobileDataGate, one per device, holds the setting (Ask first, Sync without files, Sync everything; kept in <app support>/mobile_data.json), the network, and the person's answer, which holds until the device moves to another network or off a metered one. SyncService asks it before each sync: held back, nothing goes, the status counts what waits and asks; an answer or Wi-Fi syncs at once, and syncing now while held back is Sync now. Each app's frame shows the banner above every tab, in halkyon_ui's new NavigationFrame.banner slot (On mobile data · 3 changes waiting, with Not now, Without files and Sync now); the Sync card in Settings chooses the setting on a phone and says when files wait for Wi-Fi. Learn's files neither go up nor come down while held back. Whats-New: On mobile data the app no longer syncs by itself: a banner asks first, and Settings › Sync chooses whether to ask, sync without files, or sync everything. Whats-New-De: Mit mobilen Daten synchronisiert die App nicht mehr von selbst: Ein Hinweis fragt zuerst, und unter Einstellungen › Synchronisierung wählst du, ob sie fragt, ohne Dateien oder alles synchronisiert. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me> |
||
| .. | ||
| brouter | ||
| halkyon_train_client | ||
| halkyon_train_flutter | ||
| halkyon_train_server | ||
| snap | ||
| .gitignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| README.md | ||
| release.dart | ||
Halkyon Train
Running, cycling and rowing, as a Halkyon app (what it is to do: ADR 0030). For now a shell on the shared packages: people choose an instance, sign in (with SimpleLogin or a password), switch between the accounts on their devices, sign out and delete their account; the home is empty until Train's first model.
| Package | What it is |
|---|---|
halkyon_train_server |
The server: Serverpod with the halkyon_base module |
halkyon_train_client |
Its client, generated by Serverpod |
halkyon_train_flutter |
The app, on halkyon_app and halkyon_ui (Android, iOS, Linux, macOS, Windows) |
Run it with serverpod start in halkyon_train_server, which starts the server (and its
embedded PostgreSQL) on ports of its own, 8180 to 8190, and the app; or the app alone
against an instance with flutter run --dart-define=SERVER_URL=https://…/ in
halkyon_train_flutter. Tests: dart run melos run test:dart --scope=halkyon_train_server
and dart run melos run test:flutter --scope=halkyon_train_flutter at the repository's
root, or dart run tool/check.dart for everything.
The app's icon is Lucide's bike (ISC licence, ADR 0031), drawn
by the repository's tool/app_icons.py. Licences: the server under the SSPL, the client
and the app under the AGPL, the app's with a permission for linking Polar's BLE SDK, which
isn't free software, for the Polar Loop (ADR 0030, D36;
LICENSE.md).