Files
Tagger/CHANGELOG.md
2026-01-24 07:50:19 +01:00

4.9 KiB

Changelog

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

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

Changed

  • Modernized GUI inspired by qBittorrent
  • Window geometry saved to global config
  • Ignore patterns saved to folder config

[1.0.2] - 2025-10-03

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

Changed

  • Project structure refactored into modules (src/core/, src/ui/)
  • Using dataclass for Tag and File objects

[1.0.0] - 2025-09-03

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