feat(chat): desktop prompt navigator rail (#2054)

* feat(chat): add desktop prompt navigator rail

Add a ChatGPT-style right-center prompt marker rail for web/desktop chat
with hover/keyboard preview panel, load-more for partial history (panel only),
Chat setting, and mod+alt+p shortcut. Disabled in VS Code across rail,
shortcut, settings, help, and search surfaces.

Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>

* fix(ui): read promptNavigatorEnabled from getState in shortcut handler

Match the file convention used by other shortcut handlers so the toggle
does not rely on a hook-level selector closure.

Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>

* fix(ui): drop use-no-memo and default prompt navigator off

Remove the project-unprecedented React Compiler opt-out, and ship the
prompt navigator as opt-in to match other recent chat UI toggles.

Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>
This commit is contained in:
Serhii Dziupin
2026-07-13 09:02:14 +03:00
committed by GitHub
co-authored by Serhii Dziupin Cursor Agent
parent 502c96630e
commit 1fb448d827
36 changed files with 754 additions and 21 deletions
+1
View File
@@ -157,6 +157,7 @@ export type DesktopSettings = {
userMessageRenderingMode?: 'markdown' | 'plain';
collapsibleUserMessages?: boolean;
stickyUserHeader?: boolean;
promptNavigatorEnabled?: boolean;
expandedEditorToolbar?: boolean;
wideChatLayoutEnabled?: boolean;
showSplitAssistantMessageActions?: boolean;
@@ -1059,6 +1059,7 @@ export const settingsDict = {
'settings.openchamber.keyboardShortcuts.action.open_model_selector.label': 'Open model selector',
'settings.openchamber.keyboardShortcuts.action.expand_input.label': 'Expand input',
'settings.openchamber.keyboardShortcuts.action.open_timeline_dialog.label': 'Open conversation timeline',
'settings.openchamber.keyboardShortcuts.action.toggle_prompt_navigator.label': 'Toggle prompt navigator',
'settings.projects.sidebar.total': 'Total {count}',
'settings.projects.sidebar.actions.addProject': 'Add project',
'settings.projects.page.empty.noProjects': 'No projects available.',
@@ -1803,6 +1804,8 @@ export const settingsDict = {
'settings.openchamber.visual.field.collapsibleUserMessages': 'Collapse Long User Messages',
'settings.openchamber.visual.field.stickyUserHeaderAria': 'Sticky user header',
'settings.openchamber.visual.field.stickyUserHeader': 'Sticky User Header',
'settings.openchamber.visual.field.promptNavigatorEnabledAria': 'Prompt navigator',
'settings.openchamber.visual.field.promptNavigatorEnabled': 'Prompt Navigator',
'settings.openchamber.visual.field.expandedEditorToolbarAria': 'Always show editor toolbar',
'settings.openchamber.visual.field.expandedEditorToolbar': 'Always show editor toolbar (docked under the file tabs)',
'settings.openchamber.visual.field.wideChatLayoutAria': 'Wide chat layout',
+4
View File
@@ -1563,6 +1563,7 @@ export const dict = {
'helpDialog.item.createNewSession': 'Create New Session',
'helpDialog.item.createNewWorktreeDraft': 'Create New Worktree Draft',
'helpDialog.item.focusChatInput': 'Focus Chat Input',
'helpDialog.item.togglePromptNavigator': 'Toggle Prompt Navigator',
'helpDialog.item.abortActiveRun': 'Abort active run (double press)',
'helpDialog.item.toggleRightSidebar': 'Toggle Right Sidebar',
'helpDialog.item.openRightSidebarGitTab': 'Open Right Sidebar Git Tab',
@@ -1757,6 +1758,9 @@ export const dict = {
'chat.draftStarters.sectionSkills': 'Skills',
'chat.draftStarters.remove': 'Remove',
'chat.scrollToBottom.aria': 'Scroll to bottom',
'chat.promptNavigator.aria': 'Prompt navigation',
'chat.promptNavigator.currentPrompt': 'Current prompt',
'chat.promptNavigator.loadMore': 'Load more prompts',
'chat.timeline.relative.justNow': 'just now',
'chat.timeline.relative.minutesAgo': '{count}m ago',
'chat.timeline.relative.hoursAgo': '{count}h ago',
@@ -1026,6 +1026,7 @@ export const settingsDict = {
"settings.openchamber.keyboardShortcuts.action.open_model_selector.label": "Abrir selector de modelo",
"settings.openchamber.keyboardShortcuts.action.expand_input.label": "Expandir entrada",
"settings.openchamber.keyboardShortcuts.action.open_timeline_dialog.label": "Abrir línea de tiempo de conversación",
"settings.openchamber.keyboardShortcuts.action.toggle_prompt_navigator.label": "Mostrar u ocultar navegador de prompts",
"settings.projects.sidebar.total": "Total {count}",
"settings.projects.sidebar.actions.addProject": "Añadir proyecto",
"settings.projects.page.empty.noProjects": "No hay proyectos disponibles.",
@@ -1770,6 +1771,8 @@ export const settingsDict = {
"settings.openchamber.visual.field.collapsibleUserMessages": "Contraer mensajes largos del usuario",
"settings.openchamber.visual.field.stickyUserHeaderAria": "Encabezado del usuario fijo",
"settings.openchamber.visual.field.stickyUserHeader": "Encabezado de usuario fijo",
"settings.openchamber.visual.field.promptNavigatorEnabledAria": "Navegador de prompts",
"settings.openchamber.visual.field.promptNavigatorEnabled": "Navegador de prompts",
"settings.openchamber.visual.field.expandedEditorToolbarAria": "Mostrar siempre la barra de herramientas del editor",
"settings.openchamber.visual.field.expandedEditorToolbar": "Mostrar siempre la barra de herramientas del editor (anclada bajo las pestañas)",
"settings.openchamber.visual.field.wideChatLayoutAria": "Diseño de chat ancho",
+4
View File
@@ -1541,6 +1541,7 @@ export const dict: Record<I18nKey, string> = {
"helpDialog.item.createNewSession": "Crear nueva sesión",
"helpDialog.item.createNewWorktreeDraft": "Crear nuevo borrador de worktree",
"helpDialog.item.focusChatInput": "Enfocar entrada de chat",
"helpDialog.item.togglePromptNavigator": "Mostrar u ocultar navegador de prompts",
"helpDialog.item.abortActiveRun": "Detener ejecución activa (doble presionar)",
"helpDialog.item.toggleRightSidebar": "Mostrar u ocultar barra lateral derecha",
"helpDialog.item.openRightSidebarGitTab": "Abrir pestaña de Git en barra lateral derecha",
@@ -1735,6 +1736,9 @@ export const dict: Record<I18nKey, string> = {
"chat.draftStarters.sectionSkills": "Skills",
"chat.draftStarters.remove": "Remove",
"chat.scrollToBottom.aria": "Ir al final",
"chat.promptNavigator.aria": "Navegación de prompts",
"chat.promptNavigator.currentPrompt": "Prompt actual",
"chat.promptNavigator.loadMore": "Cargar más prompts",
"chat.timeline.relative.justNow": "ahora mismo",
"chat.timeline.relative.minutesAgo": "hace {count}m",
"chat.timeline.relative.hoursAgo": "hace {count}h",
@@ -951,6 +951,7 @@ export const settingsDict = {
'settings.openchamber.keyboardShortcuts.action.open_model_selector.label': 'Ouvrir le sélecteur de modèle',
'settings.openchamber.keyboardShortcuts.action.expand_input.label': 'Développer l\'entrée',
'settings.openchamber.keyboardShortcuts.action.open_timeline_dialog.label': 'Chronologie de la conversation ouverte',
'settings.openchamber.keyboardShortcuts.action.toggle_prompt_navigator.label': 'Afficher ou masquer le navigateur de prompts',
'settings.projects.sidebar.total': 'Total {count}',
'settings.projects.sidebar.actions.addProject': 'Ajouter un projet',
'settings.projects.page.empty.noProjects': 'Aucun projet disponible.',
@@ -1679,6 +1680,8 @@ export const settingsDict = {
'settings.openchamber.visual.field.collapsibleUserMessages': 'Réduire les longs messages utilisateur',
'settings.openchamber.visual.field.stickyUserHeaderAria': 'En-tête utilisateur collant',
'settings.openchamber.visual.field.stickyUserHeader': 'En-tête utilisateur collant',
'settings.openchamber.visual.field.promptNavigatorEnabledAria': 'Navigateur de prompts',
'settings.openchamber.visual.field.promptNavigatorEnabled': 'Navigateur de prompts',
'settings.openchamber.visual.field.expandedEditorToolbarAria': 'Toujours afficher la barre doutils de l’éditeur',
'settings.openchamber.visual.field.expandedEditorToolbar': 'Toujours afficher la barre doutils de l’éditeur (ancrée sous les onglets de fichiers)',
'settings.openchamber.visual.field.wideChatLayoutAria': 'Large disposition de discussion',
+4
View File
@@ -1383,6 +1383,7 @@ export const dict = {
'helpDialog.item.createNewSession': 'Créer une nouvelle session',
'helpDialog.item.createNewWorktreeDraft': 'Créer un nouveau brouillon d\'worktree',
'helpDialog.item.focusChatInput': 'Concentration sur la saisie du chat',
'helpDialog.item.togglePromptNavigator': 'Afficher ou masquer le navigateur de prompts',
'helpDialog.item.abortActiveRun': 'Abandonner lexécution active (double pression)',
'helpDialog.item.toggleRightSidebar': 'Basculer la barre latérale droite',
'helpDialog.item.openRightSidebarGitTab': 'Ouvrir l\'onglet Git de la barre latérale droite',
@@ -1562,6 +1563,9 @@ export const dict = {
'chat.emptyState.draftTitle': 'Sur quoi travaillons-nous ?',
'chat.emptyState.draftTitleWithProject': 'Sur quoi travaillons-nous dans {project} ?',
'chat.scrollToBottom.aria': 'Faire défiler vers le bas',
'chat.promptNavigator.aria': 'Navigation des prompts',
'chat.promptNavigator.currentPrompt': 'Prompt actuel',
'chat.promptNavigator.loadMore': 'Charger plus de prompts',
'chat.timeline.relative.justNow': 'à linstant',
'chat.timeline.relative.minutesAgo': 'il y a {count} min',
'chat.timeline.relative.hoursAgo': 'il y a {count} h',
@@ -1059,6 +1059,7 @@ export const settingsDict = {
'settings.openchamber.keyboardShortcuts.action.expand_input.label': '入力を拡大',
'settings.openchamber.keyboardShortcuts.action.open_model_selector.label': 'モデルセレクターを開く',
'settings.openchamber.keyboardShortcuts.action.open_timeline_dialog.label': '会話タイムラインを開く',
'settings.openchamber.keyboardShortcuts.action.toggle_prompt_navigator.label': 'プロンプトナビゲーターの表示切替',
'settings.projects.sidebar.total': '合計 {count}',
'settings.projects.sidebar.actions.addProject': 'プロジェクトを追加',
'settings.projects.page.empty.noProjects': '利用可能なプロジェクトがありません。',
@@ -1803,6 +1804,8 @@ export const settingsDict = {
'settings.openchamber.visual.field.collapsibleUserMessages': '長いユーザーメッセージを折りたたむ',
'settings.openchamber.visual.field.stickyUserHeaderAria': 'ユーザーヘッダー固定',
'settings.openchamber.visual.field.stickyUserHeader': 'ユーザーヘッダー固定',
'settings.openchamber.visual.field.promptNavigatorEnabledAria': 'プロンプトナビゲーター',
'settings.openchamber.visual.field.promptNavigatorEnabled': 'プロンプトナビゲーター',
'settings.openchamber.visual.field.expandedEditorToolbarAria': 'エディターツールバーを常に表示',
'settings.openchamber.visual.field.expandedEditorToolbar': 'エディターツールバーを常に表示(ファイルタブの下にドッキング)',
'settings.openchamber.visual.field.wideChatLayoutAria': 'ワイドチャットレイアウト',
+4
View File
@@ -1559,6 +1559,7 @@ export const dict: Record<I18nKey, string> = {
'helpDialog.item.createNewSession': '新しいセッションを作成',
'helpDialog.item.createNewWorktreeDraft': '新しいワークツリー下書きを作成',
'helpDialog.item.focusChatInput': 'チャット入力にフォーカス',
'helpDialog.item.togglePromptNavigator': 'プロンプトナビゲーターの表示切替',
'helpDialog.item.abortActiveRun': 'アクティブな実行を中止(ダブルプレス)',
'helpDialog.item.toggleRightSidebar': '右サイドバーの切り替え',
'helpDialog.item.openRightSidebarGitTab': '右サイドバーのGitタブを開く',
@@ -1753,6 +1754,9 @@ export const dict: Record<I18nKey, string> = {
'chat.draftStarters.sectionSkills': 'スキル',
'chat.draftStarters.remove': '削除',
'chat.scrollToBottom.aria': '一番下にスクロール',
'chat.promptNavigator.aria': 'プロンプトナビゲーション',
'chat.promptNavigator.currentPrompt': '現在のプロンプト',
'chat.promptNavigator.loadMore': 'さらにプロンプトを読み込む',
'chat.timeline.relative.justNow': 'たった今',
'chat.timeline.relative.minutesAgo': '{count}分前',
'chat.timeline.relative.hoursAgo': '{count}時間前',
@@ -1026,6 +1026,7 @@ export const settingsDict = {
'settings.openchamber.keyboardShortcuts.action.open_model_selector.label': '모델 선택기 열기',
'settings.openchamber.keyboardShortcuts.action.expand_input.label': '입력 확장',
'settings.openchamber.keyboardShortcuts.action.open_timeline_dialog.label': '대화 타임라인 열기',
'settings.openchamber.keyboardShortcuts.action.toggle_prompt_navigator.label': '프롬프트 탐색기 표시/숨기기',
'settings.projects.sidebar.total': '총 {count}개',
'settings.projects.sidebar.actions.addProject': '프로젝트 추가',
'settings.projects.page.empty.noProjects': '사용 가능한 프로젝트가 없습니다.',
@@ -1770,6 +1771,8 @@ export const settingsDict = {
'settings.openchamber.visual.field.collapsibleUserMessages': '긴 사용자 메시지 접기',
'settings.openchamber.visual.field.stickyUserHeaderAria': '고정 사용자 헤더',
'settings.openchamber.visual.field.stickyUserHeader': '고정 사용자 헤더',
'settings.openchamber.visual.field.promptNavigatorEnabledAria': '프롬프트 탐색기',
'settings.openchamber.visual.field.promptNavigatorEnabled': '프롬프트 탐색기',
'settings.openchamber.visual.field.expandedEditorToolbarAria': 'Always show editor toolbar',
'settings.openchamber.visual.field.expandedEditorToolbar': 'Always show editor toolbar (docked under the file tabs)',
'settings.openchamber.visual.field.wideChatLayoutAria': '넓은 채팅 레이아웃',
+4
View File
@@ -1565,6 +1565,7 @@ export const dict: Record<I18nKey, string> = {
'helpDialog.item.createNewSession': '새 세션 만들기',
'helpDialog.item.createNewWorktreeDraft': '새 워크트리 드래프트 만들기',
'helpDialog.item.focusChatInput': '채팅 입력창으로 포커스 이동',
'helpDialog.item.togglePromptNavigator': '프롬프트 탐색기 표시/숨기기',
'helpDialog.item.abortActiveRun': '활성 실행 중단(두 번 누르기)',
'helpDialog.item.toggleRightSidebar': '오른쪽 사이드바 전환',
'helpDialog.item.openRightSidebarGitTab': '오른쪽 사이드바 Git 탭 열기',
@@ -1759,6 +1760,9 @@ export const dict: Record<I18nKey, string> = {
'chat.draftStarters.sectionSkills': 'Skills',
'chat.draftStarters.remove': 'Remove',
'chat.scrollToBottom.aria': '맨 아래로 스크롤',
'chat.promptNavigator.aria': '프롬프트 탐색',
'chat.promptNavigator.currentPrompt': '현재 프롬프트',
'chat.promptNavigator.loadMore': '더 많은 프롬프트 불러오기',
'chat.timeline.relative.justNow': '방금 전',
'chat.timeline.relative.minutesAgo': '{count}분 전',
'chat.timeline.relative.hoursAgo': '{count}시간 전',
@@ -761,6 +761,7 @@ export const settingsDict = {
'settings.openchamber.keyboardShortcuts.action.cycle_theme.label': 'Przełącz motyw',
'settings.openchamber.keyboardShortcuts.action.cycle_agent.label': 'Przełącz agenta',
'settings.openchamber.keyboardShortcuts.action.expand_input.label': 'Rozwiń pole wprowadzania',
'settings.openchamber.keyboardShortcuts.action.toggle_prompt_navigator.label': 'Przełącz nawigator promptów',
'settings.openchamber.keyboardShortcuts.action.focus_input.label': 'Skup pole wprowadzania',
'settings.openchamber.keyboardShortcuts.action.new_chat.label': 'Nowa sesja',
'settings.openchamber.keyboardShortcuts.action.new_chat_worktree.label': 'Nowy szkic obszaru roboczego',
@@ -1034,6 +1035,8 @@ export const settingsDict = {
'settings.openchamber.visual.field.spacingDensity': 'Gęstość odstępów',
'settings.openchamber.visual.field.stickyUserHeader': 'Przyklejony nagłówek użytkownika',
'settings.openchamber.visual.field.stickyUserHeaderAria': 'Przyklejony nagłówek użytkownika',
'settings.openchamber.visual.field.promptNavigatorEnabledAria': 'Nawigator promptów',
'settings.openchamber.visual.field.promptNavigatorEnabled': 'Nawigator promptów',
'settings.openchamber.visual.field.expandedEditorToolbarAria': 'Always show editor toolbar',
'settings.openchamber.visual.field.expandedEditorToolbar': 'Always show editor toolbar (docked under the file tabs)',
'settings.openchamber.visual.field.terminalFontSize': 'Rozmiar czcionki terminala',
+4
View File
@@ -651,6 +651,9 @@ export const dict: Record<I18nKey, string> = {
'chat.draftStarters.sectionSkills': 'Skills',
'chat.draftStarters.remove': 'Remove',
'chat.scrollToBottom.aria': 'Przewiń na dół',
'chat.promptNavigator.aria': 'Nawigacja promptów',
'chat.promptNavigator.currentPrompt': 'Bieżący prompt',
'chat.promptNavigator.loadMore': 'Wczytaj więcej promptów',
'chat.timeline.relative.justNow': 'przed chwilą',
'chat.timeline.relative.minutesAgo': '{count}m temu',
'chat.timeline.relative.hoursAgo': '{count}h temu',
@@ -2183,6 +2186,7 @@ export const dict: Record<I18nKey, string> = {
'helpDialog.item.cycleTheme': 'Przełącz motyw (Jasny → Ciemny → Systemowy)',
'helpDialog.item.cycleThinkingVariant': 'Przełącz wariant myślenia (skrót globalny)',
'helpDialog.item.focusChatInput': 'Ustaw fokus na polu czatu',
'helpDialog.item.togglePromptNavigator': 'Przełącz nawigator promptów',
'helpDialog.item.navigateModels': 'Nawiguj po modelach (w selektorze)',
'helpDialog.item.newWindow': 'Nowe okno (tylko desktop)',
'helpDialog.item.openCommandPalette': 'Otwórz paletę poleceń',
@@ -1026,6 +1026,7 @@ export const settingsDict = {
"settings.openchamber.keyboardShortcuts.action.open_model_selector.label": "Abrir seletor de modelo",
"settings.openchamber.keyboardShortcuts.action.expand_input.label": "Expandir entrada",
"settings.openchamber.keyboardShortcuts.action.open_timeline_dialog.label": "Abrir linha do tempo da conversa",
"settings.openchamber.keyboardShortcuts.action.toggle_prompt_navigator.label": "Mostrar ou ocultar navegador de prompts",
"settings.projects.sidebar.total": "Total {count}",
"settings.projects.sidebar.actions.addProject": "Adicionar projeto",
"settings.projects.page.empty.noProjects": "Não há projetos disponíveis.",
@@ -1770,6 +1771,8 @@ export const settingsDict = {
"settings.openchamber.visual.field.collapsibleUserMessages": "Recolher mensagens longas do usuário",
"settings.openchamber.visual.field.stickyUserHeaderAria": "Cabeçalho do usuário fixo",
"settings.openchamber.visual.field.stickyUserHeader": "Cabeçalho do usuário fixo",
"settings.openchamber.visual.field.promptNavigatorEnabledAria": "Navegador de prompts",
"settings.openchamber.visual.field.promptNavigatorEnabled": "Navegador de prompts",
"settings.openchamber.visual.field.expandedEditorToolbarAria": "Mostrar sempre a barra de ferramentas do editor",
"settings.openchamber.visual.field.expandedEditorToolbar": "Mostrar sempre a barra de ferramentas do editor (ancorada sob as abas)",
"settings.openchamber.visual.field.wideChatLayoutAria": "Layout de chat amplo",
@@ -1541,6 +1541,7 @@ export const dict: Record<I18nKey, string> = {
"helpDialog.item.createNewSession": "Criar nova sessão",
"helpDialog.item.createNewWorktreeDraft": "Criar novo rascunho de worktree",
"helpDialog.item.focusChatInput": "Focar entrada do chat",
"helpDialog.item.togglePromptNavigator": "Mostrar ou ocultar navegador de prompts",
"helpDialog.item.abortActiveRun": "Interromper execução ativa (duplo clique)",
"helpDialog.item.toggleRightSidebar": "Mostrar ou ocultar barra lateral direita",
"helpDialog.item.openRightSidebarGitTab": "Abrir aba de Git em barra lateral direita",
@@ -1735,6 +1736,9 @@ export const dict: Record<I18nKey, string> = {
"chat.draftStarters.sectionSkills": "Skills",
"chat.draftStarters.remove": "Remove",
"chat.scrollToBottom.aria": "Ir ao final",
"chat.promptNavigator.aria": "Navegação de prompts",
"chat.promptNavigator.currentPrompt": "Prompt atual",
"chat.promptNavigator.loadMore": "Carregar mais prompts",
"chat.timeline.relative.justNow": "agora mesmo",
"chat.timeline.relative.minutesAgo": "há {count}m",
"chat.timeline.relative.hoursAgo": "há {count}h",
@@ -1026,6 +1026,7 @@ export const settingsDict = {
"settings.openchamber.keyboardShortcuts.action.open_model_selector.label": "Відкрити вибір моделі",
"settings.openchamber.keyboardShortcuts.action.expand_input.label": "Розгорнути введення",
"settings.openchamber.keyboardShortcuts.action.open_timeline_dialog.label": "Відкрити хронологію розмови",
"settings.openchamber.keyboardShortcuts.action.toggle_prompt_navigator.label": "Показати або приховати навігатор промптів",
"settings.projects.sidebar.total": "Усього {count}",
"settings.projects.sidebar.actions.addProject": "Додати проєкт",
"settings.projects.page.empty.noProjects": "Немає доступних проєктів.",
@@ -1770,6 +1771,8 @@ export const settingsDict = {
"settings.openchamber.visual.field.collapsibleUserMessages": "Згортати довгі повідомлення користувача",
"settings.openchamber.visual.field.stickyUserHeaderAria": "Закріплений заголовок користувача",
"settings.openchamber.visual.field.stickyUserHeader": "Закріплений заголовок користувача",
"settings.openchamber.visual.field.promptNavigatorEnabledAria": "Навігатор промптів",
"settings.openchamber.visual.field.promptNavigatorEnabled": "Навігатор промптів",
"settings.openchamber.visual.field.expandedEditorToolbarAria": "Завжди показувати панель інструментів редактора",
"settings.openchamber.visual.field.expandedEditorToolbar": "Завжди показувати панель інструментів редактора (закріплена під вкладками)",
"settings.openchamber.visual.field.wideChatLayoutAria": "Широкий макет чату",
+4
View File
@@ -1541,6 +1541,7 @@ export const dict: Record<I18nKey, string> = {
"helpDialog.item.createNewSession": "Створити нову сесію",
"helpDialog.item.createNewWorktreeDraft": "Створити нову чернетку worktree",
"helpDialog.item.focusChatInput": "Фокус на полі вводу чату",
"helpDialog.item.togglePromptNavigator": "Показати або приховати навігатор промптів",
"helpDialog.item.abortActiveRun": "Перервати активний запуск (подвійне натискання)",
"helpDialog.item.toggleRightSidebar": "Перемкнути праву бічну панель",
"helpDialog.item.openRightSidebarGitTab": "Відкрити вкладку Git у правій бічній панелі",
@@ -1735,6 +1736,9 @@ export const dict: Record<I18nKey, string> = {
"chat.draftStarters.sectionSkills": "Скіли",
"chat.draftStarters.remove": "Прибрати",
"chat.scrollToBottom.aria": "Прокрутити вниз",
"chat.promptNavigator.aria": "Навігація за промптами",
"chat.promptNavigator.currentPrompt": "Поточний промпт",
"chat.promptNavigator.loadMore": "Завантажити більше промптів",
"chat.timeline.relative.justNow": "щойно",
"chat.timeline.relative.minutesAgo": "{count} хв тому",
"chat.timeline.relative.hoursAgo": "{count} год тому",
@@ -1026,6 +1026,7 @@ export const settingsDict = {
'settings.openchamber.keyboardShortcuts.action.open_model_selector.label': '打开模型选择器',
'settings.openchamber.keyboardShortcuts.action.expand_input.label': '展开输入框',
'settings.openchamber.keyboardShortcuts.action.open_timeline_dialog.label': '打开对话时间线',
'settings.openchamber.keyboardShortcuts.action.toggle_prompt_navigator.label': '显示或隐藏提示词导航',
'settings.projects.sidebar.total': '总计 {count}',
'settings.projects.sidebar.actions.addProject': '添加项目',
'settings.projects.page.empty.noProjects': '暂无项目。',
@@ -1770,6 +1771,8 @@ export const settingsDict = {
'settings.openchamber.visual.field.collapsibleUserMessages': '折叠较长的用户消息',
'settings.openchamber.visual.field.stickyUserHeaderAria': '固定用户消息头',
'settings.openchamber.visual.field.stickyUserHeader': '固定用户消息头',
'settings.openchamber.visual.field.promptNavigatorEnabledAria': '提示词导航',
'settings.openchamber.visual.field.promptNavigatorEnabled': '提示词导航',
'settings.openchamber.visual.field.expandedEditorToolbarAria': 'Always show editor toolbar',
'settings.openchamber.visual.field.expandedEditorToolbar': 'Always show editor toolbar (docked under the file tabs)',
'settings.openchamber.visual.field.wideChatLayoutAria': '宽聊天布局',
@@ -1529,6 +1529,7 @@ export const dict: Record<I18nKey, string> = {
'helpDialog.item.createNewSession': '创建新会话',
'helpDialog.item.createNewWorktreeDraft': '创建新工作树草稿',
'helpDialog.item.focusChatInput': '聚焦聊天输入框',
'helpDialog.item.togglePromptNavigator': '显示或隐藏提示词导航',
'helpDialog.item.abortActiveRun': '中止当前运行(双击)',
'helpDialog.item.toggleRightSidebar': '切换右侧边栏',
'helpDialog.item.openRightSidebarGitTab': '打开右侧边栏 Git 标签',
@@ -1723,6 +1724,9 @@ export const dict: Record<I18nKey, string> = {
'chat.draftStarters.sectionSkills': 'Skills',
'chat.draftStarters.remove': 'Remove',
'chat.scrollToBottom.aria': '滚动到底部',
'chat.promptNavigator.aria': '提示词导航',
'chat.promptNavigator.currentPrompt': '当前提示',
'chat.promptNavigator.loadMore': '加载更多提示',
'chat.timeline.relative.justNow': '刚刚',
'chat.timeline.relative.minutesAgo': '{count} 分钟前',
'chat.timeline.relative.hoursAgo': '{count} 小时前',
@@ -938,6 +938,7 @@
'settings.openchamber.keyboardShortcuts.action.open_model_selector.label': '開啟模型選擇器',
'settings.openchamber.keyboardShortcuts.action.expand_input.label': '展開輸入方塊',
'settings.openchamber.keyboardShortcuts.action.open_timeline_dialog.label': '開啟對話時間軸',
'settings.openchamber.keyboardShortcuts.action.toggle_prompt_navigator.label': '顯示或隱藏提示詞導覽',
'settings.projects.sidebar.total': '總計 {count}',
'settings.projects.sidebar.actions.addProject': '新增專案',
'settings.projects.page.empty.noProjects': '暫無專案。',
@@ -1681,6 +1682,8 @@
'settings.openchamber.visual.field.collapsibleUserMessages': '收合較長的使用者訊息',
'settings.openchamber.visual.field.stickyUserHeaderAria': '固定使用者訊息標頭',
'settings.openchamber.visual.field.stickyUserHeader': '固定使用者訊息標頭',
'settings.openchamber.visual.field.promptNavigatorEnabledAria': '提示詞導覽',
'settings.openchamber.visual.field.promptNavigatorEnabled': '提示詞導覽',
'settings.openchamber.visual.field.expandedEditorToolbarAria': 'Always show editor toolbar',
'settings.openchamber.visual.field.expandedEditorToolbar': 'Always show editor toolbar (docked under the file tabs)',
'settings.openchamber.visual.field.wideChatLayoutAria': '寬聊天佈局',
@@ -1533,6 +1533,7 @@ export const dict: Record<I18nKey, string> = {
'helpDialog.item.createNewSession': '建立新會話',
'helpDialog.item.createNewWorktreeDraft': '建立新 worktree 草稿',
'helpDialog.item.focusChatInput': '聚焦聊天輸入框',
'helpDialog.item.togglePromptNavigator': '顯示或隱藏提示詞導覽',
'helpDialog.item.abortActiveRun': '中止目前執行(連按兩下)',
'helpDialog.item.toggleRightSidebar': '切換右側邊欄',
'helpDialog.item.openRightSidebarGitTab': '開啟右側邊欄 Git 標籤',
@@ -1727,6 +1728,9 @@ export const dict: Record<I18nKey, string> = {
'chat.draftStarters.sectionSkills': 'Skills',
'chat.draftStarters.remove': 'Remove',
'chat.scrollToBottom.aria': '捲動到底部',
'chat.promptNavigator.aria': '提示詞導覽',
'chat.promptNavigator.currentPrompt': '目前提示',
'chat.promptNavigator.loadMore': '載入更多提示',
'chat.timeline.relative.justNow': '剛剛',
'chat.timeline.relative.minutesAgo': '{count} 分鐘前',
'chat.timeline.relative.hoursAgo': '{count} 小時前',
+6
View File
@@ -582,6 +582,9 @@ const applyDesktopUiPreferences = (settings: DesktopSettings) => {
if (typeof settings.stickyUserHeader === 'boolean' && settings.stickyUserHeader !== store.stickyUserHeader) {
store.setStickyUserHeader(settings.stickyUserHeader);
}
if (typeof settings.promptNavigatorEnabled === 'boolean' && settings.promptNavigatorEnabled !== store.promptNavigatorEnabled) {
store.setPromptNavigatorEnabled(settings.promptNavigatorEnabled);
}
if (typeof settings.expandedEditorToolbar === 'boolean' && settings.expandedEditorToolbar !== store.expandedEditorToolbar) {
store.setExpandedEditorToolbar(settings.expandedEditorToolbar);
}
@@ -1150,6 +1153,9 @@ const sanitizeWebSettings = (payload: unknown): DesktopSettings | null => {
if (typeof candidate.stickyUserHeader === 'boolean') {
result.stickyUserHeader = candidate.stickyUserHeader;
}
if (typeof candidate.promptNavigatorEnabled === 'boolean') {
result.promptNavigatorEnabled = candidate.promptNavigatorEnabled;
}
if (typeof candidate.wideChatLayoutEnabled === 'boolean') {
result.wideChatLayoutEnabled = candidate.wideChatLayoutEnabled;
}
+7
View File
@@ -224,6 +224,13 @@ const SETTINGS_SEARCH_ITEMS: readonly SettingsSearchItem[] = [
titleKey: 'settings.openchamber.visual.field.stickyUserHeader',
keywords: ['messages', 'header'],
},
{
id: 'chat.prompt-navigator',
page: 'chat',
titleKey: 'settings.openchamber.visual.field.promptNavigatorEnabled',
keywords: ['prompt', 'navigator', 'navigation', 'timeline', 'scroll'],
isAvailable: (ctx) => !ctx.isVSCode,
},
{
id: 'chat.collapsible-user-messages',
page: 'chat',
+7
View File
@@ -172,6 +172,13 @@ const SHORTCUT_ACTIONS: ReadonlyArray<ShortcutAction> = [
description: 'Search and navigate within current conversation',
customizable: true,
},
{
id: 'toggle_prompt_navigator',
defaultCombo: 'mod+alt+p',
label: 'Toggle prompt navigator',
description: 'Show or hide the prompt navigator panel in chat',
customizable: true,
},
{
id: 'toggle_right_sidebar',
defaultCombo: 'mod+b',