Revision history for Archive-Lha

0.14  2026-05-09 (Nicolas Mendoza)
    - Fix plhasa incorrectly lowercasing all-caps filenames in Amiga
      archives; _fix_msdos_allcaps now only applies when OS byte is 'M'
      (GitHub issue #2)
    - Replace real-world test archives with minimal synthetic fixtures
      (amiga_prefix.lha, amiga_allcaps_preserve.lha)

0.13  2026-05-09 (Nicolas Mendoza)
    - XS implementations of checksum and dostime2utime in
      Archive::Lha::Header::Utils; pure-Perl fallbacks retained
    - Store raw DOS integer in header{timestamp} for Level0/1; new
      timestamp_is_unix flag distinguishes DOS from Unix epoch at display time
    - Preload Level0/1/2 header parsers; dispatch via array instead of eval
    - Fix filename charset for UNIX-tagged archives: use Encode::Guess
      instead of assuming UTF-8 (fixes latin-1 filenames e.g. "Français")
    - plha l: show filename node only (no path), matching Amiga LhA guide
    - plha v/vv: fix timestamps for Level0/1 archives; display CRC uppercase
    - plha/plhasa: English month names by default (LC_TIME=C), matching
      lhasa and LhA for UNIX which both hardcode a static months[] array
    - Add --use-locale flag to opt in to system locale month names
    - Add --from-charset/--to-charset as long forms of -fc/-tc
    - CI: run on all branches, use cpanm --installdeps, cache deps,
      use prove -wlvmb t; hardcode expected plhasa output in tests

0.12  2026-05-08 (Nicolas Mendoza)
    - Install plhasa via EXE_FILES instead of postamble symlink so it
      is correctly installed by cpanm (postamble install targets are
      skipped by cpanm)
    - Add GitHub repository URL to CPAN metadata

0.11  2026-05-07 (Nicolas Mendoza)
    - OS-based filename charset auto-detection in pathname()
      (Amiga->iso-8859-15, MS-DOS/Win->cp1252, Unix->UTF-8, X68K->cp932)
    - plha l command: LhA terse listing format (filename only, + prefix for paths)
    - plha -fc/-tc options: explicit from/to charset for filenames
    - plhasa symlink: activates lhasa-compatible interface (l/v listing formats)
    - Truncation detection in check_magic(): warn if last byte is not 0x00
    - Fix Perl 5.38+ incompatibility in Decode::Base (constant subs closing over
      lexicals): replaced with %_params hash keyed by subclass name
    - Fix Decode::Base accessor redefinition warnings (_accessors_installed guard)
    - Full POD rewrite for Archive::Lha and plha: encoding, charset table,
      limitations, Amiga LhA command docs, Wayback Machine links for dead URLs
    - Makefile.PL: added missing PREREQ_PM deps (Encode, File::Basename,
      File::Path, Getopt::Long, Log::Dispatch, Data::Dump, Time::Moment)
    - Test suite: Amiga and latin-1 test archives, truncation test,
      unknown command error test, charset option tests

0.10  2026-05-06 (Nicolas Mendoza)
    - Handle Level 0 file comments (null-byte separator in pathname)
    - Truncate pathnames and filenames at embedded null bytes
    - Parse Unix permissions (0x50), UID/GID (0x51), group name (0x52)
      from extended headers
    - Handle all LHA methods (lhd, lzs, lz4, lz5, pm0, pm1, pm2)
    - Fix Windows directory path handling (Amiga compatibility)
    - Use POSIX::mktime for DOS timestamps (normalizes out-of-range values)
    - Lower minimum Level 0/1 header size to match lhasa behavior
    - Add plha command-line tool with lhasa-compatible listing formats
      (l, lv, v, vv modes)
    - Add MS-DOS all-caps to lowercase filename conversion

0.06  2007 (Kenichi Ishigaki)
    - Original CPAN release
