voo_watch 0.3.0
voo_watch: ^0.3.0 copied to clipboard
Flutter SDK for Apple Watch and Wear OS companion apps. Typed message bridge, haptics, health, complications, and a scaffolding CLI.
Changelog #
All notable changes to voo_watch will be documented in this file.
0.3.0 - 2026-04-28 #
Added #
- Web fallback transport.
VooWatch.instancenow auto-selects an in-memory transport whenkIsWebis true. Calls likeVooWatchUi.instance.render(...)are harmless no-ops in the browser, enabling Flutter web hot-reload previews of watch UI without aMissingPluginExceptionon thevoo_watch/methodchannel. The web fallback uses the sameFakeVooWatchTransportthat ships inpackage:voo_watch/testing.dart; its doc comment is updated to reflect the dual role (tests + web preview).
0.2.2 - 2026-04-28 #
Fixed #
- iOS:
emitReachabilitywrote to theFlutterEventSinkdirectly fromWCSessionDelegatecallbacks, which fire on background queues. That produced"channel sent a message from native to Flutter on a non-platform thread"warnings and could drop reachability events — leaving Dart listeners stuck in their last observed state. Reachability is now routed through the sameforward(...)helper the other channels use, so every emit hops to the main thread. - iOS:
voo_watch/messagescould callFlutterResulttwice — once synchronously afterWCSession.sendMessageand again from the asyncerrorHandler. Flutter asserts on a double-completed result, which could trip the engine and silently break subsequent sends. The bridge now wraps every send in aResultResolverthat completes exactly once and always on the main thread; the eager success path stays so receivers don't need a reply handler, and the asyncerrorHandlerbecomes a no-op once success has already been reported.
0.2.1 - 2026-04-28 #
Changed #
- Tightened
description:to fit pana's 60–180 char window so the package scores full marks under "Provide a validpubspec.yaml". - Inlined
formatter: page_width: 160in this package'sanalysis_options.yamlso pana picks it up when scoring without the workspace root in scope. No source changes — every file already conformed at the project's 160-column width.
0.2.0 - 2026-04-26 #
Changed #
- voo_watch is now positioned as the phone↔watch BRIDGE. For Flutter UI on Wear OS, use the new sibling package
voo_wearinstead of scaffolding Compose. voo_watch:initdefault--platformis nowios(wasboth). Pass--platform android --variant composeif you still want a native Compose Wear OS module (for Tiles, Complications, or Watch Faces).voo_watch:init --platform android(without--variant compose) now prints a redirect tovoo_wearand exits without writing files.
Notes #
- No API changes. Existing apps using
VooWatch.instancekeep working untouched. - Apple Watch story is unchanged: the Swift plugin and SwiftUI scaffolding template stay.
0.1.0 - 2026-04-26 #
Added #
- Initial release.
VooWatchfacade with typed messages, application context, user info, and reachability stream.VooWatchHapticsfacade with cross-platform haptic types.VooWatchHealthfacade for sample passthrough from watchOS HealthKit and Wear OS Health Services.VooWatchComplicationsfacade for updating complications (watchOS) and tiles (Wear OS).- iOS plugin wrapping
WatchConnectivity. - Android plugin wrapping the Wearable Data Layer (
MessageClient,DataClient,CapabilityClient). dart run voo_watch:initCLI that scaffolds a SwiftUI watchOS target and a Compose Wear OS module wired to the Flutter app.FakeVooWatchTransportexported frompackage:voo_watch/testing.dartfor in-process widget tests.