Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b138a15513 | ||
|
|
303d2c4cdc |
No files matched your search
@@ -1,5 +1,9 @@
|
||||
# Changelog
|
||||
|
||||
## v0.7.0 – 2026-10-25
|
||||
|
||||
- ✨ **Ajouté** — **Déploiement forcé** depuis l'espace parents : réinstalle DataControl via le tunnel WireGuard même si la version proposée n'est pas plus récente que celle installée (réparation / réinstallation à distance).
|
||||
|
||||
## v0.6.0 – 2026-10-25
|
||||
|
||||
- ✨ **Ajouté** — **Faire sonner le téléphone** depuis l'espace parents : une sonnerie d'alarme retentit à plein volume (même si le téléphone est en silencieux), avec vibration et une notification « touchez pour arrêter » ; la sonnerie s'arrête d'elle-même au bout de la durée demandée, ou quand le parent l'arrête.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# DataControl
|
||||
|
||||
🚀 v0.6.0 · 🤖 Android · 🟣 Kotlin · 🎨 Jetpack Compose · 🔒 WireGuard · 🛡️ mode propriétaire · 👨👩👧 contrôle parental · 🧪 tests · 📄 licence non déclarée
|
||||
🚀 v0.7.0 · 🤖 Android · 🟣 Kotlin · 🎨 Jetpack Compose · 🔒 WireGuard · 🛡️ mode propriétaire · 👨👩👧 contrôle parental · 🧪 tests · 📄 licence non déclarée
|
||||
|
||||
**DataControl** est l'application Android du téléphone de l'enfant. Elle relie le téléphone en permanence, par un tunnel **WireGuard**, au serveur de contrôle parental **familyd** du parent : tout le trafic (Wi-Fi comme données mobiles) passe par ce serveur, qui décide de ce qui passe. Sur le téléphone, elle bloque les applications interdites, compte le temps d'écran et suit la consommation de données mobiles.
|
||||
|
||||
|
||||
@@ -50,12 +50,15 @@ class AppDeployer @Inject constructor(
|
||||
suspend fun handle(order: JSONObject, apiBase: String, report: suspend (String, String) -> Unit) =
|
||||
withContext(Dispatchers.IO) {
|
||||
val version = order.optString("version")
|
||||
if (version.isBlank() || !UpdateManager.isNewer(version, BuildConfig.VERSION_NAME)) return@withContext
|
||||
if (version.isBlank()) return@withContext
|
||||
// Déploiement forcé (option du parent) : réinstalle même version comprise, en ignorant les garde-fous.
|
||||
val force = order.optBoolean("force", false)
|
||||
if (!force && !UpdateManager.isNewer(version, BuildConfig.VERSION_NAME)) return@withContext
|
||||
val now = SystemClock.elapsedRealtime()
|
||||
if (version == lastVersion && now - lastAttemptAt < RETRY_MS) return@withContext
|
||||
if (!force && version == lastVersion && now - lastAttemptAt < RETRY_MS) return@withContext
|
||||
lastVersion = version
|
||||
lastAttemptAt = now
|
||||
AppLog.i("Mise à jour", "Déploiement de DataControl $version demandé par le serveur")
|
||||
AppLog.i("Mise à jour", "Déploiement de DataControl $version demandé par le serveur" + if (force) " (forcé)" else "")
|
||||
try {
|
||||
val file = download(apiBase + order.getString("url"), order.getString("sha256").lowercase(), version)
|
||||
install(file, version)
|
||||
|
||||
+2
-2
@@ -1,2 +1,2 @@
|
||||
versionName=0.6.0
|
||||
versionCode=16
|
||||
versionName=0.7.0
|
||||
versionCode=17
|
||||
Reference in new issue
Block a user