Commit Graph

12 Commits

Author SHA1 Message Date
df58e3b0df fix(appstore): runtime install permission gate and DB reconciliation
- 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>
2026-03-05 18:21:15 +00:00
0dea0bb506 feat(appstore): add AppStore client features
- AppStoreJsBridge: JS bridge for native APK install, version check, update
- InstalledAppDao, InstalledApp entity: Room DB for tracking installed apps
- UpdateCheckerWorker: background update polling via WorkManager
- InstallerService: APK download + SHA-256 verify + PackageInstaller session
- Updated AndroidManifest: REQUEST_INSTALL_PACKAGES, FileProvider, receivers
- Updated MainActivity: notification channel, WorkManager, JS bridge wiring
- config.json: targetUrl = https://store.silverlabs.uk
- file_paths.xml: FileProvider paths for APK installs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-04 14:06:04 +00:00
0f1b6a6157 feat(appstore): rebrand as SilverSHELL AppStore client
- applicationId: uk.silverlabs.silverdroid → uk.silverlabs.appstore
- app_name: SilverDROID → SilverSHELL AppStore
- user agent: SilverDROID/1.0 → SilverAppStore/1.0
- versionCode/versionName: override via Gradle -P args for CI builds

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-04 13:34:47 +00:00
ba9bba1503 Remove companion object from RemoteConfigLoader
Objects cannot have companion objects in Kotlin. Moved TAG constant
to top-level instead.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-05 20:10:13 +01:00
876db1751a Fix RemoteConfigLoader to use Kotlin's built-in Result type
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>
2025-10-05 20:05:48 +01:00
d173c08a0c Add remote configuration support and fix app name
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>
2025-10-05 19:58:19 +01:00
9f33b5a332 Remove netcipher libraries and use Tor/VPN stubs
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>
2025-10-05 19:36:21 +01:00
1d2b6f2d87 Fix build errors - use stub VPN implementation
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>
2025-10-05 19:19:52 +01:00
94887f6cf7 Add configurable deployment system with VPN and Tor support
Features:
- Hidden config.json in assets for per-deployment customization
- Configure target URL, app name, and branding
- Optional WireGuard VPN with auto-connect
- Optional Tor routing via Orbot
- Custom theme colors
- Configuration-driven app behavior

Configuration file location: app/src/main/assets/config.json
Example configuration: config.example.json

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-05 18:51:01 +01:00
a083606b9e Update app to load SilverDesk staging URL
Changed target URL from admin.dark.side to silverdesk-staging.silverlabs.uk

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-05 17:57:55 +01:00
7674f10d83 Remove deprecated setAppCacheEnabled call
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>
2025-10-05 16:21:34 +01:00
c667765488 SilverDROID - Dark Side Admin with CI/CD pipeline
- Android PWA/WASM launcher with glassmorphism UI
- Loads https://admin.dark.side directly on launch
- Complete GitLab CI/CD pipeline configuration
- Automated builds for Debug, Release, and AAB
- Full WASM support with optimized WebView
- Material Design 3 theme
- Comprehensive documentation

Features:
- Auto-load target URL on app launch
- Glassmorphism components (frosted glass effects)
- Full PWA/WASM support
- Room database for future extensions
- Jetpack Compose UI
- CI/CD with artifact storage

Built for SilverLABS
2025-09-30 17:13:14 +01:00