Release v0.12.3
π 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 Namecolumn displaying a subtle grayCBRbadge on unmodified CBR files that dynamically transitions to an amberCBR β CBZconversion 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
CbrConversionConfirmWindowmodal displaying a list of all affected CBR files prior to saving, with a "Do not ask again" preference checkbox. - Configuration Setting: Added
ConfirmCbrToCbzConversionsetting toAppSettingsand the Settings GUI window under General preferences.
- Dynamic In-Grid Format Badges: Added responsive format pill badges in the DataGrid
- Core Refactoring & Modernization (Code Review Implementation):
- Modularized Core Services: Extracted
ComicInfoXmlSanitizer(XML sanitization, coercion, and validation),ArchiveSwapService(atomic swap, rollback safety, integrity validation), andComicArchiveHandler(multi-tiered ZIP seek, non-seekable streams, SharpCompress fallback).MetadataEditoracts as a unified faΓ§ade maintaining 100% backward compatibility. - Custom Domain Exception Hierarchy: Added
InkTagExceptionbase class and specialized domain exceptions (ComicArchiveException,ComicArchiveCorruptException,MetadataXmlSanitizationException,UnsafeArchiveEntryException) underInkTag.Core.Exceptions. - Native Async API Overloads: Implemented
ReadMetadataAsync,EditMetadataAsync,BulkEditMetadataAsync,ExtractCoverImageBytesAsync, andGetCoverHashAsyncwithCancellationTokenpropagation and progress reporting. - Comprehensive XML Documentation: Added standard
/// <summary>docstrings across all public schema properties inComicInfo.cs.
- Modularized Core Services: Extracted
Changed
- Save Status Bar Progress Reporting:
MainWindowViewModel.SaveAllAsyncnow 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
XmlSerializerInstances:ComicInfoXmlSanitizernow caches staticXmlSerializerinstances, eliminating runtime dictionary lookups and heap allocations per read/write cycle. - Lazy Directory File Enumeration: Replaced
Directory.GetFileswithDirectory.EnumerateFilesacrossMetadataEditor,AgentOperations, andComicScannerServiceto stream file paths lazily and eliminate large upfront array allocations when processing massive comic libraries. - Asynchronous GUI & MCP Adoption: Updated
ArchiveCoverServiceandComicScannerServiceto 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$ .cbzor file renaming) triggered property change notifications that erroneously markedIsDirty = true. -
Bulk Scrape CBR
$\rightarrow$ CBZ Path Synchronization: EnsuredBulkScrapeQueueServiceimmediately updates item paths to.cbzafter 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:
- Drag
InkTag.appinto/Applications. - 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.