From 34ef562bc19beb88b85f31bfc8eea0ee3ced87bd Mon Sep 17 00:00:00 2001
From: Luciano Castillo <2213102+luccast@users.noreply.github.com>
Date: Mon, 2 Feb 2026 11:04:09 -0500
Subject: [PATCH] Mobile support for workspace view + UI improvements (#33)
* feat: implement starred files functionality in workspace
- Added state management for starred files, allowing users to star and unstar files.
- Updated local storage handling to persist starred files across sessions.
- Enhanced sidebar to display starred files, with a collapsed view for better accessibility.
- Refactored sidebar animation logic for improved performance and user experience.
* feat: enhance FileTree component with starring functionality
- Added support for starring and unstarring files within the FileTree component.
- Integrated starred files state management in the WorkspacePage, persisting changes to local storage.
- Updated UI to display starred files in a dedicated section with both collapsed and expanded views.
- Refactored FileTree and FileTreeItem components to accommodate new props for starring functionality.
* refactor: remove starring functionality from FileTree and update MarkdownViewer
- Removed starred file management from FileTree and FileTreeItem components.
- Updated MarkdownViewer to include starring functionality with a star button.
- Adjusted WorkspacePage to handle starred files display and interactions.
- Cleaned up related props and UI elements for improved clarity and performance.
* feat: add mobile components and safe area padding for improved mobile experience
- Introduced MobileBottomToolbar, MobileFileDrawer, and MobilePathSheet components for enhanced mobile functionality.
- Updated WorkspacePage to conditionally render mobile components based on device type.
- Added safe area padding in styles.css to accommodate iOS devices.
* feat: update MobileBottomToolbar to include currentPath prop and enhance UI elements
- Added currentPath prop to MobileBottomToolbar for displaying the current workspace path.
- Improved button styles and layout for better mobile usability.
- Adjusted icon sizes and spacing for a more consistent appearance across buttons.
* fix: update text color in MobileBottomToolbar based on currentPath prop
- Changed text color in the MobileBottomToolbar to reflect the presence of currentPath, enhancing visual feedback for users.
- Ensured consistency in UI elements for improved user experience.
* feat: enhance MobilePathSheet and WorkspacePage with validation logic
- Added validatedPath and pathValid props to MobilePathSheet for improved path validation handling.
- Updated button states in MobilePathSheet and WorkspacePage to reflect path validation status, enhancing user feedback.
- Improved input styling and layout for better usability on mobile devices.
* feat: integrate NavTabs component into MonitorPage and WorkspacePage
- Replaced existing navigation tab implementation with the new NavTabs component for a consistent UI across pages.
- Simplified the navigation structure by removing redundant tab elements while maintaining connection status visibility.
* refactor: simplify SessionList component structure and improve UI transitions
- Replaced motion.button with a standard button for better performance.
- Enhanced header and search input visibility with smoother opacity transitions.
- Updated platform filter buttons to improve accessibility and visual feedback.
- Refactored session list rendering for improved animation consistency and clarity.
* refactor: improve SessionList and NavTabs components for better UI and functionality
- Enhanced SessionList component with improved header visibility and transition effects.
- Updated NavTabs to include dropdown functionality with better accessibility and user interaction.
- Refactored styles for both components to ensure consistency and responsiveness across different states.
* refactor: update NavTabs component styles for improved UI consistency
- Increased font size for terminal header and footer text for better readability.
- Removed decorative dots from the terminal header to streamline the design.
- Adjusted padding in the terminal footer for a more balanced layout.
* fix: remove workspace sidebar scrollbar
* feat: add mobile components to MonitorPage for enhanced mobile experience
- Introduced MobileSessionDrawer and MobileMonitorToolbar components for improved mobile functionality.
- Updated MonitorPage to conditionally render mobile components based on device type.
- Enhanced layout and state management for mobile interactions.
---
.../monitor/MobileMonitorToolbar.tsx | 87 ++++
.../monitor/MobileSessionDrawer.tsx | 374 ++++++++++++++++++
src/components/monitor/SessionList.tsx | 166 ++++----
src/components/monitor/SettingsPanel.tsx | 3 +-
src/components/monitor/index.ts | 2 +
src/components/navigation/NavTabs.tsx | 173 ++++++++
src/components/navigation/index.ts | 1 +
src/components/workspace/FileTree.tsx | 2 +-
src/components/workspace/MarkdownViewer.tsx | 21 +-
.../workspace/MobileBottomToolbar.tsx | 61 +++
src/components/workspace/MobileFileDrawer.tsx | 146 +++++++
src/components/workspace/MobilePathSheet.tsx | 132 +++++++
src/components/workspace/index.ts | 3 +
src/hooks/useIsMobile.ts | 17 +
src/routes/monitor/index.tsx | 75 ++--
src/routes/workspace/index.tsx | 353 ++++++++++++-----
src/styles.css | 5 +
17 files changed, 1407 insertions(+), 214 deletions(-)
create mode 100644 src/components/monitor/MobileMonitorToolbar.tsx
create mode 100644 src/components/monitor/MobileSessionDrawer.tsx
create mode 100644 src/components/navigation/NavTabs.tsx
create mode 100644 src/components/navigation/index.ts
create mode 100644 src/components/workspace/MobileBottomToolbar.tsx
create mode 100644 src/components/workspace/MobileFileDrawer.tsx
create mode 100644 src/components/workspace/MobilePathSheet.tsx
create mode 100644 src/hooks/useIsMobile.ts
diff --git a/src/components/monitor/MobileMonitorToolbar.tsx b/src/components/monitor/MobileMonitorToolbar.tsx
new file mode 100644
index 0000000..adce87a
--- /dev/null
+++ b/src/components/monitor/MobileMonitorToolbar.tsx
@@ -0,0 +1,87 @@
+import { motion } from 'framer-motion'
+import { PanelLeft, Settings, Trash2 } from 'lucide-react'
+import { StatusIndicator } from './StatusIndicator'
+
+interface MobileMonitorToolbarProps {
+ onOpenDrawer: () => void
+ onOpenSettings: () => void
+ connected: boolean
+ connecting: boolean
+ sessionCount: number
+ actionCount: number
+ completedCount: number
+ onClearCompleted: () => void
+}
+
+export function MobileMonitorToolbar({
+ onOpenDrawer,
+ onOpenSettings,
+ connected,
+ connecting,
+ sessionCount,
+ actionCount,
+ completedCount,
+ onClearCompleted,
+}: MobileMonitorToolbarProps) {
+ return (
+
+