halkyon/apps/meditate
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Tizian 「ティツィアーン」 8c70ad98a1
feat(app): an authenticator's key copied, marked sensitive, and its code six digits
A phone without a camera whose authenticator doesn't open otpauth: had no
way but typing the key. It is copied again, the key alone (ADR 0017
amended, the developer's decision of 3 Nov 2026): on Android through each
app's SensitiveClipboard.kt, marked EXTRA_IS_SENSITIVE, so Gboard and the
system show no preview and keep it out of their histories; elsewhere through
Flutter's clipboard. Emptied 60 seconds later if the clipboard still holds
it. The recovery phrase and codes stay never copied.

The code's field counted "/7", taking an optional space for a seventh
character: it now takes six digits alone, a pasted space dropped, and counts
nothing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-04 09:32:01 +01:00
..
halkyon_meditate_client feat(meditate): the operator's library on the server, and a course's lessons done synced 2026-11-04 09:31:59 +01:00
halkyon_meditate_flutter feat(app): an authenticator's key copied, marked sensitive, and its code six digits 2026-11-04 09:32:01 +01:00
halkyon_meditate_server feat(meditate): the library's accesses name nobody, and the privacy page says so 2026-11-04 09:31:59 +01:00
tool feat(meditate): the app: Today, Explore, Profile, the sitting and its bells 2026-11-04 09:31:56 +01:00
.gitignore feat(meditate): the app: Today, Explore, Profile, the sitting and its bells 2026-11-04 09:31:56 +01:00
AGENTS.md docs(meditate): ADR 0038, D16, the operator's library, as the developer asked 2026-11-04 09:32:00 +01:00
CLAUDE.md feat(meditate): the app: Today, Explore, Profile, the sitting and its bells 2026-11-04 09:31:56 +01:00
README.md feat(meditate): the app: Today, Explore, Profile, the sitting and its bells 2026-11-04 09:31:56 +01:00

Halkyon Meditate

Meditation, as a Halkyon app (ADR 0038): a silent timer with bells, Halkyon's own guided practices as text cues, found by goal and kind, and the person's minutes, days and days in a row, every sitting sealed and synced between their devices. People choose an instance, sign in (with SimpleLogin or a password), switch between the accounts on their devices, sign out and delete their account, as in every Halkyon app.

Package What it is
halkyon_meditate_server The server: Serverpod with the halkyon_base module and the sync engine
halkyon_meditate_client Its client, generated by Serverpod
halkyon_meditate_flutter The app, on halkyon_app and halkyon_ui (Android, iOS, Linux, macOS, Windows)

Run it with serverpod start in halkyon_meditate_server, which starts the server (and its embedded PostgreSQL) and the app; or the app alone against an instance with flutter run --dart-define=SERVER_URL=https://…/ in halkyon_meditate_flutter. Tests: dart run melos run test:dart --scope=halkyon_meditate_server and dart run melos run test:flutter --scope=halkyon_meditate_flutter at the repository's root, or dart run tool/check.dart for everything.

The app's icon is Lucide's sprout (ISC licence, ADR 0031), drawn by the repository's tool/app_icons.py. Its bells are synthesised by tool/bells.py and are the project's own. Licences: the server under the SSPL, the client and the app under the AGPL (LICENSE.md).