[2.0.0] - 2026-08-09¶
Kite AOS 2.0 brings the project to the living room: the kiosk now runs on Android TV boxes as a 10-foot, D-pad-driven Home Assistant dashboard from a single codebase, with full parity to the tablet build. This release also lands a pluggable motion-source pipeline and a user-selectable camera source — a USB-OTG webcam now works on phones and tablets too, not just Android TV.
Added¶
Android TV¶
formfactorflavor dimension (mobile/tv) across the convention plugins →gmsMobile/fossMobile/gmsTv/fossTv;BuildConfig.IS_TVand atvversionCodeoffset for Play multi-APK deliveryAppConfigruntime form-factor detection (UI-mode /FEATURE_LEANBACK/ seededBuildConfig.IS_TV) surfaced to feature libraries- Adaptive 10-foot UI:
FormFactor,LocalFormFactor,LocalWindowSizeClass,Theme.is10Foottoken up-scaling, andModifier.tvFocusRingD-pad focus rings - D-pad control-drawer access via a hidden directional combo in
HostActivity; TV master/detail settings layout with single-focus-target list navigation - Leanback launcher + banner (
tvmanifest overlays);LEANBACK_LAUNCHERadded to<queries>for app-drawer enumeration (ApplicationPlatformSourceImplnow enumerates both LAUNCHER and LEANBACK_LAUNCHER, deduped by package) DarkOverlayscreen state — a plain dark overlay stand-in for screen-off on Android TV, where the app cannot lock/power off the panel (ScreenStateModel/ScreenStateResource);DevicePowerManagerwake/lock are no-ops on TV- Home Assistant form-factor entity gating:
MqttConnectUseCase/TelemetryMqttSourcetake amodel(tv/tablet) reported in HA Discovery; on TV, brightness/screen/volume/battery entities are not registered and stale ones are cleaned up material3-window-size-classdependency
Motion pipeline¶
- Pluggable
MotionSourceabstraction —MotionServiceno longer hardcodes CameraX; Camera2-external, UVC, and MQTT motion sources sit behind one interface, with a stride-awareMotionAnalyzeroverload for padded YUV/NV21 frames - USB-webcam motion sources:
Camera2ExternalMotionSource→UvcMotionSource(libausbc) fallback →MqttMotionSourcepresence fallback, withHeadlessGlSurfaceTexturefor the UVC surface requirement
Camera source selection¶
- User-selectable camera source (
Auto/Front/Rear/External) on every form-factor:CameraSourceModeldomain model and acamera.pbProto DataStore preference (CameraPreferenceSource, serializer, mapper, storage) GetCameraSourceUseCase/SetCameraSourceUseCase/ObserveCameraSourceUseCaseandConfigureRepositorycamera-source methods- Settings selector to pick the camera source; localized strings (EN + UK)
MotionSourceFactory.create(choice)honors the preference:Autopicks the highest-priority available source,Front/Rearforce the built-in lens,Externalforces a USB/UVC webcam, with fallback toAutowhen the forced source is unavailable
Changed¶
- MQTT publishes
device_class = tvon thetvflavor; screensaver reused as the TV ambient mode - Android TV documentation promoted from design plan to as-built reference (android-tv.md)
- Bumped
versionNameto2.0.0(versionCode7)
[1.1.0] - 2026-06-13¶
This release adds screensaver overlay, MJPEG streaming, auto-reboot scheduler, analytics infrastructure, and expands settings with five new preference categories.
Added¶
- Analytics infrastructure with pluggable provider pattern (console + Firebase for gms flavor)
- Screensaver, auto-reboot, streaming, reduce-motion, and webview-refresh preferences
- Domain models and repository contracts for new features
- Use cases for screensaver, streaming, auto-reboot, screen state, and webview-refresh
- MQTT telemetry extended with screensaver, FAB, and camera URL commands
- Auto-reboot scheduler, MJPEG streaming server, and network resolver to platform
- Screensaver overlay with clock component to main dashboard
- Settings expanded with streaming, screensaver, auto-reboot, and webview-refresh configuration
- Analytics, new modules, and updated services wired into app composition root
- Project documentation, architecture guides, and MkDocs configuration
Fixed¶
- Guard Application.onCreate against GeckoView child processes
Changed¶
- Remove watchdog recovery system from main feature
- Update F-Droid store listing description
- Remove GEMINI.md documentation files from all modules
[1.0.0] - 2026-05-27¶
This release marks the first major version of Kite AOS, introducing pluggable WebView engine support, automatic return, Home Assistant network discovery, expanded MQTT telemetry, and Android 7.1 (API 25) compatibility for the GMS flavor.
Added¶
- Pluggable WebView engine support (AndroidWebView / GeckoView) with Proto DataStore preferences
- Auto-return preference source and implementation
- Home Assistant network scanner and host discovery
- GetWebEngineUseCase / SetWebEngineUseCase across all layers
- DiscoverHomeAssistantUseCase, ObserveNetworkStatus, SetAutoReturn use cases
- MQTT network state and watchdog telemetry use cases
- Chrome and Firefox browser icon assets
Fixed¶
- Lower minSdk to 25 (Android 7.1) for GMS flavor — closes #7
- Scope GeckoView minSdk constraint to FOSS flavor only; add GMS manifest override
- Fallback to AndroidWebView at runtime when GeckoView is selected on API < 26
- Add dontwarn rules for GeckoView bundled Kotlin annotations (R8 fossRelease build)
Changed¶
- Update F-Droid short_description.txt
[0.0.3] - 2026-05-06¶
This release adds full bidirectional MQTT control with Home Assistant discovery, WebRTC support, Firebase Crashlytics integration, and a new onboarding microphone permission step.
Added¶
- Add RECORD_AUDIO permission step to onboarding
- Publish WebView URL to MQTT broker on page load
- Extend MqttService with bidirectional command routing
- Add domain use cases and repository for MQTT device control
- Expand MQTT data source for bidirectional control
- Add MQTT HA discovery config models for device control
- Add Firebase Crashlytics integration
Fixed¶
- Add WebRTC permissions and hardware acceleration
Changed¶
- Rename convention plugin package to convention
- Remove unused data-network modules from build
- Update documentation
- Upgrade Gradle to 9.3.1 and update version catalog
- Fix indentation in UI components