// How Halkyon Learn is released (`dart run tool/release.dart learn`): the // release tool's configuration of it, registered in tool/src/release/apps.dart. import '../../tool/src/release/app_release.dart'; /// Halkyon Learn's releases: the APK and the snap, both connecting to /// learn.halkyon.eu, the project's instance, published on code.halkyon.app, /// in the project's F-Droid repository and, once a channel is set, in the /// Snap Store. const learnRelease = AppRelease( id: 'learn', name: 'Halkyon Learn', applicationId: 'app.halkyon.learn', directory: 'apps/learn', flutterPackage: 'apps/learn/halkyon_learn_flutter', artifactName: 'halkyon-learn', serverUrl: 'https://learn.halkyon.eu/', forgejo: 'https://code.halkyon.app', repository: 'project-halkyon/halkyon', // A PKCS #12 keystore outside the repository (also in the maintainer's // password manager): there is no Google Play, so it is the app's identity, // and lost, installed apps can't be updated. android: AndroidSigning( certificateFile: 'tool/release/android-certificate.sha256', keystoreVariable: 'HALKYON_ANDROID_KEYSTORE', defaultKeystore: '.local/share/halkyon-learn/android-release.p12', aliasVariable: 'HALKYON_ANDROID_KEY_ALIAS', defaultAlias: 'halkyon-learn', ), fdroid: FdroidListing( script: 'tool/fdroid_repo.sh', listing: 'tool/release/fdroid', indexCertificateFile: 'tool/release/fdroid-index-certificate.sha256', repositoryUrl: 'https://halkyon.app/fdroid/repo', ), // No Store channel yet: the snap is only attached to the release. snap: SnapRelease( name: 'halkyon-learn', part: 'halkyon-learn', directory: 'snap', ), // Learn's releases up to build 21 were tagged v0.18.0 and so on. legacyTagPrefix: 'v', // Its packages were at the repository's root until it moved into apps/learn // (19 Oct 2026, ADR 0015). formerPaths: [ 'halkyon_learn_client', 'halkyon_learn_curator', 'halkyon_learn_flutter', 'halkyon_learn_server', ], );