Skip to content

Migrate Routely to Flutter for mobile, web and desktop - #38

Closed
shedowe19 wants to merge 4 commits into
mainfrom
codex/flutter-cross-platform-migration
Closed

shedowe19 wants to merge 4 commits into
mainfrom
codex/flutter-cross-platform-migration

Conversation

@shedowe19

@shedowe19 shedowe19 commented Oct 7, 2026 •

Copy link
Copy Markdown
Owner

Routely's Kotlin/Compose application currently limits the existing Träwelling experience to Android. This adds a shared Flutter application for Android, iOS, web, Windows, macOS and Linux while retaining the Kotlin source as a behavioral reference.

The Flutter application preserves feeds, profiles, notifications, check-in and status editing, travel timelines, GPS time estimation, rail/tram and SEV geometry, speech, settings and the existing visual style. Native Android/iOS hosts implement background tracking and ride recognition, notifications, Android widgets and Apple Live Activity/WidgetKit integration. Web and desktop use foreground tracking.

The final review fixes failed and superseded tracking starts, stale session persistence, response-body failures after accepted mutations, recognition cleanup, iOS authorization decisions, stale one-shot location fixes and Android permission changes during provider registration. Approximate-location tracking remains available when the user grants only coarse location; ride recognition requires precise location. Status cards retain creation dates, including narrow displays with large text.

Android release builds regenerate the plugin registrar for release mode and reject lockfile drift before artifacts or signing, preventing debug-only integration-test plugins from breaking release compilation.

German project wiki documentation records architecture, feature parity, setup, test coverage, release configuration and acceptance limits. New pages cover the migration architecture, Flutter development and the migration decision.

Validation on head bb6d0fdcc9adc62e016fbd6c0991ef73b0f179c1:

  • 334 Flutter unit/widget/regression tests passed with coverage.
  • Formatting, fatal-info static analysis and locked dependency resolution passed.
  • 7 native Android contract tests passed with no failures, errors or skips; full Android lint reported 0 errors (22 warnings).
  • 56 offline Android releaseguard tests passed.
  • Android debug and unsigned release APKs built; release package identity and absence of a signer verified.
  • iOS release and its embedded Widget extension built and verified without signing.
  • macOS, Windows, Linux and JavaScript web release builds passed.
  • The existing Kotlin API compatibility workflow passed.
  • Working tree is clean and git diff --check passes.

Android debug APK · Unsigned Android release APK

Cross-platform CI and build artifacts · API compatibility CI

The web dependency's optional WebAssembly dry run still reports incompatibilities; validation covers the regular JavaScript build. Signed Android upgrades, iPhone installation and background operation, widgets, Live Activity and real trips require owner signing and physical-device acceptance. This PR does not publish a signed Android release or an Apple store build.

Preserve the existing app design and core Träwelling features with shared Dart logic and native Android/iOS tracking hosts. Add platform builds, regression coverage, guarded Android releases and German migration documentation.

Validate 334 Flutter regressions, static analysis, locked dependencies, Web release build and 56 offline releaseguard tests. Native compilation and signed device acceptance remain separate checks.
Clean up partial location subscriptions when permission is revoked and reject ride recognition without a registered location source. Handle disappearing providers without disabling lint checks. Record the first cross-platform CI results and retain signed-device acceptance limits in the project wiki.
Retry remaining location providers when a single provider requires unavailable precision, while still retiring subscriptions after full permission revocation. Keep ride recognition limited to precise permission and add the native grant-matrix regression.
@shedowe19 shedowe19 closed this Oct 7, 2026
@shedowe19
shedowe19 deleted the codex/flutter-cross-platform-migration branch October 7, 2026 11:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant