89 lines
3.0 KiB
Markdown
89 lines
3.0 KiB
Markdown
# 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 🌸*
|