57e3d6ed45
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
3.2 KiB
3.2 KiB
HANDOFF.md
Current state of the comic compression toolchain as of 2026-06-28.
Repositories
| Repo | Branch | Latest commit |
|---|---|---|
comic-compress-new (CLI) |
main | 94f3fab |
iMGcompress-core (library) |
master | a03d0e5 |
iMGcompress (GUI) |
master | 7b7021a |
What was done in this session (v3.1.0 / v2.0.0)
NuGet package updates (all three projects)
- SharpCompress
0.42→0.49.1(CVE GHSA-6c8g-7p36-r338 fixed) - Magick.NET-Q8-x64 →
14.14.0(multiple CVEs fixed) - Imazen.WebP →
11.0.0 - Imageflow.AllPlatforms + Imageflow.Net →
0.15.1 - iTextSharp →
5.5.13.5, itext →9.6.0 - McMaster.Extensions.CommandLineUtils →
5.1.0 - System.Drawing.Common →
10.0.9
SharpCompress 0.49 breaking API migration (iMGcompress-core)
ReaderFactory.Open→OpenReader(stream, new ReaderOptions())RarArchive/ZipArchive.Open→OpenArchive(filename, new ReaderOptions())ZipArchive.Create()→CreateArchive()SaveTo(path, CompressionType)→SaveTo(path, new ZipWriterOptions(CompressionType))- Return type
ZipArchive→IWritableArchive<ZipWriterOptions> - Removed
using ZstdSharp(internalized in 0.49)
Parallel within-archive compression (iMGcompress-core, -P flag)
- New
ProcessArchivePAR2+CompressEntrySyncinCompressor.cs - Batched 3-phase design: sequential read →
Parallel.For(ProcessorCount/2threads) → sequential write - Ordering guaranteed by indexed pre-allocated result slots
- Measured speedup: ~3.4–5× vs serial on i7-12700KF (10 batch size)
- Memory bounded per batch; logs strictly in original entry order from write phase
MemoryStream pre-sizing (iMGcompress-core)
- All
new MemoryStream()→new MemoryStream(entry.Size > 0 ? (int)entry.Size : 4096) - Eliminates buffer-doubling reallocations on all 9 allocation sites in
Compressor.cs
CLI fixes and new flags (ComicCompress)
- Fixed missing
OnExecuteAsync— app was throwingInvalidOperationExceptionon launch - Added
-w|--new-webp: use Imageflow encoder (experimental; benchmarked 8–15% slower than Imazen.WebP) - Added
-P|--par-archive: enable parallel within-archive compression
GUI (iMGcompress)
- Added
checkBox_parArchive(flat-button, location382,231, TabIndex 14) - Default ON for COMIX and COMIX+PDF modes; OFF for IMAGE and ZEBRA
- Wired into
FileProcessor.ProcessorFlagsconstructor - Version bumped to
2.0.0 (28/06/2026)
Other
- Added
CLAUDE.mdtocomic-compress-newwith build commands and architecture notes
Current versions
- CLI (
ComicCompress):3.1.0 (28/06/2026)— seeProgram.cs - GUI (
iMGcompress):2.0.0 (28/06/2026)— seeMGCompress.cs
Known state / open items
- Imageflow encoder (
-wflag) is wired and working but consistently slower than Imazen.WebP across all tested archive sizes. Kept as an experimental path only. libwebp.dllmust be present alongside the executable — it is checked into the repo root of bothcomic-compress-newandiMGcompress-core.- The GUI runs single-threaded on the UI thread (
button_start_Clickis synchronous). Long jobs block the window. Not addressed in this session.