All notable changes to this project will be documented in this file.
- Plain Hotcues being rejected due to cuetype mismatch
- pdb: Change padding logic for track rows
- pdb: Pass parsing stage of track_page test
- pdb: Apply review feedback for 3d5d57c
- pdb: Validate row count in RowGroup to avoid silent overflow
- pdb: Allow unused method to pass CI
- pdb: Pass track_page test by not reversing in present_rows
- pdb: Re-add comments removed during merge
- pdb: Pass 5 more test_pdb_num_rows* tests
- Doctest broken by previous string refactor commit
- pdb: All tests pass + clean up comments
- pdb: Apply review feedback for 78ee51c
- pdb: Accept review feedback for 969d507
genres_pagetest offset padding and rowgroup ordering- pdb: WIP pass artists_page test
- Add
ofs_namefield to Album row and correctly (de-)serialize it - pdb: Set fixed 4-byte alignment on labels
- pdb: Set 4-byte alignment for Artwork rows
- pdb: Increase struct fields visibility in ext.rs for use in tests
- pdb: Add padding field to tag struct
- pdb: Set fixed 4-byte alignment for tag rows
- pdb: Add mapping for optional NonZero in ParentId struct
- pdb: Explicit pattern matching to avoid extra
clone() - pdb: Custom
BinWriteforIndexPageContentto comply with binary - pdb: Address feedback by @Swiftb0y
- pdb: Only allow PageIndex values less than 0x03FF_FFFF
- Fix various compiler or clippy warnings with Rust 1.90
- device: Load_settings, don't fail if settings files are missing
- Build status badge/shield
- pdb: Add doc comments for struct fields in ext.rs
- Link to upstream Tag row docs in docs
- pdb: Enhance documentation for some index page fields
- Fix comment for Track enum variant
- Use "clean" buffer in
track_pagetest & refactorDeviceSQLStringconstruction - Add
artist_page_longtest to cover the 0x64 artist subtype - Get
labels_pagepassing - Add
VarOffsetTailas an abstraction for trailing var-len data - Replace
VarOffsetTailwithOffsetArrayand add ExplicitPadding - Parse rekordbox exportExt.pdb format
- Convert dump-ext-pdb into flag instead with some guessing magic
- pdb: Initial index page implementation
- pdb: Add methods to create new and empty
IndexEntryinstances - pdb: Parse MenuItem rows (table 17)
- Also print playlist content (artist - title) for list-playlists
- device: Add preliminary high-level API for reading settings
- cli: Add command to list settings from device export
- device: Add methods to read playlist entries and tracks
- cli: Add command to export playlists as M3U
- pdb: Add History row type
- xml: Publicise xml structs
- xml: Publicise members
- Simplify
PageandRowGroupparsing - Fix test
assert_eq!(result, expected)parameter order - Move
Row::Artist-specific padding toArtiststruct - Remove length
assert_eqfrom roundtrip tests - Use
VarOffsetTailfor Artist rows - Use
VarOffsetTailforAlbumstruct - Move
VarOffsetTailto its own module - Add separate row
Subtypetype - Remodel OffsetArray so it can be used with (almost) any type
- Use OffsetArray for Track rows
- Cleanup
pdb/offset_array.rsa little by reducing duplication - OffsetArray->OffsetArrayContainer, OffsetArrayImpl->OffsetArray
- Outline page test buffers
- pdb: Prepare for index page implementation
- pdb: Address feedback from @Swiftb0y
- pdb: Address NITs from @Swiftb0y
- pdb: Rename get_* methods to into_* to align with
std - pdb:
#[br(temp, assert/#[bw(calc->#[brw(magicin structs - pdb: Remove unused methods from
Pageimpl - pdb: Address NITs from @Holzhaus and make clippy happy
- pdb: Remove unneeded explicit padding from tag rows
- Optimize impl fmt::Display for DeviceSQLString
- pdb: Rename MenuItem to Menu and add MenuVisibility enum
- device: Add support for PDB and move code from
main - device: Expose Pdb in DeviceExport and remove wrappers
- device: Return track references instead of clones
- cli: Use Pdb abstraction for playlist listing
- Implement Display for Settings to reduce some duplication
- pdb: Add genres_page test
- pdb: Add artists_page test
- pdb: Move tests to sepparate file
- pdb: Fix mistake in artists_page test
- pdb: Corrections after moving tests
- pdb: WIP added albums_page test
- pdb: Add labels_page test
- pdb: Add keys_page test
- pdb: Add colors_page test and fix colors padding to pass test
- pdb: Add playlist entry row and page tests
- pdb: Add playlist tree row and page tests
- pdb: Add artwork page test
- pdb: Add tag and track_tag page tests
- pdb: Add history playlists and entries page tests
- pdb: Add
index_pageunit test - pdb: Add tests for Menu row and page
- pdb: Add tests for History row
- Always read all 16 rows potential from each row group
- changelog: Fix typo
- xml: Add support for Rekordbox XML format
- Avoid temporary Vec allocation in assert_pdb_row_count
- Use div_ceil instead of handrolled checked arithmatic
- Improve
BinReadimpl ofRowGroup
- Add regression tests to ensure all rows are read
- pdb: Skip reading rows of invalid pages
- pdb: Adhere to rows alignment to type alignment when writing
- setting: Add method to construct default setting objects
- setting: Derive
CloneandCopytraits for all setting values - setting: Derive
Clonefor all setting data structs - setting: Add
Displayimplementation for setting values - pdb: Add Columns table
- pdb: Mark table rows as serializable
- pdb: Implement support for serialization of table pages
- cli: Return
Resultfrom main method instead of unwrapping
- util: Add helper function for passing args to roundtrip tests
- util: Add additional length checks to roundtrip tests
- util: Print useful diffs when
assert_eq!fails on large blobs
- Switch from
nomtobinrwto pave the way for serialization support in the future - Improve documentation and add contribution guide
- Add new command-line interface, which now also offers a way list the playlist tree
- Add support for reading and serializing
*SETTING.DATfiles - Add more tests
- Various small bug fixes and improvements (e.g., using 8-bit color indices consistently)
Initial release.