Multi-tenant, browser-based multi-track stem player for musicians. Successor to the original Sonic Artistes stem player — now a full platform where companies issue gated stems, click and backing tracks to their players under server-side IP access control. First tenant: Sonic Artistes.
Multi-tenant, browser-based multi-track stem player for musicians. Successor to the original Sonic Artistes stem player — now a full platform where companies issue gated stems, click and backing tracks to their players under server-side IP access control. First tenant: Sonic Artistes.
Build log
75 entries
Fixed
Song-id filters batched under PocketBase's 3,500-character filter cap
Shipped
Setlist totals over an hour now read in hours and minutes
Shipped
Inline audition from the theme, tag and setlist editors — with the resume kept inside the iOS gesture
Shipped
Cover-art thumbnails in the admin setlists table, and Tags moved below Setlists in the nav
Shipped
The split track type — Both/Click/Mix channel isolation, wired from schema to cockpit
Shipped
Playback classification — layerable vs standalone, with a scope selector that hard-blocks incompatible types
Shipped
SongMembershipEditor — rich song rows with cover, artist and parts, plus a searchable picker
Shipped
Song tags — a tenant-isolated collection, admin pages, bulk tag/untag, and filters on library and set view
Fixed
Deleting a media image finally works — the dialog's open-state was clearing the delete target
Shipped
Brand logomark and a light/dark theme toggle in the sidebar
Shipped
A platform_settings singleton — platform-admin only, seeded, with a settings page over it
Shipped
A platform-admin command centre — per-tenant dashboard, and 'Needs attention' that flags real anomalies
Shipped
Favicon and installable app icons, generated from the logomark
Shipped
A split-screen contextual login and a /for-companies page — stating the stereo-output reality up front
Fixed
Relative cover URLs from the player payload now resolve to absolute
Shipped
Gated setlist downloads — a tenant switch, a per-user flag, and the zip built in the browser
Shipped
Tenants upload their own logo, and it renders in the sidebar brand
Shipped
Tenant admins can edit their own company settings, through a hook that only lets them touch their own
Shipped
Songs get their own cover art, resolved per song in the player payload
Refactored
Theme covers move onto the media library, with a same-tenant guard and a dry-run re-point script
Shipped
A media library — one home for cover art, with a usage registry and a delete guard
Shipped
Cleaner setlist list-view organisation, and the timeline moves to the dock's top edge
Fixed
A song with no in-scope tracks is never rendered, and never played
Fixed
Sidebar count chips warm on load instead of arriving late, with concurrent fetches deduped
Shipped
Setlist song-counts now reflect what each musician can actually reach
Shipped
Sidebars group into sentence-case sections per role, and dashboard stat tiles navigate
Shipped
Per-song notes, surfaced read-only across the setlist view, the cockpit and the library
Shipped
Per-tenant song libraries — single-select, server-enforced, with a General seed and reassign-on-delete
Shipped
The cockpit running-order rail scrolls independently, with a premium fade on both axes
Shipped
CSV export of the current filtered set, on every list table, with a zero-dependency util
Shipped
Bulk actions across the admin tables — select rows, publish, unpublish, type-to-confirm delete
Shipped
FilterBar — filter chips as peers, plus a consolidated mobile Filters sheet with a real Reset
Shipped
Faceted filters on songs — status, key, BPM and theme, persisted and server-enforced
Shipped
Tables remember your last view, default to A–Z, and offer sort presets at every breakpoint
Shipped
Loading skeletons for the cockpit mixer strips on song switch
Fixed
Admin Preview honours track_scope, so QA hears what the musician hears
Fixed
iOS Web Audio unlocked — sound finally comes out of an iPhone
Shipped
Coolify deploy config, a build-and-typecheck gate on PRs, and an /api/health liveness endpoint
Shipped
First-run orientation, and a player that only ever offers songs it can actually play
Shipped
Invite links stand in for the missing SMTP — generate, copy, resend, accept
Shipped
A self-service account page — editable profile, and a password change that reports field-level errors
Shipped
Audition a single stem straight from the song editor's Stems panel