# Changelog All notable changes to the Android Kiosk Browser project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [1.0.0-MVP] - 2026-02-03 ### Added - **Fullscreen WebView browser** with immersive mode (hides status & navigation bars) - **URL whitelist system** with proper domain boundary matching - **Configurable homepage** URL via admin settings - **Lock Task Mode** support for full kiosk lockdown - **Admin PIN protection** (default: 1234) with 3-tap corner unlock - **Auto-launch on boot** via RECEIVE_BOOT_COMPLETED receiver - **Idle timeout** with automatic return to homepage and session clearing - **Admin settings panel** for runtime configuration - **29 unit tests** covering whitelist, idle timer, and config validation ### Security - Fixed whitelist bypass vulnerability (`hobbs.farm.evil.com` attack vector) - Proper domain boundary checking: `host == domain || host.endsWith(".$domain")` ### Documentation - README.md with setup instructions - TESTING.md with comprehensive QA checklist - IMPROVEMENTS.md with code review findings ### Technical Details - **Language:** Kotlin - **Min SDK:** 21 (Android 5.0+) - **Target SDK:** 34 - **Dependencies:** AndroidX Core, AppCompat, WebKit, Preference --- ## [1.1.0] - 2026-02-03 ### Added - **PIN Hashing (SHA-256)** 🔐 — PINs now stored as secure salted hashes instead of plain text - **Remote Configuration** 📡 — Fetch settings from a JSON URL (polls every 5 min) - **Digital Signage Mode** 🖼️ — Auto-rotate through multiple URLs at configurable intervals - **Error Handling** — Graceful network error pages with retry button - **Loading Indicator** — Progress bar during page loads - **CI/CD Pipeline** — Automated testing via Gitea Actions ### Changed - Admin settings reorganized into sections: Basic, Remote Config, Signage, Security - Triple-tap admin unlock now uses programmatic click handler (more reliable) ### Security - PINs stored as `salt:hash` format, auto-upgrades plain text PINs on save - PIN changes remain local-only (not exposed via remote config) ### Technical Details - **New Classes:** `PinSecurity.kt`, `SignageManager.kt`, `RemoteConfigManager.kt`, `ErrorHandler.kt`, `LoadingProgress.kt` - **Unit Tests:** 50+ (added PIN, signage, and error handling tests) ### Remote Config JSON Format ```json { "homepage": "https://example.com", "whitelist": "example.com,other.com", "idle_timeout": "300", "signage_urls": ["https://url1", "https://url2"], "signage_interval": "30" } ``` --- ## Future Releases (Planned) ### [1.2.0] - Fleet Management - Web dashboard for managing multiple kiosks - Device heartbeat/status reporting - OTA update distribution ### [1.3.0] - Advanced Features - Multiple whitelist profiles - Scheduled content (different homepage by time) - Custom branding (splash screen/logo) - Usage analytics --- *Maintained by the hobbs.farm team: Pluto 🪐, Spirit 👻, Margaret 🌸*