diff --git a/src/renderer/src/components/settings/AppearancePane.tsx b/src/renderer/src/components/settings/AppearancePane.tsx index 3c460b32694..ae8cb643f71 100644 --- a/src/renderer/src/components/settings/AppearancePane.tsx +++ b/src/renderer/src/components/settings/AppearancePane.tsx @@ -147,7 +147,10 @@ export function AppearancePane({ ] const terminalSearchEntries = [ { title: terminalTitle }, - ...getTerminalAppearanceSearchEntries({ showWarpImport: !isWebClient }) + ...getTerminalAppearanceSearchEntries({ + showWarpImport: !isWebClient, + showGhosttyImport: !isWebClient + }) ] const windowSearchEntries = [ { diff --git a/src/renderer/src/components/settings/TerminalAppearanceSection.ghostty.test.ts b/src/renderer/src/components/settings/TerminalAppearanceSection.ghostty.test.ts index d5f2c28f73a..59badea2303 100644 --- a/src/renderer/src/components/settings/TerminalAppearanceSection.ghostty.test.ts +++ b/src/renderer/src/components/settings/TerminalAppearanceSection.ghostty.test.ts @@ -473,7 +473,9 @@ describe('TerminalAppearanceSection ghostty import wiring', () => { }) expect(findComponentByTypeName(element, 'TerminalFontSizeSetting')).toBeNull() - expect(findButtons(element).some((button) => button.text === 'Import from Ghostty')).toBe(false) + expect( + findButtons(element).some((button) => button.text === 'Import from Ghostty') + ).toBe(false) }) it('shows the Ghostty import button for Ghostty-only searches', () => { @@ -524,6 +526,8 @@ describe('TerminalAppearanceSection ghostty import wiring', () => { expect(findTerminalThemeCatalogSection(element)?.props.showThemeImport).toBe(false) expect(findWarpThemeImportModal(element)).toBeNull() + expect(findButtons(element).some((button) => button.text === 'Import from Ghostty')).toBe(false) + expect(findGhosttyImportModal(element)).toBeNull() }) it('passes hook state to GhosttyImportModal', () => { diff --git a/src/renderer/src/components/settings/TerminalAppearanceSection.tsx b/src/renderer/src/components/settings/TerminalAppearanceSection.tsx index b13f535a83a..cafe7d5174d 100644 --- a/src/renderer/src/components/settings/TerminalAppearanceSection.tsx +++ b/src/renderer/src/components/settings/TerminalAppearanceSection.tsx @@ -83,7 +83,7 @@ export function TerminalAppearanceSection({ const isSearching = normalizeSettingsSearchQuery(searchQuery).length > 0 const [themeSearch, setThemeSearch] = useState('') const [previewFontFamily, setPreviewFontFamily] = useState(null) - const showWarpThemeImport = !isWebClientLocation() + const showDesktopThemeImports = !isWebClientLocation() const darkThemeSearchEntries = getTerminalDarkThemeSearchEntries() const lightThemeSearchEntries = getTerminalLightThemeSearchEntries() const terminalTypographyEntries = getTerminalTypographySearchEntries() @@ -92,7 +92,7 @@ export function TerminalAppearanceSection({ ...getTerminalThemeTargetSearchEntries(), ...darkThemeSearchEntries, ...lightThemeSearchEntries, - ...(showWarpThemeImport + ...(showDesktopThemeImports ? [...getTerminalWarpImportSearchEntries(), ...getTerminalYamlImportSearchEntries()] : []) ] @@ -116,14 +116,16 @@ export function TerminalAppearanceSection({ searchQuery, terminalTypographyEntries.slice(0, 2) ) - const ghosttyImportMatches = matchesSettingsSearch(searchQuery, ghosttyImportEntries) + const ghosttyImportMatches = + showDesktopThemeImports && matchesSettingsSearch(searchQuery, ghosttyImportEntries) const showPrimaryTypography = !isSearching || forceVisiblePrimary || primaryTypographyMatches || typographyMatches || ghosttyImportMatches - const showGhosttyImport = !isSearching || forceVisiblePrimary || ghosttyImportMatches + const showGhosttyImport = + showDesktopThemeImports && (!isSearching || forceVisiblePrimary || ghosttyImportMatches) const showTypographyAdvancedDisclosure = !isSearching || typographyMatches const advancedGroups = [ @@ -259,36 +261,38 @@ export function TerminalAppearanceSection({ previewFontFamily={previewFontFamily} importedHighlightSignal={warpThemes.importSignal} warpThemes={warpThemes} - showThemeImport={showWarpThemeImport} + showThemeImport={showDesktopThemeImports} preferredTarget={preferredThemeTarget} advancedContent={previewAdvancedContent} /> ) : null} - - {showWarpThemeImport ? ( - + {showDesktopThemeImports ? ( + <> + + + ) : null} ) diff --git a/src/renderer/src/components/settings/appearance-search.ts b/src/renderer/src/components/settings/appearance-search.ts index 726ecaa1b01..de8b742626b 100644 --- a/src/renderer/src/components/settings/appearance-search.ts +++ b/src/renderer/src/components/settings/appearance-search.ts @@ -224,6 +224,7 @@ const getAppearanceSectionEntries = createLocalizedCatalog((): SettingsSearchEnt type AppearancePaneSearchOptions = { showWarpImport?: boolean + showGhosttyImport?: boolean showSystemTray?: boolean showMenuBarIcon?: boolean } @@ -253,6 +254,7 @@ export function getAppearancePaneSearchEntries( ): SettingsSearchEntry[] { return buildAppearancePaneSearchEntries({ showWarpImport: options.showWarpImport ?? true, + showGhosttyImport: options.showGhosttyImport ?? true, showSystemTray: options.showSystemTray, showMenuBarIcon: options.showMenuBarIcon }) diff --git a/src/renderer/src/components/settings/terminal-search.test.ts b/src/renderer/src/components/settings/terminal-search.test.ts index b9d1ac76969..739d1125cd9 100644 --- a/src/renderer/src/components/settings/terminal-search.test.ts +++ b/src/renderer/src/components/settings/terminal-search.test.ts @@ -156,13 +156,16 @@ describe('getTerminalPaneSearchEntries', () => { expect(matchesSettingsSearch(query, getAppearancePaneSearchEntries())).toBe(true) }) - it('omits the Warp import appearance entry when desktop-only controls are hidden', () => { + it('omits desktop-only import appearance entries when desktop-only controls are hidden', () => { const desktopEntries = getAppearancePaneSearchEntries({ showWarpImport: true }) - const webEntries = getAppearancePaneSearchEntries({ showWarpImport: false }) + const webEntries = getAppearancePaneSearchEntries({ + showWarpImport: false, + showGhosttyImport: false + }) expect(desktopEntries.some((entry) => entry.title === 'Import from Warp')).toBe(true) expect(webEntries.some((entry) => entry.title === 'Import from Warp')).toBe(false) - expect(webEntries.some((entry) => entry.title === 'Import from Ghostty')).toBe(true) + expect(webEntries.some((entry) => entry.title === 'Import from Ghostty')).toBe(false) }) it('includes the system tray appearance entry only when desktop tray controls are shown', () => { diff --git a/src/renderer/src/components/settings/terminal-search.ts b/src/renderer/src/components/settings/terminal-search.ts index 2a460bd64a1..180d10d9243 100644 --- a/src/renderer/src/components/settings/terminal-search.ts +++ b/src/renderer/src/components/settings/terminal-search.ts @@ -64,9 +64,10 @@ export { type TerminalAppearanceSearchOptions = { showWarpImport?: boolean + showGhosttyImport?: boolean } -const getTerminalAppearanceSearchEntriesWithoutWarp = createLocalizedCatalog( +const getTerminalAppearanceSearchEntriesCore = createLocalizedCatalog( (): SettingsSearchEntry[] => [ ...getTerminalTypographySearchEntries(), ...getTerminalCursorSearchEntries(), @@ -74,8 +75,7 @@ const getTerminalAppearanceSearchEntriesWithoutWarp = createLocalizedCatalog( ...getTerminalThemeTargetSearchEntries(), ...getTerminalDarkThemeSearchEntries(), ...getTerminalLightThemeSearchEntries(), - ...getTerminalWindowSearchEntries(), - ...getTerminalGhosttyImportSearchEntries() + ...getTerminalWindowSearchEntries() ] ) @@ -83,7 +83,7 @@ const getTerminalAppearanceSearchEntriesWithoutWarp = createLocalizedCatalog( // an English title would leak the Warp entry back in under non-English locales. const getTerminalAppearanceSearchEntriesWithWarp = createLocalizedCatalog( (): SettingsSearchEntry[] => [ - ...getTerminalAppearanceSearchEntriesWithoutWarp(), + ...getTerminalAppearanceSearchEntriesCore(), ...getTerminalWarpImportSearchEntries(), ...getTerminalYamlImportSearchEntries() ] @@ -92,9 +92,12 @@ const getTerminalAppearanceSearchEntriesWithWarp = createLocalizedCatalog( export function getTerminalAppearanceSearchEntries( options: TerminalAppearanceSearchOptions = {} ): SettingsSearchEntry[] { - return (options.showWarpImport ?? true) - ? getTerminalAppearanceSearchEntriesWithWarp() - : getTerminalAppearanceSearchEntriesWithoutWarp() + return [ + ...((options.showWarpImport ?? true) + ? getTerminalAppearanceSearchEntriesWithWarp() + : getTerminalAppearanceSearchEntriesCore()), + ...((options.showGhosttyImport ?? true) ? getTerminalGhosttyImportSearchEntries() : []) + ] } export function getTerminalPaneSearchEntries(platform: { diff --git a/src/renderer/src/hooks/settings-navigation-interface-sections.ts b/src/renderer/src/hooks/settings-navigation-interface-sections.ts index 0208dd1f526..acbd44333c6 100644 --- a/src/renderer/src/hooks/settings-navigation-interface-sections.ts +++ b/src/renderer/src/hooks/settings-navigation-interface-sections.ts @@ -27,6 +27,7 @@ export function buildInterfaceSettingsSections({ icon: Palette, searchEntries: getAppearancePaneSearchEntries({ showWarpImport: showDesktopOnlySettings, + showGhosttyImport: showDesktopOnlySettings, showSystemTray: showDesktopOnlySettings && isWindows, showMenuBarIcon: showDesktopOnlySettings && isMac }),