From 2593151ca2c67256442ad25b074504e3ecd3371f Mon Sep 17 00:00:00 2001 From: Lena Date: Wed, 1 Jul 2026 00:00:00 +0000 Subject: app: harden sync execution and persisted state Persist config, key blob, and host pin via AtomicFile so an interrupted write cannot corrupt state. Validate the port, clear the host pin when the remote changes, cap imported key size, time out native helpers, and escalate rsync termination to destroyForcibly. Serialize manual and scheduled syncs behind a mutex. Replace the chained one-time jobs with plain periodic work: it survives reboots without a boot receiver and cannot silently die like a broken chain. Costs the sub-15-minute interval, which photo backup does not need. Document the floor and that syncs run on any unmetered network, not only WiFi. --- app/src/main/res/layout/activity_schedule.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/src/main/res/layout/activity_schedule.xml') diff --git a/app/src/main/res/layout/activity_schedule.xml b/app/src/main/res/layout/activity_schedule.xml index 981d6a9..d06ef1b 100644 --- a/app/src/main/res/layout/activity_schedule.xml +++ b/app/src/main/res/layout/activity_schedule.xml @@ -36,7 +36,7 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/space_m" android:textAppearance="@style/TextAppearance.Rsend.Caption" - android:text="Interval (minutes, minimum 1)" /> + android:text="Interval (minutes, minimum 15)" /> + android:text="Unmetered network only" />