You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: Bump version to 1.2.0 and update metadata handling
- Updated version number in pyproject.toml and __init__.py to 1.2.0.
- Enhanced archiver with advanced file filtering options including exclude patterns, size limits, and modification date.
- Added metadata support in archives, including comment and creator fields.
- Implemented incremental backup functionality.
- Improved entropy detection to identify likely compressed files based on file extension and data characteristics.
- Introduced a new About tab in the GUI with developer credits and application information.
- Added comprehensive tests for new features including file filtering, metadata handling, and incremental backups.
TechCompressor is a **production-ready (v1.1.0)** modular Python compression framework with three algorithms (LZW, Huffman, DEFLATE), AES-256-GCM encryption, TCAF v2 archive format with recovery records, CLI, and GUI. Development is complete with 152 passing tests (2 skipped).
5
+
TechCompressor is a **production-ready (v1.2.0)** modular Python compression framework with three algorithms (LZW, Huffman, DEFLATE), AES-256-GCM encryption, TCAF v2 archive format with recovery records, advanced file filtering, multi-volume archives, and incremental backups. Developed by **Devaansh Pathak** ([GitHub](https://github.com/DevaanshPathak)).
6
6
7
7
**Target**: Python 3.10+ | **Status**: Production/Stable | **License**: MIT
8
8
9
+
## New in v1.2.0
10
+
-**Advanced File Filtering**: Exclude patterns (*.tmp, .git/), size limits, date ranges for selective archiving
11
+
-**Multi-Volume Archives**: Split large archives into parts (archive.tc.001, .002, etc.) with configurable volume sizes
12
+
-**Incremental Backups**: Only compress changed files since last archive creation (timestamp-based)
- Windows release: run PowerShell script `.uild_release.ps1` (uses PyInstaller; note `SPECPATH` use).
172
-
173
-
When changing behavior, follow this checklist:
174
-
1. Keep public API signatures stable (`core.compress/decompress`).
175
-
2. Update/extend unit tests in`tests/`and run `pytest` locally.
176
-
3. Preserve magic header checks and crypto header layout.
177
-
4. If adding new archive formator magic bytes, register a unique 4-byte header and add tests.
178
-
5. Update `techcompressor/__init__.py`and`pyproject.toml` together when bumping versions.
179
-
180
-
## ⚠️ CRITICAL: Release Documentation Checklist
153
+
154
+
---
155
+
156
+
## AI Contributor Quick Guide
157
+
158
+
This repository is a production Python compression tool (LZW, Huffman, DEFLATE) withAES-256-GCM encryption, a TCAF v2 archive format, a CLIand a Tkinter GUI. Tests (~152) are in`tests/`and must remain green for releases.
159
+
160
+
### Critical APIs - DO NOT BREAK
161
+
-**Primary API**: `techcompressor/core.py` exposes `compress(data, algo, password, persist_dict)`and`decompress(data, algo, password)`. Public signature must remain stable.
162
+
-**Archiver**: `techcompressor/archiver.py` implements TCAF v2. `per_file` vs single-stream affects compression ratio and behavior (STORED mode used when expansion occurs).
163
+
-**Crypto**: `techcompressor/crypto.py` uses AES-256-GCM+ PBKDF2 (100k iterations). Do NOT weaken iterations or alter header format (`TCE1| salt | nonce | ciphertext | tag`).
164
+
-**CLI/GUI**: `techcompressor/cli.py`and`techcompressor/gui.py` are entry points. GUI must keep thread-safety (use `.after()`for widget updates); progress callbacks are `(current:int, total:int)`andGUI adapts them to `(percent, message)`.
165
+
166
+
### Code Conventions & Gotchas
167
+
-**Magic headers** are 4bytes (e.g. `TCZ1`, `TCH1`, `TCD1`, `TCE1`, `TCAF`, `TCRR`) — decompression validates them
168
+
-**LZWformat**: 2-byte big-endian words (`struct.pack(">H", code)`) — maintain packing conventions
**Files to inspect first for most tasks**: `techcompressor/core.py`, `archiver.py`, `crypto.py`, `cli.py`, `gui.py`, `utils.py`, `bench.py`, `build_release.ps1`, and`tests/`.
If anything above is unclear or you want more examples (small patch + tests), ask which area to expand and I will add concrete examples with test patterns.
0 commit comments