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
+9-3Lines changed: 9 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,21 +9,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
10
10
### Added
11
11
12
-
-**OpenSubsonic / Subsonic API**: Native client support for Symfonium, DSub, Ultrasonic, Finamp, and any other Subsonic-compatible app
12
+
-**OpenSubsonic / Subsonic API**: Native client support for Amperfy, Symfonium, DSub, Ultrasonic, Finamp, and any other Subsonic-compatible app
13
13
- Full Subsonic REST API v1.16.1 compatibility, with OpenSubsonic extensions declared
14
+
-**MD5 token auth** — standard Subsonic auth now supported; enter your Kima API token as the password in your client app; the server verifies `md5(token + salt)` against stored API keys, avoiding any need to store plaintext login passwords
14
15
-**OpenSubsonic `apiKey` auth** — generate per-client tokens in Settings > Native Apps; tokens can be named and revoked individually
-**Enrichment-aware genres** — genre fields on albums, songs, and search results are sourced from Last.fm-enriched artist tags rather than static file tags; `getGenres` aggregates across the enriched artist catalogue
17
18
-**Enrichment-aware biographies** — `getArtistInfo2` returns the user-edited summary when present, otherwise the Last.fm biography
18
19
-**HTTP 206 range support** on `stream.view` for seek-capable clients and Firefox/Safari
19
20
- Scrobbles recorded as `SUBSONIC` listen source
20
21
- DISCOVER-location albums are excluded from all library views
21
-
- MD5 token auth intentionally rejected (error 41) — OpenSubsonic `apiKey` is the preferred auth method
22
-
-**Named API tokens** — Settings > Native Apps token generator now accepts a client name (e.g., "Symfonium", "DSub"); previously all tokens were named "Subsonic"
22
+
-**Named API tokens** — Settings > Native Apps token generator now accepts a client name (e.g., "Amperfy", "Symfonium"); previously all tokens were named "Subsonic"
23
+
-**Public server URL setting** — admins can pin a persistent server URL in Settings > Storage; the Native Apps panel reads this URL and falls back to the browser origin when unset
23
24
24
25
### Fixed
25
26
27
+
-**Subsonic `contentType` and `suffix` wrong for FLAC/MP3**: The library scanner stores codec names (`FLAC`, `MPEG 1 Layer 3`) rather than MIME types. Added `normalizeMime()` to translate codec names to proper MIME types before surfacing them to clients — fixes clients that refused to play tracks due to unrecognised content types
28
+
-**`createPlaylist` returned empty response**: Per OpenSubsonic spec (since 1.14.0), `createPlaylist` must return the full playlist object. Now returns the same shape as `getPlaylist`
29
+
-**DISCOVER albums leaking into search and random**: `getRandomSongs` raw SQL and the `search3`/`search2` shared service had no location filter, allowing DISCOVER-only albums to appear in results. Both are now filtered to `LIBRARY` location only
30
+
-**PWA icons**: Replaced placeholder icons with the Kima brand — amber diagonal gradient with radial bloom; solid black background for maskable variants; `apple-touch-icon` added; MediaSession fallback artwork wired up
26
31
-**Frontend lint errors** (pre-existing): `let sectionIndex` changed to `const` in three pages; `setPreviewLoadState` moved inside the async function to avoid calling setState synchronously in a `useEffect`
32
+
-**Vibe orphaned-completed tracks**: Tracks where `vibeAnalysisStatus = 'completed'` but no embedding row exists (left over from the `reduce_embedding_dimension` migration) are now detected and reset each enrichment cycle so they re-enter the CLAP queue
Copy file name to clipboardExpand all lines: README.md
+5-4Lines changed: 5 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -147,6 +147,7 @@ Import playlists from Spotify and Deezer, or browse and discover new music direc
147
147
### Native Apps
148
148
149
149
- **OpenSubsonic API** - Use any Subsonic-compatible client (Symfonium, DSub, Ultrasonic, Finamp, etc.) to stream your Kima library
150
+
- **Standard Subsonic auth** - MD5 token auth supported; enter your API token as the password — works with Amperfy, Symfonium, DSub, and any standard Subsonic client
150
151
- **Per-client tokens** - Generate named API tokens in Settings > Native Apps; revoke them individually when a device is lost or replaced
151
152
- **Enrichment-aware** - Genres and artist biographies exposed to clients come from Last.fm enrichment, not just file tags
152
153
@@ -654,22 +655,22 @@ You can also configure Soulseek as a download source for playlist imports. In Se
654
655
655
656
Kima implements the [OpenSubsonic](https://opensubsonic.netlify.app/) REST API, making it compatible with any Subsonic client.
2. Enter a client name (e.g. "Symfonium on Pixel 9") and click **Generate Token**
663
+
2. Enter a client name (e.g. "Amperfy on iPhone") and click **Generate Token**
663
664
3. Copy and save the token — it is only shown once
664
665
4. In your client app, configure:
665
666
- **Server URL** — your Kima server address (e.g. `http://192.168.1.10:3030`)
666
667
- **Username** — your Kima username
667
-
- **Password / API key** — the token you just generated
668
+
- **Password** — the token you just generated
668
669
669
670
**Notes:**
670
671
672
+
- Standard MD5 token auth is supported — clients that hash their password automatically will work correctly when you enter an API token as the password
671
673
- Each client should have its own token so you can revoke access per device
672
-
- MD5 token authentication is intentionally rejected; use the plaintext `p=` or OpenSubsonic `apiKey` parameter
673
674
- Genres and biographies surfaced to clients come from Last.fm enrichment, not just file tags
674
675
- DISCOVER-location albums are excluded from all library views
0 commit comments