Commit Graph

334 Commits

Author SHA1 Message Date
Mohamed Boudra
f0cafb4607 Refetch repo info when toggling worktree options 2026-01-23 12:59:13 +07:00
Mohamed Boudra
cb39f4c5c2 Merge branch 'review/tool-call-display-parsing' 2026-01-23 11:28:50 +07:00
Mohamed Boudra
69f32da90d Run worktree setup async and stream status 2026-01-23 11:28:48 +07:00
Mohamed Boudra
27c493922c Replace checkout diff parsing with async highlighted diff 2026-01-23 11:23:56 +07:00
Mohamed Boudra
f8ba0ff239 Fix agent model fallback and title/branch tool parsing 2026-01-23 10:14:46 +07:00
Mohamed Boudra
53155ebcc9 feat(app): checkout diff pane styling and e2e test support
- Style diff file cards edge-to-edge with single divider between files
- Remove monospace font from filenames for better readability
- Add checkout-ship e2e test for app
- Export Page type from e2e fixtures
- Add checkout query hooks for diff, status, and PR status
2026-01-23 08:37:15 +07:00
Mohamed Boudra
6770e8d510 fix(app): remove test connection button that broke host status
The Test button in settings was creating a separate DaemonClientV2
instance without the Tauri WebSocket transport. In the desktop app,
this caused origin rejection (tauri://localhost) which then overwrote
the connection status to offline, even though the main session
connection was working fine.

Removed the redundant test functionality since:
- The daemon client auto-reconnects
- Connection status is already tracked and displayed via SessionProvider
- The test was actively harmful by creating a rogue client

Also simplified waitForDaemonRestart to rely on auto-reconnect instead
of polling with a separate connection.
2026-01-22 21:31:45 +07:00
Mohamed Boudra
7157a43a74 feat(pairing): QR offer + app scanner 2026-01-22 09:24:08 +07:00
Mohamed Boudra
ca8d09434b fix(app): improve host removal flow 2026-01-22 08:52:30 +07:00
Mohamed Boudra
42fb56890b Match thinking badge behavior to tool badge 2026-01-21 15:13:34 +07:00
Mohamed Boudra
ddbcc272f1 feat: migrate from wsUrl to endpoints + add relay transport and pairing 2026-01-21 14:55:23 +07:00
Mohamed Boudra
ae9a98223f refactor: rename conversation to voice conversation throughout stack 2026-01-21 11:43:16 +07:00
Mohamed Boudra
ebb97a0184 feat(app): inline desktop file explorer preview 2026-01-21 11:16:35 +07:00
Mohamed Boudra
e1b85d8f95 fix(app): guard Tauri window import for Metro 2026-01-21 11:16:32 +07:00
Mohamed Boudra
513138ac13 Fix e2e daemon isolation and fast model defaults 2026-01-20 13:36:06 +07:00
Mohamed Boudra
facd99ab13 Fix dictation lifecycle and add real STT e2e 2026-01-20 13:09:22 +07:00
Mohamed Boudra
687ea706b1 test(app): add E2E tests and improve form state with test coverage 2026-01-20 12:12:29 +07:00
Mohamed Boudra
d9c487dd54 feat: add Tauri desktop app support and terminal management 2026-01-20 10:09:35 +07:00
Mohamed Boudra
d964415eba feat(server): improve task CLI with steering, execution order, and planner guidance
- Fix steering notes to check scope task instead of leaf task
- Fix NOT_DONE replan to use scope for bird's eye view
- Pass reason to planner prompt ("Why you were called" section)
- Add execution-order.ts with reusable computeExecutionOrder and buildSortedChildrenMap
- Make 'tree' an alias for 'plan' command
- Add comprehensive help text for run command and acceptance criteria
- Add planner guidance for propagating requirements to subtasks
2026-01-17 11:46:38 +07:00
Mohamed Boudra
420f25f1e9 feat: add download toast, e2e permission tests, and update favicons
- Add download toast component with progress indicator and auto-dismiss
- Add download store for managing file download state
- Add e2e tests for permission prompts (allow/deny flows)
- Add global setup for e2e tests with isolated daemon instance
- Update favicon assets with new design
- Refactor agent-stream-view to use shared tool-call-details component
- Simplify file-explorer-pane component
- Clean up unused screenshots and PRODUCTION.md

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-01-16 20:23:07 +07:00
Mohamed Boudra
f733f2852d fix(app): adjust agent list item spacing 2026-01-16 16:25:53 +07:00
Mohamed Boudra
ed50c168ad refactor(app): unified panel state machine for mobile sidebars
Replace separate sidebar stores with a unified panel store that uses a
discriminated union state machine on mobile. This makes it impossible
for both the agent list and file explorer sidebars to be open at the
same time on mobile.

Mobile state machine (mobileView):
- 'agent': Main agent view (no overlay panel)
- 'agent-list': Agent list sidebar (left overlay)
- 'file-explorer': File explorer sidebar (right overlay)

Desktop retains independent boolean toggles since sidebars sit
alongside content rather than overlaying it.

Key changes:
- Created stores/panel-store.ts with unified state
- Deleted stores/sidebar-store.ts and explorer-sidebar-store.ts
- Updated all components to use new panel store
- Animation contexts derive isOpen from unified state
2026-01-16 16:19:49 +07:00
Mohamed Boudra
ef853914d5 feat: improve agent stream view UI, fix history replay timestamps, and enhance planner/worker loop 2026-01-15 15:10:08 +07:00
Mohamed Boudra
aa090748a6 chore: sync all local changes 2026-01-14 19:23:27 +07:00
Mohamed Boudra
cc815f6fa2 feat: add favicon and app icon images 2026-01-14 19:22:57 +07:00
Mohamed Boudra
6ac2ef7366 feat: add favicon status hook 2026-01-14 19:19:04 +07:00
Mohamed Boudra
83b989124e fix: import unistyles config before components 2026-01-14 19:17:47 +07:00
Mohamed Boudra
6c9abe0854 feat: add web build and deploy scripts for app 2026-01-14 19:12:50 +07:00
Mohamed Boudra
f1827731ed fix: resolve type errors for CI deployment 2026-01-14 19:11:01 +07:00
Mohamed Boudra
70e2d66dd5 feat: persist draft messages and UI refinements
- Add dedicated draft-store with AsyncStorage persistence for drafts
  that survive app refresh/crash
- Reduce markdown bold weight from bold to medium (500)
- Various theme and component style updates
- Server bootstrap and config improvements

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-01-14 10:07:54 +07:00
Mohamed Boudra
34a49c147f feat: add smart notification routing with device-aware heartbeats and push support 2026-01-13 16:07:34 +07:00
Mohamed Boudra
4803589ea1 Add copy button for assistant turns in agent stream
- Add TurnCopyButton component that copies all assistant messages from a turn
- Detect turn boundaries (before user message or end of stream when not running)
- Lazily compute turn content on click to avoid render-time overhead
- Ghost icon style with hover effect (color lightens)
2026-01-13 12:06:33 +07:00
Mohamed Boudra
2fa7ec17cb WIP: Refactor and polyfill updates
- Add crypto polyfill for Expo
- Update daemon client and websocket server
- Simplify codex agent tests
2026-01-13 11:06:21 +07:00
Mohamed Boudra
868f9fb571 WIP: Large refactor checkpoint
- Refactored daemon client and RPC layer
- Added new client package structure in server
- Removed legacy hooks (use-daemon-request, use-session-rpc, use-websocket)
- Added use-daemon-client hook
- Added e2e test infrastructure with Playwright
- Updated agent providers and session handling
- Removed codex-sdk patches
2026-01-12 13:30:20 +07:00
Mohamed Boudra
32fe3bd4a0 Add OS notifications for agent attention 2026-01-11 23:46:14 +07:00
Mohamed Boudra
f81fd1c01a Add command autocomplete and stream spacing updates 2026-01-11 22:36:34 +07:00
Mohamed Boudra
0ec2fc62db feat(agent): add command support to ClaudeAgentSession
- Add AgentSlashCommand and AgentCommandResult types
- Add listCommands() and executeCommand() to AgentSession interface
- Implement command support in ClaudeAgentSession
- Fix user message handling for local command output (string content)
- Add POC scripts for command investigation
- Add TDD tests for command functionality
2026-01-11 17:16:08 +07:00
Mohamed Boudra
e57cad2660 feat(app): extract form preferences into dedicated hook with per-provider storage 2026-01-11 16:21:59 +07:00
Mohamed Boudra
ebabcc09e5 feat: add opencode provider and refactor stream model to head/tail architecture 2026-01-11 16:00:25 +07:00
Mohamed Boudra
7fe10f9b4a Prompt is too long 2026-01-11 09:29:00 +07:00
Mohamed Boudra
f5810c18ac feat(app): add text selection and fix shell error display
- Add selectable prop to all Text components in tool call content areas
- Add ShellErrorResultSchema to parse tool_result error format
- Update ShellToolCallSchema to extract content from error results
- Also handle tool_result extraction in formatValue as fallback
2026-01-11 00:20:29 +07:00
Mohamed Boudra
018e3b6a8c feat(app): extract tool call details for inline/sheet display
- Create ToolCallDetailsContent component for shared content rendering
- Add useToolCallDetails hook for parsing tool call data
- Desktop (md+): expand tool call details inline below badge
- Mobile (xs/sm): open bottom sheet on tap (unchanged behavior)
- Remove unused props from ToolCall component

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-01-11 00:10:26 +07:00
Mohamed Boudra
a0abf4a79f feat(app): add Read tool call display with file path and content
- Add ReadToolCallSchema to parse Read tool calls (file_path, offset, limit)
- Display file path immediately from input (before result arrives)
- Show offset/limit range when specified
- Display file content in scrollable area when result completes

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-01-10 23:55:44 +07:00
Mohamed Boudra
9048198045 fix(app): use gesture handler ScrollView in tool call sheet 2026-01-10 23:51:06 +07:00
Mohamed Boudra
3ea26d7504 chore(app): remove temporary test screenshots 2026-01-10 23:49:24 +07:00
Mohamed Boudra
5aebb418df fix(app): auto-grow text input on iOS
Remove explicit height style on iOS TextInput - only use minHeight/maxHeight
to allow native auto-sizing. Web still uses explicit height for controlled
sizing via onContentSizeChange measurement.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-01-10 23:47:37 +07:00
Mohamed Boudra
f073be0b98 feat(app): improve tool call sheet with word-level diff and better UX
- Add word-level highlighting using LCS algorithm for edit diffs
- Match diff colors to explorer sidebar (GitHub-style rgba backgrounds)
- Use discriminated union for tool call parsing (shell, edit, generic)
- Add horizontal scroll for bash/command output instead of wrapping
- Remove status badge from bottom sheet header
- Fix sheet snap points (60%/95%) and disable dynamic sizing
- Add min-width to diff viewer for full-width backgrounds

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-01-10 23:37:13 +07:00
Mohamed Boudra
42129926ae feat(app): add maestro tests, download progress, and task hierarchy
Add Maestro E2E test flows for app launch and sidebar interactions. Implement download progress tracking with speed/ETA display in file explorer. Extend task CLI with parent-child hierarchy, body content from stdin, and ancestor context in task show. Fix explorer sidebar gesture to allow horizontal scrolling while preserving close swipe. Replace hardcoded monospace font with Fonts.mono constant. Fix RefreshControl to only show spinner on manual pull-to-refresh.
2026-01-10 22:44:57 +07:00
Mohamed Boudra
584b0413a5 refactor: unify layout widths and font sizes
- Add MAX_CONTENT_WIDTH (820px) constant for consistent chat/form widths
- Bump theme font sizes (base now 16px) for better readability
- Apply max width to stream view, input area, and new agent form
- Position new agent form at bottom of scroll area
- Remove working directory helper text
- Add cmd+b sidebar toggle when textarea is focused
2026-01-09 19:11:35 +07:00
Mohamed Boudra
2d03e86bcb feat: use mnemonic-id for worktree names
Replace prompt-based slugifying with mnemonic-id package for generating
human-readable worktree names like "hungry-hippo". Names are generated
when the worktree toggle is enabled rather than derived from the prompt.
2026-01-09 19:00:41 +07:00