Changelog
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.
Unreleased
[9.0.0] - 2025-10-24
Added
- Added
HeadMusic::Rudiment::Pitch::Parserfor strict pitch parsing - Added
HeadMusic::Rudiment::RhythmicValue::Parserfor rhythmic value parsing - Both parsers provide standardized
.parse()class method API
Changed
Pitch.from_namenow usesPitch::ParserinternallyRhythmicValue.getnow usesRhythmicValue::ParserinternallyNote.getnow parses "pitch rhythmic_value" strings inline without Parse module
Removed
- BREAKING: Removed
HeadMusic::Parse::Pitchclass - BREAKING: Removed
HeadMusic::Parse::RhythmicValueclass - BREAKING: Removed
HeadMusic::Parse::RhythmicElementclass - BREAKING: Removed entire
HeadMusic::Parsemodule
Migration Guide
If you were using the removed Parse classes, migrate as follows:
# Before (v8.x)
parser = HeadMusic::Parse::Pitch.new("C#4")
pitch = parser.pitch
# After (v9.x)
pitch = HeadMusic::Rudiment::Pitch.get("C#4")
# or for strict parsing:
pitch = HeadMusic::Rudiment::Pitch::Parser.parse("C#4")
# Before (v8.x)
parser = HeadMusic::Parse::RhythmicValue.new("dotted quarter")
value = parser.rhythmic_value
# After (v9.x)
value = HeadMusic::Rudiment::RhythmicValue.get("dotted quarter")
# or for strict parsing:
value = HeadMusic::Rudiment::RhythmicValue::Parser.parse("dotted quarter")
# Before (v8.x)
parser = HeadMusic::Parse::RhythmicElement.new("F#4 dotted-quarter")
note = parser.note
# After (v9.x)
note = HeadMusic::Rudiment::Note.get("F#4 dotted-quarter")
[8.2.1] - 2025-06-21
Added
- Added missing modern instruments to all locales (ukulele family, electronic instruments, world instruments)
- Added pitched/unpitched instrument classifications to all non-English locales
- Added new instrument families: bass_drum, tambourine, and celesta
Changed
- Improved instrument family classifications (added fretted/unfretted, valve categorizations)
- Removed incorrect percussion classification from harpsichord and clavichord
Fixed
- Fixed Russian translation errors (tritone and perfect_unison)
8.2.0 - 2025-06-20
Added
- Added comprehensive GitHub Actions CI/CD workflows (test matrix, security scanning, automated releases)
- Added security tooling with bundler-audit for vulnerability scanning
- Added YARD documentation generation with kramdown support
- Added SimpleCov coverage tracking with 90% threshold and branch coverage
- Added Dependabot configuration for automated dependency updates
- Added inclusive CONTRIBUTING.md with comprehensive contribution guidelines
- Added complete CHANGELOG.md tracking version history
- Added GitHub issue templates (bug reports, feature requests) and PR template
- Added gemspec metadata fields for better gem documentation and security
- Added rubygems_mfa_required for enhanced security
Changed
- Standardized Ruby version requirement to 3.3.0 across all configuration files
- Updated and organized development dependencies (removed deprecated codeclimate-test-reporter)
- Enhanced .gitignore with modern patterns and restored Gemfile.lock tracking
- Improved RuboCop configuration (increased MultipleMemoizedHelpers max to 12)
- Enhanced Rakefile with quality, documentation, and coverage tasks
Removed
- Removed outdated Travis CI and CircleCI configurations (replaced with GitHub Actions)
8.1.1 - 2024-12-20
Changed
- Tweaked gemspec summary
8.1.0 - 2024-12-20
Added
- Enhanced solmization support
Changed
- Code cleanup and improvements
- Improved spec coverage
- Refactored melodic intervals to separate pitch and note concerns
8.0.2 - 2024-12-19
Fixed
- RuboCop style fixes
Changed
- Improved RuboCop configuration
8.0.0 - 2024-12-19
Changed
- Major reorganization: moved specs into folders
- Organized models into modules for better structure
- BREAKING: Module structure changes may require updates to require statements
7.0.5 - 2024-01-20
Changed
- Upgraded to Ruby 3.3.0
- Improvements to Spanish translations of recorder
7.0.4 - 2024-01-15
Added
- Rudiment translations
- Instrument classification translations
- Interval translations
7.0.3 - 2024-01-10
Added
- Russian instrument translations using Cyrillic characters
- Spanish translations for instruments
Changed
- Uncapitalized languages in Italian and Spanish translations
- Spanish translation corrections and improvements
- Translation file cleanup
7.0.2 - 2023-12-15
Changed
- Various improvements and bug fixes
7.0.1 - 2023-12-10
Changed
- Minor improvements and bug fixes
7.0.0 - 2023-12-01
Changed
- Major version bump indicating significant changes
- BREAKING: Check upgrade guide for migration instructions
6.0.1 - 2023-11-15
Fixed
- Bug fixes and improvements
6.0.0 - 2023-11-01
Changed
- Major architectural improvements
- BREAKING: API changes may require code updates
5.0.0 - 2023-10-15
Changed
- Significant refactoring of core components
- BREAKING: Check documentation for new API
4.0.1 - 2023-09-20
Fixed
- Minor bug fixes
4.0.0 - 2023-09-15
Added
- Expanded instrument support
- Instrument data improvements
Changed
- Enhanced Instrument class functionality
3.0.1 - 2023-08-20
Fixed
- Minor improvements and fixes
3.0.0 - 2023-08-15
Changed
- Major version update with architectural improvements
- BREAKING: Significant API changes
2.0.0 - 2023-07-01
Changed
- Major refactoring of core functionality
- BREAKING: API redesign
1.0.0 - 2023-06-01
Added
- First stable release
- Complete music theory rudiments implementation
- Comprehensive scale and interval support
- Basic composition and voice handling
0.29.0 - 2023-05-15
Added
- Additional music theory features
- Improved documentation
0.28.0 - 2023-05-01
Changed
- Performance improvements
- Code organization enhancements
Earlier versions
For changes in versions prior to 0.28.0, please refer to the git history.