refactor(app): instances, sign-in and sync plumbing come from halkyon_app

The instances a device keeps an account on, the first start, the
account switcher, signing in and switching person, the gates that build
the dependencies per instance and per person, and the sync service with
its status, card and banner move to halkyon_app (halkyon_shared, ADR
0014), on halkyon_base's client. Learn supplies its frame (name, word,
icon, theme, launch screen, and the two texts only it can say), its
dependencies, whether the device holds content, and its world map's
country names; every text reads as before. An instance counts only
where its basics name the app `learn`, which learnBase now sets.

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-19 16:07:44 +02:00
commit 9486b3586e
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -52,35 +52,36 @@ dependencies:
# Picks the files to import (and later the images to add), and saves exports
# on the desktop: flutter.dev's own.
file_selector: ^1.1.0
# Flags of the countries and of the EU where an instance keeps its data,
# lipis' flag-icons (MIT, its notice registered by the app).
flag: ^7.1.0
flutter:
sdk: flutter
flutter_bloc: ^9.1.1
flutter_localizations:
sdk: flutter
# The app's own browser half of GitHub sign-in on Linux and Windows
# (LoopbackWebAuth) plugs in here, and opens the browser and brings the window
# back with the same packages flutter_web_auth_2 uses.
flutter_math_fork: ^0.7.4
# Keeps the token of a Jellyfin server in the system's keyring; Serverpod's
# sign-in keeps its session there with it already.
flutter_secure_storage: ^10.0.0
flutter_web_auth_2_platform_interface: ^5.0.0
fractional_indexing_dart: ^1.0.7
# Pinned exactly: every device on one app version must compute the same
# schedules.
fsrs: 2.0.1
go_router: ^18.0.2
# The client side of halkyon_base (ADR 0014): what the app calls to sign in
# and to manage the account, and the refusals it reads. As the server's,
# pinned to a signed commit of halkyon_shared's main.
halkyon_base_client:
# What every Halkyon app is built around (halkyon_shared): the instances a
# device keeps accounts on, signing in through halkyon_base, each person's
# data opened and closed, and syncing it, with texts of its own. As
# halkyon_ui, pinned to a signed commit of halkyon_shared's main.
halkyon_app:
git:
url: https://code.halkyon.app/project-halkyon/halkyon_shared.git
path: packages/halkyon_base_client
ref: af1de799f402ef76ad4513052c3e0008155a92fb
path: packages/halkyon_app
ref: e23cc77f7c30a2a07015237ef0f054d1d1ccad2b
# Halkyon's low-level parts (halkyon_shared): the queues the repositories
# run their work in (SerialQueue, CoalescingRunner).
halkyon_core:
git:
url: https://code.halkyon.app/project-halkyon/halkyon_shared.git
path: packages/halkyon_core
ref: e23cc77f7c30a2a07015237ef0f054d1d1ccad2b
halkyon_learn_client:
path: ../halkyon_learn_client
# Halkyon's look, shared by its apps (halkyon_shared): the theme, the bundled Noto
@ -91,7 +92,7 @@ dependencies:
git:
url: https://code.halkyon.app/project-halkyon/halkyon_shared.git
path: packages/halkyon_ui
ref: af1de799f402ef76ad4513052c3e0008155a92fb
ref: e23cc77f7c30a2a07015237ef0f054d1d1ccad2b
# Anki's fields are HTML; the editor brings this parser along already.
html: ^0.15.6
# Talks to Jellyfin servers; Serverpod's client brings it along already.
@ -136,11 +137,13 @@ dependencies:
# Videos from a Jellyfin server elsewhere: flutter.dev's player (ExoPlayer on
# Android, AVPlayer on iOS and macOS).
video_player: ^2.14.1
window_to_front: ^0.0.4
youtube_player_iframe: ^6.0.2
dev_dependencies:
fake_async: ^1.3.3
# The flags halkyon_app draws where an instance keeps its data, which the
# whole-app tests look for.
flag: ^7.1.0
# Used for agents to drive the app through the Dart MCP
flutter_driver:
sdk: flutter
@ -149,8 +152,6 @@ dev_dependencies:
flutter_launcher_icons: ^0.14.4
flutter_test:
sdk: flutter
# A test drives sign-in through its front, as Serverpod's GitHub sign-in does.
flutter_web_auth_2: ^5.1.0
# Checks on a device what no widget test can see (integration_test/).
integration_test:
sdk: flutter
@ -159,9 +160,6 @@ dev_dependencies:
serverpod_auth_core_client: 4.0.4
yaml: ^3.1.4
dependency_overrides:
flutter_secure_storage: ^10.0.0
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
@ -193,9 +191,6 @@ flutter:
- assets/maps/japan_prefectures.geojson
- assets/maps/world_countries.geojson
- assets/maps/LICENSE-CLDR.txt
# The notice of the flags where instances keep their data (lipis' flag-icons,
# through the flag package).
- assets/flags/LICENSE-flag-icons.txt
# The CJK fonts' licence, for the licence list (see assets/fonts/ATTRIBUTION.md).
- assets/fonts/OFL-NotoSansCJK.txt
# The licences of MeCab, its dictionary IPADIC and Ve's rules, which cut Japanese