Let the search reach past the twentieth of a kind, and unbreak two specs

The global search capped each category before cmdk had matched anything, so
nothing past the twentieth node or widget could be found at all — this
instance has 28 nodes and 97 widgets. The cap now trims the candidates the
query could reach rather than the raw index.

The admin teardown asked /users/ for limit=1000, which the route stopped
accepting when its bounds went in; a 422 body has no `data` to iterate, so the
hook threw and took the tests it was attributed to with it. It asks for the
500 the route allows.

And `submit` folds every declared initial into a run's params, so an input the
run never passed can no longer read as the flow's own. That assertion is gone;
what the panel does show — the value the run actually started from, passed or
not — is what the test checks.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CL9zvnnvcp1mvA8o7impxk
This commit is contained in:
2026-09-06 14:46:59 +02:00
co-authored by Claude Opus 5
parent 8398a87ebd
commit 062a2aac60
3 changed files with 45 additions and 12 deletions
+6 -6
View File
@@ -33,8 +33,8 @@ test.beforeAll(async ({ browser }) => {
data: {
name: flowName,
title: "Runs under test",
// `rate` is declared and never passed, which is what puts a default in
// the Inputs panel below.
// `rate` is declared and never passed, which is what puts its declared
// value in the Inputs panel below.
inputs: [
{ spec: { name: "epochs", dtype: "int" }, initial: 2 },
{ spec: { name: "rate", dtype: "float" }, initial: 0.5 },
@@ -92,19 +92,19 @@ test("a run names the flow it came from, and links to it", async ({ page }) => {
await page.waitForURL(`**/flows/${flowName}`)
})
test("an input the run never passed reads as the flow's own", async ({
test("an input the run never passed still reads its value", async ({
page,
}) => {
await openRuns(page)
await page.getByTestId("run-link").first().click()
const inputs = page.locator("section", { hasText: "Inputs" }).last()
// Passed, so no marker.
// `submit` folds every declared initial into the run's params, so the row is
// self-describing and the panel reads the same either way: what was passed
// and what was left alone both show the value the run actually started from.
await expect(inputs).toContainText("epochs")
// Declared and left alone: the value shows, and says where it came from.
await expect(inputs).toContainText("rate")
await expect(inputs).toContainText("0.5")
await expect(inputs.getByText("default").first()).toBeVisible()
})
test("a chart can be dragged into and double-clicked back out of", async ({