-
Halkyon Train 0.2.0
Stablereleased this
2026-11-03 17:33:17 +01:00 | 246 commits to main since this releaseHalkyon Train 0.2.0 for Android and Linux. Both connect to train.halkyon.eu, the project's instance.
What's new
- Train starts again on Android: 0.1.0 crashed on start.
- Strength plans and sessions, equipment by place and a plate calculator.
- Each workout's weather, and reminders to move with workouts suggested from your steps.
- The Polar Loop detects your training itself; Health Connect's permissions fixed on Android 14 and later.
- One Profile for every Halkyon app, and a new dumbbell icon.
- Train on the Linux desktop, as a snap.
Installing
- Android:
halkyon-train-0.2.0.apk, one APK for every phone, signed with the app's key; the SHA-256 of its certificate is38bdedba9b8d3f2b77de20e14f659e0bbe667a076c0f56058e8095b2b4118a6d. - F-Droid: the same APK in the repository https://halkyon.app/fdroid/repo?fingerprint=E8082788756F6B7E682AA22FCEAD24B53E2A8B0912AD66D65E8C2D4F07BB94B0
- Linux:
halkyon-train_0.2.0_amd64.snap, also in the Snap Store:snap install halkyon-train --edge.
SHA256SUMSlists the files' checksums, signed with the GPG keyB172B9ED76A32EBCABA24A9F07F6FCF405488B64(SHA256SUMS.asc).Downloads
-
Halkyon Todo 0.1.0
Stablereleased this
2026-11-03 11:33:40 +01:00 | 249 commits to main since this releaseHalkyon Todo 0.1.0 for Android and Linux. Both connect to todo.halkyon.eu, the project's instance.
What's new
- The first release of Halkyon Todo: tasks in an Inbox and in projects with sections, Today and Upcoming, repeating tasks and reminders, each project as a list, a board or a calendar, everything sealed.
Installing
- Android:
halkyon-todo-0.1.0.apk, one APK for every phone, signed with the app's key; the SHA-256 of its certificate is891293d9e2174755f26b08e15603c7e525351ee6dbad3f235aa4f6693d9bffcd. - F-Droid: the same APK in the repository https://halkyon.app/fdroid/repo?fingerprint=E8082788756F6B7E682AA22FCEAD24B53E2A8B0912AD66D65E8C2D4F07BB94B0
- Linux:
halkyon-todo_0.1.0_amd64.snap, also in the Snap Store:snap install halkyon-todo --edge.
SHA256SUMSlists the files' checksums, signed with the GPG keyB172B9ED76A32EBCABA24A9F07F6FCF405488B64(SHA256SUMS.asc).Downloads
-
Halkyon Train 0.1.0
Stablereleased this
2026-10-31 22:55:13 +01:00 | 298 commits to main since this releaseHalkyon Train 0.1.0 for Android. It connects to train.halkyon.eu, the project's instance.
What's new
- The first release of Halkyon Train: record your workouts, plan routes and interval plans, and keep your days from the Polar Loop, everything sealed.
Installing
- Android:
halkyon-train-0.1.0.apk, one APK for every phone, signed with the app's key; the SHA-256 of its certificate is38bdedba9b8d3f2b77de20e14f659e0bbe667a076c0f56058e8095b2b4118a6d. - F-Droid: the same APK in the repository https://halkyon.app/fdroid/repo?fingerprint=E8082788756F6B7E682AA22FCEAD24B53E2A8B0912AD66D65E8C2D4F07BB94B0
SHA256SUMSlists the files' checksums, signed with the GPG keyB172B9ED76A32EBCABA24A9F07F6FCF405488B64(SHA256SUMS.asc).Downloads
-
Halkyon Learn 0.22.0
Stablereleased this
2026-10-26 17:39:57 +01:00 | 404 commits to main since this releaseHalkyon Learn 0.22.0 for Android and Linux. Both connect to learn.halkyon.eu, the project's instance.
Features
- a request carries how much the model thinks, in each provider's field
- one budget per person for all their assistants, the effort each takes, the operator's lists by page
- the operator's overview of screens, grants to several people at once with one budget each, assistants by provider
- choosing how much an assistant thinks, and the assistants by provider in the field
Fixes
- the instance asks LanguageTool for its languages again a minute after it didn't answer
Installing
- Android:
halkyon-learn-0.22.0.apk, one APK for every phone, signed with the app's key; the SHA-256 of its certificate is27e243fcbdc826ff98ab7dbb10436c98c3bea24b2a015e94e4cfc7d1fc2a006c. - F-Droid: the same APK in the repository https://halkyon.app/fdroid/repo?fingerprint=E8082788756F6B7E682AA22FCEAD24B53E2A8B0912AD66D65E8C2D4F07BB94B0
- Linux:
halkyon-learn_0.22.0_amd64.snap, also in the Snap Store:snap install halkyon-learn --edge.
SHA256SUMSlists the files' checksums, signed with the GPG keyB172B9ED76A32EBCABA24A9F07F6FCF405488B64(SHA256SUMS.asc).Downloads
-
Halkyon Learn 0.21.0
Stablereleased this
2026-10-26 11:50:40 +01:00 | 414 commits to main since this releaseHalkyon Learn 0.21.0 for Android and Linux. Both connect to learn.halkyon.eu, the project's instance.
Features
- GitHub signs nobody in any more (ADR 0020, D36)
- sign-ups as the operator says, waiting accounts, operators (ADR 0021, step 1)
- a wait screen for accounts that wait for the operator (ADR 0021, step 1)
- the operator's "This instance" card, screen and badge (ADR 0021, step 1)
- halkyon_llm, language models' APIs streamed over plain HTTP (ADR 0021, step 2)
- the operator's assistants, and the instance's privacy page (ADR 0021, step 2)
- the assistants in Settings and on the operator's screen
- conversations with assistants, kept sealed (ADR 0021, step 3)
- what an assistant may look up, and what it is told
- asking an assistant in a conversation
- the assistant answers in the field
- a private studyset goes to an assistant only once agreed
- an assistant explains a card missed and checks what was written
- an assistant proposes flashcards from a text, a note or a PDF page
- an assistant reads PDFs' pages, and sees images the person chooses or approves
- the image an assistant asks to see shows beside the question
- LanguageTool as a sidecar, reached through the server
- spelling and grammar checked as people write (ADR 0024)
Fixes
- Settings no longer jumps while scrolled up slowly
- the German privacy page names no "Betreiber"
- an editor with nobody signed in above it checks nothing
Installing
- Android:
halkyon-learn-0.21.0.apk, one APK for every phone, signed with the app's key; the SHA-256 of its certificate is27e243fcbdc826ff98ab7dbb10436c98c3bea24b2a015e94e4cfc7d1fc2a006c. - F-Droid: the same APK in the repository https://halkyon.app/fdroid/repo?fingerprint=E8082788756F6B7E682AA22FCEAD24B53E2A8B0912AD66D65E8C2D4F07BB94B0
- Linux:
halkyon-learn_0.21.0_amd64.snap, also in the Snap Store:snap install halkyon-learn --edge.
SHA256SUMSlists the files' checksums, signed with the GPG keyB172B9ED76A32EBCABA24A9F07F6FCF405488B64(SHA256SUMS.asc).Downloads
-
Halkyon Learn 0.20.0
Stablereleased this
2026-10-25 10:35:33 +01:00 | 449 commits to main since this releaseHalkyon Learn 0.20.0 for Android and Linux. Both connect to learn.halkyon.eu, the project's instance.
Features
- a Serverpod module for signing in with OpenID Connect, SimpleLogin a preset (ADR 0023)
- a fake provider for hosts' tests (testing.dart)
- signing in with SimpleLogin through the register (ADR 0020, step 2)
- the password's own proof key (ADR 0020, D19)
- a kept identity taken in the host's transaction, and told kept without taking it
- SimpleLogin accounts' keys without SRP, signing up in one call (ADR 0020, step 3)
- the changes of SimpleLogin accounts' keys, each with the password and a fresh sign-in (ADR 0020, D20)
- mending a broken SimpleLogin link with the handle and the recovery phrase (ADR 0020, D7)
- handles hidden until their people go public, every answer about a new handle counted (ADR 0020, D5)
- SimpleLogin's sign-in comes back by the app's scheme or the loopback (ADR 0020, D9 corrected)
- halkyon_oidc_flutter, the device's half of signing in with OpenID Connect (ADR 0023)
- the keys of accounts that sign in with SimpleLogin, on the device (ADR 0020, D19)
- signing in with SimpleLogin on the device, its data layer (ADR 0020)
- signing in with SimpleLogin, its sheet and the start screen's offer (ADR 0020)
- adding SimpleLogin to an account (ADR 0020, D21, D23)
- no anonymous accounts on the device (ADR 0020, D4, D25)
- no anonymous accounts on the server (ADR 0020, D25)
- a handle at password sign-up (ADR 0020, D26, D28–D30)
- removing a profile makes it private (ADR 0020, D27)
- a lost password with the recovery phrase in SimpleLogin's sheet (ADR 0020, 7)
- a reset of the keys without the phrase, and the keys' proof key for a password that signs in (ADR 0020, D31–D34)
- a reset of the keys without the phrase, its banner, and the keys' proof key for a password that signs in (ADR 0020, D31–D35)
Fixes
- the fake provider takes the client's credentials form-encoded
- the handle's hint says it is private until the profile is public (ADR 0020, D5)
Installing
- Android:
halkyon-learn-0.20.0.apk, one APK for every phone, signed with the app's key; the SHA-256 of its certificate is27e243fcbdc826ff98ab7dbb10436c98c3bea24b2a015e94e4cfc7d1fc2a006c. - F-Droid: the same APK in the repository https://halkyon.app/fdroid/repo?fingerprint=E8082788756F6B7E682AA22FCEAD24B53E2A8B0912AD66D65E8C2D4F07BB94B0
- Linux:
halkyon-learn_0.20.0_amd64.snap, also in the Snap Store:snap install halkyon-learn --edge.
SHA256SUMSlists the files' checksums, signed with the GPG keyB172B9ED76A32EBCABA24A9F07F6FCF405488B64(SHA256SUMS.asc).Downloads
-
Halkyon Learn 0.19.0
Stablereleased this
2026-10-23 18:46:31 +02:00 | 479 commits to main since this releaseHalkyon Learn 0.19.0 for Android and Linux. Both connect to learn.halkyon.eu, the project's instance.
Features
- ways in for accounts without a working password
- change the password and the recovery phrase while signed in
- the basics say when GitHub sign-in ends
- sign in with a password and TOTP on the device
- codes by mail no longer sign in
- a session ended for its wrong proofs warns its owner
- the warning that a session was ended for its proofs
- secrets kept out of screenshots on macOS and Windows too
- the instance's side of private studysets (ADR 0019)
- content sealed with data keys, and an anonymous person's device keys (ADR 0019)
- every synced payload sealed and opened through one envelope (ADR 0019)
- the device tells the instance whether to count the person, and what their copies come from (ADR 0019, D3)
- make a studyset private or not, and what a locked one shows (ADR 0019)
- offer once to make every studyset from before private (ADR 0019, D4)
- a private studyset's files are sealed with its key (ADR 0019, D5)
- a studyset's marker says what the instance sees of it (ADR 0019)
- the Publish sheet lists the tag names a release sends (ADR 0019)
- Finish takes in edits nobody signed once the person agrees (ADR 0019)
- no hand-off and no connector; the field searches the web (ADR 0022)
- SimpleLogin's forwarding page and Learn's App Links statement (ADR 0020, step 1)
Fixes
- a new recovery phrase takes the password too
- a device refuses Argon2id costs beyond the register's ceiling
- the password alone calls off an account's reset waiting
- the recovery phrase is proved by a key of its own
- decoy encryption keys are keys a device could have made
- proofs are bound to the instance the device addresses
- new passwords have at least 12 characters
- a sealed data key is signed by whoever sealed it
- a capped wait, a long instance secret, writes of their own columns
- limits by address and network, so nobody holds an owner out
- codes wait after ten wrong in a row, and the owner is told
- an IPv6 visitor counts by their /64
- an account with a password deletes itself only with it and a code
- a code is counted before it is checked
- every proof counts toward the address as it is checked
- a session's wrong codes end the session, not the account's codes
- every call with a code after the password takes the address
- a reset forgets the codes refused before it
- a code by mail serves only what it was asked for
- an account whose second factor doesn't work deletes itself
- a member behind the register's clock says the password changed
- a session alone never gets a code checked
- every change of how an account is secured asks for the password
- a code's mail names its purpose in the subject
- a first password takes a fresh proof of the account's way in
- the first authenticator takes the password, and a reset ends every session
- a proof the register couldn't answer counts; the sign-up mail says it gives a password
- a reset not carried out lapses a week after it took effect
- codes after the recovery phrase count apart from the password's
- a reset waits while its owner is held out, and devices show it
- GitHub-only accounts go at GitHub's end; only the anonymous add an address
- members learn of ended sessions in the background
- only a session made since dismisses the owner's warning
- a setup's password replaced ends the account's other sessions
- a member asks the register before deleting an account
- a member's clock running ahead of the register's is refused too
- proofs are bound to the instance's whole base URL
- the owner's proof is bound to what it approves
- every owner's proof binds the change it approves
- the phrase is never copied, codes leave the clipboard a minute later
- instances over plain HTTP are refused, but on this machine
- no sheet is left busy by an error nothing expected
- saved files are the own user's alone, and iOS's copy goes
- no state logs an authenticator's key, codes or the address
- keyboards learn nothing of a password, a code or the phrase
- only an otpauth URI is shown as a QR code or opened
- on Apple's systems the account's keys stay on this device
- no copy of a key left on the way, and the README says what is wiped
- secrets are kept out of screenshots and the recent apps
- a hold-out moves a reset on only by its own time, and a reset lives 30 days at most
- a member's clock off the register's ends the sessions of its gap, waiting for nothing
- a member asks the register whose account it is before a deletion's proof counts
- GitHub-only accounts go 30 days after GitHub's end, on the register alone, one failure holding back none
- the reading of the fixes' nits
- nothing secret is copied
- a saved file is the own user's from the start, and replaces the one chosen whole
- the phrase typed back is kept out of screenshots too
- an Apple device's keychain gives the keys only while it is unlocked
- http:// and https:// on one host are one account on the device
- no address in debug logs, and deleting goes on whatever reading the account met
- what a password unlocked is wiped once done with
- a reset takes effect 14 days after it was asked at the latest
- a refusal past an address's ceiling answers before its resets move
- a member keeps the session a reset signed in when its notice comes late
- a member deletes nobody while the register is out of reach
- GitHub's end deletes what it says, when it says
- a saved secret is 0600 on Apple's Arm too, and macOS saves at all
- the phrase typed back is pasted into its fields, never copied out
- a phrase field keeps its focus as the app goes and comes back
- keys an earlier build kept go too, and a locked keyring stops nothing
- Windows keeps secrets out of captures by its real version
- the short reading's nits on the device
- a GitHub account someone has is theirs to switch to where passwords are offered too
- GitHub's refusals say why, and no hint adds GitHub where passwords are offered
- no Add GitHub where people sign in with a password
- signing out or deleting the account keeps the person's app until it is done
- a sign-out or deletion that failed says so, its tile showing it under way
- the instance's side of the reading of private studysets (ADR 0019)
- privacy is a signed fact the instance can't take back (ADR 0019)
- what the app shows and adds keeps private studysets private (ADR 0019)
- the short reading of the reading's fixes (ADR 0019)
- publishing and suggestions after the short reading (ADR 0019)
- a suggestion takes along only its own tree's sealed files (ADR 0019)
- the tag names' list reads its names without catchError
- what decides a row's key is bound into its seal (ADR 0019)
- a release sends exactly the tag names the sheet showed (ADR 0019)
- Finish shows what it would take in, and takes in exactly that (ADR 0019)
- sweeps cost what a merge brought, and a rewrite holds only its tree (ADR 0019)
- a device without the keys writes no content where the account has keys (ADR 0019)
- what the hostile instance found (ADR 0019)
- a newest settings row taken away leaves out what it outweighed (ADR 0019)
- Material's icon font where serverpod_auth_idp_flutter asks for it
Installing
- Android:
halkyon-learn-0.19.0.apk, one APK for every phone, signed with the app's key; the SHA-256 of its certificate is27e243fcbdc826ff98ab7dbb10436c98c3bea24b2a015e94e4cfc7d1fc2a006c. - F-Droid: the same APK in the repository https://halkyon.app/fdroid/repo?fingerprint=E8082788756F6B7E682AA22FCEAD24B53E2A8B0912AD66D65E8C2D4F07BB94B0
- Linux:
halkyon-learn_0.19.0_amd64.snap, also in the Snap Store:snap install halkyon-learn --edge.
SHA256SUMSlists the files' checksums, signed with the GPG keyB172B9ED76A32EBCABA24A9F07F6FCF405488B64(SHA256SUMS.asc).Downloads
-
Halkyon Learn 0.18.0
Stablereleased this
2026-10-22 23:20:57 +02:00 | 635 commits to main since this releaseHalkyon Learn 0.18.0 for Android and Linux. Both connect to learn.halkyon.eu, the project's instance.
Features
- export a studyset as an archive to import again
- sign in with an email address, keeping only a keyed hash of it
- codes go by mail, through the SMTP service an instance sets up
- profile pages on the account domain, and links verified by rel="me"
- Japanese cut into words and looked up on the device
- questions on published studysets, answered by learners
- a show's tags follow it whatever it is called
- a round in the order cards come, shared daily limits, and a start screen
- an empty library says it is on its way during the first sync
- your own studyset is yours, not one to add
- the first start offers instances as tiles
- an instance says where it keeps people's data
- data locations as precise as a country or a state
- the server on halkyon_base
- the app on halkyon_app, with its own icon
- one account across an instance's services (ADR 0016)
- SRP-6a, the register's half and the device's
- TOTP and recovery codes
- halkyon_keys, an account's keys on the device
- recovery codes kept under the instance's key
- passwords taken as RFC 8265's OpaqueString
- a password with TOTP on the register, and resets
- say when an account signs in with its password
- Learn's and Todo's servers take password sign-in
Fixes
- read a large release without waiting on git for ever
- copies keep their ties to PDF pages, and ids swap whole
- words held in topics, a chosen destination, faster adds
- releases in parts, and say what kept a copy from being made
- counts worked out once and kept until something changes
- what everyone follows is read once, and two server hot spots
- a path's steps, untagging and the card browser in bulk; fix untagging
- a search finds keys by their first characters, indexed
- the fork's signed commit with inbound merges and fast deletes
- the fork's signed commit with fast merges, and #150 fixed
- the checks run as a hook from a worktree too
- the checks fetch the packages first
- the fork's signed commit with fast merged deletes and batched inserts
- the check limited to changes sees uncommitted ones too
- count per-network limits by the visitor behind Caddy
- adding an authenticator takes a code from one confirmed before
- a password set up for good stays, through resets too
Installing
- Android:
halkyon-learn-0.18.0.apk, one APK for every phone, signed with the app's key; the SHA-256 of its certificate is27e243fcbdc826ff98ab7dbb10436c98c3bea24b2a015e94e4cfc7d1fc2a006c. - F-Droid: the same APK in the repository https://halkyon.app/fdroid/repo?fingerprint=E8082788756F6B7E682AA22FCEAD24B53E2A8B0912AD66D65E8C2D4F07BB94B0
- Linux:
halkyon-learn_0.18.0_amd64.snap:sudo snap install --dangerous halkyon-learn_0.18.0_amd64.snap(not in the Snap Store yet).
SHA256SUMSlists the files' checksums, signed with the GPG keyB172B9ED76A32EBCABA24A9F07F6FCF405488B64(SHA256SUMS.asc).Downloads
-
Halkyon Learn 0.17.0
Stablereleased this
2026-10-14 18:49:58 +02:00 | 711 commits to main since this releaseHalkyon Learn 0.17.0 for Android and Linux. Both connect to learn.halkyon.eu, the project's instance.
Features
- a release keeps its colour, and a description for Explore
- cards as the library's, in its colour, with a description of their own
- a handle in a studyset opens its person's profile
Fixes
- the Store takes the snap: no mail addresses among its links
- a map question names none of Japan's parts before it is answered
- a search for blue no longer finds blunt
- no language goes missing while the curator updates
- a German separated verb is a verb, never a joined noun or particle
- pinyin of names and sayings is typed and checked right
- a Japanese word's romaji reading is not typed as pinyin
- a Greek letter found opens no empty sheet of strokes
- the summary's foot lines up with the rest of it
- read exam plans only after changes that matter, once they settle
- copies take the author's later changes to exam plans
- an exam's pace keeps its rate, and plans hold what they show
- the summary in blocks: what it is, what it holds, its release
Installing
- Android:
halkyon-learn-0.17.0.apk, one APK for every phone, signed with the app's key; the SHA-256 of its certificate is27e243fcbdc826ff98ab7dbb10436c98c3bea24b2a015e94e4cfc7d1fc2a006c. - F-Droid: the same APK in the repository https://halkyon.app/fdroid/repo?fingerprint=E8082788756F6B7E682AA22FCEAD24B53E2A8B0912AD66D65E8C2D4F07BB94B0
- Linux:
halkyon-learn_0.17.0_amd64.snap:sudo snap install --dangerous halkyon-learn_0.17.0_amd64.snap(not in the Snap Store yet).
SHA256SUMSlists the files' checksums, signed with the GPG keyB172B9ED76A32EBCABA24A9F07F6FCF405488B64(SHA256SUMS.asc).Downloads
-
Halkyon Learn 0.16.0
Stablereleased this
2026-10-14 15:07:53 +02:00 | 734 commits to main since this releaseHalkyon Learn 0.16.0 for Android and Linux. Both connect to learn.halkyon.eu, the project's instance.
Features
- characters of Chinese and Korean, the Greek alphabet, Korean words from KRDict
- characters of Chinese, Korean and Greek, written by hand; pinyin typed
- the card browser finds and sorts words of any language as typed
- a German verb is found with its particle at the clause's end
- a question opens in the AI assistant chosen, Proton's Lumo by default
- an empty tab says its material is in the topics, and leads there
- prepare for an exam, with plans, a date and the pace to it
Fixes
- a dictionary whose file is gone is unloaded
- a studyset's title shows in its language's shapes outside it too
- a Hanja reads 물 수, and each radical's form shows once
Installing
- Android:
halkyon-learn-0.16.0.apk, one APK for every phone, signed with the app's key; the SHA-256 of its certificate is27e243fcbdc826ff98ab7dbb10436c98c3bea24b2a015e94e4cfc7d1fc2a006c. - F-Droid: the same APK in the repository https://halkyon.app/fdroid/repo?fingerprint=E8082788756F6B7E682AA22FCEAD24B53E2A8B0912AD66D65E8C2D4F07BB94B0
- Linux:
halkyon-learn_0.16.0_amd64.snap:sudo snap install --dangerous halkyon-learn_0.16.0_amd64.snap(not in the Snap Store yet).
SHA256SUMSlists the files' checksums, signed with the GPG keyB172B9ED76A32EBCABA24A9F07F6FCF405488B64(SHA256SUMS.asc).Downloads