Repository navigation
Booru 4.1
Booru 4.1
Security and Credential Management
-
Durable Credential Migration with Data-Loss Protection:
- Legacy Rule34 and Gelbooru User ID / API Key credentials are migrated to Android Keystore-backed
EncryptedSharedPreferences. - Migration proceeds only when secure storage is successfully initialized.
- Credential writes use synchronous
commit()with read-back verification against the source value before legacy DataStore keys are removed. - Plaintext credential fallback storage is prohibited.
- Migration remains safe to retry if secure storage or a credential write fails.
- Legacy Rule34 and Gelbooru User ID / API Key credentials are migrated to Android Keystore-backed
-
Custom Booru Credential Isolation:
- Custom source metadata (
id,name,baseUrl,engine) remains in DataStore, while API keys and user IDs are stored exclusively inSecureCredentialsStorage. - Deleting a custom source removes its secure credentials and metadata, preventing orphaned credentials.
- Custom source metadata (
-
HTTPS Enforcement for Custom Sources:
- Base URLs for custom Booru endpoints require HTTPS.
- Plain HTTP connections are rejected during source creation, editing, and network execution.
-
Sensitive Data Redaction:
- Request logging redacts authentication tokens, passwords, API keys, user IDs, and other sensitive authentication parameters.
Application Updater Hardening
-
Host and Transport Verification:
- Update checks and APK downloads require HTTPS and are restricted to trusted GitHub asset hosts.
- Insecure and untrusted cross-domain redirects are rejected.
-
Pre-Install Package and Signature Verification:
- Downloaded update APKs are verified before installation to ensure that the package name and signing certificate match the currently installed application.
- Incomplete or invalid APK files are removed after failed downloads or verification.
Functional Fixes and Improvements
-
Newest Feed Sorting:
- Fixed an issue where the result of
sortedWith()was not applied to multi-source feeds. - Posts are ordered by valid creation timestamps in descending order, with score used as a deterministic tie-breaker.
- Posts without valid timestamps are placed after timestamped posts and ordered by score.
- Fixed an issue where the result of
-
Exact Blacklist Matching:
- Blacklist filtering now uses exact token matching to prevent false-positive substring exclusions.
- For example, blocking
catno longer blockscatgirl. - Namespaced tags such as
character:xxxandartist:xxxare supported with case-insensitive matching.
-
Cache and Media Safety:
- Offline favorites stored in the Room database and app-private
filesDir/favorites_mediastorage remain isolated from temporary browsing caches. - Clearing the application cache purges Coil (200 MB LRU) and ExoPlayer (100 MB LRU) caches without removing saved favorites.
- Direct downloads to public media directories remove incomplete files after failed downloads and trigger
MediaScannerConnectionafter successful completion.
- Offline favorites stored in the Room database and app-private