Changelog

SemVer 2.0.0 Keep-A-Changelog 1.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning,
and yes, platform and engine support are part of the public API.
Please file a bug if you notice a violation of semantic versioning.

Unreleased

Added

Changed

Deprecated

Removed

Fixed

Security

2.0.6 - 2026-02-19

  • TAG: v2.0.6
  • COVERAGE: 96.10% – 518/539 lines in 11 files
  • BRANCH COVERAGE: 74.72% – 133/178 branches in 11 files
  • 96.33% documented

Added

  • AGENTS.md

Changed

  • appraisal2 v3.0.6
  • kettle-test v1.0.10
  • stone_checksums v1.0.3
  • ast-merge v4.0.6
  • tree_haver v5.0.5
  • tree_stump v0.2.0
    • fork no longer required, updates all applied upstream
  • Updated documentation on hostile takeover of RubyGems
    • https://dev.to/galtzo/hostile-takeover-of-rubygems-my-thoughts-5hlo

2.0.5 - 2026-02-01

  • TAG: v2.0.5
  • COVERAGE: 96.10% – 518/539 lines in 11 files
  • BRANCH COVERAGE: 74.72% – 133/178 branches in 11 files
  • 96.33% documented

Added

  • ConflictResolver now applies per-node-type preferences via node_typing.

Changed

2.0.4 - 2026-01-20

  • TAG: v2.0.4
  • COVERAGE: 100.00% – 25/25 lines in 1 files
  • BRANCH COVERAGE: 100.00% – 4/4 branches in 1 files
  • 96.33% documented

Changed

2.0.3 - 2026-01-11

  • TAG: v2.0.3
  • COVERAGE: 96.16% – 501/521 lines in 11 files
  • BRANCH COVERAGE: 76.22% – 125/164 branches in 11 files
  • 96.33% documented

Changed

  • ast-merge v4.0.2
  • tree_haver v5.0.1

2.0.2 - 2026-01-09

  • TAG: v2.0.2
  • COVERAGE: 96.34% – 500/519 lines in 11 files
  • BRANCH COVERAGE: 76.54% – 124/162 branches in 11 files
  • 96.33% documented

Changed

  • tree_haver v4.0.5
    • FFI Backend improvements
    • Error handling improvements
  • Improved GHA workflows & rake tasks
  • Simplified dependency_tags.rb: Removed redundant debug code
    • Removed BASH_MERGE_DEBUG env var handling (use TREE_HAVER_DEBUG instead)
    • tree_haver’s debug output now respects blocked backends via compute_blocked_backends
    • Avoids accidentally loading MRI backend during FFI-only test runs

2.0.1 - 2026-01-09

  • TAG: v2.0.1
  • COVERAGE: 96.34% – 500/519 lines in 11 files
  • BRANCH COVERAGE: 76.54% – 124/162 branches in 11 files
  • 96.33% documented

Added

  • FFI backend isolation for test suite
    • Added bin/rspec-ffi script to run FFI specs in isolation (before MRI backend loads)
    • Added spec/spec_ffi_helper.rb for FFI-specific test configuration
    • Updated Rakefile with ffi_specs and remaining_specs tasks
    • The :test task now runs FFI specs first, then remaining specs
  • Emitter-based output

Changed

  • ast-merge v3.1.0, adds Ast::Merge::EmitterBase
  • tree_haver v4.0.4, adds error handling for FFI backend
  • major spec refactor

2.0.0 - 2026-01-06

  • TAG: v2.0.0
  • COVERAGE: 100.00% – 109/109 lines in 2 files
  • BRANCH COVERAGE: 100.00% – 28/28 branches in 2 files
  • 96.46% documented

Changed

  • ast-merge v3.0.0 compatibility (breaking changes)

1.0.2 - 2026-01-02

  • TAG: v1.0.2
  • COVERAGE: 100.00% – 109/109 lines in 2 files
  • BRANCH COVERAGE: 100.00% – 28/28 branches in 2 files
  • 96.46% documented

Removed

  • Load-time grammar registration - TreeHaver’s parser_for now handles grammar discovery
    and registration automatically. Removed manual GrammarFinder calls and warnings from
    lib/bash/merge.rb.

1.0.1 - 2026-01-01

  • TAG: v1.0.1
  • COVERAGE: 100.00% – 109/109 lines in 2 files
  • BRANCH COVERAGE: 100.00% – 28/28 branches in 2 files
  • 96.46% documented

Changed

  • NodeWrapper: Now inherits from Ast::Merge::NodeWrapperBase
    • Removes ~100 lines of duplicated code (initialization, line extraction, basic methods)
    • Keeps only Bash-specific type predicates and signature computation
    • Adds #node_wrapper? method for distinguishing from NodeTyping::Wrapper
  • FileAnalysis error handling: Now rescues TreeHaver::Error instead of TreeHaver::NotAvailable
    • TreeHaver::Error inherits from Exception, not StandardError
    • TreeHaver::NotAvailable is a subclass of TreeHaver::Error, so it’s also caught
    • Fixes parse error handling on alternative Ruby engines

1.0.0 - 2026-01-01

  • TAG: v1.0.0
  • COVERAGE: 100.00% – 109/109 lines in 2 files
  • BRANCH COVERAGE: 100.00% – 28/28 branches in 2 files
  • 96.90% documented

Added

  • Initial release

Security