github RushB-fr/freekiosk v1.2.16-beta.1
FreeKiosk v1.2.16 - Screen Timeout & Hardware Sensors

pre-release7 days ago

Added

  • ๐Ÿ’ค "Keep Screen On" Toggle (#83): New option in Display settings to disable FLAG_KEEP_SCREEN_ON

    • When turned off, the Android system manages screen timeout normally โ€” the display turns off after the device's configured inactivity period, just like a regular device
    • Default is ON (standard kiosk behavior โ€” no change for existing users)
    • Screensaver is automatically disabled and hidden when this option is off, since the system handles sleep
    • Only available in WebView mode (External App mode already delegates screen management to the system)
    • Included in backup/restore and reset
    • REST API / MQTT screensaverOn command is ignored when keep-screen-on is disabled
  • ๐Ÿ“Š Device Hardware Info in MQTT & REST API (#80): Status now includes manufacturer, model, androidVersion, apiLevel, processor, deviceName, product, and uptime fields

    • Home Assistant Discovery now registers 5 new sensors: Manufacturer, Model, Android Version, Processor, and Uptime
    • Real device info in Home Assistant Discovery: Device block now shows actual manufacturer and model (e.g., "Samsung Galaxy Tab A") instead of hardcoded "FreeKiosk"

Fixed

  • โ™ฟ Accessibility Service Persistence (#80): Added android:isAccessibilityTool="true" to prevent Android 12+ from auto-disabling the service after inactivity

    • Added automatic re-enablement on boot when app is Device Owner โ€” the accessibility service is now programmatically re-enabled in BootReceiver using Device Owner privileges, surviving reboots without manual intervention
  • ๐Ÿ“ก MQTT Disconnects When App Goes to Background (#80): Added AppState listener that detects when the app returns to foreground and automatically reconnects MQTT if the connection was lost during background/Doze mode

    • Devices now recover their MQTT connection seamlessly
  • ๐Ÿท๏ธ MQTT Device Name Not Updating (#80): Changing the Device Name in MQTT settings now prompts the user to reconnect, ensuring the new name takes effect in topics and Home Assistant discovery

    • Previously the old name/ID persisted until a manual disconnect/connect cycle
  • ๐Ÿท๏ธ MQTT Device Name Pre-Filled with Device Model (#80): The Device Name field now auto-fills with the Android device model (e.g., "SM-T510", "Pixel 7") on first use, instead of generating a random hex ID

    • Makes it easy to identify devices in a fleet
  • ๐Ÿงช ExecuteJS Command Reliability (#80): Fixed executeJs (via REST API and MQTT) silently failing when:

    • (a) the same JS code was sent twice in a row (React state didn't change)
    • (b) the page was still loading
    • Now appends a unique marker to force re-execution, and retries up to 5 seconds if the page is loading
  • ๐Ÿ“ถ SSID Reporting Inconsistency (#80): Fixed <unknown ssid> being passed through raw in SystemInfoModule (Status Bar)

    • Now consistently shows "WiFi" as fallback across all modules when location permission prevents SSID access
  • ๐Ÿ“ท Camera2 Fallback for Devices Where CameraX Fails Entirely (MediaTek LEGACY, front-only cameras): On some devices, CameraX's CameraValidator permanently rejects the camera

    • Added a Camera2 API fallback: the settings screen now queries Camera2 directly via a new getCamera2Devices() native method when CameraX returns nothing
    • The motion detector automatically switches to Camera2-based photo capture (captureCamera2Photo()) when vision-camera has no device โ€” enabling motion detection on hardware that CameraX cannot handle
  • ๐Ÿ› Fixed Crash (CalledFromWrongThreadException) When Entering Standby/Screensaver (#82): Native events (onScheduledSleep, onScheduledWake, navigateToPin, onScreenStateChanged, API commands) were triggering React state updates synchronously on the mqt_v_native thread

    • Caused react-native-screens to manipulate the Android view hierarchy from a non-UI thread
    • Wrapped all native event callbacks with setTimeout(cb, 0) to defer state updates to the next event loop tick, ensuring React commits go through proper UI thread dispatch
  • ๐Ÿ› Fixed Invisible PIN Input on Dark Mode Devices (#81): The PIN TextInput had no explicit color set, so Android dark mode overrode the text/dot color to white โ€” making input invisible against the white background

    • Added explicit color: '#333333' and placeholderTextColor to ensure dots and placeholder are always visible regardless of system theme

Don't miss a new freekiosk release

NewReleases is sending notifications on new releases.