build: Melos, a Dart check and every path for the single repository

- Melos 8.9 as the root's dev dependency, with scripts across the
  workspace (analyze, test:dart, test:flutter, generate, check) and its
  filters (--diff, --include-dependents); cli_util overridden to 0.5.2
  for it, since Learn's flutter_launcher_icons asks for 0.4 and uses only
  its logger, unchanged in 0.5.
- tool/check.dart in place of tool/check.sh: packages, formatting of our
  own files, analysis, the tools' tests, then every package's tests
  through Melos (--changed-since=<commit> for only what changed and what
  depends on it). tool/pre-push is the hook: the signature check, then
  the checks. CI generates every server's code and runs the same check.
- The images build from the root with a workspace narrowed to what they
  need (tool/workspace_only.sh); compose, the deploy's migration test,
  the snap, the release script, the editor's launch files and Learn's
  asset tools (run from apps/learn) follow the new layout.
- The project's source is named as project-halkyon/halkyon (source link,
  snap, F-Droid listing, release uploads); the AGPL packages carry the
  licence's own text.

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 20:39:09 +02:00
commit af1dbee509
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -39,8 +39,8 @@ cd "$(git rev-parse --show-toplevel)"
readonly server_url='https://learn.halkyon.eu/'
readonly forgejo='https://code.halkyon.app'
readonly repository='project-halkyon/halkyon_learn'
readonly pubspec='halkyon_learn_flutter/pubspec.yaml'
readonly repository='project-halkyon/halkyon'
readonly pubspec='apps/learn/halkyon_learn_flutter/pubspec.yaml'
readonly certificate_file='tool/release/android-certificate.sha256'
readonly fdroid_certificate_file='tool/release/fdroid-index-certificate.sha256'
# The Snap Store channel the snap goes to, e.g. edge; empty: not to the Store yet,
@ -241,7 +241,7 @@ trap cleanup EXIT
step "Building the APK from $tag"
git worktree add --quiet --detach "$source" "$tag"
(
cd "$source/halkyon_learn_flutter"
cd "$source/apps/learn/halkyon_learn_flutter"
flutter pub get --enforce-lockfile
HALKYON_ANDROID_KEYSTORE="$keystore" \
HALKYON_ANDROID_KEY_ALIAS="$key_alias" \
@ -250,7 +250,7 @@ git worktree add --quiet --detach "$source" "$tag"
# The Gradle daemon would otherwise live on with the password in its environment.
(cd android && ./gradlew --stop >/dev/null) || true
)
cp "$source/halkyon_learn_flutter/build/app/outputs/flutter-apk/app-release.apk" "$out/$apk"
cp "$source/apps/learn/halkyon_learn_flutter/build/app/outputs/flutter-apk/app-release.apk" "$out/$apk"
unset password
step 'Checking the APK'