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:
committed by
GitHub
co-authored by
Serhii Dziupin
Cursor Agent
parent
502c96630e
commit
1fb448d827
@@ -612,6 +612,7 @@ interface UIStore {
|
||||
diffWrapLines: boolean;
|
||||
gitChangesViewMode: 'flat' | 'tree';
|
||||
isTimelineDialogOpen: boolean;
|
||||
isPromptNavigatorPanelOpen: boolean;
|
||||
isImagePreviewOpen: boolean;
|
||||
nativeNotificationsEnabled: boolean;
|
||||
notificationMode: 'always' | 'hidden-only';
|
||||
@@ -655,6 +656,7 @@ interface UIStore {
|
||||
userMessageRenderingMode: UserMessageRenderingMode;
|
||||
collapsibleUserMessages: boolean;
|
||||
stickyUserHeader: boolean;
|
||||
promptNavigatorEnabled: boolean;
|
||||
expandedEditorToolbar: boolean;
|
||||
showSplitAssistantMessageActions: boolean;
|
||||
allowPromptingSubagentSessions: boolean;
|
||||
@@ -780,6 +782,8 @@ interface UIStore {
|
||||
setGitChangesViewMode: (mode: 'flat' | 'tree') => void;
|
||||
setMultiRunLauncherOpen: (open: boolean) => void;
|
||||
setTimelineDialogOpen: (open: boolean) => void;
|
||||
setPromptNavigatorPanelOpen: (open: boolean) => void;
|
||||
togglePromptNavigatorPanel: () => void;
|
||||
setImagePreviewOpen: (open: boolean) => void;
|
||||
setNativeNotificationsEnabled: (value: boolean) => void;
|
||||
setNotificationMode: (mode: 'always' | 'hidden-only') => void;
|
||||
@@ -810,6 +814,7 @@ interface UIStore {
|
||||
setUserMessageRenderingMode: (value: UserMessageRenderingMode) => void;
|
||||
setCollapsibleUserMessages: (value: boolean) => void;
|
||||
setStickyUserHeader: (value: boolean) => void;
|
||||
setPromptNavigatorEnabled: (value: boolean) => void;
|
||||
setExpandedEditorToolbar: (value: boolean) => void;
|
||||
setShowSplitAssistantMessageActions: (value: boolean) => void;
|
||||
setAllowPromptingSubagentSessions: (value: boolean) => void;
|
||||
@@ -918,6 +923,7 @@ export const useUIStore = create<UIStore>()(
|
||||
diffWrapLines: false,
|
||||
gitChangesViewMode: 'flat',
|
||||
isTimelineDialogOpen: false,
|
||||
isPromptNavigatorPanelOpen: false,
|
||||
isImagePreviewOpen: false,
|
||||
nativeNotificationsEnabled: false,
|
||||
notificationMode: 'hidden-only',
|
||||
@@ -958,6 +964,7 @@ export const useUIStore = create<UIStore>()(
|
||||
userMessageRenderingMode: 'markdown',
|
||||
collapsibleUserMessages: true,
|
||||
stickyUserHeader: false,
|
||||
promptNavigatorEnabled: false,
|
||||
expandedEditorToolbar: false,
|
||||
showSplitAssistantMessageActions: false,
|
||||
allowPromptingSubagentSessions: false,
|
||||
@@ -2037,6 +2044,14 @@ export const useUIStore = create<UIStore>()(
|
||||
set({ isTimelineDialogOpen: open });
|
||||
},
|
||||
|
||||
setPromptNavigatorPanelOpen: (open) => {
|
||||
set({ isPromptNavigatorPanelOpen: open });
|
||||
},
|
||||
|
||||
togglePromptNavigatorPanel: () => {
|
||||
set((state) => ({ isPromptNavigatorPanelOpen: !state.isPromptNavigatorPanelOpen }));
|
||||
},
|
||||
|
||||
setImagePreviewOpen: (open) => {
|
||||
set({ isImagePreviewOpen: open });
|
||||
},
|
||||
@@ -2119,6 +2134,9 @@ export const useUIStore = create<UIStore>()(
|
||||
setStickyUserHeader: (value) => {
|
||||
set({ stickyUserHeader: value });
|
||||
},
|
||||
setPromptNavigatorEnabled: (value) => {
|
||||
set({ promptNavigatorEnabled: value });
|
||||
},
|
||||
setExpandedEditorToolbar: (value: boolean) => {
|
||||
set({ expandedEditorToolbar: value });
|
||||
},
|
||||
@@ -2369,6 +2387,7 @@ export const useUIStore = create<UIStore>()(
|
||||
userMessageRenderingMode: state.userMessageRenderingMode,
|
||||
collapsibleUserMessages: state.collapsibleUserMessages,
|
||||
stickyUserHeader: state.stickyUserHeader,
|
||||
promptNavigatorEnabled: state.promptNavigatorEnabled,
|
||||
expandedEditorToolbar: state.expandedEditorToolbar,
|
||||
showSplitAssistantMessageActions: state.showSplitAssistantMessageActions,
|
||||
allowPromptingSubagentSessions: state.allowPromptingSubagentSessions,
|
||||
|
||||
Reference in New Issue
Block a user