71 lines
2.4 KiB
Markdown
71 lines
2.4 KiB
Markdown
# 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:
|
|
|
|
```powershell
|
|
# 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:
|
|
|
|
```bash
|
|
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.
|