feat(mobile): refactor drawer system and session status bar (#494)
* feat(mobile): refactor drawer system with swipe gestures and improved status bar
- Add DrawerContext for centralized drawer state management
- Implement swipe gesture support for left/right drawers
- Refactor MobileSessionStatusBar with token usage indicator
- Update Header component with drawer toggle props
- Improve RightSidebar touch handling
- Add mobile-specific styling improvements
- Update UI store for drawer state management
* feat(mobile): update empty session hint text to clarify swipe gesture area
* fix(mobile): restore MobileAgentButton tap-to-cycle and long-press behavior
- Revert removal of tap-to-cycle agent switching functionality
- Re-add onCycleAgent prop and long-press detection (500ms)
- Click now cycles through primary agents, long-press opens selector panel
- Fixes regression from commit 569cc411
* feat(mobile): add project switcher bar and fix button interactions
- Add ProjectBar component to MobileSessionStatusBar for quick project switching
- Add useProjectStatus hook to track project-level session indicators
- Integrate project store with directory store for project management
- Add project status indicators (running/unread) to session status bar
- Fix MobileAgentButton pointer event handling with preventDefault
- Support horizontal scroll in project bar with touch gesture isolation
* feat(mobile): add long-press to remove projects and filter sessions by project
* fix: improve mobile agent switching UX
* fix: move drawer swipe hook to dedicated file
* refactor(mobile): simplify session status bar, remove More/Less toggle button
* fix: git diff navigation on mobile in sidebar mode
* feat(mobile): add configurable status bar and refine mobile chat controls
---------
Co-authored-by: Jovines <jovines@qq.com>
Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
This commit is contained in:
committed by
GitHub
co-authored by
Jovines
Bohdan Triapitsyn
parent
7a11867a19
commit
25d616f009
@@ -220,7 +220,9 @@ interface UIStore {
|
||||
|
||||
showTerminalQuickKeysOnDesktop: boolean;
|
||||
persistChatDraft: boolean;
|
||||
showMobileSessionStatusBar: boolean;
|
||||
isMobileSessionStatusBarCollapsed: boolean;
|
||||
viewPagerPage: 'left' | 'center' | 'right';
|
||||
|
||||
isExpandedInput: boolean;
|
||||
|
||||
@@ -313,7 +315,9 @@ interface UIStore {
|
||||
setSummaryLength: (value: number) => void;
|
||||
setMaxLastMessageLength: (value: number) => void;
|
||||
setPersistChatDraft: (value: boolean) => void;
|
||||
setShowMobileSessionStatusBar: (value: boolean) => void;
|
||||
setIsMobileSessionStatusBarCollapsed: (value: boolean) => void;
|
||||
setViewPagerPage: (page: 'left' | 'center' | 'right') => void;
|
||||
toggleExpandedInput: () => void;
|
||||
setExpandedInput: (value: boolean) => void;
|
||||
openMultiRunLauncher: () => void;
|
||||
@@ -412,6 +416,7 @@ export const useUIStore = create<UIStore>()(
|
||||
|
||||
showTerminalQuickKeysOnDesktop: false,
|
||||
persistChatDraft: true,
|
||||
showMobileSessionStatusBar: true,
|
||||
isMobileSessionStatusBarCollapsed: false,
|
||||
isExpandedInput: false,
|
||||
shortcutOverrides: {},
|
||||
@@ -1194,9 +1199,23 @@ export const useUIStore = create<UIStore>()(
|
||||
setPersistChatDraft: (value) => {
|
||||
set({ persistChatDraft: value });
|
||||
},
|
||||
setShowMobileSessionStatusBar: (value) => {
|
||||
set({ showMobileSessionStatusBar: value });
|
||||
},
|
||||
setIsMobileSessionStatusBarCollapsed: (value) => {
|
||||
set({ isMobileSessionStatusBarCollapsed: value });
|
||||
},
|
||||
viewPagerPage: 'center',
|
||||
setViewPagerPage: (page: 'left' | 'center' | 'right') => {
|
||||
set({ viewPagerPage: page });
|
||||
if (page === 'left') {
|
||||
set({ isSessionSwitcherOpen: true, isRightSidebarOpen: false });
|
||||
} else if (page === 'right') {
|
||||
set({ isRightSidebarOpen: true, isSessionSwitcherOpen: false });
|
||||
} else {
|
||||
set({ isSessionSwitcherOpen: false, isRightSidebarOpen: false });
|
||||
}
|
||||
},
|
||||
|
||||
setShortcutOverride: (actionId, combo) => {
|
||||
set((state) => ({
|
||||
@@ -1347,6 +1366,7 @@ export const useUIStore = create<UIStore>()(
|
||||
summaryLength: state.summaryLength,
|
||||
maxLastMessageLength: state.maxLastMessageLength,
|
||||
persistChatDraft: state.persistChatDraft,
|
||||
showMobileSessionStatusBar: state.showMobileSessionStatusBar,
|
||||
isMobileSessionStatusBarCollapsed: state.isMobileSessionStatusBarCollapsed,
|
||||
shortcutOverrides: state.shortcutOverrides,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user