| Filename | Latest commit message | Latest commit date |
|---|---|---|
What is written in a shared space after a member went takes a key they
never get (Halkyon's ADR 0044, D22). The instance marks the space as one
of its members goes, removed, leaving or deleted (`keyRollDue` on
`shared_space`, set in `removeMember`, through which each of them
passes); an invitation taken back never had a key and marks nothing, nor
does a new role. The Owner's or an Editor's device that next keeps its
keys up after a sync is told so (`sharedSpaceKeys.rollDue`, never true
for a Viewer, who seals no key) and makes a new key, sealed to those who
stay (D33). The first seal bringing a key ID the space never had clears
the mark in the same transaction (D34); members the rolling device
missed get it later as newcomers do. Earlier rows keep the key they had,
which whoever went had read already.
The migration, the same in the module and in each server including it
(Learn, Meditate, Todo, Train):
ALTER TABLE "shared_space"
ADD COLUMN "keyRollDue" boolean NOT NULL DEFAULT false;
It adds the column with false for every space there is, so no space is
due a roll from it; PostgreSQL adds a column with a constant default
without rewriting the table. The server before the switch reads and
writes the table naming its own columns, so it keeps working.
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).