feat: add Flutter getter rewrite spine#514
Open
xz-dev wants to merge 46 commits into
Open
Conversation
Document the Flutter app, reusable Rust getter submodule, Lua package repository model, SQLite split, migration bridge, and testing strategy for the UpgradeAll rewrite.
Record required docs, submodule ownership, architecture rules, and local pi ignore policy for coding agents.
Add the first Flutter UI/platform-adapter shell with stable route/action/state keys, fake getter adapter data, Android/Linux scaffolds, and widget tests.
Point the UpgradeAll superproject at the reusable getter submodule rewrite and keep api_proxy on the Android-compatible getter feature set.
Add just-based local and GitHub Actions validation for getter tests, CLI BDD, Flutter shell tests, workspace checks, and Flutter Android debug builds.
Update the getter submodule to the Android facade fix and enable native-tokio explicitly for api_proxy without pulling the getter domain feature set.
Update the Flutter Android wrapper to Gradle 8.7 so current Flutter stable accepts the debug APK build in rewrite validation CI.
Guard the Telegram APK notification preparation and upload steps so manual branch runs and non-master events cannot post to the channel.
Upgrade the Flutter Android shell to Android Gradle Plugin 8.6.0 so current Flutter stable accepts the debug APK build in rewrite validation CI.
Upgrade the Flutter Android shell Kotlin Gradle Plugin to 2.0.0 so current Flutter stable accepts rewrite validation builds.
Record the completed Kotlin CI fix, green PR checks, submodule verification, and updated PR descriptions in the rewrite todo plan.
Add ADR-0007, getter-owned Flutter DTOs, fake and CLI adapters, and a Flutter dev test that exercises a real getter-cli data directory. Wire the integration test into just verify and update the getter submodule to the legacy report-list command.
Update the getter submodule to the repo validate implementation and document the offline diagnostics contract for Lua package repositories.
ec58e1f to
c0f6752
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
app_flutter/with stable UI route/action/state keys and widget tests while keeping product logic behind a getter adapter boundary.app_flutteras the product APK entry and Android/Kotlin as platform adapter glue only; Rust getter remains the owner of domain/storage/repository/Lua/migration/update/runtime decisions.RuntimeNotificationEventChannel delivery.action_idsubmission, task query/control/user-result/remove/clean, typed runtime notifications, and read-only runtime task snapshot rendering on the Downloads route.readOperationnow serves repository list, tracked package list, and getter-owned Lua package evaluation toMethodChannelGetterAdapter.loadSnapshot().pin_versionDTO terminology in Flutter-facing models; legacy ignored-version names are no longer parsed in Dart product DTOs.debug fake-task ...; CLI runtime coverage uses one-processgetter runtime script.DUpdateSystem/getter@60a6515and keepcore-getter/src/main/rust/getteras a real git submodule, not vendored source.updatespath as mock-provider scaffolding behind a getter-provider boundary; live provider/downloader/installer behavior remains deferred.justverification recipes and root rewrite validation GitHub Actions workflow.pushevents onmasteronly.Architecture
action_id; Flutter returns only the action id and never constructs/echoes full action payloads.CliGetterAdapteris development/test infrastructure, not the Android production runtime host. Its typed runtime methods intentionally throwbridge.unsupported.core-getter/src/main/rust/getterremains a git submodule.hub listremains compatibility-only and does not revive the old hub-app model.Validation
Recent local validation on the current branch includes:
cargo fmtcargo test -p getter-cli --libcargo test -p getter-cli --test bdd_clicargo test -p getter-core updatecargo test -p getter-storagecargo test -p getter-providerscargo test -p getter-operations --features luacargo test -p getter-operations --features lua runtimecargo test -p getter-operations --features lua read_modelcargo check -p getter-core --no-default-featurescargo check -p getter-operationscargo check -p getter-operations --features luacargo test --manifest-path core-getter/src/main/rust/api_proxy/Cargo.toml --lib runtime_dispatchercargo test --manifest-path core-getter/src/main/rust/api_proxy/Cargo.toml --lib read_operationcd app_flutter/android && ./gradlew --no-daemon :app:testDebugUnitTest --tests net.xzos.upgradeall.GetterBridgeRequestBuilderTestflutter analyzeGETTER_CLI_BIN=/home/xz/Code/DUpdateSystem/UpgradeAll/core-getter/src/main/rust/getter/target/debug/getter-cli flutter test dev_test/cli_getter_adapter_test.dart test/native_getter_adapter_test.dart test/widget_test.dartgit diff --checkJAVA_HOME=/opt/android-studio/jbr ANDROID_NDK_HOME=/home/xz/.local/share/Google/Android/Sdk/ndk/29.0.14206865 just verify-workspace-skeletonGitHub Actions last known green before the latest read-model/toolchain commits (
25af79c0) were pushed:UpgradeAll Rewrite Validation / Rewrite validation: pass — https://github.com/DUpdateSystem/UpgradeAll/actions/runs/28154863066/job/83380862207Android CI / Build: pass — https://github.com/DUpdateSystem/UpgradeAll/actions/runs/28154862812/job/83380861266gh actwas also used locally to reproduce the CI environment. It confirmed the real failure before the last fix: LuaJIT's armv7 build uses hostcc -m32forminilua, so CI runners need 32-bit libc/multilib headers. Commit7bcaa0b9installsgcc-multilib g++-multilibin both workflows. After that fix, GitHub CI passed; localgh actcan still hit intermittent Maven Central TLS handshake failures in the act container, which were not present in GitHub CI.Deferred work / non-goals for this PR
Eventual merge ordering (not the next milestone)
core-getter/src/main/rust/gettersubmodule gitlink before merging.Related
Notes