Commit Graph
265 Commits
Author SHA1 Message Date
Bohdan Triapitsyn 2a895311d9 feat: enhance autocomplete components with agent and command metadata support 2026-01-08 20:19:33 +02:00
Bohdan Triapitsyn a2f2d91a22 feat: add SkillAutocomplete component and integrate skill selection in ChatInput 2026-01-08 19:58:31 +02:00
Bohdan Triapitsyn b9ed2217a6 feat: enhance environment path handling with buildAugmentedPath function 2026-01-08 19:33:43 +02:00
Bohdan Triapitsyn 04d6a2b2bf feat: add VS Code runtime detection to session sidebar and agent manager components 2026-01-08 17:59:36 +02:00
Bohdan Triapitsyn 59031ff99b chore: update changelog with model variants support and agent cycling shortcut change 2026-01-08 17:21:44 +02:00
Bohdan Triapitsyn bc4425567d feat: add keyboard shortcuts for cycling agent and thinking variant 2026-01-08 17:20:33 +02:00
Bohdan Triapitsyn 4b0ae1d95f feat: add variant support across model selection and multi-run components 2026-01-08 17:01:24 +02:00
Bohdan Triapitsyn ab731fdc79 feat: add default variant support in settings and UI components 2026-01-08 16:08:51 +02:00
Bohdan Triapitsyn 8e777a94c2 feat: add support for model variants across chat components and session management 2026-01-08 14:48:06 +02:00
wienans 8ff7b61b8a Windows Git Paths fixes (#118)
* Initial plan

* fix(vscode): improve Windows path handling in git service

- Remove shell: true from execGit spawn options to fix issues with
  git paths containing spaces on Windows
- Fix normalizePath to handle tilde expansion correctly by expanding
  first, then normalizing slashes

Co-authored-by: wienans <40465543+wienans@users.noreply.github.com>
2026-01-08 09:35:07 +02:00
Bohdan Triapitsyn 2cbec5c3ce release v1.4.4 2026-01-08 02:05:17 +02:00
Bohdan Triapitsyn cc09f802ce feat: add new session button and integrate worktree session creation logic 2026-01-08 01:48:42 +02:00
Bohdan Triapitsyn 8902662f74 feat: add rename branch functionality with UI integration 2026-01-08 01:13:51 +02:00
Bohdan Triapitsyn d6f74087c4 feat: update SessionSidebar to include new session creation and worktree handling 2026-01-08 00:29:20 +02:00
Bohdan Triapitsyn 29ba318f0f feat: enhance SessionSidebar with worktree metadata and UI updates 2026-01-08 00:06:02 +02:00
Bohdan Triapitsyn c7700d5384 feat: add auto-create worktree setting and related UI components 2026-01-07 23:37:32 +02:00
Bohdan Triapitsyn b6646b6b3e feat: enhance worktree session creation with loading screen 2026-01-07 23:00:26 +02:00
Bohdan Triapitsyn d92a1ab297 feat: implement worktree session creation and management
- Added `createWorktreeSession` utility to handle the creation of new sessions with auto-generated worktrees.
- Introduced branch name generation utilities for creating unique and friendly branch names.
- Updated `CommandPalette` to trigger worktree session creation via a command.
- Refactored keyboard shortcuts to support new worktree session creation with Shift + Cmd/Ctrl + N.
- Enhanced project settings to include worktree defaults (branch prefix, base branch, auto-create option).
- Updated persistence logic to preserve worktree defaults when saving project settings.
- Modified menu actions to initiate new worktree sessions.
- Ensured proper handling of existing branches to avoid conflicts during worktree creation.
2026-01-07 22:06:28 +02:00
Bohdan Triapitsyn 4f6eea9ea5 refactor: reorganize worktree action buttons in SessionDialogs component 2026-01-07 22:01:49 +02:00
Bohdan Triapitsyn 4433888903 feat: implement worktree setup commands management
- Introduced `readFile` and `writeFile` methods in the FilesAPI for reading and writing files.
- Added `execCommands` method to execute shell commands in a specified directory.
- Implemented `runWorktreeSetupCommands` function to handle setup commands for worktrees.
- Created `OpenChamberConfig` service for managing project-specific configuration, including setup commands.
- Enhanced `useMultiRunStore` to save and execute setup commands during multi-run creation.
- Updated VSCode bridge to handle file read/write and command execution requests.
- Added server endpoints for reading and writing files, and executing shell commands.
2026-01-07 22:01:49 +02:00
Martin DONADIEU b8463b787b feat: add unified dev script for concurrent development (#113)
Add a "dev" script that runs the server, web build, and UI dev mode
concurrently with colored output for easier development workflow.
2026-01-07 21:52:11 +02:00
Martin DONADIEU 11fb61a883 feat: add QR code and password URL for Cloudflare tunnel (#112)
* feat: add QR code and password URL parameter for Cloudflare tunnel

Add --tunnel-qr flag to generate scannable QR code for tunnel URL in terminal.
Add --tunnel-password-url flag to include password as URL parameter for auto-login.
Frontend now automatically detects and submits password token from URL.

* docs: update README with tunnel QR and password URL features

Add dev script for concurrent server, web, and UI watch mode.
2026-01-07 21:51:45 +02:00
wienans 6a06d57a95 Add Copy Worktree Path in More Icon for Agent Manager (#115) 2026-01-07 21:50:48 +02:00
Bohdan Triapitsyn 18c5b4c7b5 feat: add multi-project support (#110)
* feat: Implement project management store with project path validation and synchronization

- Added `useProjectsStore` for managing projects, including adding, removing, renaming, and validating project paths.
- Implemented persistence for projects and active project ID using safe storage.
- Introduced synchronization from desktop settings to keep project data consistent.
- Enhanced session store to manage sessions by directory and added new methods for session management.
- Updated todo store to fetch session todos based on the directory context.
- Refactored server code to validate and resolve project directories for various API endpoints.
- Added project entry validation and sanitization to ensure data integrity.

* feat(settings): migrate legacy project settings and update settings loading logic

* feat: enhance project management with directory-aware settings and improved agent/command source handling

* feat: enhance session and project management with directory-aware settings and improved configuration refresh logic

* feat: enhance project management with worktree manager integration and project directory resolution

* feat: enhance agent groups store with project directory resolution and loading logic

* feat: add heartbeat management and global wrapping for SSE blocks in agent and chat providers

* feat: refactor command and project handling in useCommandsStore

- Replaced useDirectoryStore with useProjectsStore to manage project paths.
- Introduced getRequestDirectory function to determine the active project directory.
- Updated command fetching to respect project-level scoping.
- Enhanced error handling and logging for command configuration fetching.
- Improved command configuration saving and updating to utilize project directory context.

feat: enhance project path normalization in useProjectsStore

- Added resolveTildePath function to expand paths starting with ~.
- Updated normalizeProjectPath to utilize home directory for path expansion.

fix: update permission handling in useSessionStore

- Changed Permission type to PermissionRequest for clarity.
- Updated respondToPermission method to use requestId instead of permissionId.

refactor: improve permission utilities

- Introduced types for PermissionAction and PermissionRule.
- Enhanced getAgentDefinition and resolveConfigStore functions for better type safety.
- Added resolvePermissionAction to streamline permission resolution logic.

feat: add agent configuration retrieval endpoint

- Implemented new API endpoint to fetch agent configuration based on project directory.
- Enhanced getAgentPermissionSource to prioritize project-level permissions.

chore: update SDK version in package.json files

- Bumped @opencode-ai/sdk version to ^1.1.1 across all relevant package.json files.

refactor: streamline bridge message handling

- Updated handleBridgeMessage to accept directory parameter for agent and command requests.
- Improved local API request handling to extract directory from query parameters and headers.

feat: enhance project configuration management

- Added functions to retrieve and merge project configuration paths.
- Improved handling of existing project configuration files for agents and commands.

* feat: enhance VSCode integration and session management

- Added support for a sticky sidebar header background in light and dark themes.
- Introduced functions to read VSCode workspace directory and check if running in VSCode.
- Implemented detailed logging for session loading and creation processes.
- Enhanced session filtering based on directory structure and canonical paths.
- Added a new method to reorder projects and prevent modifications in VSCode workspace.
- Improved error handling and logging for app initialization and markdown file parsing.
- Updated API checks and health checks to ensure readiness before proceeding.
- Refactored code for better readability and maintainability across various modules.

* feat: improve agent and branch selection logic, enhance session management, and update multi-run creation response

* feat: add worktree management actions in agent group detail and sidebar, including delete and keep only options

* fix(ui): share IME guard and cover multi-run

* fix(session): reduce maximum visible sessions in group from 7 to 5
2026-01-06 21:31:04 +02:00
madebyjun 8aa379e313 fix(chat): prevent message send during IME composition (#107)
* fix(chat): prevent message send during IME composition

Add isComposing check to ChatInput to prevent messages from being sent
during Japanese/CJK character conversion. This fixes the issue where
pressing Enter to confirm IME composition would immediately send the
message instead of just completing the character conversion.

Changes:
- Add early return in handleKeyDown when IME is composing
- Add explicit isComposing check to Enter key handler

Fixes issue where Enter during IME composition sends incomplete text.

* fix(chat): improve IME composition detection with keyCode 229 fallback

Add isIMECompositionEvent helper function that checks both isComposing
and keyCode === 229, as recommended by MDN. This fixes IME input issues
on WebKit-based browsers (including Tauri WebView on macOS) where
compositionend may fire before keydown, causing isComposing to be false
when Enter key is processed.

Changes:
- Add isIMECompositionEvent helper function with dual detection
- Update handleKeyDown to use the new helper for IME checks

Fixes MacUI desktop app issue where pressing Enter during IME
composition would send the message instead of confirming the input.

* fix(agent-manager): prevent message send during IME composition

Apply the same IME composition fix as ChatInput to AgentManagerEmptyState.
Add isIMECompositionEvent helper and check it in handleKeyDown to prevent
accidental form submission when confirming IME input with Enter key.

* fix(agent-manager): add redundant IME check to Enter key handler

Add explicit isIMECompositionEvent check to the Enter key condition in
handleKeyDown. Although the early return already handles this, this
change ensures the implementation pattern matches ChatInput.tsx exactly
for consistency and safety.
2026-01-06 19:48:18 +02:00
wienans af01995c3b feat(vscode): Delete Agent Group (#109) 2026-01-06 19:46:25 +02:00
wienans b0bfa739e1 feat(multi-run): Agent Selector (#103)
* Add Agent Selector

* Send on Enter

* Allow multi run with 1 Model for Agent Manager

* Update packages/ui/src/stores/useMultiRunStore.ts

* Update Changelog
2026-01-04 16:53:44 +02:00
Bohdan Triapitsyn 45b3d1d920 feat(event-stream): add global event stream and activity tracking
Add global event stream endpoint for cross-session activity monitoring
Support multiple concurrent SSE subscriptions with scoped connections
Enhance session activity detection from various event types
2026-01-04 10:50:35 +02:00
Bohdan Triapitsyn 9d1aceeb6d fix: make model selector dropdowns responsive to viewport 2026-01-04 01:24:29 +02:00
Bohdan Triapitsyn d86105fcb2 release v1.4.3 2026-01-04 00:36:59 +02:00
Bohdan Triapitsyn 8965d7841e fix(agent-manager): fetch sessions from worktree directories 2026-01-04 00:11:42 +02:00
Bohdan Triapitsyn 98fee8a8c0 fix(vscode): improve extension activation and error handling 2026-01-03 23:37:08 +02:00
wienans 0bccf71996 feat(vscode) Agent Manager (#87)
* Add Agent Manager

* Basic Mock UP

* Fix Comand naming Ctrl+P Uses Category to group

* Move the UI in views

* Agent Manager Landing Page

* Fix attachment buig

* Change Session Name for multi run to incoporate groupSlug

* First running UI

* Fix Max Model Multi Run

* Rework Agent Group detection

* ignore false positives with ' ' in it

* Simplify Logic

* remove unused dropdowns

* Clean up

* Update Changelog
2026-01-03 23:11:16 +02:00
aptdnfapt 9887b25864 Add permission asking UI and subAgent session navigation footer (#101)
* feat: add support for OpenCode permission.asked event

Implement UI handling for the new permission.asked event from OpenCode's
PermissionNext system, allowing tools configured with "ask" in opencode.json
to prompt user for approval.

Changes:
- Add permission.asked event handler in useEventStream
- Add patterns[] and always[] fields to Permission type
- Display patterns being requested in PermissionCard
- Show what "Always Allow" will auto-approve

This enables the permission asking feature where tools can require user
approval based on opencode.json configuration.

* feat: add button to open subAgent session from task tool

When an agent uses the task tool to create a subagent session,
a new "Open subAgent session" button is now displayed next to
the task tool output. Clicking this button navigates to the
child session in the chat view.

The button shows only when a sessionId is available in the task
metadata and uses the external link icon to indicate it opens
a separate session context.
2026-01-03 23:07:08 +02:00
Bohdan Triapitsyn d971836962 fix: switch to jsonc-parser for config file parsing in vscode extension 2026-01-03 15:02:50 +02:00
Bohdan Triapitsyn b97399a5af release v1.4.2 2026-01-03 14:53:19 +02:00
Bohdan Triapitsyn b9fb36f585 feat: refactored timeline dialog visuals and update keyboard shortcuts 2026-01-03 14:45:46 +02:00
Bohdan Triapitsyn f2507d58cf feat: migrate to OpenCode SDK v2
Update all import statements to use @opencode-ai/sdk/v2
Modify Vite configurations to alias new SDK path
Update API client method signatures for SDK v2 compatibility
2026-01-03 13:39:59 +02:00
Bohdan Triapitsyn 5029acfb9d fix(session): refresh sessions list after worktree archive operation 2026-01-03 02:37:55 +02:00
Bohdan Triapitsyn a0eac480b4 refactor: update keyboard shortcuts to prevent conflicts (#100)
Change Keyboard Shortcuts dialog shortcut from Cmd+H to Cmd+.
Update memory debug shortcut from Cmd+Shift+M to Cmd+Shift+D
Modify model selector shortcut to use Cmd+Shift+M
2026-01-03 02:27:10 +02:00
Michael Sakhniuk ff825c7651 feat: update the shortcuts in the desktop app for macOS (#96)
* feat(ui): update keyboard shortcuts to use platform-appropriate modifier keys

* fix(macos): update keyboard shortcuts to use Cmd modifier

Change Command Palette shortcut from Ctrl+X to Cmd+K
Update all menu shortcuts to use Cmd instead of Ctrl on macOS

* Fix linter issue
2026-01-03 02:18:57 +02:00
aptdnfapt 025a9a6b80 feat: implement Undo/Redo/Timeline and Fork Features and fixed opencode.json reading issue on broken json (#99)
* feat: add /undo, /redo, /timeline slash commands and fork button

- Add /undo command to revert to previous user message
- Add /redo command to redo previously undone messages
- Add /timeline command to show conversation history
- Add fork button on user messages (hover) to create new session
- Add TimelineDialog component for navigating conversation history
- Show undo/redo/timeline in autocomplete when session exists
- Fix fork to use SDK session.fork API
- Silent no-op behavior for undo/redo when no messages (matches OpenCode CLI)

* fix: correct fork session endpoint and session switching

- Add hybrid SDK approach using v1 for existing methods and v2 for fork only
- v2 SDK has correct endpoint /session/{sessionID}/fork instead of broken /session/{id}/fork
- Fix forkFromMessage to use setCurrentSession instead of direct set
- Ensures both useSessionStore and useSessionManagementStore are consistent
- Fixes issue where forked sessions appeared empty until sending a new message

* fix: use direct fetch for fork to avoid v2 SDK build errors

- Remove v2 SDK imports and hybrid SDK approach
- Use direct fetch() call to /api/session/{sessionID}/fork endpoint
- Avoids type conflicts between v1 and v2 SDK
- Bypasses broken v1 SDK fork endpoint (wrong path parameter)
- All codebase now uses v1 SDK consistently

* fix: use jsonc-parser for config file parsing

- Replace strip-json-comments + JSON.parse with jsonc-parser
- Handles comments, trailing commas, and unquoted keys
- Matches OpenCode CLI config parsing behavior
- Fixes SyntaxError when reading global opencode.json config

* feat: improve timeline dialog with loading state and search

- Add loading spinner on fork button during operation (~30s on big sessions)
- Refresh session list after fork so new session appears in sidebar immediately
- Add search bar to filter messages by prompt text content
- Show 'No messages found' when search has no results
- Disable fork button while forking to prevent duplicate operations
2026-01-03 01:33:35 +02:00
Bohdan Triapitsyn da7f0679d8 fix(session): handle worktree deletion without sessions 2026-01-03 01:20:56 +02:00
Bohdan Triapitsyn 17df8a43a9 release v1.4.1 2026-01-02 22:06:29 +02:00
Bohdan Triapitsyn 32c83f0c10 feat(multirun): enforce maximum model selection limit and update UI hints 2026-01-02 22:03:10 +02:00
Bohdan Triapitsyn 110b0e5d8f feat(terminal) refactoring and stability improvements (#98)
* feat(terminal): replace xterm with ghostty-web

Replace xterm.js terminal with ghostty-web implementation
Add terminal serialization support for state restoration
Apply custom patches to ghostty-web for enhancements

* feat(terminal): add bun-pty backend support

Switch terminal to ghostty-web with bun-pty backend for better performance
Auto-detect and prefer Bun runtime when available for terminal sessions
Update terminal viewport write queue handling for improved reliability

* fix(terminal): prevent unnecessary resize events

Only report terminal resize when dimensions actually change
Simplify chunk processing state tracking
Disable terminal transparency for consistent rendering

* feat(terminal): increase scrollback and buffer limits

Increase terminal scrollback buffer from 10k to 50k lines
Increase terminal buffer limit from 256k to 1M bytes
Add rate limiting and improve output handling for terminal streams
2026-01-02 21:57:53 +02:00
Bohdan Triapitsyn dca8be01ca feat(chat): show revert button on all user messages
Remove restriction preventing revert on first user message
Simplify message props by removing isFirstMessage flag
2026-01-02 19:54:16 +02:00
Bohdan Triapitsyn ad0439da39 feat(ui): add HEIC image support and MIME normalization
Convert HEIC/HEIF images to JPEG for AI processing
Normalize unsupported text MIME types to text/plain
2026-01-02 14:20:10 +02:00
Bohdan Triapitsyn d58beb5c6c feat(multirun): allow selecting the same model multiple times for comparison
Add file attachment support to multi-run launcher
Show instance indices for duplicate model selections
2026-01-02 14:18:40 +02:00
Bohdan Triapitsyn 19312b0a20 chore: updated CHANGELOG 2026-01-02 13:16:55 +02:00