34509fca3c
The C surface in `library/src/c_api` was a single bucket of `pub extern "C"` functions covering both consumers — `package:shorebird_code_push` (via ffigen) and Shorebird's Flutter engine fork (via direct C++ link). That made it hard to reason about which symbols are stable ABI versus internal, and ffigen was generating bindings for engine-only symbols that no Dart code calls. Split into two self-contained submodules and two cbindgen-generated headers: - `c_api::dart` → `include/updater_dart.h` (stable ABI; ffigen entry point). Defines `UpdateResult`, the `SHOREBIRD_*` status constants, and the five Dart-stable functions: `shorebird_current_boot_patch_number`, `shorebird_next_boot_patch_number`, `shorebird_check_for_downloadable_update`, `shorebird_update_with_result`, `shorebird_free_update_result`. - `c_api::engine` → `include/updater_engine.h` (no stability guarantee). Defines `AppParameters`, `FileCallbacks`, and the engine-only functions: `shorebird_init`, `shorebird_should_auto_update`, `shorebird_validate_next_boot_patch`, `shorebird_next_boot_patch_path`, `shorebird_free_string`, `shorebird_start_update_thread`, and the `shorebird_report_launch_*` trio. Each bucket file is self-contained: cbindgen scans only the file (`with_src` in build.rs) and emits the items it defines plus the C types they reference. There are no exclude/include lists in the cbindgen configs — adding a function to one bucket automatically lands it in the right header, and items in the other bucket cannot leak. `mod.rs` shrinks to a thin layer of private helpers shared by both buckets (`to_rust`, `allocate_c_string`, `free_c_string`, `log_on_error`) plus the test module. `include/updater.h` is removed; consumers include the specific header for their use case. The Flutter engine's `shell/common/shorebird/updater.cc` will be updated in a follow-up engine-repo PR to include `updater_engine.h` directly. Also drops two retired Dart-side symbols: - `shorebird_update` (replaced by `shorebird_update_with_result` in the Dart 2.0 rewrite, Nov 2024). - `shorebird_check_for_update` (replaced by `shorebird_check_for_downloadable_update` in the same rewrite). The shorebird_code_push package's `_legacyFallback` was the only path that still called `shorebird_update`. The package's `flutter: >=3.24.5` constraint guarantees the engine has `shorebird_update_with_result`, so the fallback was unreachable in practice. Removing it lets us drop the ABI symbol. Bumps shorebird_code_push to 2.0.7. Bindings regenerated via ffigen now contain only the five Dart-stable symbols. Follow-up engine PR will: include `updater_engine.h` instead of the removed `updater.h`; clean up `android_exports.lst` (drop the ghost `shorebird_active_path` and `shorebird_active_patch_number` exports, drop `shorebird_check_for_update`).
110 lines
2.5 KiB
Markdown
110 lines
2.5 KiB
Markdown
# 2.0.7
|
|
|
|
- chore: internal cleanup; no public API changes.
|
|
|
|
# 2.0.6
|
|
|
|
- fix: `checkForUpdate` now reports `restartRequired` when the current patch
|
|
has been rolled back
|
|
- fix: `update` no longer throws `UpdateException` when no new patch is
|
|
available to install
|
|
- fix: `update` no longer throws `UpdateException` when another update is
|
|
already in progress
|
|
- docs: warn that `checkForUpdate` and `update` make network calls and may
|
|
block app startup if awaited synchronously
|
|
|
|
# 2.0.5
|
|
|
|
- docs: fix Discord badge in `README.md`
|
|
|
|
# 2.0.4
|
|
|
|
- feat: allow for custom UpdateTrack names in addition to stable, staging, and
|
|
beta
|
|
|
|
# 2.0.3
|
|
|
|
- feat: override `toString` in `ReadPatchException` and `UpdateException`
|
|
|
|
# 2.0.2
|
|
|
|
- fix: un-break web platform
|
|
- chore: minor improvements to example
|
|
|
|
# 2.0.1
|
|
|
|
- Update the minimum Flutter version from 3.24.4 to 3.24.5 (3.24.4 does not
|
|
include the updater changes required to support the new API).
|
|
|
|
# 2.0.0
|
|
|
|
- **BREAKING**: more updates to the Updater API. We now support Stable, Beta,
|
|
and Staging tracks for patches, meaning you have more control over who gets
|
|
your patches and when. Check out the example for a demo.
|
|
|
|
# 2.0.0-dev.2
|
|
|
|
- fix: tighten library exports
|
|
|
|
# 2.0.0-dev.1
|
|
|
|
- **BREAKING**: revamp the updater API
|
|
- Remove `ShorebirdCodePush` in favor of `ShorebirdUpdater`
|
|
|
|
# 1.1.6
|
|
|
|
- Update log messages to explain what "using no-op implementation" means.
|
|
|
|
# 1.1.5
|
|
|
|
- Update example to use isNewPatchReadyToInstall.
|
|
|
|
# 1.1.4
|
|
|
|
- Run `dart format` over generated files to appease pub static analysis.
|
|
|
|
# 1.1.3
|
|
|
|
- Update README to improve example.
|
|
- Remove confusing log message printed when Shorebird is not available.
|
|
|
|
# 1.1.2
|
|
|
|
- update README
|
|
|
|
# 1.1.1
|
|
|
|
- break: `package:shorebird_code_push/shorebird_code_push_io.dart` and
|
|
`package:shorebird_code_push/shorebird_code_push_web.dart` have moved into
|
|
`src/` to discourage accidental direct import of these files. Please import
|
|
`package:shorebird_code_push/shorebird_code_push.dart` instead.
|
|
- Fixes repository link in pubspec.yaml
|
|
|
|
# 1.1.0
|
|
|
|
- feat: introduce `isShorebirdAvailable` to determine whether the Shorebird Engine is detected
|
|
- fix: crashes when running Flutter application on web
|
|
- docs: improvements to example app
|
|
|
|
# 1.0.0
|
|
|
|
- Change `downloadUpdate` to `downloadUpdateIfAvailable`, as the Updater performs
|
|
this check internally anyway.
|
|
|
|
# 0.1.3
|
|
|
|
- Ignore some lints in generated files to make pub.dev happy
|
|
|
|
# 0.1.2
|
|
|
|
- Improves documentation
|
|
- Improves example, adds restart button to readme
|
|
|
|
# 0.1.1
|
|
|
|
- Add readiness warning to README
|
|
|
|
# 0.1.0
|
|
|
|
- Initial release 🎉
|