Commit Graph

2392 Commits

Author SHA1 Message Date
Mohamed Boudra
7284efd0fe Prototype streaming TTS chunks 2025-11-15 19:06:53 +01:00
Mohamed Boudra
8202985bad Interrupt focused agent before realtime turns 2025-11-15 18:35:13 +01:00
Mohamed Boudra
673c6f1594 Abort realtime turn on speech start 2025-11-15 18:21:02 +01:00
Mohamed Boudra
2a02f41182 refactor: implement agent cancellation and deletion with UI controls
Add cancel button during agent runs, real-time mode toggle in all states, and agent deletion via long-press action sheet. Server now handles cancel_agent_request and delete_agent_request messages, cleaning up agent state and notifying clients.
2025-11-15 18:13:04 +01:00
Mohamed Boudra
66b465a132 fix: update image picker media types 2025-11-15 17:49:41 +01:00
Mohamed Boudra
37d0fe0637 Run app tests in forked Vitest workers 2025-11-15 17:47:51 +01:00
Mohamed Boudra
e208f1c5bd Ensure unique fallback tool ids 2025-11-15 17:41:15 +01:00
Mohamed Boudra
b45583a2b2 refactor: standardize pending permission keying and user message hydration 2025-11-15 17:36:15 +01:00
Mohamed Boudra
e26219c967 test: cover tool call hydration preview 2025-11-15 17:33:56 +01:00
Mohamed Boudra
af7d7cedb0 Deduplicate replayed tool calls 2025-11-15 16:33:10 +01:00
Mohamed Boudra
edcfdf970d refactor(ui): extract diff viewer and tool call parsers into reusable components 2025-11-15 16:28:57 +01:00
Mohamed Boudra
1886898bf2 Fix image picker launcher crash 2025-11-15 15:36:22 +01:00
Mohamed Boudra
ddd10f0566 test: move stream harness into vitest 2025-11-15 15:26:49 +01:00
Mohamed Boudra
320328b0ca Work around Android dispatchDraw crash 2025-11-15 14:56:13 +01:00
Mohamed Boudra
b85deb2906 Fix duplicate keys for permission cards 2025-11-15 14:48:56 +01:00
Mohamed Boudra
1003d45004 Fix tool call deduping 2025-11-15 14:35:40 +01:00
Mohamed Boudra
900cc00c03 Highlight tool call pills 2025-11-15 13:49:16 +01:00
Mohamed Boudra
bd77d53e02 Fix hydrated tool call statuses and show tool outputs 2025-11-15 13:29:55 +01:00
Mohamed Boudra
b5daa1fa66 Filter active agents from resume list 2025-11-15 12:49:19 +01:00
Mohamed Boudra
3ba748ce7c Rename refresh menu label 2025-11-15 12:44:35 +01:00
Mohamed Boudra
6da27613aa Render todo lists in agent stream 2025-11-15 12:43:01 +01:00
Mohamed Boudra
1d9f6a0df3 feat: render tool call outputs 2025-11-15 12:22:14 +01:00
Mohamed Boudra
c37e499562 refactor(agent): unify timeline events with tool_call schema and add resume/refresh capabilities 2025-11-15 11:58:41 +01:00
Mohamed Boudra
8cf808b14d refactor(agent): consolidate agent system into unified AgentManager with provider-based architecture
Replace separate ACP and agent-types modules with unified AgentManager using provider pattern. Migrate Claude and Codex implementations to provider-specific clients. Streamline session-agent integration, remove old ACP notification types, and introduce agent timeline events. Delete obsolete documentation and test files. Add AgentRegistry for persistence and agent-stream-based communication pattern.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 02:06:09 +01:00
Mohamed Boudra
b2c89df7c7 refactor(file-explorer): add deep linking, path navigation, diff preview, and Codex session persistence 2025-11-14 19:02:54 +01:00
Mohamed Boudra
f766a18d7b refactor(file-explorer): centralize navigation state in session context and optimize initialization 2025-11-11 18:15:46 +01:00
Mohamed Boudra
c5b30ed878 Add read-only file explorer 2025-11-07 20:36:23 +01:00
Mohamed Boudra
30686df548 chore: update expo-clipboard to v8 and fix typos in documentation 2025-11-07 09:50:27 +01:00
Mohamed Boudra
a118fd3315 refactor(agent): add wait_for_agent tool and simplify prompt sending API 2025-11-03 11:47:15 +01:00
Mohamed Boudra
1d22fe46e7 refactor: streamline agent orchestration and add blockquote styling
- Simplify agent-prompt.md with clearer delegation rules and workflow
- Add blockquote markdown styling to message component
- Update agent type to support both claude and codex agents

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 19:59:10 +01:00
Mohamed Boudra
6a88c585e3 feat(ui): improve dropdown menu contrast with lighter popover background
- Update popover background color from #09090b to #18181b (zinc-900)
- Apply popover background to dropdown menu instead of card color
- Provides better visual separation and elevated appearance

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 22:42:29 +01:00
Mohamed Boudra
54c19f89bf fix(git-diff): refresh diff data on screen mount and ignore agents.json
- Always request fresh git diff when screen opens (no caching)
- Add packages/server/agents.json to .gitignore (runtime data)
- Remove agents.json from git tracking

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 22:36:24 +01:00
Mohamed Boudra
c5446e808d feat(app): add git diff viewer with dropdown menu and UI improvements
- Add git diff viewer screen to display local changes per agent
  - Parse git diff output into file sections with syntax highlighting
  - Horizontal scrolling for long diff lines (no text wrapping)
  - Request diff data on mount via new WebSocket messages

