Releases: xixu-me/tzst
tzst 1.2.8 - Improved CLI Archive Path Display
🔧 Improvements
CLI Enhancement - Archive Path Normalization
- Improved user experience: CLI now displays the correct final archive filename both before and after creation
- Path consistency: Archive paths shown in CLI output now match the actual files created, including proper extension handling
- Better clarity: Users see exactly what file will be created when archive extensions are automatically normalized
📝 Technical Details
- Added
_normalize_archive_path()
helper function in CLI module that mirrors the extension logic fromcore.py
- Ensures CLI output shows the correct
.tzst
or.zst
extensions even when users provide paths without proper extensions - Maintains consistency between what users see in the CLI and the actual files created on disk
🛠️ Changes
- Modified: cli.py - Enhanced archive creation output to show normalized paths
📦 What's Changed
This patch release focuses on improving the user experience when creating archives through the command-line interface. Previously, if a user specified an archive path without the proper extension, the CLI would show the original path in the output messages while actually creating a file with the normalized extension. Now the CLI consistently shows the final filename that will be created.
Full Changelog: v1.2.7...v1.2.8
tzst 1.2.7 - CI/CD Architecture Naming Standardization and Binary Filename Updates
This release focuses on standardizing naming conventions across the CI/CD pipeline and documentation for better consistency and clarity.
✨ What's Changed
🏗️ CI/CD Pipeline Improvements
- Architecture naming standardization: Replaced legacy
x86_64
/aarch64
with modernamd64
/arm64
conventions for consistency with industry standards - Platform naming updates: Standardized macOS platform identifier to
darwin
for better alignment with Go and other modern tooling - Binary filename consistency: Removed
v
prefix from artifact filenames to follow conventional naming patterns
📦 Binary Distribution Updates
- Updated binary naming across all platforms:
- Linux:
tzst-{version}-linux-amd64.zip
,tzst-{version}-linux-arm64.zip
- Windows:
tzst-{version}-windows-amd64.zip
,tzst-{version}-windows-arm64.zip
- macOS:
tzst-{version}-darwin-amd64.zip
,tzst-{version}-darwin-arm64.zip
- Linux:
📚 Documentation Synchronization
- Updated all README files across multiple languages to reflect the new binary naming conventions
- Standardized platform and architecture references in documentation tables
- Ensured consistency across English, Chinese, Japanese, Korean, Arabic, German, French, Spanish, Portuguese, and Russian documentation
🎯 Benefits
- Improved consistency: All binary artifacts now follow a unified naming convention
- Better tooling compatibility: Architecture names align with Docker, Kubernetes, and other cloud-native tools
- Clearer documentation: Users can more easily identify the correct binary for their platform
- Future-proof naming: Adopts industry-standard conventions for long-term maintainability
Full Changelog: v1.2.5...v1.2.7
tzst 1.2.5 - Enhanced Reliability and Documentation
🔧 Improvements
Core Functionality
- Enhanced error handling and path validation - Improved robustness in archive operations with better fallback mechanisms for compression level validation
- Improved TzstArchive reliability - Enhanced memory efficiency and compatibility in archive operations with streamlined extraction logic
- Better compression level validation - More effective validation with automatic fallbacks when zstandard constants are unavailable
Documentation & Localization
- Comprehensive documentation updates - Enhanced guides, examples, and API documentation
- Multi-language support - Updated README files in Arabic, Chinese, German, French, Japanese, Korean, Portuguese, Russian, and Spanish
- Improved documentation infrastructure - Better organization, SEO metadata, and custom domain setup
Infrastructure
- Documentation workflow improvements - Enhanced build processes and publishing workflows
- Updated branding assets - New logos and visual identity elements
- Cross-platform compatibility - Improved reliability across Windows, macOS, and Linux
📊 Statistics
- 70 commits since v1.2.3
- Enhanced test coverage for edge cases and error scenarios
- Improved streaming mode performance for large archives
- Better atomic file operations with automatic cleanup
🛠️ Technical Details
This patch release focuses on reliability, robustness, and user experience improvements while maintaining full backward compatibility. All existing APIs remain unchanged.
Full Changelog: v1.2.3...v1.2.5
tzst 1.2.3 - Standalone Binaries & Enhanced Conflict Resolution
This release brings significant improvements to tzst with standalone binary support and enhanced reliability features.
✨ New Features
- 🔧 Standalone Binary Support: Added standalone entry point (
src/main.py
) enabling PyInstaller-based executable builds for distribution without Python dependencies - ⚡ Enhanced Conflict Resolution: Improved conflict resolution handling in archive extraction with better string-based resolution strategies and safer error handling
- 📋 Multi-Platform Binary Distribution: Enhanced CI/CD pipeline now supports building binaries for Linux (x86_64, ARM64), Windows (x64, ARM64), and macOS (Intel, Apple Silicon)
🛠️ Improvements
- 🧪 Enhanced Test Coverage: Comprehensive test refactoring with improved coverage for conflict resolution scenarios and edge cases
- 🔄 Streamlined CI/CD: Simplified GitHub release workflow with better automation and binary verification
- 📚 Documentation Workflow: Added automated documentation publishing pipeline
- 🏷️ Updated Badges: Refreshed README badges for better project status visibility
🔧 Technical Enhancements
- Improved error handling for invalid conflict resolution values
- Better predictable behavior in archive extraction scenarios
- Enhanced build process for cross-platform compatibility
- Refined release automation and version management
📦 Installation
This release maintains full backward compatibility with existing tzst installations while adding new distribution options through standalone binaries.
For Python users:
pip install tzst==1.2.3
For standalone binaries: Download from the releases page
What's Changed
- Potential fix for code scanning alert no. 5: Workflow does not contain permissions by @xixu-me in #5
Full Changelog: v1.1.1...v1.2.3
tzst 1.1.1 - Enhanced Testing and Stability Improvements
This is a maintenance release focused on improving code quality, test coverage, and overall stability. No breaking changes were introduced, making this a safe upgrade for all users.
🧪 Testing Improvements
- Comprehensive Test Coverage: Added extensive test coverage for previously untested code paths and edge cases
- Security and Error Handling Tests: Enhanced test suite for security features and error handling scenarios
- Platform-Specific Testing: Added robust platform-specific test coverage for better cross-platform reliability
- Integration Tests: Expanded integration test scenarios for complex archive operations
🐛 Bug Fixes & Stability
- Edge Case Handling: Improved handling of edge cases in CLI operations and file validation
- Error Handling: Enhanced error handling for append mode operations and file access scenarios
- Archive Operations: Better handling of corrupted archives and invalid file paths
🔧 Internal Improvements
- Code Coverage: Significantly improved test coverage across core functionality
- Fixture Enhancements: Enhanced test fixtures for more comprehensive testing scenarios
- Code Quality: Improved code reliability through extensive edge case testing
📚 Documentation
- Test Documentation: Enhanced documentation for testing procedures and edge cases
- Code Comments: Improved inline documentation for better maintainability
Full Changelog: v1.1.0...v1.1.1
tzst 1.1.0 - Enhanced CLI and Stability Improvements
This release brings significant enhancements to the command-line interface, improved error handling, and important bug fixes that make tzst more reliable and user-friendly.
✨ New Features
- Version Command: Added
--version
flag to display version information - Enhanced CLI Error Handling: Improved error messages and validation throughout the CLI
- Compression Level Validation: Added validation for compression levels (1-22) with better error messages
- Issue Templates: Added comprehensive GitHub issue templates for better community support
🐛 Bug Fixes
- Critical Path Resolution: Fixed critical bug in path resolution during archive operations
- Current Directory Archiving: Improved logic for archiving current directory contents
- Test Path Handling: Fixed path issues in extraction tests (
no_atomic
test) - Exception Chaining: Improved exception chaining in compression validation
🔧 Improvements
- CLI Refactoring: Major refactoring of CLI archive creation logic for better maintainability
- Test Coverage: Added comprehensive tests for invalid compression levels and CLI functionality
- Documentation: Updated README with enhanced library description and clearer usage examples
- Repository URLs: Updated repository URLs for consistency
- CI/CD: Added Codecov integration and improved GitHub Actions workflows
- Dependencies: Updated various GitHub Actions dependencies (codecov-action, git-auto-commit-action)
📋 CLI Enhancements
- Better help text formatting
- Improved verbose output for archive operations
- Enhanced streaming mode support
- More robust error handling across all commands
🧪 Testing & Quality
- Expanded test suite with new test cases
- Improved test organization and consolidation
- Better coverage reporting with Codecov integration
- Enhanced CI workflow with path-specific ignores
🔒 Security & Stability
- Enhanced input validation
- Better error handling for edge cases
- Improved atomic operations handling
- More robust archive processing
What's Changed
- Bump codecov/codecov-action from 3 to 5 by @dependabot in #2
- Bump stefanzweifel/git-auto-commit-action from 4 to 5 by @dependabot in #3
- Potential fix for code scanning alert no. 2: Workflow does not contain permissions by @xixu-me in #4
New Contributors
- @dependabot made their first contribution in #2
- @xixu-me made their first contribution in #4
Full Changelog: v1.0.0...v1.1.0
tzst 1.0.0 - First Stable Release with Security Enhancements
This is the first stable major release of tzst, featuring comprehensive security improvements and modernized Python support.
🔒 Security Features (New)
- Extraction Filters: Added secure extraction filters to protect against malicious archives
data
filter (default): Maximum security for untrusted archivestar
filter: Standard tar compatibility with security checksfully_trusted
filter: Full feature support for trusted archives only
- CLI Security Options: New
--filter
option for all extraction commands - Comprehensive Security Tests: Added extensive test coverage for security scenarios
💥 Breaking Changes
- Python Version Support: Dropped support for Python 3.8-3.11, now requires Python 3.12+
- Default Security: Extraction now uses secure
data
filter by default
✨ New Features
- Atomic Operations Control: Added
--no-atomic
CLI option to disable atomic file operations - Enhanced Error Handling: Improved error messages and exception handling
- Streaming Mode: Enhanced streaming support for memory-efficient processing
🔧 Improvements
- Documentation: Enhanced CLI help with security guidelines and comprehensive usage examples
- Code Quality: Refactored core functionality and improved test coverage
- CI/CD: Updated workflows for modern Python versions and improved reliability
📦 Dependencies
- Updated zstandard dependency support
- Modernized development dependencies
⚠️ Security Notice
Important: This release changes the default extraction behavior to use the secure data
filter. This provides protection against path traversal and other archive-based attacks. If you need the old behavior, explicitly use --filter fully_trusted
, but only with completely trusted archives.
🚀 Migration Guide
- Python Version: Upgrade to Python 3.12 or later
- Security: Review any extraction code and consider the new security filters
- CLI: Update scripts using extraction commands to explicitly specify
--filter
if needed
This release represents the maturation of tzst into a production-ready library with enterprise-grade security features. The comprehensive security enhancements make it safe to use with untrusted archives while maintaining full compatibility for trusted content.
Full Changelog: v0.3.1...v1.0.0
tzst 0.3.1
Full Changelog: v0.3.0...v0.3.1
tzst 0.3.0
This release adds significant new features for memory efficiency and safety.
New Features
Streaming Mode Support
- Added memory-efficient streaming mode for processing large archives
- Enable with
streaming=True
parameter in Python API functions - Use
--streaming
flag in CLI commands - Optimized for archives larger than 100MB and limited memory environments
Atomic File Operations
- Archives are now created in temporary files first, then moved atomically
- Prevents incomplete/corrupted archives if process is interrupted
- Automatic cleanup of temporary files on interruption
- Safe handling for all archive creation operations
Enhanced Error Handling
- More informative error messages with clear alternatives
- Better exceptions with context-specific suggestions
- Improved recovery mechanisms for various failure scenarios
Memory Usage Optimization
- Added comprehensive memory usage guidelines based on archive size
- Performance optimization recommendations for different use cases
- Detailed documentation for handling archives of various sizes
Performance Improvements
- Optimized compression level selection guidance
- Better handling of batch operations
- Improved cross-platform compatibility
Documentation
- Added detailed sections on streaming mode benefits and use cases
- Expanded performance tips and memory usage guidelines
- Enhanced API documentation with more examples
Bug Fixes
- Various stability improvements and edge case handling
- Better error reporting for unsupported operations
This version is a recommended update for all users, especially those working with large archives.
Full Changelog: v0.2.0...v0.3.0
tzst 0.2.0 - First Public Release
This is the first public release of tzst, a Python library for creating and manipulating .tzst
/.tar.zst
archives using Zstandard compression.
Features in this release:
- High Compression: Uses Zstandard compression for excellent compression ratios and speed
- Tar Compatibility: Creates standard tar archives compressed with Zstandard
- Command Line Interface: Intuitive CLI with simple commands
- Python API: Clean, Pythonic API for programmatic use
- Cross-Platform: Works on Windows, macOS, and Linux
- Multiple Extensions: Supports both
.tzst
and.tar.zst
extensions - Flexible Extraction: Extract with full paths or flatten directory structure
Installation
pip install tzst
Quick Start
Command Line Usage
# Create an archive
tzst a archive.tzst file1.txt file2.txt directory/
# Extract an archive
tzst x archive.tzst
# List archive contents
tzst l archive.tzst
Python API Usage
from tzst import create_archive, extract_archive, list_archive
# Create an archive
create_archive("archive.tzst", ["file1.txt", "file2.txt", "directory/"])
# Extract an archive
extract_archive("archive.tzst", "output_directory/")
# List archive contents
contents = list_archive("archive.tzst")
For full documentation and examples, please see the README.
Supported Python Versions
- Python 3.8
- Python 3.9
- Python 3.10
- Python 3.11
- Python 3.12
Notes
This is an initial release. Feedback and contributions are welcome!