- Uppercase folder and file names when syncing to TP-7 (#64)
- Extract cue-point pull into its own
pullcommand (#63) - Add per-device
mp3_bitrateconfig and copy MP3 files as-is (#62) - Sync to TP-7 over MTP via libmtp instead of fieldkit container path (#61)
- Sort audio library files alphabetically (case-insensitive) (#60)
- Rename
Wavesync::SettoWavesync::Setlist(#59) - Log sync and analyze command invocations in the log (#58)
- Strip curly apostrophe, colon, and question mark for Octatrack (#57)
- Verify target file exists after sync writes (#56)
- Log total run time at end of analyze and sync commands (#55)
- Replace taglib-ruby with ffmpeg for metadata operations (#54)
- Encode mp3 transcodes at 192 kbps and display source bitrate (#53)
- Replace extended characters with ASCII equivalents in Playdate metadata tags (#51)
- Add Playdate (Kicooya) as a supported device (#50)
- Fix re-conversion on FAT/exFAT caused by unicode path mismatch (#49)
- Strip double-quote characters from filenames when syncing to FAT devices (#47)
- Add error logging to all rescue sites (#45)
- Pad to power-of-2 bar multiples to keep slice counts valid (#44)
- Add
unsupported_charactersto devices and strip them from target paths (#42) - Replace streamio-ffmpeg with a custom FFMPEG wrapper class (#41)
- Add integration tests for device sync (#40)
- Write BPM and cue data in-place to save disk space on source device (#39)
- Fix crash when writing BPM/cue data to MTP devices (#37, #38)
- Flush filesystem buffers after sync completion (#34)
- Update audio test fixtures with rake generation task (#33)
- Replace bpm-tools with Essentia + Percival BPM detection (#32)
- Replace instance_variable_get with public accessors in set editor tests (#31)
- Enhance set editor with duration display, playback bar, and inline folder layout (#30)
- Add support for TP-7 cue points (#29)
- Update Rubocop to 1.85 (#28)
- Run rubocop, steep check, and tests with rake (#27)
- Add Ruby installation step to README (#26)
- Add typechecking with rbs-inline and Steep (#25)
- Display BPM and pitch shift semitones when editing sets (#24)
- Update README with improved docs (#23)
- Add
rake release:publishtask (#21) - Refactor CLI commands into separate classes with metadata (#20)
- Add
wavesync helpcommand (#19) - Interactive device selection prompt when multiple devices are configured (#18)
- Add CLAUDE.md with project instructions (#17)
- Add test GitHub Actions CI workflow (#16)
- Add RuboCop GitHub Actions CI workflow (#15)
- Confirm writing BPM data to library files (#14)
- Add documentation URI to gemspec (#13)
- Error handling for invalid or missing YAML config (#11)
- Bar-aligned silence padding for Octatrack tracks on sync (#10)
- Introduce AudioFormat value object to reduce parameter counts (#8)
- Skip conversion when a converted file already exists in the source library (#6)
- Audio sets: create, edit, and list named track collections with an interactive editor (#5)
- Add audio fixtures and tests for Audio and AcidChunk (#4)
- Analyze library files for BPM and write results to file metadata (#3)
- Sync music library to hardware devices (TP-7, Octatrack) with automatic format conversion (#1)