From 8bd4d2956334e4fd11202c5e7522f1addbec0d20 Mon Sep 17 00:00:00 2001 From: hi-ogawa-agent <266689927+hi-ogawa-agent@users.noreply.github.com> Date: Mon, 20 Jul 2026 14:33:13 +0900 Subject: [PATCH] feat: make stem output the primary app choice Co-authored-by: OpenCode --- packages/app/e2e/model-files.spec.ts | 1 + packages/app/e2e/preferences.spec.ts | 14 +- packages/app/src/app.tsx | 341 +++++++++++++++++---------- packages/app/src/lib/preferences.ts | 2 +- 4 files changed, 234 insertions(+), 124 deletions(-) diff --git a/packages/app/e2e/model-files.spec.ts b/packages/app/e2e/model-files.spec.ts index f050570..b99db21 100644 --- a/packages/app/e2e/model-files.spec.ts +++ b/packages/app/e2e/model-files.spec.ts @@ -31,6 +31,7 @@ test("coordinates individual model file slots", async ({ page }) => { page.getByTestId("model-file-slot").getByText("Ready"), ).toHaveCount(2); + await page.getByText("Advanced settings", { exact: true }).click(); await page.locator("#model").selectOption("htdemucs_ft"); await expect(page.getByTestId("model-file-slot")).toHaveCount(5); await expect(page.getByLabel("Select dft.bin").locator("..")).toContainText( diff --git a/packages/app/e2e/preferences.spec.ts b/packages/app/e2e/preferences.spec.ts index 7442b5d..e6537d6 100644 --- a/packages/app/e2e/preferences.spec.ts +++ b/packages/app/e2e/preferences.spec.ts @@ -15,7 +15,9 @@ test("restores and updates configuration preferences", async ({ page }) => { await page.goto("/"); await expect(page.locator("#model")).toHaveValue("htdemucs_ft"); - await expect(page.locator("#twoStems")).toHaveValue("bass"); + await expect( + page.getByRole("radio", { name: /Bass \+ backing/ }), + ).toBeChecked(); await expect(page.locator("#method")).toHaveValue("minus"); await expect(page.locator("#method")).toBeEnabled(); await expect(page.locator("#outputSummary")).toContainText( @@ -24,7 +26,7 @@ test("restores and updates configuration preferences", async ({ page }) => { await expect(page.locator("#shifts")).toHaveValue("3"); await expect(page.getByLabel("Select htdemucs_ft_bass.onnx")).toBeAttached(); - await page.locator("#twoStems").selectOption(""); + await page.getByRole("radio", { name: /Four stems/ }).check(); await expect(page.locator("#method")).toBeDisabled(); await expect(page.locator("#outputSummary")).toContainText( "Creates vocals.wav, drums.wav, bass.wav, and other.wav.", @@ -35,3 +37,11 @@ test("restores and updates configuration preferences", async ({ page }) => { ) .toContain('"twoStems":null'); }); + +test("uses the default output configuration", async ({ page }) => { + await page.goto("/"); + + await expect(page.getByRole("radio", { name: /Four stems/ })).toBeChecked(); + await expect(page.locator("#method")).toHaveValue("minus"); + await expect(page.locator("#method")).toBeDisabled(); +}); diff --git a/packages/app/src/app.tsx b/packages/app/src/app.tsx index fc3a5bc..4355253 100644 --- a/packages/app/src/app.tsx +++ b/packages/app/src/app.tsx @@ -21,7 +21,11 @@ import { import { encodeWavF32 } from "./lib/audio/wav"; import { separateInWorker } from "./lib/audio/worker-client"; import { benchmark } from "./lib/benchmark"; -import { loadPreferences, savePreferences } from "./lib/preferences"; +import { + loadPreferences, + savePreferences, + type Preferences, +} from "./lib/preferences"; import { updateRunProgress, type RunProgress } from "./lib/progress/model"; import { RunProgressPanel } from "./lib/progress/panel"; @@ -253,127 +257,18 @@ export function App() {