- Add dropdown menu to agent header
  - Three-dot menu button with "View Changes" option
  - Position menu below button using window-aware measurements
  - Account for safe area insets and orientation changes

- Implement server-side git operations
  - Add git_diff_request/response message types
  - Execute `git diff HEAD` in agent's working directory
  - Handle errors gracefully with proper error messages

- Update session context for git diff state
  - Add gitDiffs Map to store diff content per agent
  - Add requestGitDiff helper function
  - WebSocket handler for git_diff_response messages

- Improve agent input area layout
  - Move status bar inline with attachment button
  - Full-width text input above button row
  - Better spacing and visual hierarchy

- Simplify agent status bar to show only status dot

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 22:30:43 +01:00
Mohamed Boudra
086dde30cc feat(agent): add git diff viewer and improve permission handling
- Add git diff viewer screen accessible via agent dropdown menu
- Implement git_diff_request/response WebSocket messages
- Add dropdown menu to agent screen header with "View Changes" option
- Clear pending permissions when starting new agent turn to prevent conflicts
- Treat agent refusals as completed rather than failed state
- Add test coverage for permission handling edge cases
- Configure vitest to run in single-threaded mode for stability
- Remove redundant wrapper in agent stream view

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 22:19:16 +01:00
Mohamed Boudra
70a1852e57 refactor(modal): replace bottom sheet with native modal and custom animations
Replace @gorhom/bottom-sheet with React Native's native Modal component and implement custom slide-in/slide-out animations using Reanimated. This provides better control over modal behavior and animations while reducing dependency on external libraries.

Key changes:
- Replace BottomSheetModal with native Modal component
- Implement custom slide animations using Reanimated shared values
- Add backdrop fade in/out animations
- Extract modal sections into focused components (ModalHeader, WorkingDirectorySection, AssistantSelector, ModeSelector, WorktreeSection)
- Add responsive layout support with compact/wide screen detection
- Fix keyboard animation to use transform instead of padding
- Improve modal lifecycle management with mount/unmount state tracking

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 20:37:14 +01:00
Mohamed Boudra
edf47a24bc refactor(agent): consolidate agent type definitions and add multi-agent-type support 2025-10-26 18:03:03 +01:00
Mohamed Boudra
700840da5a refactor(agent-stream): convert ScrollView to inverted FlatList for better performance 2025-10-26 17:04:22 +01:00
Mohamed Boudra
2c1b5b13fe fix(agent): track initialization state to prevent duplicate agent initialization 2025-10-26 16:28:55 +01:00
Mohamed Boudra
cf7e14e36b fix(keyboard): use transform instead of padding for keyboard animation 2025-10-26 16:19:30 +01:00
Mohamed Boudra
985e9db6db fix(chat): maintain scroll position when keyboard appears
When the keyboard appeared, the chat content would get pushed up and the user would lose sight of what they were viewing. This happened because the outer container had keyboard-aware padding, but the ScrollView's content padding was static.

