# Changelog ## 1.0.1 (2026-01-30) ### GUI - **dialogs/about.py** - Dialog "O programu" zobrazující název, verzi, autora a popis. Červený DEV badge pokud je aktivní vývojářský režim (ENV_DEBUG) - **tray_app.py** - Položka "O programu..." v tray menu ### Interní - **version.py** - Modul pro získání verze z pyproject.toml s fallbackem do _version.py - **_version.py** - Automaticky aktualizovaný fallback soubor s poslední známou verzí ## 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