Skip to content

Releases: ramsy0dev/pmole

pmole v0.2.0

Choose a tag to compare

@ramsy0dev ramsy0dev released this 20 Mar 00:34
cda1596

What's Changed

Compression

  • Replace LZW-only text format with binary .pm v3 format (magic PM\x03\x00)
  • Add compression.py with four algorithms: LZW (uint16), LZW+zlib, zlib, lzma
  • Auto-select best algorithm per file (compress_auto); skip LZW for files >10 MB
  • Parallel compress/decompress via ThreadPoolExecutor (default 3 threads)
  • Fix LZW to use bytes keys — eliminates UnicodeDecodeError on binary files
  • Add RESET_CODE=256 and dictionary reset at 65536 to keep all codes in uint16

Encryption

  • Add crypto.py: AES-256-GCM with PBKDF2-HMAC-SHA256 (260k iterations)
  • All operations (compress, decompress, list, extract, verify, search) accept
    an optional password; encrypted archives use PME\x01 envelope magic
  • _open_pm() context manager decrypts to a temp file transparently so worker
    threads get a valid fd for the lifetime of the operation

Codebase tools

  • verify: decompress every file in-memory, check sizes — no disk writes
  • search: regex grep across all text files in archive — no disk writes
  • stats: compression breakdown grouped by file extension
  • .pmignore / .gitignore support via pathspec (gitignore semantics)
  • .pmignore added to default EXCLUDE_FILENAMES

API and CLI

  • New top-level API in api.py: compress, decompress, list_files, extract,
    verify, search, stats, is_encrypted, lzw_compress, lzw_decompress
  • ArchiveEntry dataclass with compression_ratio and algo_name properties
  • CLI redesigned to use positional arguments; add verify, search, stats,
    tree commands; add -p/--password (PMOLE_PASSWORD env var) to all commands
  • --threads (-t) default changed to 3; exposed in all relevant commands

Auto-exclusion

  • Expand EXCLUDE_EXTENSIONS to cover images, audio/video, fonts, databases,
    lock files, source maps, and more
  • Expand EXCLUDE_DIRECTORIES to cover Python envs, Node, IDEs, build tools,
    package caches, and more
  • Add EXCLUDE_FILENAMES for OS artifacts and secret files
  • Add MAX_FILE_SIZE_BYTES (50 MB default)
  • Add pathspec dependency for gitignore pattern matching

Full Changelog: v0.1.1...v0.2.0

pmole v0.1.1

Choose a tag to compare

@ramsy0dev ramsy0dev released this 13 Dec 22:21

What's Changed

Full Changelog: v0.1.0...v0.1.1

Pmole v0.1.0

Choose a tag to compare

@ramsy0dev ramsy0dev released this 07 Mar 21:10

First Release v0.1.0

What's Changed

New Contributors

Full Changelog: https://github.com/ramsy0dev/pmole/commits/v0.1.0