# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [0.25.0] - 2025-09-25 [0.25.0]: https://github.com/mohsen1/yek/compare/v0.24.0...v0.25.0 ### Release - V0.25.0 ## [0.24.0] - 2025-09-25 [0.24.0]: https://github.com/mohsen1/yek/compare/v0.23.0...v0.24.0 ### Bug Fixes - Resolve syntax error in main_test.rs - final verification complete ### Documentation - Add comprehensive test improvement documentation ### Features - Complete architectural overhaul with modular design - Implement Copilot-suggested improvements ### Miscellaneous Tasks - Remove temporary documentation files ### Styling - Reorder imports and clean up whitespace in test files ### Testing - Improve test coverage to 81.36% with comprehensive edge case testing - Add unit tests for ProcessingContext and RealFileSystem ### Release - V0.24.0 ## [0.23.0] - 2025-09-17 [0.23.0]: https://github.com/mohsen1/yek/compare/v0.21.0...v0.23.0 ### Bug Fixes - Fix `Windows` installation script - Improve token parsing to handle multi-byte characters and emojis ### Features - Add --output-name option to specify output filename ### Miscellaneous Tasks - Bump serde from 1.0.217 to 1.0.218 - Bump serde_json from 1.0.138 to 1.0.139 - Bump bytesize from 1.3.2 to 2.0.0 - Bump anyhow from 1.0.95 to 1.0.96 - Bump clap from 4.5.30 to 4.5.31 - Bump serde from 1.0.218 to 1.0.219 - Bump config from 0.15.8 to 0.15.11 - Bump anyhow from 1.0.96 to 1.0.97 - Bump chrono from 0.4.39 to 0.4.40 - Bump serde_json from 1.0.139 to 1.0.140 - Bump bytesize from 2.0.0 to 2.0.1 - Bump grcov from 0.8.20 to 0.8.24 - Bump time from 0.3.37 to 0.3.41 - Bump tempfile from 3.17.1 to 3.19.1 ### Ci - Add version-based release check - Fix release workflow to create draft releases and publish only on GitHub release ### Release - V0.22.1 - V0.23.0 ## [0.21.0] - 2025-02-23 [0.21.0]: https://github.com/mohsen1/yek/compare/v0.20.0...v0.21.0 ### Bug Fixes - Glob pattern handling in e2e tests ### Documentation - Update README with glob pattern and file selection support ### Features - Handle glob patterns in input paths ### Testing - Add comprehensive tests for glob pattern support ### Ci - Run release and publish jobs on main branch - Only run release and publish on tag pushes - Trigger release on tag merge to main ### Release - V0.21.0 ## [0.20.0] - 2025-02-22 [0.20.0]: https://github.com/mohsen1/yek/compare/v0.19.0...v0.20.0 ### Bug Fixes - Handle root directory paths correctly - Update input_dirs to input_paths in benchmarks ### Features - Allow files as input ### Fix - Use absolute path in test_empty_input_defaults_to_cwd ### Testing - Add integration test ### Release - V0.20.0 ## [0.19.0] - 2025-02-19 [0.19.0]: https://github.com/mohsen1/yek/compare/v0.18.0...v0.19.0 ### Bug Fixes - Improve token counting accuracy - Ensure token and max-size limits are respected - Remove unnecessary mut keywords from test configs - Update token limit enforcement test ### Features - Use tiktoken for accurate token counting - Add token count to debug output ### Miscellaneous Tasks - Bump clap from 4.5.28 to 4.5.30 - Bump tempfile from 3.16.0 to 3.17.1 ### Performance - Only count tokens when debug logging is enabled ### Release - V0.19.0 ## [0.18.0] - 2025-02-13 [0.18.0]: https://github.com/mohsen1/yek/compare/v0.16.0...v0.18.0 ### Bug Fixes - Ensure files with same timestamp get same boost - S/json/*coveralls* - It is *covdir* - Print debug statements only when --debug is set ### Features - Code coverage ### Miscellaneous Tasks - Typo - Fix repo path and author in Cargo.toml - Remove unused byte-unit dependency - Upgrade dependencies - Bump config from 0.15.6 to 0.15.7 - Bump toml from 0.8.19 to 0.8.20 - Bump clap from 4.5.27 to 4.5.28 - Bump config from 0.15.7 to 0.15.8 - Bump bytesize from 1.3.0 to 1.3.2 ### Testing - Add more unit tests ### Ci - Handle missing base branch coverage gracefully - *covdir* ### Release - V0.17.0 - V0.18.0 ## [0.16.0] - 2025-01-30 [0.16.0]: https://github.com/mohsen1/yek/compare/v0.15.0...v0.16.0 ### Bug Fixes - Add explicit target installation to build action ### Documentation - Fix arguments help in README - Update README.md ### Features - Print version with --version ### Miscellaneous Tasks - Ci ### Ci - Also skip strss in main - Refactor build action to use explicit inputs - Remove unused upload_artifacts from build action - Simplify build action inputs - Optimize build pipeline - Consolidate workflows into ci.yml - Add concurrency control to perf jobs - Add source-based caching for builds - Rewrite most of the CI automation - Use QEMU for ARM binary stress tests - Do not wait for test to finish in build - Remove musl arm - Fix logic on which job to run baased on changes ### Release - V0.16.0 ## [0.15.0] - 2025-01-29 [0.15.0]: https://github.com/mohsen1/yek/compare/v0.14.0...v0.15.0 ### Bug Fixes - Add musl toolchain support for Linux builds - Improve aarch64-musl cross-compilation setup - Use musl cross-compiler for aarch64-musl builds ### Documentation - Update readme to reflect recent changes and more ### Miscellaneous Tasks - Pr feedback - Make max_git_depth a configuration (read only) - Safer type casting - Cargo fmt ### Performance - Do not go beyond 100 commits reading git history ### Refactor - Do checksum and serializing in parallel - Simplify GitHub Actions workflow structure ### Ci - If crates is already published, skip - Separate bench + stress testing - Install openssl for bench workflow too - Use checkout v4 - Organize ci better to not DRY too much - Organize build into its own action ### Release - V0.15.0 ## [0.14.0] - 2025-01-29 [0.14.0]: https://github.com/mohsen1/yek/compare/v0.13.8...v0.14.0 ### Bug Fixes - Clean up imports and remove duplicates - Add #[allow(dead_code)] to is_effectively_absolute - Add musl-tools installation for MUSL targets - Remove leading slash from Windows drive path in test - Add OpenSSL setup for macOS builds - Add OpenSSL setup for MUSL builds - Use muslrust container for MUSL builds - Add OpenSSL static build for MUSL targets - Add output directory for benchmarks - Improve OpenSSL configuration for macOS builds - Remove unsupported --output-dir flag from benchmark commands - Add OpenSSL setup for all Linux targets - Add YEK_OUTPUT_DIR env var for benchmarks - Add output directory config to benchmarks - Update OpenSSL setup for MUSL builds - Resolve dead code warnings and MUSL cross-compilation issues - Update benchmark groups in CI to match actual benchmark definitions - Correct TOML format in yek.toml - Add required pattern field to yek.toml - Correct priority_rules format in yek.toml - Ensure output_dir takes precedence and properly sets stream flag - Add git config in tests ### Documentation - Update README to reflect YAML config usage - Fix yek.yaml example ### Features - Add multi-arch support and fix OpenSSL issues - Print output directory path when not streaming - Improve output messages and logging - Introduce config.rs with ClapConfigFile integration - Add priority.rs for advanced file scoring ### Miscellaneous Tasks - Delete dead code - Bump git-cliff from 1.4.0 to 2.3.0 - Bump clap from 4.5.26 to 4.5.27 - Bump byte-unit from 4.0.19 to 5.1.6 - Clean up git leftovers from the tokenizer branch - PR review - Update .gitignore and add VSCode launch config - Revamp Cargo deps (config-file support, JSON, YAML, etc.) - Add sample yek.yaml config - Fix clippy issues in parallel.rs - Add majo/minor to make release ### Performance - Add new serialization bench with FullYekConfig ### Refactor - Remove unnecessary info log - Streamline defaults.rs, remove old binary checks - Update lib and parallel code to rely on FullYekConfig - Update main.rs to use new config system - Replace map_or with is_some_and ### Testing - Remove legacy integration tests, add new e2e config tests ### Bench - Add bench.toml - Fix single small file benchmark ### Ci - Force release for now - Improve release action - Reuse build from ci.yaml in release - Attempt #2, fix release action - Add fail-fast: false to build job - Allow manual invocation of release - Merge build and release actions - Add rustup target add before building for each target - Add bench back - Use cross to build in CI - Fix build - Introduce the AI loop - Fix AI Loop - Bring new changes from tokenizer work to main (ai loop) - Improve AI loop - Install yek in ai loop - Fix release - Add unique names to artifacts - Add unique names to artifacts ### Release - V0.13.9 - V0.14.0 ## [0.13.8] - 2025-01-20 [0.13.8]: https://github.com/mohsen1/yek/compare/v0.13.7...v0.13.8 ### Bug Fixes - Ensure files are processed only once and fix priority test - Use WalkBuilder in streaming mode to respect gitignore - Include hidden files in WalkBuilder configuration ### Miscellaneous Tasks - Move big lists to defaults.rs - Organization - Fix the release script ### Refactor - Move size parsing tests to dedicated test file - Move normalize_path tests to dedicated file - Improve gitignore handling and fix clippy warnings - Improve binary file handling and remove duplicate gitignore checks ### Testing - Add lots of e2e and integration tests - Add comprehensive gitignore end-to-end tests - Fix binary file test assertion ### Cargo - Add git 2 ### Ci - Simpler release script ### E2e - Fix e2e tests to pass ### Git - Ignore temp txt files ### Release - V0.13.8 ## [0.13.7] - 2025-01-19 [0.13.7]: https://github.com/mohsen1/yek/compare/v0.13.5...v0.13.7 ### Bug Fixes - Ensure most important chunks are output last when streaming - Handle Windows paths correctly in gitignore matching - Make chunk order test platform-independent - Make chunk order test more robust across platforms - Improve test robustness and error handling - Handle logging initialization gracefully in tests - Manually update Formula version - Handle Windows paths correctly in gitignore matching - Update Formula version to match project version - Get version using cargo pkgid - Add aarch64-linux-gnu linker configuration - Use configured max_size in aggregator instead of hardcoded value - Ensure files with different priorities are in separate chunks - Normalize Windows paths for priority calculation - Standardize path handling using PathBuf and normalize_path - Handle Windows path normalization correctly - Handle Windows UNC paths correctly - Normalize paths consistently in gitignore matching and priority sorting - Add --no-verify flag to cargo publish ### Documentation - Add roadmap - Make chunking clear in README - Fix note formatting - Update changelog for v0.13.2 - Improve readme - Add documentation for file_index field ### Features - Prioritize high-priority files in streaming mode - Integrate git-cliff for changelog generation ### Miscellaneous Tasks - Bump version to 0.13.1 - Remove semantic release and sync versions ### Performance - Improve benchmark configuration and accuracy ### Refactor - Remove duplicate formula update from release workflow - Optimize chunk priority check and improve debug logging - Use consistent chunk size constants ### Testing - Add test to verify chunk ordering behavior - Normalize Windows paths in chunk order test ### Ci - Publish to crates.io - Improve benchmark job configuration - Parallelize benchmark groups in serialization tests ### Release - V0.13.5 - V0.7.5 - V0.13.1 - V0.13.3 - V0.13.4 - V0.13.5 - V0.13.5 - V0.13.6 ## [0.13.5] - 2025-01-19 [0.13.5]: https://github.com/mohsen1/yek/compare/v0.13.4...v0.13.5 ### Bug Fixes - Add aarch64-linux-gnu linker configuration ### Features - Integrate git-cliff for changelog generation ### Release - V0.13.5 ## [0.13.4] - 2025-01-19 [0.13.4]: https://github.com/mohsen1/yek/compare/v0.13.3...v0.13.4 ### Bug Fixes - Lint ### Release - V0.13.4 ## [0.13.3] - 2025-01-19 [0.13.3]: https://github.com/mohsen1/yek/compare/v0.13.2...v0.13.3 ### Bug Fixes - Update Formula version to match project version - Get version using cargo pkgid ### Documentation - Update changelog for v0.13.2 ### Miscellaneous Tasks - Remove semantic release and sync versions ### Refactor - Remove duplicate formula update from release workflow ### Release - V0.13.3 ## [0.13.2] - 2025-01-19 [0.13.2]: https://github.com/mohsen1/yek/compare/v0.13.1...v0.13.2 ### Bug Fixes - Handle Windows paths correctly in gitignore matching - Handle Windows paths correctly in gitignore matching ## [0.13.1] - 2025-01-19 [0.13.1]: https://github.com/mohsen1/yek/compare/v0.7.5...v0.13.1 ### Miscellaneous Tasks - Bump version to 0.13.1 ### Release - V0.13.1 ## [0.7.5] - 2025-01-19 [0.7.5]: https://github.com/mohsen1/yek/compare/v0.13.0...v0.7.5 ### Bug Fixes - Manually update Formula version ### Release - V0.7.5 ## [0.13.0] - 2025-01-19 [0.13.0]: https://github.com/mohsen1/yek/compare/v0.7.4...v0.13.0 ### Bug Fixes - Make tag cleanup cross-platform compatible ## [0.7.4] - 2025-01-19 [0.7.4]: https://github.com/mohsen1/yek/compare/v0.12.5...v0.7.4 ### Bug Fixes - Pr feedback - Cross-platform SHA256 computation and artifact handling - Improve version parsing and changelog handling - Include all files in release commit ### Features - Implement tag-based release workflow ### Miscellaneous Tasks - Update Cargo.lock and gitignore ### Refactor - Improve Makefile cross-platform support and remove redundant target ### Testing - Use HTML comments for installation script extraction ### Ci - Remove automatic script path updating ### Release - V0.7.3 - V0.7.4 ## [0.12.4] - 2025-01-19 [0.12.4]: https://github.com/mohsen1/yek/compare/v0.12.3...v0.12.4 ### Bug Fixes - Use GITHUB_TOKEN for authentication in CI workflow ## [0.12.3] - 2025-01-19 [0.12.3]: https://github.com/mohsen1/yek/compare/v0.12.2...v0.12.3 ### Bug Fixes - Update GitHub authentication in CI workflow ## [0.12.2] - 2025-01-19 [0.12.2]: https://github.com/mohsen1/yek/compare/v0.12.1...v0.12.2 ### Bug Fixes - Add PAT token to git push command in CI workflow ## [0.12.1] - 2025-01-19 [0.12.1]: https://github.com/mohsen1/yek/compare/v0.12.0...v0.12.1 ### Bug Fixes - Improve git change detection in CI workflow ## [0.12.0] - 2025-01-19 [0.12.0]: https://github.com/mohsen1/yek/compare/v0.11.0...v0.12.0 ### Bug Fixes - Add aarch64 Linux target configurations - Install cross-compilation tools for ARM64 Linux targets - Add linker configuration for ARM64 Linux targets ### Features - Add linux-musl target support - Add ARM64 Linux support ## [0.11.0] - 2025-01-19 [0.11.0]: https://github.com/mohsen1/yek/compare/v0.10.0...v0.11.0 ### Documentation - Update README with K suffix example ### Features - Support K suffix for token count ## [0.10.0] - 2025-01-19 [0.10.0]: https://github.com/mohsen1/yek/compare/v0.9.0...v0.10.0 ### Bug Fixes - Remove default priority list - Update benchmark comparison parameter to use --noise-threshold - Output directory handling in non-streaming mode ### Features - Run serialization in parallel ### Miscellaneous Tasks - Remove unused import from benchmark ### Performance - Optimize file processing performance - Optimize file processing with single-pass reads and smart parallelization ### Ci - Reduce benchmarking threshold ## [0.9.0] - 2025-01-19 [0.9.0]: https://github.com/mohsen1/yek/compare/v0.8.1...v0.9.0 ### Styling - Use tempfile::tempdir() for performance tests ## [0.8.1] - 2025-01-19 [0.8.1]: https://github.com/mohsen1/yek/compare/v0.8.0...v0.8.1 ### Bug Fixes - Update readme - Grammatical error ### Features - Add performance test - Parallel execution for better perf - Add benchmark regression test with 5% threshold - Add comprehensive benchmarks for serialization ### Styling - Fix linting issues in parallel.rs ### Git - Undo parallel execution in test branch ## [0.8.0] - 2025-01-19 [0.8.0]: https://github.com/mohsen1/yek/compare/v0.7.0...v0.8.0 ### Bug Fixes - Improve installation test workflow - Improve installation test error handling and diagnostics - Fix YAML linting in installation test workflow - Improve Windows installation test - Add macOS support to installation test - Remove ARM64 Windows target and cleanup CI workflow - Improve file chunking and debug output - Correct file priority sorting order - Ensure higher priority files come last in output - Ensure consistent priority boost across platforms - Ensure consistent commit timestamps in tests - Ensure consistent commit timestamps in tests - Ensure consistent path handling in tests - Skip test_git_priority_boost_with_path_prefix in windows - Skip test_git_priority_boost - Remove redundant ignore pattern check - Normalize path separators on Windows for consistent pattern matching - Type inference issue in HashMap::get - Normalize path separators for gitignore matching on Windows - Normalize path separators for custom ignore patterns on Windows - Normalize path separators in output on Windows ### Features - Add installer script and update README with installation instructions - Add Windows installer script and update README - Add semantic release and GitHub Pages deployment - Add installation testing to CI workflow - Add build optimizations and improve CI caching - Add installation test workflow and update README markers - Update installation URLs to use bodo.run ### Miscellaneous Tasks - Remove unused import ### Refactor - Remove unused functions and imports ### Styling - Remove unnecessary mut declarations ### Testing - Add installer tests ## [0.6.0] - 2025-01-15 [0.6.0]: https://github.com/mohsen1/yek/compare/v0.5.0...v0.6.0 ### Features - Remove --stream flag in favor of automatic pipe detection - Add user-friendly size input format ### Miscellaneous Tasks - Prepare for v0.6.0 ## [0.5.0] - 2025-01-15 [0.5.0]: https://github.com/mohsen1/yek/compare/v0.4.0...v0.5.0 ### Documentation - Update README to match actual CLI implementation ## [0.4.0] - 2025-01-13 [0.4.0]: https://github.com/mohsen1/yek/compare/v0.3.0...v0.4.0 ### Features - Add git-based priority boost for recently changed files ## [0.3.0] - 2025-01-13 [0.3.0]: https://github.com/mohsen1/yek/compare/v0.2.0...v0.3.0 ### Bug Fixes - Improve file processing and error handling - Swap -s and -x flags for stream and max-size options ### Features - Add homebrew formula and release automation ### Styling - Fix formatting and linting issues ## [0.2.0] - 2025-01-13 [0.2.0]: https://github.com/mohsen1/yek/compare/v0.1.0...v0.2.0 ### Bug Fixes - Fix token counting flag handling - Fix token counting flag handling - Fix clippy warnings - Resolve -d flag conflict and clarify stream flag behavior - Change delay flag from -d to -w to avoid conflict with debug flag - Update stream flag help text to clarify it disables output directory ### Features - Add debug logging and fix warnings - Add --debug flag and tracing, add detailed debug logs throughout code, clean up build warnings - Update default ignore patterns - Add configurable output directory - Add output_dir field to LlmSerializeConfig - Add -o/--output-dir CLI flag - Support output directory configuration in yek.toml - Implement output directory override logic with CLI precedence ### Miscellaneous Tasks - Bump version to 0.2.0 ### Refactor - Fix clippy warning about redundant closure ### Styling - Apply cargo fmt suggestions