Skip to content

v1.3.0

Choose a tag to compare

@github-actions github-actions released this 15 Jun 13:02

Added

  • Undo button displays the number of available undo levels — text changes to
    "Undo (N)" and the tooltip explains how many rename batches can be reverted
  • Case-transform modifier in replacement field tokens: = (unchanged), -
    (lower), + (upper), ! (capitalise first char), * (Title Case)
  • Centre-align (^) in replacement field tokens
  • Toolbar-state and preview-delay persistence in Settings
  • tools/po_check.py: PO file inspection tool using the babel library
    (statistics, untranslated entries, regex search, language diff) — replaces
    ad-hoc grep/msgfmt usage that breaks on multi-line entries
  • src/pbrenamer/argparse_qt.py: add_qt_arguments() declares Qt CLI flags
    (--style, --platform, …) as a proper argparse argument group; collected in
    args.qt_args as single-dash tokens ready for QApplication; Qt options are
    hidden from the usage: line to reduce noise while remaining fully visible in
    the --help output
  • tools/fix_po_files.py: utility to normalise PO file formatting in bulk
  • Comprehensive test suite covering all source modules at 100%; includes the
    full main window (_on_preview, _refresh_conflicts, context menus, undo,
    conflict detection, drag-and-drop, keyboard shortcuts, settings dialog,
    file-info window, pattern-help dialog, presets, bookmarks, i18n bootstrap,
    and all core modules)
  • Headless Qt test execution via QT_QPA_PLATFORM=offscreen in conftest.py;
    QMenu.exec patched at module level so no blocking dialog appears during CI
    or local make test runs

Changed

  • main() now uses parse_args() instead of parse_known_args(); unknown
    flags are rejected natively by argparse — _validate_qt_argv removed

Fixed

  • {L} search-pattern token now matches Unicode letters; accented Latin
    (é, ê, ü, …), Cyrillic, Greek and all other Unicode letter categories
    are captured correctly — was limited to ASCII [a-zA-Z], now uses
    [^\W\d_] which covers all \w characters that are neither digits nor
    underscores
  • Qt built-in translations are now loaded alongside the application catalogue
    so dialog buttons (OK, Cancel, Yes, No, …) are correctly translated
    when a non-English language is selected
  • Pattern help dialog: HTML-escaped {1:<12} so the browser no longer
    interprets <12> as an HTML tag
  • Fifteen # pragma: no cover guards on reachable logic replaced by targeted
    tests: case-insensitive no-match in rename_using_plain_text, zero-width
    regex guard, {newnum} CLI branch (start value, invalid start, no-match,
    field error, collision k+=1), rename failure exit path, main() headless
    dispatch, _parse_exif_datetime on malformed input, _read_iptc unknown
    key, _apply_case unknown modifier