minmal-file-cloud-email-pim.../clients/desktop/CLOUD_FILES.md

2.4 KiB

Native File-Provider-Integration (Platzhalter-Modus)

Zusaetzlich zum klassischen "alles-kopieren"-Sync bietet der Desktop-Client einen OneDrive-aehnlichen Platzhalter-Modus: Dateien erscheinen im Dateimanager als kleine Metadata-Dateien (Platzhalter) und werden erst bei Doppelklick vom Server geladen.

Status

Plattform Status Technologie
Windows MVP Cloud Files API (cfapi.dll)
Linux Skelett FUSE (libfuse3) - feature linux_fuse
macOS Geplant NSFileProviderExtension + Signatur

Windows

Voraussetzungen

  • Windows 10 1709 (Build 16299) oder neuer
  • Der Client laeuft als regulaerer Benutzerprozess (keine Admin-Rechte noetig)

Was funktioniert

  • CfRegisterSyncRoot registriert einen Ordner als Sync-Root, der Explorer zeigt Wolken-Overlay-Icons an.
  • CfCreatePlaceholders legt fuer jede Mini-Cloud-Datei einen Platzhalter mit korrekter Groesse und Aenderungszeit an.
  • FETCH_DATA-Callback laedt per Range-Request vom Server, sobald der Explorer Dateidaten anfordert (z.B. beim Oeffnen).
  • CfSetPinState erlaubt manuelles "Immer offline halten" / "Nur in Cloud".

Was noch fehlt

  • Upload-Callback (NOTIFY_FILE_CLOSE_COMPLETION) fuer lokal geaenderte Dateien
  • Context-Menue "Ein-/Auschecken" via Shell-Extension
  • Delta-Updates (neue/geloeschte Dateien auf dem Server -> lokale Placeholder)
  • Konflikt-Aufloesung

Einschalten

Im Client-UI den Schalter "Cloud-Files-Modus" aktivieren (ruft intern cloud_files_enable-Command auf). Alternativ per Kommandozeile beim Build:

# Aus clients/desktop/src-tauri:
cargo build --release

Windows-Targets brauchen das Windows-SDK (uebersetzt aber sauber mit cross-compile via cargo xwin aus Linux, wenn build.sh windows laeuft).

Linux

FUSE-Provider ist optional und mit einem Feature-Flag versehen, damit normale Linux-Builds nicht libfuse3-dev voraussetzen:

cargo build --features linux_fuse

Overlay-Icons im Dateimanager (Nautilus / Dolphin / Caja) brauchen zusaetzlich eine native Extension pro DE - folgt in einem spaeteren Commit.

macOS

Braucht eine Apple Developer ID + Notarization, da NSFileProviderExtension sonst vom Finder nicht geladen wird. Wird angegangen, sobald ein Apple-Dev-Zugang verfuegbar ist.