Android/F-Droid release tooling + widget-test harness repair #706
No reviewers
Labels
No labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority/Critical
Priority/High
Priority/Low
Priority/Medium
Reviewed/Confirmed
Reviewed/Duplicate
Reviewed/Invalid
Reviewed/Won't Fix
Status/Abandoned
Status/Blocked
Status/Need More Info
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
project-halkyon/halkyon-learn!706
Loading…
Reference in a new issue
No description provided.
Delete branch "refs/pull/706/head"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Android / F-Droid release tooling
HALKYON_KEYSTORE_PASSWORDis set (the publish path provides it via pass-cli); otherwise they fall back to debug signing, so local--releaseruns and IDE Gradle syncs work without the keystore. The previous variant threw on any release build lacking the password, which blocked local release runs.scripts/flutter.sh: one wrapper with a leading--signedflag — default injects non-secret config from.env/dev.json(no keystore, no Proton Pass prompt);--signedresolves.env/.env.buildvia pass-cli for release-signed builds.v0.1.0is the first F-Droid release.Widget-test harness repair (14 pre-existing VM failures)
Recent feature merges outgrew their test harnesses and surfaced two latent production bugs:
main.dart(real bug): theGoRouteris built indidChangeDependencies(not a late-final initialiser), sodispose()never callsDependenciesScope.of(context)on a deactivated element. The pomodoro clock is read inbuild()and closed over, rather than viaDependenciesScope.ofinsideBlocProvider.create(provider forbids listening lookups there — it threw under asserts/widget tests).grammar_enablement:grammarGatewayIfEnabledusesDependenciesScope.maybeOf, so a scope-less thin widget test degrades to "no grammar" instead of throwing.app_router_test: provides the app-levelPomodoroBlocabove the routes and stubs the HomePdfDeadlinesOverviewBloc'swatchDueCountsByPdfsubscription.Dependencies:dictionaryGatewayis an optional param defaulting to the Supabase-backed gateway (production and the ~45 other test sites unchanged), and the studyset language picker reads it — letting the previously-skipped "attach a reference dictionary across the subtree" test drive the real picker through a mock.Full suite: 3854 passed, 0 skipped, 0 failed.
Notes
main(incl. #704); the only conflict was theMaterialApp.routerblock inmain.dart— kept #704's device-locale delegates plus the_router!null-check from the dispose fix.v0.1.0tag points at the pre-rebase release commit; re-tag after merge (especially if squashed).