28 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>
appstore-v1.0.5 appstore-v1.0.3 appstore-v1.0.7 appstore-v1.1.0 appstore-v1.0.4 appstore-v1.0.6 v1.1.1 appstore-v1.2.2 appstore-v1.1.1 appstore-v1.1.2 appstore-v1.1.3 appstore-v1.1.4 appstore-v1.1.5 appstore-v1.1.6
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>
v1.1.0 appstore-v1.0.2
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>
appstore-v1.0.1 appstore-v1.0.0
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
141481f1c1 Remove all corrupted SDK package.xml files before build
Uses find to remove all corrupted package.xml files in the Android
SDK platforms directory, not just android-35. This fixes issues with
android-36-ext19 and other platform versions.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-04 17:39:43 +01:00
fa412b067c Add JitPack repository for BlurView dependency
The BlurView library is hosted on JitPack, not Maven Central.
Adding the JitPack repository to resolve the missing dependency.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-04 17:36:34 +01:00
44cb9ec0c2 Fix corrupted Android SDK platform-35 package.xml
Removes corrupted package.xml and reinstalls android-35 platform
to fix SAXParseException during build. The Docker image has a
corrupted SDK that needs to be repaired on each build.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-04 17:32:26 +01:00
0fb38b3f1c Add Android SDK license acceptance and update to CI
Adds sdkmanager license acceptance and SDK update to fix corrupted
package.xml files in the Android SDK. This resolves the SAXParseException
that was preventing tests from running.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-04 17:29:18 +01:00
f6f9633ea3 Fix gradlew scripts - use complete Gradle wrapper
The previous gradlew script was incomplete and missing the CLASSPATH
configuration, causing the wrapper JAR to not be found. This commit
replaces it with the complete official Gradle wrapper scripts.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-04 17:18:13 +01:00
a3df579ddc Add missing gradle-wrapper.jar to fix CI/CD build
The Gradle wrapper JAR was missing from the repository, causing the
prepare:dependencies job to fail with ClassNotFoundException. This
commit adds the required wrapper JAR file.

Fixes job: https://gitlab.silverlabs.uk/silverlabs/silverdroid/-/jobs/1265

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-04 17:15:10 +01:00
fff0641406 Fix deploy:production job syntax - move 'when' before 'only' 2025-09-30 17:46:59 +01:00
2e5fabe54b Fix GitLab CI/CD syntax errors in multiline scripts 2025-09-30 17:46:10 +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