Skip to content

Commit 7eedaa4

Browse files
committed
docs: complete CHANGELOG entries and version link for 0.7.0
1 parent 4d03062 commit 7eedaa4

1 file changed

Lines changed: 15 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
4040

4141
- **OpenSubsonic fields on `AlbumID3`**`explicitStatus: String?` and `version: String?` added to `AlbumID3` and its public init (both default to `nil`).
4242

43-
- **Test count** — test suite grows from 296 to ~370 tests across new suites covering capabilities caching, `KnownExtension`, `getLyricsBySongId` decoding (synced, unsynced, multi-language, empty), and all new public inits.
43+
- **`Equatable` and `Hashable` on lyrics and capability types**`LyricsList`, `StructuredLyrics`, `Line`, and `OpenSubsonicExtension` now conform to `Equatable` and `Hashable`, enabling use in `Set` and as `Dictionary` keys.
44+
45+
- **`Equatable` and `Hashable` on all `SharedModels` types**`ItemGenre`, `ReplayGain`, `ItemDate`, `DiscTitle`, `RecordLabel`, `ContributorArtist`, and `Contributor` all gain full structural equality and hashability.
46+
47+
- **`LyricsLine` typealias**`public typealias LyricsLine = Line` added for call-site clarity.
48+
49+
- **Test count** — test suite grows from 296 to ~420 tests across new suites covering capabilities caching, `KnownExtension`, `getLyricsBySongId` decoding (synced, unsynced, multi-language, empty, defaults, `"xxx"` language), structural equality on all new types, and all new public inits.
50+
51+
### Changed
52+
53+
- **`StructuredLyrics.offset`** is now `Int` (was `Int?`). Absent values from the server default to `0`. Callers previously checking `offset == nil` should treat `0` as the "not set" sentinel.
54+
55+
- **`StructuredLyrics.lang`** is now `String?` (was `String`). Returns `nil` when the server omits the field. The values `"und"` and `"xxx"` are preserved as-is.
4456

4557
### Notes
4658

47-
All changes are additive; no breaking changes from v0.6.x. The new `loadCapabilities()` / `refreshCapabilities()` methods complement the existing `fetchCapabilities()` + `serverCapabilities` property pair — choose whichever pattern suits your architecture.
59+
All changes are additive except the two `StructuredLyrics` field type changes (`offset`, `lang`). These affect code that pattern-matches on `nil` for those fields. The `loadCapabilities()` / `refreshCapabilities()` methods complement the existing `fetchCapabilities()` + `serverCapabilities` property pair — choose whichever pattern suits your architecture.
4860

4961
---
5062

@@ -195,6 +207,7 @@ Both fixes are technically breaking for consumers who accessed `requestURL` or p
195207
- `ResilienceTests` — white-box tests for retry math and error classification
196208
- MIT licence, `CONTRIBUTING.md`, `SECURITY.md`
197209

210+
[0.7.0]: https://github.com/MathieuDubart/swiftsonic/compare/v0.6.1...v0.7.0
198211
[0.6.1]: https://github.com/MathieuDubart/swiftsonic/compare/v0.6.0...v0.6.1
199212
[0.6.0]: https://github.com/MathieuDubart/swiftsonic/compare/v0.5.0...v0.6.0
200213
[0.5.0]: https://github.com/MathieuDubart/swiftsonic/compare/v0.4.1...v0.5.0

0 commit comments

Comments
 (0)