From ebeb6bf3601c999d0e68ee3ec4baf61b79591350 Mon Sep 17 00:00:00 2001 From: Brandon Julio Thenaro Date: Tue, 27 Oct 2026 11:45:32 +0700 Subject: [PATCH 1/2] fix(web): find scheduled tasks in Settings search Searching Settings for "scheduled", "scheduled task", or "scheduled tasks" returned no results even though Scheduled tasks was available in the sidebar. The page had no entry in the settings search catalog. Register the page in the existing catalog and give its heading the matching search target so choosing the result opens the page and focuses its heading. This restores discoverability on web and the desktop web surface without changing scheduled-task execution. The three query regressions fail before the fix. All 26 affected tests and vp run check:changed pass afterward, including format, lint, knip, and scoped typechecks. Isolated Chromium checks at 1280x800 and 390x844 confirm the search result appears and opens the page through pointer and keyboard selection. --- .../components/settings/ScheduledTasksSettings.tsx | 3 ++- .../src/components/settings/settingsSearch.test.ts | 11 +++++++++++ apps/web/src/components/settings/settingsSearch.ts | 5 +++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/apps/web/src/components/settings/ScheduledTasksSettings.tsx b/apps/web/src/components/settings/ScheduledTasksSettings.tsx index d440a4fde05f6..642d3b713def7 100644 --- a/apps/web/src/components/settings/ScheduledTasksSettings.tsx +++ b/apps/web/src/components/settings/ScheduledTasksSettings.tsx @@ -113,6 +113,7 @@ import { Switch } from "../ui/switch"; import { Textarea } from "../ui/textarea"; import { stackedThreadToast, toastManager } from "../ui/toast"; import { Tooltip, TooltipPopup, TooltipTrigger } from "../ui/tooltip"; +import { searchableSetting } from "./settingsSearch"; import { SettingsPageContainer, SettingsRow, @@ -407,7 +408,7 @@ export function ScheduledTasksSettings(target: { return ( { expect(searchSettings("long lines", ITEMS).map((item) => item.id)).toEqual(["word-wrap"]); }); + it.each(["scheduled", "scheduled task", "scheduled tasks"])( + "finds the Scheduled tasks page for %s", + (query) => { + expect(searchSettings(query)[0]).toMatchObject({ + id: "scheduled-tasks", + title: "Scheduled tasks", + to: "/settings/scheduled-tasks", + }); + }, + ); + it("matches normalized title substrings", () => { expect(searchSettings(" WORD WRAP ", ITEMS).map((item) => item.id)).toEqual(["word-wrap"]); expect(searchSettings("glass").map((item) => item.id)).toEqual(["setting-glass-opacity"]); diff --git a/apps/web/src/components/settings/settingsSearch.ts b/apps/web/src/components/settings/settingsSearch.ts index 1bd8f1bb08e19..f8125a1ba5f41 100644 --- a/apps/web/src/components/settings/settingsSearch.ts +++ b/apps/web/src/components/settings/settingsSearch.ts @@ -781,6 +781,11 @@ export const SETTINGS_SEARCH_ITEMS = [ searchTerms: ["refresh availability versions auth state models background probes seconds off"], providerSettingsOnly: true, }, + { + id: "scheduled-tasks", + title: "Scheduled tasks", + to: "/settings/scheduled-tasks", + }, { id: "agent-browser-access", title: "Agent browser access", From 080bb47368d013f2569b4589f15862cf15adb458 Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Fri, 13 Nov 2026 00:04:20 +0000 Subject: [PATCH 2/2] test(web): keep one Scheduled tasks search regression case Co-Authored-By: Claude Opus 5.5 --- .../components/settings/settingsSearch.test.ts | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/apps/web/src/components/settings/settingsSearch.test.ts b/apps/web/src/components/settings/settingsSearch.test.ts index 5c570d3869261..bac40332a2770 100644 --- a/apps/web/src/components/settings/settingsSearch.test.ts +++ b/apps/web/src/components/settings/settingsSearch.test.ts @@ -80,16 +80,12 @@ describe("searchSettings", () => { expect(searchSettings("1password").map((item) => item.to)).not.toContain("/settings/secrets"); }); - it.each(["scheduled", "scheduled task", "scheduled tasks"])( - "finds the Scheduled tasks page for %s", - (query) => { - expect(searchSettings(query)[0]).toMatchObject({ - id: "scheduled-tasks", - title: "Scheduled tasks", - to: "/settings/scheduled-tasks", - }); - }, - ); + it("finds the Scheduled tasks page", () => { + expect(searchSettings("scheduled tasks")[0]).toMatchObject({ + id: "scheduled-tasks", + to: "/settings/scheduled-tasks", + }); + }); it("matches normalized title substrings", () => { expect(searchSettings(" WORD WRAP ", ITEMS).map((item) => item.id)).toEqual(["word-wrap"]);