Motivation
The plugin works, but a few gaps make the repo less robust than it should be. Most importantly, CI never compiles the native code (Android/Kotlin, iOS/Swift) — a native-only change can pass every check and still break the consuming app's build (#26 was a Kotlin-only fix with zero CI coverage). Scoped, realistic improvements below.
High priority
1. Build native code in CI — pull-request.yaml runs Dart (analyze/test) + Go (vet/test) only; neither Kotlin nor Swift is compiled.
2. Remove/replace stale template tests — both are flutter create leftovers testing a getPlatformVersion the plugin doesn't implement (the Kotlin one is even in the wrong package com.cakewallet.bitbox):
3. Add a real LICENSE — currently literally TODO: Add your license here.; reflect the choice in pubspec.yaml.
Medium priority
4. Real README — currently the default Flutter template. Document what it does, supported devices/chains, the Dart <-> native <-> Go layering, and how the gomobile bindings are rebuilt (run_build_tool_android.sh, ffigen_config.yaml).
5. Fill pubspec metadata — description is the template string; homepage/repository are empty.
Low priority (polish)
6. CHANGELOG — replace 0.0.1 - TODO: Describe initial release; history jumps 0.0.1 -> 0.0.8 while tags 0.0.2-0.0.7 exist.
7. Native error logging — the native layer logs almost nothing; e.g. InitBitBoxOperation swallows init failure in catch (Throwable) with no log. Add consistent Log.w(...) on native error paths.
Out of scope (deliberately)
- No full native unit-test coverage needed — a compile/build gate plus the existing Go fakes cover the valuable ground.
- Vendored gomobile artifacts (
api.aar / Api.xcframework) can stay as-is.
Motivation
The plugin works, but a few gaps make the repo less robust than it should be. Most importantly, CI never compiles the native code (Android/Kotlin, iOS/Swift) — a native-only change can pass every check and still break the consuming app's build (#26 was a Kotlin-only fix with zero CI coverage). Scoped, realistic improvements below.
High priority
1. Build native code in CI —
pull-request.yamlruns Dart (analyze/test) + Go (vet/test) only; neither Kotlin nor Swift is compiled.example/(flutter build apk) or./gradlew assembleDebugflutter build ios --no-codesignofexample/2. Remove/replace stale template tests — both are
flutter createleftovers testing agetPlatformVersionthe plugin doesn't implement (the Kotlin one is even in the wrong packagecom.cakewallet.bitbox):android/src/test/kotlin/.../BitboxFlutterPluginTest.ktexample/ios/RunnerTests/RunnerTests.swift3. Add a real LICENSE — currently literally
TODO: Add your license here.; reflect the choice inpubspec.yaml.Medium priority
4. Real README — currently the default Flutter template. Document what it does, supported devices/chains, the Dart <-> native <-> Go layering, and how the gomobile bindings are rebuilt (
run_build_tool_android.sh,ffigen_config.yaml).5. Fill pubspec metadata —
descriptionis the template string;homepage/repositoryare empty.Low priority (polish)
6. CHANGELOG — replace
0.0.1 - TODO: Describe initial release; history jumps 0.0.1 -> 0.0.8 while tags 0.0.2-0.0.7 exist.7. Native error logging — the native layer logs almost nothing; e.g.
InitBitBoxOperationswallows init failure incatch (Throwable)with no log. Add consistentLog.w(...)on native error paths.Out of scope (deliberately)
api.aar/Api.xcframework) can stay as-is.