Now the ScrollView's contentContainerStyle receives animated padding that matches the keyboard height, ensuring the content maintains its relative position and the user keeps seeing the same messages when the keyboard appears.

Changes:
- Pass keyboardHeight SharedValue to AgentStreamView
- Add animated contentPaddingStyle that adjusts for keyboard
- Apply dynamic padding to ScrollView contentContainerStyle
- Content now smoothly adjusts as keyboard animates in/out

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 15:08:52 +01:00
Mohamed Boudra
e82a7410e7 fix(agent-stream): prevent visible scroll animation on initial load
When loading an agent chat with existing messages, the ScrollView would render at the top and then animate scrolling to the bottom, creating a jarring user experience.

Now the initial scroll to bottom happens instantly (no animation), and only subsequent auto-scrolls (when new messages arrive) are animated. This provides a smooth loading experience while maintaining smooth animations for new content.

Changes:
- Add hasScrolledInitially ref to track first scroll
- Use animated: false for initial scroll, animated: true for subsequent scrolls
- Remove debug console.log from scroll handler

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 15:05:11 +01:00
Mohamed Boudra
d47019919e refactor(ui): improve footer controls layout and add scroll-to-bottom button
Simplify agent screen layout by removing redundant status bar container and consolidating all footer controls into the input area component. Add smooth fade animations for realtime mode transitions and a floating scroll-to-bottom button for better UX.

Changes:
- Consolidate status bar and controls into AgentInputArea for cleaner layout hierarchy
- Add scroll-to-bottom button to AgentStreamView with fade animations
- Fix realtime controls stacking on non-agent screens
- Add lastActivityAt serialization to MCP server agent responses
- Remove unnecessary layout wrapper in agent screen

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 15:03:33 +01:00
Mohamed Boudra
c4bb10d3c9 feat: add voice note recording overlay with transcription feedback and worktree support 2025-10-26 13:48:14 +01:00
Mohamed Boudra
dcfdccf07f fix(worktree): implement worktree creation for agent isolation
- Add worktree utility functions for git worktree management
- Fix stale closure issue in create-agent-modal causing worktreeName to not be sent
- Refactor create-agent-modal to use useCallback for all functions in proper order
- Add tilde path expansion before worktree creation to fix "Not in a git repository" error
- Add worktreeName parameter to create_agent_request WebSocket message
- Add debug logging for worktree creation flow
- Remove noisy logging (message chunk updates, session updates, agent update notifications)

The worktree feature allows creating isolated git worktrees for each agent,
enabling work on different branches simultaneously without conflicts.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 13:28:05 +01:00
Mohamed Boudra
7d1ef63c8f chore(deps): upgrade claude-code-acp to v0.8.4 and optimize image upload implementation 2025-10-26 09:07:41 +01:00
Mohamed Boudra
a3224175ee feat: add image upload support to agent chat with attachment preview 2025-10-26 07:35:06 +01:00
Mohamed Boudra
faf087b3a6 refactor: standardize footer height calculations and alignment across components 2025-10-25 22:14:15 +02:00
Mohamed Boudra
a405c29ab1 feat: replace single realtime button with three-button footer navigation
Replace the centered realtime button in the global footer with three buttons:
- Agents: Navigate to home screen
- New Agent: Open create agent modal
- Realtime: Start realtime mode (existing functionality)

This provides easier access to core navigation actions from any non-agent screen.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-25 21:59:10 +02:00
Mohamed Boudra
8d591da671 refactor: add dynamic input height, agent sorting, and last activity tracking 2025-10-25 21:56:44 +02:00
Mohamed Boudra
1fd9b77680 refactor: upgrade claude-code-acp to v0.8.3 and optimize agent initialization flow 2025-10-25 19:37:13 +02:00