Releases: Panther114/Prismatic
Release list
Prismatic 2.1.13
Prismatic 2.1.13
Quiet listening
Much lighter on CPU and RAM while music plays.
- Frozen Now Playing backdrop during playback — the visualizer draws a single static frame when a track starts and only animates while paused; Studio exports keep the full animation
- No WebAudio graph while listening — the analyser/recording graph is only built when Studio export needs it, so the WebRTC audio thread stays off during normal playback
- Calmer UI clock — time sync rides the native ~4 Hz event instead of re-rendering the whole app 60×/s
- Waveform memory cache capped (LRU) so long listening sessions stop accumulating
CPU while playing drops from ~8% to ~1%; RAM no longer grows with the waveform cache.
Upgrade
Install 2.1.13. Library under Music/Prismatic is preserved.
Prismatic 2.1.12
Playlists, redesigned
The Playlists page is now a browsable collection instead of a dense list.
- Tile grid — each playlist is a big mosaic-artwork card (albums-style) with Play and Shuffle buttons that appear on the cover
- Open a playlist — click a card to see the songs inside; click any song to start playing it. View all playlists takes you back
- Sidebar quick play — every playlist in the left sidebar now has its own Play and Shuffle buttons
- Zip export, video export, edit, and delete moved into the playlist's song view
Upgrade
Install 2.1.12. Library under Music/Prismatic is preserved.
Prismatic 2.1.11
Playlist zip transfer (replaces cloud share)
No server required for playlist transfer — no Railway, no share codes.
- Archive (zip) icon on a playlist → packs its audio into
{playlist name}.zip(save dialog) - Import zip → pick a zip; audio is added to your library and a playlist is forged from the zip file name
Removed
- 4-digit cloud share / redeem code
- Share host uploads and related UI
Upgrade
Install 2.1.11. Library under Music/Prismatic is preserved.
Prismatic 2.1.12
Prismatic 2.1.12
Playlists, redesigned
The Playlists page is now a browsable collection instead of a dense list.
- Tile grid — each playlist is a big mosaic-artwork card (albums-style) with Play and Shuffle buttons that appear on the cover
- Open a playlist — click a card to see the songs inside; click any song to start playing it. View all playlists takes you back
- Sidebar quick play — every playlist in the left sidebar now has its own Play and Shuffle buttons
- Zip export, video export, edit, and delete moved into the playlist's song view
Upgrade
Install 2.1.12. Library under Music/Prismatic is preserved.
Prismatic 2.1.11
Playlist zip transfer (replaces cloud share)
No server required for playlist transfer — no Railway, no share codes.
- Archive (zip) icon on a playlist → packs its audio into
{playlist name}.zip(save dialog) - Import zip → pick a zip; audio is added to your library and a playlist is forged from the zip file name
Removed
- 4-digit cloud share / redeem code
- Share host uploads and related UI
Upgrade
Install 2.1.11. Library under Music/Prismatic is preserved.
Prismatic 2.1.11
Prismatic 2.1.11
Playlist zip transfer (replaces cloud share)
No server required for playlist transfer — no Railway, no share codes.
- Archive (zip) icon on a playlist → packs its audio into
{playlist name}.zip(save dialog) - Import zip → pick a zip; audio is added to your library and a playlist is forged from the zip file name
Removed
- 4-digit cloud share / redeem code
- Share host uploads and related UI
Upgrade
Install 2.1.11. Library under Music/Prismatic is preserved.
Prismatic 2.1.10
Prismatic 2.1.10
Fix: share upload vs Railway 5‑minute body limit
Uploading an entire playlist in one multipart POST could not finish on typical home upload speeds before Railway (and Node’s default) cut the body at 5 minutes — error:
request or response body error for url (…/api/playlist-share)
New upload protocol (per track)
POST /api/playlist-share/session— metadata onlyPUT /api/playlist-share/:code/tracks/:index— one audio file per requestPOST /api/playlist-share/:code/complete— finalize for redeem
Each track finishes well under the 5‑minute ceiling; large playlists no longer fail deterministically.
Speed + UI
- Streams each file from disk (
Part::file) - Progress bar + percent + debug line (track index, bytes, elapsed)
- Share still runs off the UI thread (no freeze)
- Node
requestTimeoutdisabled; heap raised to 192 MB on Railway
Upgrade
Install 2.1.10. Redeploy Railway so the new share API is live before sharing from the new desktop build.
Prismatic 2.1.9
Prismatic 2.1.9
Speed + freeze (share)
2.1.7 felt frozen and ~30s per track. Two separate problems:
| Issue | Cause | Fix |
|---|---|---|
| Freeze | Blocking Rust share command held the UI thread | 2.1.8+: background spawn_blocking + live progress events |
| Slow download | Wake Railway on every track + push each file through JS IPC twice | 2.1.9: wake once; stream download straight to library disk |
| Slow upload | Load every MP3 into RAM and clone for multipart | 2.1.9: stream with Part::file from disk |
Also in 2.1.8+
- Edit/create playlist dialog above the player (Save not covered)
- Faster CI release builds
Upgrade
Install 2.1.9. Do not stay on 2.1.7 for share.
Prismatic 2.1.8
Prismatic 2.1.8
Fixes
- Share no longer freezes the app — packing/upload runs on a background thread with live progress events (
share-progress). The share dialog keeps updating instead of going non-responsive during “Uploading…”. - Edit/create playlist Save bar — dialogs sit above the bottom player and leave bottom padding so Save / Cancel are never covered.
- Faster release builds — CI no longer double-runs tests + full
pnpm check; Rust uses thin LTO (was full LTO).
Share reliability
Desktop share still uses native Rust HTTP to Railway (not WebView fetch), with cold-start wake + retries.
Upgrade
Install 2.1.8. Library under Music/Prismatic is preserved.
Prismatic 2.1.7
Prismatic 2.1.7
Fix: Share stuck on “cold start — retry…”
Desktop was calling the Railway share API with WebView fetch, which keeps failing (Failed to fetch / endless cold-start retries) even when the server is healthy.
Desktop share now uses native HTTP (Rust reqwest):
- Wake, upload, manifest lookup, and download all run outside the WebView
- Tracks are read from disk in Rust and multipart-uploaded directly
- Retries still handle Railway Serverless cold boots
Upgrade
Install 2.1.7. Library data is preserved. Prefer this over 2.1.5/2.1.6 for share.
Prismatic 2.1.6
Prismatic 2.1.6
Fix: Share “Failed to fetch”
Desktop share was packing tracks with fetch(asset://…) which WebView CSP blocks — so share failed before reaching Railway.
- Read track bytes through a Rust command (
read_track_bytes) instead of webview fetch. - Allow
https://prismatic.up.railway.appand asset hosts in CSPconnect-src. - Clearer errors when the share server is unreachable / still cold-starting.
Share UI (2.1.5)
Immediate share dialog with progress, large code, and copy button.
Upgrade
Install 2.1.6 over any previous build; library data is preserved.
Prismatic 2.1.5
Prismatic 2.1.5
Share UI
- Share dialog opens immediately when you click Share on a playlist.
- Shows live progress: packing tracks, waking the share server, uploading.
- On success, shows the 4-digit code large and selectable, with Copy code.
- On failure, shows the error inside the same dialog (not only a corner toast).
Notes
- Cloud remains share-only at
https://prismatic.up.railway.app(enable Railway Serverless for idle RAM ≈ 0). - Auto-update from GitHub Releases is unchanged.
Upgrade
Installing 2.1.5 preserves Music/Prismatic library data.
Prismatic 2.1.4
Prismatic 2.1.4
Railway: share-only + cold start
- Website removed from Railway — the cloud service no longer serves the SPA. It is a playlist-share API only (
/api/health,/api/playlist-share/*). - Desktop is the product — library, playback, studio, and auto-update stay on the desktop app (GitHub Releases).
- Cold-start friendly client — share/import wakes
https://prismatic.up.railway.app(health ping + retries on 502/network) before upload/download so Railway Serverless can sleep when idle. - Disk-backed share (from 2.1.3) + single concurrent upload + 128 MB heap cap kept.
You should enable (one toggle, huge idle savings)
Railway → service → Settings → Serverless → Enable (App Sleeping).
Until that is on, the container stays warm and still uses background RAM.
Auto-update
Unchanged: signed updates from GitHub Releases. Install 2.1.4 once; later versions update in-app.
Upgrade
Library data under Music/Prismatic is preserved.