You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+15-2Lines changed: 15 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -40,11 +40,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
40
40
41
41
-**OpenSubsonic fields on `AlbumID3`** — `explicitStatus: String?` and `version: String?` added to `AlbumID3` and its public init (both default to `nil`).
42
42
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.
-**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.
44
56
45
57
### Notes
46
58
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.
48
60
49
61
---
50
62
@@ -195,6 +207,7 @@ Both fixes are technically breaking for consumers who accessed `requestURL` or p
195
207
-`ResilienceTests` — white-box tests for retry math and error classification
0 commit comments