fix: previews follow the app volume; volume bar fill always accent
The preview backend never received a volume — clips played at the crate default (0.7) regardless of the slider, even muted. The session now sets the preview volume from the app store (mute → 0) before the first load and mirrors it live while the modal is open; the debug overlay's PREVIEW row exposes the backend's resting volume as proof. The player-bar volume (and fallback seek) fill is now always the accent color — matching the waveform scrubber's played region — stepping up to the hover shade on hover instead of white-until-hover. Also syncs package-lock to the soulstream name + alpha version.
This commit is contained in:
1 parent
793f78370e
commit
691fdcdc9a
10 files changed
+63
-10
No files matched your search
@@ -124,6 +124,7 @@
|
||||
<b>PREVIEW</b>
|
||||
{previewUi.snapshot?.phase ?? "—"} · gen {previewUi.snapshot?.requestGeneration ?? "—"} ·
|
||||
idx {previewUi.snapshot?.activeManifestIndex ?? "—"}
|
||||
{#if stats.previewVolume != null}· vol {stats.previewVolume.toFixed(2)}{/if}
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
@@ -706,15 +706,17 @@
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
/* Always the accent — matching the waveform scrubber's played region
|
||||
(user decision 2026-07-23; the old white-until-hover read as off). */
|
||||
.fill {
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: var(--text-primary);
|
||||
background: var(--accent);
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.track:hover .fill {
|
||||
background: var(--accent);
|
||||
background: var(--accent-hover);
|
||||
}
|
||||
|
||||
/* waveform scrubber */
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
previewCommands,
|
||||
closePreview,
|
||||
} from "../lib/preview/previewSession.svelte.js";
|
||||
import { player } from "../lib/state.svelte.js";
|
||||
import {
|
||||
playableManifestIndices,
|
||||
playableCursor,
|
||||
@@ -25,6 +26,14 @@
|
||||
} from "../lib/preview/session.js";
|
||||
import { accentFromImage } from "../lib/color.js";
|
||||
|
||||
// Preview audio follows the APP volume — mute means silent previews
|
||||
// too. Mirrored live while the modal is open (the session also sets it
|
||||
// once at open, before the first load).
|
||||
$effect(() => {
|
||||
if (!previewUi.open) return;
|
||||
previewCommands.setVolume(player.muted ? 0 : player.volume);
|
||||
});
|
||||
|
||||
const st = $derived(previewUi.snapshot);
|
||||
const manifest = $derived(st?.manifest ?? null);
|
||||
const items = $derived(manifest?.items ?? []);
|
||||
|
||||
Reference in new issue
Block a user