name: halkyon_learn_flutter description: A new Flutter project with Serverpod. # The following line prevents the package from being accidentally published to # pub.dev using `pub publish`. This is preferred for private packages. publish_to: 'none' # Remove this line if you wish to publish to pub.dev # The following defines the version and build number for your application. # A version number is three numbers separated by dots, like 1.2.43 # followed by an optional build number separated by a +. # Both the version and the builder number may be overridden in flutter # build by specifying --build-name and --build-number, respectively. # In Android, build-name is used as versionName while build-number used as versionCode. # Read more about Android versioning at https://developer.android.com/studio/publish/versioning # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html version: 0.26.0+29 environment: sdk: '^3.13.0' flutter: '^3.44.4' resolution: workspace dependencies: # Our fork of the editor's main branch, moved to win32 v6 so the app can stay in the pub # workspace, pinned to a signed commit of its branch halkyon/win32-v6. appflowy_editor: git: url: https://code.halkyon.app/project-halkyon/appflowy-editor.git ref: 81c3006c74e789ed2e470b8612529541b358fd26 # Anki packages are zip files. archive: ^4.0.7 # Sounds in content (pronunciations): one package for all five platforms; on # Linux it plays through GStreamer, whose development files a Linux build needs. audioplayers: ^6.8.1 clock: ^1.1.3 crypto: ^3.0.7 # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.5 # The Pomodoro timer on Linux talks to the desktop's notification server over # the session bus; the version the network packages bring along already. dbus: ^0.7.15 equatable: ^3.0.0 expressive_loading_indicator: ^0.0.1 # Saves exports on Android and iOS, where file_selector has no save dialog # (the system's through it: Android's Storage Access Framework); the editor # brings this version along already. file_picker: ^13.1.0 # 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 flutter: sdk: flutter flutter_bloc: ^9.1.1 flutter_localizations: sdk: flutter 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 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 # What every Halkyon app is built around (a shared package): 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. halkyon_app: path: ../../../packages/halkyon_app # The client side of halkyon_base: people's public profiles, which the # instance's register keeps (ADR 0016). halkyon_base_client: path: ../../../packages/halkyon_base_client # Halkyon's low-level parts (a shared package): the queues the repositories # run their work in (SerialQueue, CoalescingRunner). halkyon_core: path: ../../../packages/halkyon_core # Rich text's general parts (a shared package, ADR 0033, D37); Learn's own # blocks build on it in lib/src/core/editor/. halkyon_editor: path: ../../../packages/halkyon_editor halkyon_learn_client: path: ../halkyon_learn_client # Language models' APIs (a shared package, ADR 0021, D15): the protocols a # person's own assistant is asked in, which their settings keep. halkyon_llm: path: ../../../packages/halkyon_llm # The device's half of signing in with OpenID Connect (ADR 0023): the # browser that SimpleLogin's sign-in opens, and on Linux and Windows the # loopback it comes back to, which the app builds with its name. halkyon_oidc_flutter: path: ../../../packages/halkyon_oidc_flutter # Halkyon's look, shared by its apps (a shared package): the theme, the bundled # Noto Sans, window sizes and the widgets every screen is built of. halkyon_ui: path: ../../../packages/halkyon_ui # 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. http: ^1.6.0 # Photos for an assistant's question, taken with the camera's own app or # picked from the system's photo picker (the developer's review of 3 Nov # 2026): flutter.dev's own, no permission asked on Android. image_picker: ^1.2.4 intl: ^0.20.3 lucide_icons_flutter: ^3.1.20 material_ui: ^1.5.0 # Cuts Japanese into words on the device (ADR 0012): MeCab 0.996 (BSD), which # the package's build hook compiles from its C++, so every build, `flutter # test` too, needs a C++ compiler; its dictionary, IPADIC, comes from the # instance once the person asks for it. mecab_for_dart: ^2.0.5 # Videos from a Jellyfin server on Linux and Windows, where video_player has # no player: libmpv (MIT; libmpv LGPL), the system's on Linux (a Linux build # needs libmpv-dev), bundled on Windows. Used directly rather than behind # video_player, which can't keep libmpv from drawing the video's own # subtitles. Not fvp, whose libmdk is closed. media_kit: ^1.2.6 media_kit_libs_linux: ^1.2.1 media_kit_libs_windows_video: ^1.0.11 media_kit_video: ^2.0.1 package_info_plus: ^10.2.2 path: ^1.9.1 # SVG path data, for the strokes KanjiVG draws characters with. path_parsing: ^1.1.0 path_provider: ^2.1.6 # Modern Anki packages are zstd-compressed, every frame without its content # size, which upstream's v1.0.0 refuses. Our fork decodes them, pinned to a # signed commit of its branch halkyon/unknown-content-size; back to upstream # once it decodes them too. pdfrx: ^2.6.5 pure_zstd: git: url: https://code.halkyon.app/project-halkyon/pure-zstd.git ref: 596b63d5741d479073fbfc78377cc7dbdd342da3 serverpod_auth_idp_flutter: 4.0.4 serverpod_flutter: 4.0.4 serverpod_offline_sync_client: 0.0.10 # Anki collections are SQLite databases (the sync engine already bundles it). sqlite3: ^3.6.0 url_launcher: ^6.3.2 # Videos from a Jellyfin server elsewhere: flutter.dev's player (ExoPlayer on # Android, AVPlayer on iOS and macOS). video_player: ^2.14.1 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 # 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 # Checks on a device what no widget test can see (integration_test/). integration_test: sdk: flutter # The sync tests (test/sync/) sign in like the app and read the server's database. postgres: ^3.5.16 serverpod_auth_core_client: 4.0.4 yaml: ^3.1.4 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec # The following section is specific to Flutter. flutter: # Generates AppLocalizations from lib/l10n (see l10n.yaml). generate: true # The following line ensures that the Material Icons font is # included with your application, so that you can use the icons in # the material Icons class. uses-material-design: true # To add assets to your application, add an assets section, like this: # assets: # - images/a_dot_burr.jpeg # - images/a_dot_ham.jpeg # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/assets-and-images/#resolution-aware. # For details regarding adding assets from package dependencies, see # https://flutter.dev/assets-and-images/#from-packages assets: - assets/config.json # What each release changed, one file a release and language # (..txt), drafted by tool/release.dart and edited # (Halkyon Train's ADR 0030, D61): halkyon_app's What's new shows them. - assets/whats_new/ # The app's icon (ADR 0031), the window's on Linux, atop the navigation rail and # on the launch screen (D6), 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 - assets/maps/LICENSE-CLDR.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 # into words on the device (ADR 0012). - assets/mecab/ # How kanji and kana are written, from KanjiVG (see assets/kanjivg/ATTRIBUTION.md). - assets/kanjivg/ # How Chinese characters are written, from Make Me a Hanzi (see # assets/makemeahanzi/ATTRIBUTION.md), and the Hangul letters. - assets/makemeahanzi/ - assets/hangul/ # The CJK fonts, the same on every device and never fetched: Noto Sans JP, SC, TC # and KR for Japanese, Chinese and Korean, behind halkyon_ui's Noto Sans, in the # order a studyset's language asks for (halkyon_ui's appFontFallbackFor, which # names them by these families). Each file holds every weight (variable fonts). fonts: - family: Noto Sans JP fonts: - asset: assets/fonts/NotoSansJP-Variable.otf - family: Noto Sans SC fonts: - asset: assets/fonts/NotoSansSC-Variable.otf - family: Noto Sans TC fonts: - asset: assets/fonts/NotoSansTC-Variable.otf - family: Noto Sans KR fonts: - asset: assets/fonts/NotoSansKR-Variable.otf # 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_learn_icon.png" android: true adaptive_icon_background: "#ffffff" adaptive_icon_foreground: "assets/icon/halkyon_learn_icon.png" adaptive_icon_monochrome: "build/icons/monochrome.png" ios: true remove_alpha_ios: true background_color_ios: "#ffffff" image_path_ios_dark_transparent: "build/icons/ios_dark.png" image_path_ios_tinted_grayscale: "build/icons/ios_tinted.png" macos: generate: true image_path: "build/icons/macos.png" windows: generate: true image_path: "build/icons/rounded.png" icon_size: 256