Skip to content

Releases: xixu-me/tzst

tzst 1.2.8 - Improved CLI Archive Path Display

15 Jun 08:25
Compare
Choose a tag to compare

🔧 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 from core.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

10 Jun 13:37
Compare
Choose a tag to compare

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 modern amd64/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

📚 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

09 Jun 05:51
Compare
Choose a tag to compare

🔧 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

04 Jun 13:43
Compare
Choose a tag to compare

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

02 Jun 14:02
Compare
Choose a tag to compare

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

01 Jun 18:44
Compare
Choose a tag to compare

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

Full Changelog: v1.0.0...v1.1.0

tzst 1.0.0 - First Stable Release with Security Enhancements

31 May 18:24
Compare
Choose a tag to compare

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 archives
    • tar filter: Standard tar compatibility with security checks
    • fully_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

30 May 08:06
Compare
Choose a tag to compare
tzst 0.3.1 Pre-release
Pre-release

Full Changelog: v0.3.0...v0.3.1

tzst 0.3.0

30 May 07:07
Compare
Choose a tag to compare
tzst 0.3.0 Pre-release
Pre-release

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

29 May 14:19
Compare
Choose a tag to compare
Pre-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!