First working, tray version
This commit is contained in:
52
CHANGELOG.md
Normal file
52
CHANGELOG.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# Changelog
|
||||
|
||||
## 1.0.0 (2026-01-30)
|
||||
|
||||
První kompletní verze aplikace Vault.
|
||||
|
||||
### Core
|
||||
|
||||
- **file_entry.py** - Immutable dataclass pro reprezentaci souboru (cesta, SHA-256 hash, velikost, timestampy)
|
||||
- **manifest.py** - Správa vault metadat (vault_id, lokace replik, seznam souborů). Ukládání/načítání z `.vault/manifest.json`. Deduplikace lokací s resolved cestami
|
||||
- **lock.py** - Exkluzivní přístup k vault pomocí fcntl (LOCK_EX). Detekce PID vlastníka
|
||||
- **image_manager.py** - Vytváření sparse .vault souborů, formátování exFAT (mkfs.exfat), resize (truncate + fsck), dotaz na info
|
||||
- **container.py** - Mount/unmount přes udisksctl (loop device, bez root oprávnění)
|
||||
- **file_watcher.py** - Detekce změn souborů přes watchdog/inotify (create, modify, delete, move). Podpora ignore patterns
|
||||
- **file_sync.py** - Kopírování souborů s progress callbackem (chunked, 1MB). Sync na úrovni jednotlivých souborů (SHA-256 + timestamp porovnání)
|
||||
- **sync_manager.py** - Orchestrace synchronizace mezi replikami. Real-time propagace změn přes file watcher. Manifest-based porovnání pro reconnect sync. Pause/resume
|
||||
- **vault.py** - Hlavní třída Vault orchestrující vše:
|
||||
- Otevření/zavření vault s lock managementem
|
||||
- Automatické mountování sekundárních replik z manifestu
|
||||
- Přidání/odebrání replik s full sync
|
||||
- Manuální synchronizace
|
||||
- Resize všech replik (unmount → resize → remount)
|
||||
- Detekce zaplnění (>90% varování)
|
||||
- Polling dostupnosti replik (30s) s auto-reconnect
|
||||
- Konzistentní porovnání cest pomocí Path.resolve()
|
||||
- Graceful shutdown (SIGINT/SIGTERM)
|
||||
|
||||
### GUI (System Tray)
|
||||
|
||||
- **tray_app.py** - System tray daemon s kontextovým menu:
|
||||
- Vytvořit/otevřít/zavřít vault
|
||||
- Přidat repliku, spravovat repliky
|
||||
- Synchronizovat, zvětšit vault
|
||||
- Stavy ikon: šedá (zavřeno), zelená (otevřeno), žlutá (částečné repliky), modrá (sync), červená (chyba)
|
||||
- 5s status update timer, 30s replica check timer
|
||||
- Varování při zaplnění >90%
|
||||
- **notifications.py** - Systémové notifikace přes notify-send
|
||||
- **dialogs/new_vault.py** - Dialog pro vytvoření vault (název, cesta, velikost s quick buttony 1/5/10/50 GB)
|
||||
- **dialogs/open_vault.py** - Dialog pro otevření existujícího .vault souboru
|
||||
- **dialogs/manage_replicas.py** - Tabulka replik se statusem (primární/sekundární, připojeno/odpojeno) a tlačítkem pro odebrání
|
||||
- **dialogs/sync_progress.py** - Progress dialog se progress barem, aktuálním souborem, logem a cancel tlačítkem
|
||||
- **dialogs/resize_vault.py** - Dialog pro zvětšení vault s aktuálním využitím a spinnerem pro novou velikost
|
||||
|
||||
### Testy
|
||||
|
||||
- 130 unit testů pokrývajících všechny core moduly
|
||||
- test_file_entry, test_manifest, test_lock, test_image_manager, test_container
|
||||
- test_file_watcher, test_file_sync, test_sync_manager, test_vault
|
||||
|
||||
### Bugfix
|
||||
|
||||
- Oprava duplicitního zobrazení replik při otevření sekundárního kontejneru - všechny cesty se nyní porovnávají přes `Path.resolve()` pro kanonickou formu
|
||||
Reference in New Issue
Block a user