| Tar extraction on Windows (critical) |
_arcname() used os.path.relpath() which returns backslashes on Windows. tarfile stored paths like folder\file.png and only extracted the last file correctly — 25 files in → 1 file out |
_arcname() now calls .replace("\\", "/") to always use forward slashes |
| AES256 / ChaCha20 extract fails |
In normal (non-tar) mode, write() called _serialize_index() which stored plain compressed data, but _parse_index_stream() tried to decrypt() it — causing decryption failure on every read |
write() now encrypts each entry's data individually when FLAG_ENC is set, and stores the encrypted size |
list encrypted exit 1 |
Same root cause as above — l command failed reading encrypted normal archives |
Fixed by the encryption write fix above |
-f exact match fails |
-f "nato_simple.json" failed to match entries stored as nato/nato_simple.json — only full path comparison was done |
_matches_filter() now also compares against the basename when the filter contains no / |
-ff exact match fails |
Same root cause as -f exact match |
Same fix |
Multiple -f fails |
Same root cause as -f exact match |
Same fix |
| Multi-part normal extract crashes |
from recovery import find_rr_files, check_and_recover imported a module that was never implemented, causing ModuleNotFoundError on every multi-part extraction |
Removed the recovery import block entirely (feature planned for future release) |
| Multi-part tar extract also affected |
Same recovery import also present in tar multi-part path |
Removed |
| Round-trip count mismatch in test |
test.bat used dir /b (non-recursive) for input count but dir /b /s (recursive) for output count — directories were counted as files |
Fixed both to use dir /b /s /a-d (excludes directories) |