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

@ -148,8 +148,9 @@ dev_dependencies:
# Used for agents to drive the app through the Dart MCP
flutter_driver:
sdk: flutter
# Writes the app's icons for every platform from assets/icon/halkyon_icon.png, run
# through tool/app_icons.py (see the flutter_launcher_icons section below).
# Writes the app's icons for every platform from assets/icon/halkyon_learn_icon.png,
# run through the repository's tool/app_icons.py (see the flutter_launcher_icons
# section below).
flutter_launcher_icons: ^0.14.4
flutter_test:
sdk: flutter
@ -186,8 +187,12 @@ flutter:
# https://flutter.dev/assets-and-images/#from-packages
assets:
- assets/config.json
# The kingfisher: the app icon, also shown atop the navigation rail.
# The kingfisher, Halkyon's emblem: atop the navigation rail and on the launch
# screen.
- assets/icon/halkyon_icon.png
# The app's icon (ADR 0031), the window's on Linux, and Lucide's notice for it.
- assets/icon/halkyon_learn_icon.png
- assets/icon/LICENSE-lucide.txt
# Region maps for map questions (see assets/maps/ATTRIBUTION.md).
- assets/maps/japan_prefectures.geojson
- assets/maps/world_countries.geojson
@ -222,17 +227,17 @@ flutter:
fonts:
- asset: assets/fonts/NotoSansKR-Variable.otf
# The app's icons, written by tool/app_icons.py: it prepares the images derived from
# the kingfisher in build/icons/ first, then runs `dart run flutter_launcher_icons`
# with this. Android: an adaptive icon, the kingfisher inset on white for each
# launcher to cut to its shape, and the square one older Androids show. iOS: without
# The app's icons, written by the repository's tool/app_icons.py: it prepares the
# images derived from Lucide's graduation cap in build/icons/ first, then runs `dart
# run flutter_launcher_icons` with this. Android: an adaptive icon, the cap on white
# for each launcher to cut to its shape, and the square one older Androids show. iOS: without
# transparency, as Apple requires. macOS: the rounded tile on Apple's grid. Windows:
# the rounded tile (tool/app_icons.py then writes its .ico with every size).
flutter_launcher_icons:
image_path: "assets/icon/halkyon_icon.png"
image_path: "assets/icon/halkyon_learn_icon.png"
android: true
adaptive_icon_background: "#ffffff"
adaptive_icon_foreground: "assets/icon/halkyon_icon.png"
adaptive_icon_foreground: "assets/icon/halkyon_learn_icon.png"
ios: true
remove_alpha_ios: true
background_color_ios: "#ffffff"