Stemify iOS 1.1 and WebUI updates, repo restructure into desktop/ios/server/web

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
cdnutterandClaude Sonnet 5.5 committed 2026-10-24 17:08:51 -07:00
1 parent 894dd5a695
commit df5d847169
157 files changed
+3935 -742

No files matched your search

+12 -2
View File
@@ -15,7 +15,15 @@ export const S = Object.assign({
keepMix: true, // carry the mix to the next track when it has no saved mix
karaoke: false, karaokeMode: "off", softDb: -12,
sorts: {}, // screen -> sort value
stemsOnly: false,
stemFilter: "", // "" | "stems" (only songs with stems) | "nostems"
precache: 5, // Cache Ahead: songs fetched ahead of the one playing (0-50)
presetOrder: [], // preset ids in mixer order: "b:Name" built-in, "c:Name" custom
hiddenPresets: [], // deleted built-ins (deleted custom presets are just gone)
customPresets: [], // [{name, mix}]
lockedPreset: "", // every song starts with this preset
acapella: false, // spell "A Cappella" as "Acapella"
bar: { speed: true, mixer: true, lyrics: true, queue: true }, // player bar buttons
stations: [], // web radio: [{id, name, url}]
theme: "amber", accent: "", css: "",
}, load(KEY) || {});
@@ -28,6 +36,7 @@ if (S.plex) {
if (!p.env) S.servers.push({ id: "m" + Date.now().toString(36), url: p.url, token: p.token, name: p.name || p.url, sections: S.section ? [{ key: String(S.section), title: "Music", on: true }] : [] });
delete S.plex; delete S.section;
}
if ("stemsOnly" in S) { if (S.stemsOnly) S.stemFilter = "stems"; delete S.stemsOnly; }
if (S.albumSort) { S.sorts.albums = S.albumSort; delete S.albumSort; }
let timer;
@@ -61,7 +70,8 @@ export function addToPlaylist(p, tracks, mix) {
}
// ---- offline downloads -----------------------------------------------------------------
// One record per track: {id, track, entry, fmt, size, peaks, lyrics, blobs: {name: Blob}}.
// One record per track: {id, track, entry, fmt, size, peaks, lyrics, blobs: {name: Blob}, group}.
// group is the album or playlist it was downloaded with: {title, href}.
let dbp;
function db() {