The worker exited early when the DB was empty (fresh installs via browser).
Now upserts a self-record for slug='silverdroid' before the isEmpty guard
so update notifications fire even when no other apps have been installed
via the AppStore.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- AppStoreJsBridge: add canInstallApps() JS interface for UI gating
- AppStoreJsBridge: gate installApp() on canRequestPackageInstalls() at
runtime; redirect to Settings and fire onInstallError callback on deny
- AppStoreJsBridge: fix getInstalledVersion() to cross-check PackageManager,
correcting stale version strings and removing uninstalled app records
- InstallerService: add reconcileWithPackageManager() to sync Room DB with
actual installed packages on every app start
- MainActivity: launch reconciliation on start before WebView loads
- WasmWebView: set webView ref on bridge for evaluateJavascript callbacks
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Changed from custom Result sealed class to kotlin.Result which has
proper success/failure factory methods. Updated pattern matching to
use getOrElse for cleaner error handling.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Features:
- Fixed app name from "Dark Side Admin" to "SilverDROID"
- Added remote configuration loader with AppStore integration
- Support for user-specific configurations
- Bearer token authentication for secure config retrieval
- Automatic fallback to local config if remote fails
- Remote config refresh interval support
Configuration example updated with remoteConfig section.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Removed netcipher libraries causing duplicate class errors.
Both VPN and Tor managers are now stubs that log configuration
and can be extended in future releases with proper implementations.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Removed incompatible WireGuard library dependency and created
stub implementation for VPN that logs configuration. Tor integration
remains functional via Orbot. Full WireGuard support requires native
library integration in future update.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Removed custom signing config and use debug keystore for release
builds to enable installation. Disabled minification temporarily.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added debug keystore signing for release builds to enable
installation on devices. Using Android debug keystore for now.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added database domain to included paths before excluding pwa_cache.db
to fix FullBackupContent lint error in data extraction rules.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added database domain to included paths before excluding pwa_cache.db
to fix FullBackupContent lint error.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Moved windowLightNavigationBar attribute to values-v27/themes.xml
since it requires API level 27 but minSdk is 26. This resolves
lint NewApi errors.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
The setAppCacheEnabled() method was deprecated in API 18 and removed
in newer Android versions. Removing it to fix compilation errors.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Created placeholder ic_launcher and ic_launcher_round icons for all
density buckets (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi) to resolve
AAPT resource linking errors.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>