When the remote-event subscription dies (server outage, network drop)
the auto-retry backs off to a 1h dead zone with no user recourse —
online-only files stay unusable.
Add MountCommand::Reconnect which aborts the stale event processor,
respawns it with fresh retry state, and queues a full-hierarchy sync.
Exposed via reconnect_drive Tauri command and a Reconnect button on
drive cards showing event_push_lost.
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
AppConfig.hide_tray_icon persists the preference; setup_tray applies it
post-build (TrayIconBuilder has no visibility option), and the
set_hide_tray_icon command toggles the live icon via managed state.
Settings UI toggle in the launch group + all 11 locales.
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Upload tasks optionally wait until a file's size/mtime signature is
stable for a configured delay (off/10s/30s/60s/120s/300s), so large or
slowly-written files aren't uploaded mid-write. Experimental setting,
default off.
Ported from https://github.com/cloudreve/desktop/pull/39 with
hardening on top:
- bound total stability wait at max(10min, 4x delay) so a perpetually
growing file cannot starve the 2-worker upload queue
- added the missing experimental/delaySync locale keys for all 9
languages the upstream PR left out
- added unit tests for file-signature capture (file/dir/missing)
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Ports and reviews cloudreve/desktop#50 (Mike Solar): Linux/macOS support
via full-sync instead of Windows CFAPI placeholders, plus shared
correctness fixes that also benefit Windows.
Upstream content:
- cfg-gated cfapi/shellext/win32_notif with non-Windows compat layers
- Inventory local snapshots (mtime+size) for change detection without
the CFAPI IN_SYNC flag; migration 0006_add_local_snapshot
- Three-way sync planner: etag/date remote-change detection, content-hash
fingerprints, conflict marking instead of blind overwrites
- Pending-conflict inventory state + resolve/resolve-all flows surfaced
in the tray popup and new Tauri commands
- Ignore-pattern matching applied to FS events, sync plans and listings
- Token refresh lock, request timeouts, refresh-expiry handling,
credential-invalid notification path
- Linux autostart (.desktop), macOS LaunchAgent, packaging (PKGBUILD,
.desktop entry), non-Windows notifications, tray/window fallbacks
Review fixes applied on top:
- DownloadTask: non-Windows downloads were dead on arrival - the
placeholder/missing-file guards skipped every task; files now actually
download (full-sync) and parent dirs are created before copy
- pl/common.json: repaired broken JSON (raw quote in deleteDriveConfirm)
- keepAllRemote/overwriteAllRemote keys added to all locales
- PKGBUILD repointed to this monorepo (desktop/ subdirectory)
- Inverted "Folder is empty" log message; unused-variable warning
- cargo fmt applied across the workspace
- CI now checks and tests the full workspace on all three OSes
Refs cloudreve/desktop#50
Co-authored-by: Mike Solar <iam@mikesolar.cn>
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>