Add password masking to the client key field for better security. Users can toggle visibility using an eye icon button to view or hide the key as needed.
Reposition the QR code scan button to appear immediately after the server configuration fields (address, port, and client key) that it populates, improving the logical flow and making it clearer what the button does.
Add visual cues and instructions to clarify that upload parameter fields can be edited:
- Add instructional text at top of dialog
- Add edit icons to both text fields
- Update labels to include "(tap to edit)" hint
- Change placeholders to action-oriented text
- Auto-focus first field to show keyboard immediately
- Add keyboard actions for better navigation
Users can now set default upload parameters (max downloads and expiry hours) in settings and choose whether to show the upload parameters dialog or use saved defaults directly.
Changes:
- Add upload preferences: default max downloads, default expiry hours, and ask before upload toggle
- Update SettingsScreen with new upload defaults section
- Modify UploadParamsDialog to initialize with saved defaults instead of hardcoded values
- Update DumpstateTab and GeneralUploadTab to check askBeforeUpload preference and bypass dialog when disabled
- Replace READ_EXTERNAL_STORAGE permission with all files access check
- Open app settings when permission is needed so user can grant it
- Check permission status when returning from settings
- Launch file picker automatically if permission is granted
- Replace XML layouts with Compose screens for all 5 Activities
- Implement Material 3 theme with Google Blue/Green color scheme matching app icon
- Add device-aware navigation with bottom tabs for Samsung devices
- Remove action bar for modern edge-to-edge UI design
- Update Kotlin to 1.9.22 for Compose Compiler compatibility
- Add Compose dependencies and configure build system
- Implement MainViewModel for upload state management
- Create reusable dialog components for upload parameters and results
- Preserve all existing Java controllers and services (UI-only migration)
Adds QR code scanning functionality to both ServerSetupActivity and
SettingsActivity, allowing users to auto-fill server configuration by
scanning a QR code from the server's admin dashboard.
Changes:
- Add ZXing Android Embedded library (v4.3.0) for QR scanning
- Add CAMERA permission to AndroidManifest
- Create QrServerConfig model to parse and validate QR JSON data
- Create QrScannerUtil for shared scanning functionality
- Extend PermissionUtil with camera permission handling
- Add "Scan QR Code" button to ServerSetupActivity with hint text
- Add "Scan QR Code" button to SettingsActivity
- Add QR scan icon and string resources
- Configure Gradle Java toolchain auto-detection
The QR code contains JSON with server address, port, and client key
which are automatically populated into the input fields when scanned.