feat: the apps' icons as one family, drawn by one tool (ADR 0031)

tool/app_icons.py at the root replaces Learn's and Todo's scripts: each
app's Lucide glyph (lucide-static 1.50.0) drawn by librsvg, fading from
cobalt through the colours ADR 0031 names, then every platform's
launcher icon through flutter_launcher_icons, Windows' .ico with every
size, and Learn's snap icon.

Learn's icon becomes the graduation cap, its window's on Linux too, with
Lucide's notice in its licence list; the kingfisher stays the emblem on
the rail and the launch screen. Todo's becomes list-todo, Train's bike.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-28 10:42:47 +01:00
commit ece9ce9697
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -68,9 +68,10 @@ instance's basics; a Serverpod module), `halkyon_app` (instances, sign-in, sync)
Mode.
- **No Docker** for development: `serverpod start` and the server's tests run an embedded
PostgreSQL. Docker Compose is only for running an instance (below).
- **For Learn's scripts in `apps/learn/tool/`**, run from `apps/learn`: Python 3
(`tool/app_icons.py` also needs Pillow, `python3-pil`); for releases what
[Releases](#releases) lists.
- **For Learn's scripts in `apps/learn/tool/`**, run from `apps/learn`: Python 3; for
the apps' icons (the repository's `tool/app_icons.py`, run from the root) also Pillow,
PyGObject with librsvg and pycairo (`python3-pil`, `python3-gi`, `gir1.2-rsvg-2.0`,
`python3-cairo`); for releases what [Releases](#releases) lists.
The rich-text editor comes from our fork of AppFlowy Editor
([project-halkyon/appflowy-editor](https://code.halkyon.app/project-halkyon/appflowy-editor)),
@ -155,7 +156,7 @@ may choose another there, and keep accounts on several.
`learn-vX.Y.Z`, and only commits touching Learn count for its version. It shows the version and its commits and asks
first, then writes the version into the pubspec in a signed release commit with a
signed tag, builds the APK and the snap (`snap/snapcraft.yaml`, built in LXD; its icon
comes from `apps/learn/tool/app_icons.py`), checks both, signs the checksums, pushes, and
comes from the repository's `tool/app_icons.py`), checks both, signs the checksums, pushes, and
publishes on code.halkyon.app, in the F-Droid repository and in the Snap Store's edge
channel (`snapcraft login` first). Besides Flutter and the Android SDK, it uses snapcraft with
LXD, a JDK (keytool), GnuPG, curl, jq, unzip, squashfs-tools, rsync and fdroidserver.