Skip to content

Release v0.12.3

Choose a tag to compare

@aurora7795 aurora7795 released this 23 Aug 23:34
· 32 commits to main since this release

πŸš€ What's Changed in v0.12.3

Added

  • CBR βž” CBZ Conversion Transparency & Pre-Save Notices:
    • Dynamic In-Grid Format Badges: Added responsive format pill badges in the DataGrid File Name column displaying a subtle gray CBR badge on unmodified CBR files that dynamically transitions to an amber CBR βž” CBZ conversion badge when modified (IsDirty).
    • Comprehensive Explanatory Tooltips: Added informative tooltips explaining why CBR (RAR) files are repacked into modern, open-standard CBZ (ZIP) files upon saving.
    • Inspector Details Notice: Displays the format badge and conversion reminder in the File Information sidebar panel.
    • Pre-Save Confirmation Dialog: Added CbrConversionConfirmWindow modal displaying a list of all affected CBR files prior to saving, with a "Do not ask again" preference checkbox.
    • Configuration Setting: Added ConfirmCbrToCbzConversion setting to AppSettings and the Settings GUI window under General preferences.
  • Core Refactoring & Modernization (Code Review Implementation):
    • Modularized Core Services: Extracted ComicInfoXmlSanitizer (XML sanitization, coercion, and validation), ArchiveSwapService (atomic swap, rollback safety, integrity validation), and ComicArchiveHandler (multi-tiered ZIP seek, non-seekable streams, SharpCompress fallback). MetadataEditor acts as a unified faΓ§ade maintaining 100% backward compatibility.
    • Custom Domain Exception Hierarchy: Added InkTagException base class and specialized domain exceptions (ComicArchiveException, ComicArchiveCorruptException, MetadataXmlSanitizationException, UnsafeArchiveEntryException) under InkTag.Core.Exceptions.
    • Native Async API Overloads: Implemented ReadMetadataAsync, EditMetadataAsync, BulkEditMetadataAsync, ExtractCoverImageBytesAsync, and GetCoverHashAsync with CancellationToken propagation and progress reporting.
    • Comprehensive XML Documentation: Added standard /// <summary> docstrings across all public schema properties in ComicInfo.cs.

Changed

  • Save Status Bar Progress Reporting: MainWindowViewModel.SaveAllAsync now explicitly reports CBR βž” CBZ conversion counts during batch saves (e.g. Saving (1/3): Issue.cbr (CBR βž” CBZ)...) and in the final completion message.
  • Cached XmlSerializer Instances: ComicInfoXmlSanitizer now caches static XmlSerializer instances, eliminating runtime dictionary lookups and heap allocations per read/write cycle.
  • Lazy Directory File Enumeration: Replaced Directory.GetFiles with Directory.EnumerateFiles across MetadataEditor, AgentOperations, and ComicScannerService to stream file paths lazily and eliminate large upfront array allocations when processing massive comic libraries.
  • Asynchronous GUI & MCP Adoption: Updated ArchiveCoverService and ComicScannerService to consume non-blocking async methods.

Fixed

  • Bulk Auto-Tag Queue Button Label: Fixed misleading "Saving..." label on the bottom action button while the queue is actively searching and matching covers on ComicVine. It now clearly displays "Searching & Matching..." during the search phase and "Saving to Archives..." during the write phase.
  • Top Control Bar Overflow in Bulk Queue: Resolved control clipping where the Cancel button overflowed the top card by adopting a responsive 3-column layout and compact spacing.
  • ViewModel Path-Change False-Dirty Trigger: Fixed a bug where updating a comic's path (.cbr $\rightarrow$ .cbz or file renaming) triggered property change notifications that erroneously marked IsDirty = true.
  • Bulk Scrape CBR $\rightarrow$ CBZ Path Synchronization: Ensured BulkScrapeQueueService immediately updates item paths to .cbz after conversion so subsequent file renaming and in-place main grid reloads reference the correct file.


πŸ“¦ Downloads & Installation Notes

🍏 macOS Installation Note

Because InkTag is currently unnotarized:

  1. Drag InkTag.app into /Applications.
  2. Run the following command in Terminal to clear the download quarantine:
    xattr -cr /Applications/InkTag.app

(Alternatively, go to System Settings > Privacy & Security and click Open Anyway).

πŸ€– Model Context Protocol (MCP) Server Usage

  • macOS (bundled): /Applications/InkTag.app/Contents/MacOS/InkTag.Mcp
  • Windows / Linux / macOS (standalone downloads): Use the dedicated InkTag-Mcp-* packages.