Commit Graph

20 Commits

Author SHA1 Message Date
0b756788c2 fix(updater): self-register SilverDROID in installed_apps before update check
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>
2026-03-05 22:43:29 +00:00
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
e9093b2822 Fix duplicate netcipher classes error
Exclude netcipher from netcipher-webkit to avoid duplicate R classes

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-05 19:26:45 +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
f66cdcfa42 Use debug signing for release builds
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>
2025-10-05 17:20:48 +01:00
f68fce83e6 Add signing configuration for APK installation
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>
2025-10-05 17:12:34 +01:00
25de798b2a Fix lint error in data_extraction_rules.xml
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>
2025-10-05 16:45:47 +01:00
b591afc828 Fix lint error - include database domain before excluding
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>
2025-10-05 16:40:02 +01:00
22d4d6fec2 Fix lint errors - move API 27 attributes to values-v27
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>
2025-10-05 16:33:08 +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
aa98ee92e6 Add placeholder launcher icons to fix build
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>
2025-10-05 15:51:36 +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