v1.0.25: multi-select files, unified notification, dark theme, icon redesign

- FilesScreen: long-press enters selection mode, bulk share/delete toolbar, BackHandler
- FilesViewModel: ShareMultiple action, isSelectionMode/selectedCount state, download-to-cache for open/share
- FileWatchService: recursive FileObserver per subdirectory; unified notification updated with sync result via WorkManager flow observation
- SyncWorker: silent flag suppresses notifications when triggered by watcher; emits KEY_RESULT_SUMMARY output data
- Passbolt-inspired dark theme (Red700/Red500 primary, near-black surface)
- App icon: circular AutoSync-style sync arrows (cyan gradient, deep navy background)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-25 02:22:43 +00:00
parent 146b8baf9a
commit 8fdd22bc98
9 changed files with 392 additions and 215 deletions
@@ -3,9 +3,8 @@
<gradient
android:type="radial"
android:gradientRadius="80%"
android:centerX="0.35"
android:centerY="0.3"
android:startColor="#1C1124"
android:centerColor="#0E0A18"
android:endColor="#060408"/>
android:centerX="0.5"
android:centerY="0.4"
android:startColor="#1B2A3B"
android:endColor="#06090E"/>
</shape>
@@ -7,60 +7,44 @@
android:viewportHeight="108">
<!--
Three identical arcs pointing right, evenly spaced vertically.
Same curve shape, same gradient direction, same arrowhead geometry — purely harmonious.
Control point 14dp above midline on each arc.
Circular sync icon (AutoSync-style): two 170° arcs forming a clockwise
rotation. Arc 1 sweeps over the bottom (right→bottom→left), Arc 2 over the
top (left→top→right). Arrowheads at the 9-o'clock and 3-o'clock gaps.
Circle radius 26, center (54,54).
-->
<!-- Arc 1 — top -->
<!-- Arc 1: right → bottom → left (CW, small arc 170°) -->
<path
android:pathData="M 26,34 Q 54,20 82,34"
android:pathData="M 79.9,56.3 A 26,26 0 0,1 28.1,56.3"
android:fillColor="#00000000"
android:strokeWidth="8.5"
android:strokeLineCap="round"
android:strokeLineJoin="round">
android:strokeWidth="9"
android:strokeLineCap="round">
<aapt:attr name="android:strokeColor">
<gradient android:type="linear"
android:startX="26" android:startY="34"
android:endX="82" android:endY="34"
android:startColor="#64C8FF"
android:endColor="#32EDBB"/>
android:startX="79.9" android:startY="56.3"
android:endX="28.1" android:endY="56.3"
android:startColor="#40C4FF"
android:endColor="#00E5FF"/>
</aapt:attr>
</path>
<path android:pathData="M 77.5,27.3 L 82,34 L 74.0,34.5 Z" android:fillColor="#32EDBB"/>
<!-- Arrowhead at left side (175°), pointing upward -->
<path android:pathData="M 23.9,65.7 L 28.1,56.3 L 33.9,64.8 Z" android:fillColor="#00E5FF"/>
<!-- Arc 2 — middle -->
<!-- Arc 2: left → top → right (CW, small arc 170°) -->
<path
android:pathData="M 26,54 Q 54,40 82,54"
android:pathData="M 28.1,51.7 A 26,26 0 0,1 79.9,51.7"
android:fillColor="#00000000"
android:strokeWidth="8.5"
android:strokeLineCap="round"
android:strokeLineJoin="round">
android:strokeWidth="9"
android:strokeLineCap="round">
<aapt:attr name="android:strokeColor">
<gradient android:type="linear"
android:startX="26" android:startY="54"
android:endX="82" android:endY="54"
android:startColor="#64C8FF"
android:endColor="#32EDBB"/>
android:startX="28.1" android:startY="51.7"
android:endX="79.9" android:endY="51.7"
android:startColor="#00E5FF"
android:endColor="#40C4FF"/>
</aapt:attr>
</path>
<path android:pathData="M 77.5,47.3 L 82,54 L 74.0,54.5 Z" android:fillColor="#32EDBB"/>
<!-- Arc 3 — bottom -->
<path
android:pathData="M 26,74 Q 54,60 82,74"
android:fillColor="#00000000"
android:strokeWidth="8.5"
android:strokeLineCap="round"
android:strokeLineJoin="round">
<aapt:attr name="android:strokeColor">
<gradient android:type="linear"
android:startX="26" android:startY="74"
android:endX="82" android:endY="74"
android:startColor="#64C8FF"
android:endColor="#32EDBB"/>
</aapt:attr>
</path>
<path android:pathData="M 77.5,67.3 L 82,74 L 74.0,74.5 Z" android:fillColor="#32EDBB"/>
<!-- Arrowhead at right side (355°), pointing downward -->
<path android:pathData="M 84.1,42.3 L 79.9,51.7 L 74.1,43.2 Z" android:fillColor="#40C4FF"/>
</vector>