halkyon/apps/todo
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Tizian 「ティツィアーン」 8502fb38f0
feat(todo): the weather: a forecast on days, tasks tied to it, the days that fit (ADR 0033, D40)
A task can need weather: dry, sunny, calm and a temperature range (not
freezing, warm, or from and to as typed), set from Weather in its
details (a chip beside Priority, then a row of its own once it needs
any) and kept in its sealed payload (`weather`, schema stays 1).
Where its day's forecast misses any of it, its row carries a mark and
its details say what is missing; nothing moves and its reminder stays.
Its date picker lists the coming days the forecast fits, at its time or
from 8:00 to 20:00 without one.

The forecast is for the place set in Settings' new Weather card, kept in
the sealed settings; else, for a task with a place, its first place. The
device's location is never read for it. `ForecastCubit` asks the
instance for each place (`InstanceWeather`, rounded to about a
kilometre) as it comes, as the app opens, hourly and on a pull, and
holds the answers in memory alone. With a place in Settings, each day's
heading in Today and Upcoming shows its sky and temperatures, the 3-day
grid its icon. Settings says where the instance gives no forecasts, and
credits Open-Meteo as its licence asks.

Whats-New: A task can need dry, sunny, calm or mild weather: it is marked when the forecast doesn't fit, and its date picker shows the days that do; days show the forecast for the place set in Settings.
Whats-New-De: Eine Aufgabe kann trockenes, sonniges, windstilles oder mildes Wetter brauchen: Sie wird markiert, wenn die Vorhersage nicht passt, und ihre Datumsauswahl zeigt die passenden Tage; die Tage zeigen die Vorhersage für den Ort aus den Einstellungen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-10 15:28:03 +01:00
..
halkyon_todo_client feat(todo): Todo's server answers a place's forecast (ADR 0033, D40) 2026-11-10 15:27:58 +01:00
halkyon_todo_flutter feat(todo): the weather: a forecast on days, tasks tied to it, the days that fit (ADR 0033, D40) 2026-11-10 15:28:03 +01:00
halkyon_todo_server feat(todo): Todo's server answers a place's forecast (ADR 0033, D40) 2026-11-10 15:27:58 +01:00
snap feat(learn,train,todo,meditate): the icons on a white tile again, coloured by the system's theme on Android and iOS (ADR 0031, D9, D10) 2026-11-10 14:22:49 +01:00
.gitignore chore: Halkyon Todo's scaffold joins the repository in apps/todo 2026-10-22 18:11:03 +02:00
AGENTS.md feat(todo): the weather: a forecast on days, tasks tied to it, the days that fit (ADR 0033, D40) 2026-11-10 15:28:03 +01:00
CLAUDE.md chore: Halkyon Todo's scaffold joins the repository in apps/todo 2026-10-22 18:11:03 +02:00
README.md feat: the apps' icons as one family, drawn by one tool (ADR 0031) 2026-10-30 15:52:45 +01:00
release.dart build(todo): Todo deployable beside Learn's server, and released as an APK, on F-Droid and as a snap (ADR 0033, step 5) 2026-11-02 16:04:00 +01:00

Halkyon Todo

To-dos, as a Halkyon app: 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 Todo's first model.

Package What it is
halkyon_todo_server The server: Serverpod with the halkyon_base module
halkyon_todo_client Its client, generated by Serverpod
halkyon_todo_flutter The app, on halkyon_app and halkyon_ui (Android, iOS, Linux, macOS, Windows)

Run it with serverpod start in halkyon_todo_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_todo_flutter. Tests: dart run melos run test:dart --scope=halkyon_todo_server and dart run melos run test:flutter --scope=halkyon_todo_flutter at the repository's root, or dart run tool/check.dart for everything.

The app's icon is Lucide's list-todo (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 (LICENSE.md).