/
aqa
/
claude-code
Обзор
Документация
Войти
/
aqa
/
claude-code
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
utils/deepLink/terminalPreference.ts
54 строки
2 KB
kuberwastaken
new initial commit (history rewritten)
01 апр 2026, 14:57
01 апр 2026, 14:57
c1996f2
Код
Авторство
О чём код?
/** * Terminal preference capture for deep link handling. * * Separate from terminalLauncher.ts so interactiveHelpers.tsx can import * this without pulling the full launcher module into the startup path * (which would defeat LODESTONE tree-shaking). */ import { getGlobalConfig, saveGlobalConfig } from '../config.js' import { logForDebugging } from '../debug.js' /** * Map TERM_PROGRAM env var values (lowercased) to the `app` name used by * launchMacosTerminal's switch cases. TERM_PROGRAM values are what terminals * self-report; they don't always match the .app bundle name (e.g., * "iTerm.app" → "iTerm", "Apple_Terminal" → "Terminal"). */ const TERM_PROGRAM_TO_APP: Record<string, string> = { iterm: 'iTerm', 'iterm.app': 'iTerm', ghostty: 'Ghostty', kitty: 'kitty', alacritty: 'Alacritty', wezterm: 'WezTerm', apple_terminal: 'Terminal', } /** * Capture the current terminal from TERM_PROGRAM and store it for the deep * link handler to use later. The handler runs headless (LaunchServices/xdg) * where TERM_PROGRAM is unset, so without this it falls back to a static * priority list that picks whatever is installed first — often not the * terminal the user actually uses. * * Called fire-and-forget from interactive startup, same as * updateGithubRepoPathMapping. */ export function updateDeepLinkTerminalPreference(): void { // Only detectMacosTerminal reads the stored value — skip the write on // other platforms. if (process.platform !== 'darwin') return const termProgram = process.env.TERM_PROGRAM if (!termProgram) return const app = TERM_PROGRAM_TO_APP[termProgram.toLowerCase()] if (!app) return const config = getGlobalConfig() if (config.deepLinkTerminal === app) return saveGlobalConfig(current => ({ ...current, deepLinkTerminal: app })) logForDebugging(`Stored deep link terminal preference: ${app}`) }