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:
KeelrLeek committed 2026-07-23 16:25:42 -05:00
1 parent 793f78370e
commit 691fdcdc9a
10 files changed
+63 -10

No files matched your search

+14
View File
@@ -72,6 +72,9 @@ function makeTransport() {
async seek(ms) {
log.push(["seek", ms]);
},
async setVolume(v) {
log.push(["setVolume", v]);
},
async stop() {
ctx = null;
log.push(["stop"]);
@@ -259,6 +262,17 @@ test("auto-play: the LAST playable track never advances early", async () => {
assert.equal(service.getState().phase, PHASE.ENDED);
});
test("setVolume forwards the app volume to the transport", async () => {
const { service, transport, manifest } = makeService();
await service.open({ sessionId: SID, manifest });
service.setVolume(0.35);
service.setVolume(0); // app mute → silent previews
assert.deepEqual(
transport.log.filter((e) => e[0] === "setVolume"),
[["setVolume", 0.35], ["setVolume", 0]]
);
});
// ------------------------------------------------------- resume memory ----
test("resume: stepping back to a track picks up where it left off", async () => {