From c63637ff44550a3f32e9c97d04a07cc3478ca00d Mon Sep 17 00:00:00 2001 From: gsxdsm Date: Tue, 14 Jul 2026 23:28:41 -0700 Subject: [PATCH] fix(dashboard): make title auto-summarize settings searchable Index Project Models for summarize/auto-summarize phrases and control labels so Settings search surfaces autoSummarizeTitles. --- .../app/components/SettingsModal.tsx | 20 +++++++++++++++++++ .../__tests__/SettingsModal.search.test.ts | 20 +++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/packages/dashboard/app/components/SettingsModal.tsx b/packages/dashboard/app/components/SettingsModal.tsx index 4b12368eae..34f6cbdec6 100644 --- a/packages/dashboard/app/components/SettingsModal.tsx +++ b/packages/dashboard/app/components/SettingsModal.tsx @@ -487,6 +487,9 @@ export const SETTINGS_SECTIONS: SettingsSection[] = [ /** * FNXC:SettingsNavigation 2026-07-13-00:00: * Project Models owns the FN-7907 Direct-chat default settings. Its shared Settings search index must advertise chat-default terms and i18n labels so desktop nav, the mobile section picker, and filtered search all surface this section when operators search for Chat defaults. + + * FNXC:SettingsNavigation 2026-07-14-20:15: + * Title auto-summarization lives under Project Models but operators search for "summarize", "auto summarize", "title summarization", and related phrases that did not match the prior chat-only/summarization-model index. Advertise those terms and the control's i18n keys so Settings search finds this section. */ { id: "project-models", @@ -501,6 +504,18 @@ export const SETTINGS_SECTIONS: SettingsSection[] = [ "Executor", "Reviewer", "summarization model", + "summarize", + "summarize titles", + "auto summarize", + "auto-summarize", + "auto summarize titles", + "auto-summarize titles", + "autoSummarizeTitles", + "title summarization", + "title summarizer", + "AI title", + "AI merge commit summaries", + "merge commit summary", "chat", "new chat", "new chat behavior", @@ -521,6 +536,11 @@ export const SETTINGS_SECTIONS: SettingsSection[] = [ "settings.projectModels.chatDefaultKind", "settings.projectModels.chatDefaultModel", "settings.projectModels.chatDefaultAgent", + "settings.projectModels.aITitleAndGitCommitMessageSummarization", + "settings.projectModels.autoSummarizeLongDescriptionsAsTitles", + "settings.projectModels.whenEnabledTasksCreatedWithoutATitleBut", + "settings.projectModels.aIMergeCommitSummaries", + "settings.projectModels.whenEnabledMergeCommitMessagesIncludeAnAI", ], }, { id: "secrets", label: "Secrets", labelKey: "settings.nav.secrets", scope: "project", searchableText: ["secrets", "secret storage", "environment", "credentials"] }, diff --git a/packages/dashboard/app/components/__tests__/SettingsModal.search.test.ts b/packages/dashboard/app/components/__tests__/SettingsModal.search.test.ts index 702170c9ae..11111ef412 100644 --- a/packages/dashboard/app/components/__tests__/SettingsModal.search.test.ts +++ b/packages/dashboard/app/components/__tests__/SettingsModal.search.test.ts @@ -16,6 +16,11 @@ const searchTranslations: Record = { "settings.projectModels.chatDefaultKind": "Chat default target", "settings.projectModels.chatDefaultModel": "Chat Default Model", "settings.projectModels.chatDefaultAgent": "Chat Default Agent", + "settings.projectModels.aITitleAndGitCommitMessageSummarization": "AI Title and Git Commit Message Summarization", + "settings.projectModels.autoSummarizeLongDescriptionsAsTitles": "Auto-summarize long descriptions as titles", + "settings.projectModels.whenEnabledTasksCreatedWithoutATitleBut": "When enabled, tasks created without a title but with descriptions over 200 characters will automatically get an AI-generated title", + "settings.projectModels.aIMergeCommitSummaries": "AI merge commit summaries", + "settings.projectModels.whenEnabledMergeCommitMessagesIncludeAnAI": "When enabled, merge commit messages include an AI-generated subject plus body summary", }; function searchSettingsSectionIds(query: string): string[] { @@ -35,6 +40,21 @@ describe("SettingsModal Settings search index", () => { }, ); + /* + FNXC:SettingsNavigation 2026-07-14-20:15: + Operators search Settings for title auto-summarization with plain phrases ("summarize", "auto summarize titles") that previously missed Project Models. Assert the search index surfaces that section for those queries. + */ + it.each([ + "summarize", + "auto summarize", + "auto-summarize titles", + "title summarization", + "autoSummarizeTitles", + "AI title", + ])("surfaces Project Models for the title-summarization query %s", (query) => { + expect(searchSettingsSectionIds(query)).toContain("project-models"); + }); + it("does not surface Project Models for unrelated Remote Access terms", () => { expect(searchSettingsSectionIds("cloudflared")).not.toContain("project-models"); });