Files
minmal-file-cloud-email-pim…/clients/desktop/CLOUD_FILES.md
T
Stefan Hacker de1039fc7d feat(client): Windows Cloud-Files-API als File-Provider (OneDrive-Style)
Neuer Modus neben dem bestehenden Full-Sync: Dateien erscheinen im
Explorer als Platzhalter mit Wolken-Icon und werden erst bei Zugriff
vom Mini-Cloud-Server gestreamt.

Windows (MVP):
- CfRegisterSyncRoot + CfConnectSyncRoot
- CfCreatePlaceholders fuer jede Datei aus /api/sync/tree
- FETCH_DATA-Callback mit Range-basiertem HTTPS-Download + CfExecute
- CfSetPinState fuer manuelles "Immer offline halten"

Linux (Skelett):
- FUSE-Provider hinter Feature-Flag linux_fuse (libfuse3-dev)
- Stub-Funktionen - Implementierung folgt

macOS:
- Platzhalter, erfordert Apple-Signatur - spaeter

Tauri-Commands: cloud_files_supported/enable/disable/pin/unpin.
Cargo.toml: target-spezifische windows-rs Dependency.
Doku: clients/desktop/CLOUD_FILES.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 16:19:22 +02:00

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.