docs: Add CHANGELOG.md and CONTRIBUTING.md
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
# 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
|
||||
|
||||
---
|
||||
|
||||
## Future Releases (Planned)
|
||||
|
||||
### [1.1.0] - Remote Management
|
||||
- Remote configuration updates
|
||||
- Usage analytics
|
||||
- Centralized device management
|
||||
|
||||
### [1.2.0] - Multi-Profile
|
||||
- Multiple whitelist profiles
|
||||
- Scheduled profile switching
|
||||
- Digital signage mode
|
||||
|
||||
---
|
||||
|
||||
*Maintained by the hobbs.farm team: Pluto 🪐, Spirit 👻, Margaret 🌸*
|
||||
+129
@@ -0,0 +1,129 @@
|
||||
# Contributing to Android Kiosk Browser
|
||||
|
||||
Thank you for your interest in contributing! This document provides guidelines for contributing to the project.
|
||||
|
||||
## Getting Started
|
||||
|
||||
### Prerequisites
|
||||
- Android Studio (latest stable)
|
||||
- JDK 17+
|
||||
- Android SDK (API 21+)
|
||||
- Git
|
||||
|
||||
### Setup
|
||||
```bash
|
||||
# Clone the repository
|
||||
git clone https://git.hobbs.farm/pluto/android-kiosk-browser.git
|
||||
cd android-kiosk-browser
|
||||
|
||||
# Open in Android Studio
|
||||
# File → Open → select project directory
|
||||
|
||||
# Build
|
||||
./gradlew build
|
||||
|
||||
# Run tests
|
||||
./gradlew test
|
||||
```
|
||||
|
||||
## Development Workflow
|
||||
|
||||
### Branching Strategy
|
||||
- `main` — Stable release branch
|
||||
- `feature/*` — New features
|
||||
- `fix/*` — Bug fixes
|
||||
- `docs/*` — Documentation updates
|
||||
|
||||
### Making Changes
|
||||
|
||||
1. **Create a branch**
|
||||
```bash
|
||||
git checkout -b feature/your-feature-name
|
||||
```
|
||||
|
||||
2. **Make your changes**
|
||||
- Follow existing code style (Kotlin conventions)
|
||||
- Add tests for new functionality
|
||||
- Update documentation as needed
|
||||
|
||||
3. **Test your changes**
|
||||
```bash
|
||||
./gradlew test
|
||||
./gradlew lint
|
||||
```
|
||||
|
||||
4. **Commit with clear messages**
|
||||
```bash
|
||||
git commit -m "feat: Add new whitelist import feature"
|
||||
```
|
||||
|
||||
5. **Push and create a PR**
|
||||
```bash
|
||||
git push origin feature/your-feature-name
|
||||
```
|
||||
|
||||
### Commit Message Format
|
||||
Use conventional commits:
|
||||
- `feat:` New feature
|
||||
- `fix:` Bug fix
|
||||
- `docs:` Documentation only
|
||||
- `test:` Adding/updating tests
|
||||
- `refactor:` Code refactoring
|
||||
- `chore:` Maintenance tasks
|
||||
|
||||
## Code Guidelines
|
||||
|
||||
### Kotlin Style
|
||||
- Use Kotlin idioms (let, apply, etc.)
|
||||
- Prefer immutability (`val` over `var`)
|
||||
- Use meaningful variable names
|
||||
- Keep functions small and focused
|
||||
|
||||
### Testing
|
||||
- All new features need unit tests
|
||||
- Security-related code needs extra test coverage
|
||||
- Run the full test suite before submitting
|
||||
|
||||
### Security
|
||||
- Never store sensitive data in plain text
|
||||
- Validate all user inputs
|
||||
- Test for bypass vulnerabilities (see `WhitelistTest.kt`)
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
app/src/main/
|
||||
├── java/farm/hobbs/kioskbrowser/
|
||||
│ ├── KioskActivity.kt # Main WebView activity
|
||||
│ ├── AdminActivity.kt # Settings panel
|
||||
│ ├── BootReceiver.kt # Auto-start on boot
|
||||
│ └── KioskDeviceAdminReceiver.kt
|
||||
└── res/
|
||||
├── layout/ # UI layouts
|
||||
├── values/ # Strings, themes
|
||||
└── xml/ # Device admin config
|
||||
|
||||
app/src/test/
|
||||
└── kotlin/farm/hobbs/kioskbrowser/
|
||||
├── WhitelistTest.kt
|
||||
├── IdleTimerTest.kt
|
||||
└── ConfigValidationTest.kt
|
||||
```
|
||||
|
||||
## Reporting Issues
|
||||
|
||||
Use Vikunja (vikunja.hobbs.farm) for issue tracking:
|
||||
- **P0** — Critical/security issues
|
||||
- **P1** — Important features/bugs
|
||||
- **P2** — Nice-to-have improvements
|
||||
|
||||
## Questions?
|
||||
|
||||
Reach out to the team:
|
||||
- **Pluto** 🪐 — Project coordination, infrastructure
|
||||
- **Spirit** 👻 — Testing, code review
|
||||
- **Margaret** 🌸 — Documentation, requirements
|
||||
|
||||
---
|
||||
|
||||
*Happy contributing! 🚀*
|
||||
Reference in New Issue
Block a user