53 lines
3.0 KiB
Markdown
53 lines
3.0 KiB
Markdown
|
|
# 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
|