GUI rework to Qt6
This commit is contained in:
175
CHANGELOG.md
175
CHANGELOG.md
@@ -1,68 +1,133 @@
|
||||
# Changelog
|
||||
|
||||
Všechny významné změny v projektu Tagger jsou dokumentovány v tomto souboru.
|
||||
All notable changes to the Tagger project are documented in this file.
|
||||
|
||||
## [1.1.0] - 2026-01-23
|
||||
|
||||
### Changed
|
||||
- **GUI rewrite to PySide6/Qt6** - Complete UI rewrite from Tkinter to Qt
|
||||
- Modern QMainWindow with menu bar, toolbar, and status bar
|
||||
- QTreeWidget for tag sidebar with category colors
|
||||
- QTableWidget for file list with sorting and filtering
|
||||
- QSplitter for resizable sidebar
|
||||
- Native Qt dialogs (QFileDialog, QInputDialog, QMessageBox)
|
||||
- Keyboard shortcuts using QShortcut
|
||||
- Window geometry persistence
|
||||
- **UI utilities updated** - `src/ui/utils.py` now uses Qt (QIcon, QPixmap)
|
||||
- **Python version restricted** - Requires Python >=3.13,<3.15 for PySide6 compatibility
|
||||
|
||||
### Dependencies
|
||||
- Added PySide6 (>=6.10.1)
|
||||
- Removed Tkinter dependency
|
||||
|
||||
## [1.0.5] - 2026-01-23
|
||||
|
||||
### Added
|
||||
- **Tag and category renaming** - New context menu functionality
|
||||
- Right-click on tag → "Rename tag"
|
||||
- Automatic update of all files with the tag
|
||||
- Support for renaming entire categories
|
||||
- **Tag merging** - When renaming to an existing tag
|
||||
- Confirmation dialog for merge
|
||||
- Merge removes source tag and updates files
|
||||
- **Tag.from_string()** - New class method for parsing tags
|
||||
- Parses "category/name" format
|
||||
- Eliminates duplicate code across the project
|
||||
- **Dynamic version loading** - Version is loaded from pyproject.toml
|
||||
- Fallback to `_version.py` if toml is not available
|
||||
- DEBUG mode support from `.env` (adds " DEV" suffix)
|
||||
- APP_NAME includes version: "Tagger v1.0.5 DEV"
|
||||
- **UI utilities module** - `src/ui/utils.py`
|
||||
- Moved `load_icon()` function from core to UI layer
|
||||
|
||||
### Changed
|
||||
- **FileManager refactoring**
|
||||
- New methods `assign_tag_to_files()` and `remove_tag_from_files()`
|
||||
- Old methods kept as deprecated aliases
|
||||
- `Tag` import at module level (eliminates duplicate imports)
|
||||
- **Dead code removal**
|
||||
- Deleted unused `ListManager` module
|
||||
- Removed legacy functions `load_config()` and `save_config()` from config.py
|
||||
- **Missing import fix** - Added `import subprocess` to media_utils.py
|
||||
|
||||
### Tests
|
||||
- 274 tests (all passing)
|
||||
- New tests for Tag.from_string() (6 tests)
|
||||
- New tests for rename/merge tags (24 tests)
|
||||
|
||||
## [1.0.4] - 2025-12-29
|
||||
|
||||
### Added
|
||||
- **CSFD.cz integration** - Fetching movie information
|
||||
- `fetch_movie()` - load movie details from URL
|
||||
- `search_movies()` - search for movies
|
||||
- Automatic tag assignment (genres, year, country, director)
|
||||
- **Close folder** - Safe folder closing with metadata saving
|
||||
|
||||
### Tests
|
||||
- 249 tests covering CSFD integration
|
||||
|
||||
## [1.0.3] - 2025-12-28
|
||||
|
||||
### Přidáno
|
||||
- **Hardlink struktura** - Nová funkcionalita pro vytváření adresářové struktury pomocí hardlinků
|
||||
- `HardlinkManager` třída v `src/core/hardlink_manager.py`
|
||||
- Vytváření hardlinků podle tagů souborů (např. `output/žánr/Komedie/film.mkv`)
|
||||
- Synchronizace struktury - detekce a odstranění zastaralých hardlinků při změně tagů
|
||||
- Podpora filtrování podle kategorií
|
||||
- Preview režim (dry run)
|
||||
- **Menu položky pro hardlinky**
|
||||
- "Nastavit hardlink složku..." - konfigurace výstupní složky a kategorií (ukládá se do `.tagger.json`)
|
||||
- "Aktualizovat hardlink strukturu" - rychlá synchronizace s uloženým nastavením
|
||||
- "Vytvořit hardlink strukturu..." - ruční výběr složky a kategorií
|
||||
- **Tříúrovňový konfigurační systém**
|
||||
- Globální config (`config.json`) - nastavení aplikace (geometrie okna, poslední složka)
|
||||
- Složkový config (`.tagger.json`) - nastavení projektu (ignore patterns, hardlink nastavení)
|
||||
- Souborové tagy (`.filename.!tag`) - metadata jednotlivých souborů
|
||||
- **Výchozí tagy**
|
||||
- Kategorie "Hodnocení" s hvězdičkami (1-5 hvězd)
|
||||
- Kategorie "Barva" s barevnými štítky
|
||||
- Exkluzivní výběr v kategorii Hodnocení (pouze jeden tag)
|
||||
- **Testy**
|
||||
- 189 testů pokrývajících všechny moduly
|
||||
- Testy pro hardlink manager včetně synchronizace
|
||||
- **Poetry** - Správa závislostí pomocí Poetry
|
||||
### Added
|
||||
- **Hardlink structure** - New functionality for creating directory structure using hardlinks
|
||||
- `HardlinkManager` class in `src/core/hardlink_manager.py`
|
||||
- Creating hardlinks based on file tags (e.g., `output/genre/Comedy/movie.mkv`)
|
||||
- Structure synchronization - detection and removal of outdated hardlinks when tags change
|
||||
- Support for filtering by categories
|
||||
- Preview mode (dry run)
|
||||
- **Menu items for hardlinks**
|
||||
- "Set hardlink folder..." - configure output folder and categories (saved to `.tagger.json`)
|
||||
- "Update hardlink structure" - quick sync with saved settings
|
||||
- "Create hardlink structure..." - manual folder and category selection
|
||||
- **Three-level configuration system**
|
||||
- Global config (`config.json`) - application settings (window geometry, last folder)
|
||||
- Folder config (`.tagger.json`) - project settings (ignore patterns, hardlink settings)
|
||||
- File tags (`.filename.!tag`) - individual file metadata
|
||||
- **Default tags**
|
||||
- "Rating" category with stars (1-5 stars)
|
||||
- "Color" category with color labels
|
||||
- Exclusive selection in Rating category (only one tag)
|
||||
- **Tests**
|
||||
- 189 tests covering all modules
|
||||
- Tests for hardlink manager including synchronization
|
||||
- **Poetry** - Dependency management using Poetry
|
||||
|
||||
### Změněno
|
||||
- Modernizované GUI inspirované qBittorrentem
|
||||
- Ukládání geometrie okna do globálního configu
|
||||
- Ignore patterns se ukládají do složkového configu
|
||||
### Changed
|
||||
- Modernized GUI inspired by qBittorrent
|
||||
- Window geometry saved to global config
|
||||
- Ignore patterns saved to folder config
|
||||
|
||||
## [1.0.2] - 2025-10-03
|
||||
|
||||
### Přidáno
|
||||
- **Moderní GUI** - Přepracované rozhraní ve stylu qBittorrent
|
||||
- Postranní panel s kategoriemi a tagy
|
||||
- Tabulka souborů s řazením podle sloupců
|
||||
- Kontextová menu pro soubory a tagy
|
||||
- Vyhledávací pole
|
||||
- Stavový řádek s počtem souborů a velikostí výběru
|
||||
- **Hromadné přiřazování tagů** - Dialog pro přiřazení tagů více souborům najednou
|
||||
- Třístav checkboxy (zaškrtnuto/nezaškrtnuto/smíšené)
|
||||
- Barevné rozlišení kategorií
|
||||
- **Detekce rozlišení videa** - Automatická detekce pomocí ffprobe
|
||||
- **Klávesové zkratky**
|
||||
- Ctrl+O - Otevřít složku
|
||||
- Ctrl+T - Přiřadit tagy
|
||||
- Ctrl+D - Nastavit datum
|
||||
- F5 - Obnovit
|
||||
- Delete - Odstranit z indexu
|
||||
### Added
|
||||
- **Modern GUI** - Redesigned interface in qBittorrent style
|
||||
- Side panel with categories and tags
|
||||
- File table with column sorting
|
||||
- Context menus for files and tags
|
||||
- Search field
|
||||
- Status bar with file count and selection size
|
||||
- **Bulk tag assignment** - Dialog for assigning tags to multiple files at once
|
||||
- Tri-state checkboxes (checked/unchecked/mixed)
|
||||
- Color-coded categories
|
||||
- **Video resolution detection** - Automatic detection using ffprobe
|
||||
- **Keyboard shortcuts**
|
||||
- Ctrl+O - Open folder
|
||||
- Ctrl+T - Assign tags
|
||||
- Ctrl+D - Set date
|
||||
- F5 - Refresh
|
||||
- Delete - Remove from index
|
||||
|
||||
### Změněno
|
||||
- Refaktorizace struktury projektu do modulů (`src/core/`, `src/ui/`)
|
||||
- Použití dataclass pro Tag a File objekty
|
||||
### Changed
|
||||
- Project structure refactored into modules (`src/core/`, `src/ui/`)
|
||||
- Using dataclass for Tag and File objects
|
||||
|
||||
## [1.0.0] - 2025-09-03
|
||||
|
||||
### Přidáno
|
||||
- Základní funkcionalita tagování souborů
|
||||
- Ukládání tagů do skrytých souborů (`.filename.!tag`)
|
||||
- Správa kategorií a tagů
|
||||
- Rekurzivní skenování složek
|
||||
- Ignore patterns pro filtrování souborů
|
||||
- Základní GUI v Tkinter
|
||||
### Added
|
||||
- Basic file tagging functionality
|
||||
- Storing tags in hidden files (`.filename.!tag`)
|
||||
- Category and tag management
|
||||
- Recursive folder scanning
|
||||
- Ignore patterns for file filtering
|
||||
- Basic GUI in Tkinter
|
||||
|
||||
Reference in New Issue
Block a user