People's public profiles are the instance's register's (ADR 0016), so the module now holds them: the public_profile table (unchanged, so Learn's migration records versions only; devices get the table empty, as they hold every module's tables), the profile and profiles endpoints under `base`, the handle rules, the link checks and the page at /@handle, whose foot names the app as the host's configuration says (profilePageNote). Deleting a person deletes their profile in the module's core. Hosts read profiles through the module (profileOf, profilesOf, personWithHandle, fixHandle; saveProfile for their tests), behind an AccountRegister that is this server's own database for now. Learn's feedback, discussions and publishing ask it; publishing fixes the handle just before it writes the release, outside its transaction. Explore still joins the table in its search, so Learn holds the register wherever it runs. Learn's app calls the module's endpoints; a profile not found is ProfileNotFoundException. Todo's database gets the table too (it was never deployed). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
236 lines
9.8 KiB
YAML
236 lines
9.8 KiB
YAML
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.17.0+20
|
|
|
|
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
|
|
halkyon_learn_client:
|
|
path: ../halkyon_learn_client
|
|
# 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
|
|
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_icon.png, run
|
|
# through 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
|
|
# The kingfisher: the app icon, also shown atop the navigation rail.
|
|
- assets/icon/halkyon_icon.png
|
|
# 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 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
|
|
# 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"
|
|
android: true
|
|
adaptive_icon_background: "#ffffff"
|
|
adaptive_icon_foreground: "assets/icon/halkyon_icon.png"
|
|
ios: true
|
|
remove_alpha_ios: true
|
|
background_color_ios: "#ffffff"
|
|
macos:
|
|
generate: true
|
|
image_path: "build/icons/macos.png"
|
|
windows:
|
|
generate: true
|
|
image_path: "build/icons/rounded.png"
|
|
icon_size: 256
|