diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..b5e9fae --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,227 @@ +# Changelog + +Alle wesentlichen Aenderungen an der Mini-Cloud Plattform. + +--- + +## [0.9.0] - 2026-04-12 - Desktop Sync Client + +### Desktop-Client (Tauri 2 / Rust + Vue) +- **Erster funktionsfaehiger Desktop Sync Client** fuer Windows, Linux und macOS +- Multi-Sync-Pfade: Beliebig viele Server-Ordner auf lokale Ordner mappen +- Virtual Files: `.cloud`-Platzhalter (0 Bytes), Download erst bei Doppelklick +- Full Sync: Alternativ alle Dateien komplett lokal spiegeln (pro Pfad waehlbar) +- Offline-Markierung: Einzelne Dateien als offline verfuegbar markieren (Rechtsklick) +- Sofort-Sync: Filesystem-Watcher erkennt Aenderungen sofort (3s Debounce statt Polling) +- Bidirektionaler Sync mit Timestamp-Vergleich (Server neuer = Download, Lokal neuer = Upload) +- File Locking: Automatisches Ein-/Auschecken mit Heartbeat alle 10s +- Auto-Unlock: Erkennt wenn eine Datei geschlossen wird (Windows: Write-Lock-Check, Linux: lsof) +- System-Tray: Minimiert in den Tray statt zu beenden, Doppelklick oeffnet Fenster +- Auto-Login: Zugangsdaten und Sync-Pfade persistent in `%APPDATA%/MiniCloud Sync/config.json` +- Single-Instance pro User (Terminalserver-kompatibel, PID-basiertes Lock-File) +- .cloud Datei-Assoziation: Doppelklick im Explorer oeffnet ueber den Client +- Minimiert starten: Checkbox in Einstellungen, Client startet direkt im Tray +- Token-Refresh alle 10 Minuten (verhindert Lock-Verlust nach Token-Ablauf) +- Lokaler Datei-Browser mit Rechtsklick-Kontextmenue + +### Build-System +- `build.sh` Script: Baut Clients via Docker fuer alle Plattformen +- `./build.sh windows` - Cross-Compile von Linux nach Windows (NSIS-Installer mit WebView2) +- `./build.sh linux` - Linux Build (.AppImage, .deb) +- `./build.sh mac` - macOS Build (.dmg, nur auf Mac) +- Auto-Upload: Gebaute Clients werden automatisch auf den Cloud-Server hochgeladen +- Client-Downloads: Login-Seite und Benutzer-Einstellungen zeigen Download-Links + +### File Locking (Backend) +- Neues FileLock-Model: Dateien ein-/auschecken +- API: Lock, Unlock, Heartbeat, Lock-Status +- Auto-Unlock nach 15 Minuten ohne Heartbeat +- Lock-Anzeige in der Dateiliste (Schloss-Icon mit Benutzername) +- Gesperrte Dateien: Oeffnen nicht moeglich, Fehlermeldung +- Konflikt-Email an Admin bei erzwungenem Sync gesperrter Dateien + +--- + +## [0.8.0] - 2026-04-11 - OnlyOffice + Papierkorb + +### OnlyOffice Document Server Integration +- Word, Excel und PowerPoint Dateien direkt im Browser bearbeiten +- Automatische Erkennung: OnlyOffice vorhanden = Editor, sonst einfache Vorschau +- WOPI-aehnliche Endpunkte fuer Dokumentzugriff und Callback +- JWT-Signierung (nutzt JWT_SECRET_KEY aus .env, kein extra Secret) +- Force-Save: Ctrl+S speichert sofort zurueck zum Server +- Dokument-Key mit Timestamp (kein Cache-Problem bei Wiederoffnen) +- Konfiguration nur ueber .env (ONLYOFFICE_URL), Admin-GUI zeigt Status + +### Papierkorb +- Geloeschte Dateien landen im Papierkorb statt sofort geloescht zu werden +- Papierkorb-Seite in der Sidebar mit Tabelle aller geloeschten Elemente +- Wiederherstellen am Originalort oder endgueltig loeschen +- "Papierkorb leeren" Button mit Sicherheitsabfrage +- Share-View Loeschen nutzt ebenfalls den Papierkorb + +### Bestaetigungsdialoge +- Ueberall wo geloescht wird jetzt ein Bestaetigungsdialog +- Kontakte, Kalender-Events, Kalender, E-Mails, Share-Dateien, + SFTP-Backup-Ziele, Admin Email-Konten + +### Office-Preview +- Vorschau oeffnet sich innerhalb der App (kein neuer Tab) +- Zurueck-Button in der Toolbar +- PDF inline, Bilder zentriert, DOCX als HTML, XLSX als Tabelle, PPTX als Folien +- Text/Code-Dateien bearbeitbar mit Speichern-Funktion + +--- + +## [0.7.0] - 2026-04-11 - Backup & Restore + SFTP + +### Backup & Restore +- Lokales ZIP-Backup: Datenbank (sqlite3.backup API) + alle Dateien + Metadaten +- Streaming-Download ohne Speicher-Limits +- Chunked Restore-Upload fuer grosse Backups (10MB-Stuecke mit Fortschrittsbalken) +- DB-Merge-Strategie: INSERT OR REPLACE auf gemeinsame Spalten +- Einzeldatei-Restore: Backup durchsuchen + einzelne Dateien herunterladen/wiederherstellen + +### SFTP-Backup +- Mehrere SFTP-Backup-Ziele konfigurierbar +- Automatischer Hintergrund-Scheduler (15 Min. bis woechentlich) +- Versionierung mit automatischem Aufraumen alter Backups +- Manuelles Backup per Klick ("Jetzt sichern") +- SFTP-Verbindungstest-Button +- Versionen-Dialog: Alle Backups auf dem SFTP-Server auflisten +- Restore direkt von SFTP: Version auswaehlen und wiederherstellen + +### Restore-Anleitung +- Detaillierte Anleitung direkt in der Admin-UI +- Hinweis auf SECRET_KEY/JWT_SECRET_KEY Uebereinstimmung + +--- + +## [0.6.0] - 2026-04-11 - Drag & Drop + Share-Typen + +### Datei-Upload +- Drag & Drop Upload: Dateien und komplette Ordnerstrukturen reinziehen +- Ordner-Button: Kompletten Ordner mit Unterordnern hochladen (webkitdirectory) +- Upload-Fortschrittsbalken mit Datei-Zaehler +- Backend: `/files/ensure-path` erstellt verschachtelte Ordnerstrukturen + +### Share-Links +- Drei Berechtigungsstufen: Nur Lesen / Lesen+Schreiben / Nur Upload +- Upload-Only: Briefkasten-Modus (hochladen ohne Einblick) +- Ordner-Freigaben: Dateiliste mit Download/Loeschen, Unterordner-Navigation +- Ordner als ZIP herunterladen (rekursiv) +- Share-Status visuell: Gruenes Icon zeigt geteilte Dateien an +- Upload in freigegebene Ordner mit Passwort-Schutz + +### System-Benachrichtigungen +- Email bei Datei-/Ordner-Freigabe an Empfaenger +- Email bei Share-Link-Download an Ersteller (mit IP-Adresse) +- Email bei Upload in geteilten Ordner +- Email bei Kalender/Kontakte/Passwort-Freigabe +- Email bei Benutzer-Erstellung durch Admin +- Alle Benachrichtigungen fail-safe (keine Blockierung bei Email-Fehler) + +--- + +## [0.5.0] - 2026-04-11 - Admin-Features + Passwort-Import + +### Administration +- Benutzer ueber Web-UI anlegen (Username, Email, Passwort, Rolle, Quota) +- Benutzer bearbeiten/deaktivieren/loeschen mit Sicherheitsabfragen +- Email-Konten pro Benutzer im Admin verwalten (ohne sich als User einzuloggen) +- Benutzersuche in der Verwaltung +- Oeffentliche Registrierung: Schieberegler an/aus +- Einladungslinks: Einmal-Token auch bei deaktivierter Registrierung +- System-Email (SMTP): Konfigurierbar mit Verbindungstest + +### Passwort-Manager Import +- Firefox CSV-Import (Einstellungen > Passwoerter > Exportieren) +- KeePass .kdbx Import mit Ordnerstruktur +- Generischer CSV-Import (Chrome, Bitwarden, 1Password) +- Automatische Spaltenerkennung (deutsch + englisch) +- Alle Eintraege werden clientseitig verschluesselt vor dem Speichern + +--- + +## [0.4.0] - 2026-04-11 - Dateiverwaltung + Share-Links + +### Dateiverwaltung +- Upload/Download mit Berechtigungen (read/write/admin) +- Ordner erstellen, verschieben, umbenennen, loeschen +- Berechtigungssystem pro Datei/Ordner und Benutzer + +### Share-Links +- Token-basierte Freigabe-Links +- Optionales Passwort + Ablaufdatum + Download-Limit +- Oeffentliche Share-Seite ohne Login +- Dateien/Ordner mit Benutzern teilen (Benutzersuche) + +### Sync-API +- `GET /sync/tree` - Kompletter Dateibaum mit Checksums +- `GET /sync/changes?since=` - Delta-Sync +- SHA-256 Checksums fuer Duplikat-Erkennung + +--- + +## [0.3.0] - 2026-04-11 - Kalender + Kontakte + Email + +### Kalender +- Kalender-CRUD mit Events (Monats-/Tagesansicht, FullCalendar) +- Kalender mit Benutzern teilen (Lesen oder Lesen+Schreiben) +- iCal-Export als Read-Only .ics Link +- CalDAV well-known URLs fuer Auto-Discovery (iOS, DAVx5, Thunderbird) + +### Kontakte +- Adressbuecher + Kontakte CRUD +- vCard-Export, Teilen mit Benutzern +- Suche in Kontakten + +### Email-Webclient +- IMAP/SMTP-Proxy (kein eigener Mailserver) +- Multi-Account: Ordner nach Konten gruppiert +- Absender-Logik: Standard = aktives Konto, Dropdown bei mehreren +- Drei-Spalten-Layout, Compose mit Reply +- Kein Email-Konto = Email-Bereich ausgeblendet + +--- + +## [0.2.0] - 2026-04-11 - Passwort-Manager + Office-Viewer + +### Passwort-Manager +- AES-256-GCM clientseitig verschluesselt (Zero Knowledge) +- TOTP-Code Generierung (Web Crypto API) +- Passwort-Generator +- Ordner/Gruppen-Hierarchie (wie KeePass) +- Teilen von Eintraegen und Ordnern (read/write/manage) + +### Office-Viewer +- PDF: PDF.js direkt im Browser +- DOCX: python-docx -> HTML +- XLSX: openpyxl -> JSON -> Tabelle +- PPTX: python-pptx -> HTML-Folien +- Bilder und Textdateien inline + +--- + +## [0.1.0] - 2026-04-11 - Erste Version + +### Grundgeruest +- Flask Backend mit SQLAlchemy + SQLite (WAL-Modus) +- Vue 3 Frontend mit PrimeVue, Vite, Pinia +- JWT-Authentifizierung (Access + Refresh Token) +- Erster Benutzer wird automatisch Admin +- Benutzerverwaltung (Admin/User Rollen, Speicher-Quotas) + +### Projekt-Setup +- `.gitignore`, `.env.example` mit Token-Generierung +- Dockerfile (Multi-Stage: Node Build + Python Production) +- `docker-compose.yml` mit Bind Mounts (keine Docker Volumes) +- `nginx.example.conf` fuer Reverse-Proxy mit Let's Encrypt + +### Datenbank +- 15 Tabellen: Users, Files, FilePermissions, ShareLinks, Calendars, + CalendarEvents, CalendarShares, AddressBooks, Contacts, + AddressBookShares, EmailAccounts, PasswordFolders, PasswordEntries, + PasswordShares, AppSettings +- Auto-Migrate: Fehlende Spalten werden beim App-Start automatisch + per ALTER TABLE hinzugefuegt (kein manuelles Migrieren noetig)