docs: CHANGELOG.md - komplette Projekthistorie

Von der ersten Zeile Code bis zum Desktop Sync Client.
9 Versionen, 70+ Commits, alles an einem Tag.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Stefan Hacker 2026-04-12 01:52:43 +02:00
parent 86545ca405
commit b606ec9a4a
1 changed files with 227 additions and 0 deletions

227
CHANGELOG.md Normal file
View File

@ -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)