Commit Graph
697 Commits
Author SHA1 Message Date
Iuliia Ivashko 0b6c1e4165 fix(git): stop PR section refresh loop causing React #185 (#588)
Prevent a feedback loop between remote selection and refresh effects in PullRequestSection. This keeps refresh callback dependencies stable and avoids repeated state updates that triggered maximum update depth errors in desktop Git PR view.
2026-03-03 16:42:36 +02:00
JovinesandJovines 855412ce79 feat(mobile): add project edit panel on long press (#584)
- Add draggable project list with reorder support
- Use MobileOverlayPanel for consistent bottom sheet UI
- Enhance useLongPress hook with movement detection
- Integrate with ProjectEditDialog for editing project details

Co-authored-by: Jovines <jovines@qq.com>
2026-03-03 13:44:05 +02:00
Nelson PiresandBohdan Triapitsyn c9bcf79ca7 fix(chat): show in-flight tools immediately and keep collapsed activity live (#563)
* fix(chat): render active tools before completion

* fix(chat): preserve running activity in collapsed view

* fix(chat): live-update duration for active tools

* fix: show live tool activity without timer resets

Show active tool rows before completion
Keep live duration stable during streaming updates

---------

Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
2026-03-03 04:00:46 +02:00
Iuliia Ivashko 16439d343a Add OpenIn dropdown behavior to files editor OpenIn button (#581)
* style: use outlined Open In file transfer icon

* feat: add Open In dropdown to files editor toolbar
2026-03-03 02:05:56 +02:00
KJdotIOandBohdan Triapitsyn 11b995d7bd feat(sidebar): add active-project session search (#568)
* feat(sidebar): add active-project session search in sidebar

* fix: improve sidebar session search behavior

Keep `Esc to clear` visible to prevent header layout shift.
Show all matched sessions during active search instead of hiding some behind “Show more”.
Align search match counts with visible results, including group and folder-name matches.

---------

Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
2026-03-03 01:08:11 +02:00
Iuliia Ivashko bcbc2646fd Improve files view behavior and Open In integration (#579)
* feat: open focused file in selected desktop app

* fix: make file tree indicators match active open tabs

* fix: limit preview functionality to markdown files only

* feat: add Open In action to file editor toolbar. add antigravity to openin app list
2026-03-03 01:07:03 +02:00
Bohdan Triapitsyn 604ac682c2 fix: restore correct worktree source resolution for branches and PRs (#578)
Prevent local branches with slashes from being treated as remotes during worktree creation
Use PR head refs (including fork remotes) when creating PR-linked worktrees
Keep upstream tracking aligned so pushes target the intended PR branch
2026-03-03 00:52:36 +02:00
Bohdan Triapitsyn bdad912ea5 feat: streamline worktree session flow (#577)
* feat: add unified worktree creation dialog with GitHub integration

Unified dialog for creating worktrees with branch selection and GitHub integration
New GitHub picker dialog for selecting issues and PRs with validation
Persistent state when switching between new branch and existing branch modes

* refactor: minimalistic compact design for worktree dialogs

Redesigned dialogs with minimalistic compact layout
Moved mode tabs inline with dialog header
Inline validation errors with action buttons

* fix: maintain consistent dialog height in all states

Fixed dialog height fluctuations when loading or switching tabs
Consistent 300px height for loading, empty, and populated states
Nested container structure prevents layout shifts

* refactor: minimalistic compact UI redesign for worktree dialogs

Minimalistic compact layouts with reduced spacing and inline tabs
Standardized SortableTabsStrip with pills variant for mode selection
Two-row linked item display and inline validation with action buttons

* feat: mobile overlays for worktree dialogs with branch pickers

Mobile overlay panels replace dropdowns for branch selection
Fixed footer button overlapping with proper flex layout
Responsive design with conditional mobile/desktop rendering

* refactor: relocate selected item badge to footer with proper alignment

Selected item badge moved to footer left side on desktop
Proper alignment with Cancel/Select buttons using h-8 height
Cleaner header layout removing the selected item display

* perf: use cached branches from git store for instant branch selection

Branch list now loads instantly from git store cache
No more loading delay when opening new worktree dialog
Removes redundant API calls by using existing cached data

* refactor: improve branch selection UI with grouped headers and compact layout

Group branches into Local and Remote sections with clear headers
Compact dropdowns with better sizing and text wrapping
Bold labels and smaller issue/PR titles for cleaner layout

* feat: add prefilled slugs and improve branch selection UX in new worktree dialog

Prefilled unique branch name when opening new worktree dialog
Group branches into Local and Remote sections with bold headers
Instant branch list from cache with compact, wrapped dropdowns

* feat: update GitHub button text to be more descriptive

* feat: add GitHub issue linking to draft sessions

Link GitHub issues to draft sessions with full context including body, labels and comments
View issue author avatar, number and title in session input area
Open linked issues in browser or remove link with inline action buttons

* style: redesign queued messages with text-only row layout

* style: redesign attached files with text-only row layout and file type icons

Redesigned attached files with clean text-only rows matching linked issue style
Split display into two rows: image previews and file list with proper type icons
Removed internal Server/Local indicators to reduce visual clutter

* refactor: remove New from PR and Manage branches from sessions UI

Remove New from PR and Manage branches buttons from sessions sidebar
Delete GitHubPullRequestPickerDialog component and related code
Simplify GitView to sidebar-only mode with no mode prop

* fix: simplify new session shortcuts and remove worktree toggle

* fix: restore issue and PR context when creating worktree sessions

Worktrees created from GitHub issues and PRs now seed the new session with visible and synthetic context messages
Sidebar now opens the created linked session directly instead of creating an extra draft
Visible prompts are cleaner and include issue or PR numbers for clarity
2026-03-03 00:20:15 +02:00
Iuliia Ivashko d4269a1cc8 fix: harden terminal auth, skill file access, and sensitive request logging (#575)
* fix: enforce terminal websocket authentication on upgrade

* fix: block path traversal in skill supporting file APIs

* fix: redact voice token request logs

* fix: block skill file path traversal
2026-03-02 18:25:55 +02:00
Bohdan Triapitsyn a6d87d5348 ci: fix Discord webhook condition in release workflow 2026-03-02 02:35:04 +02:00
Bohdan Triapitsyn 4b6f7766ef release v1.8.3 2026-03-02 02:31:09 +02:00
Bohdan Triapitsyn b4cd16f55b feat(ui): polish chat and git workflows with mobile UX and reliability fixes (#569)
* feat: add chat option for user message rendering mode

* feat: add chat option to toggle sticky user header

* feat(ui): overhaul context panel with reusable tabs and embedded session chat

Enable parallel context workflows with persistent tabbed views and isolated session chat while reducing resize and background runtime overhead.

* feat: polish context panel and git sidebar tabs

Refined context panel tab behavior and visuals for smoother switching and resizing
Reused the new tabs component in right sidebar and git sidebar with fit layout
Improved git section spacing, selection controls, and bulk revert confirmation flow

* feat: open diff files in editor at changed lines

Add edit actions in diff views to open files at the first changed line
Support per-file open-in-editor from All Files headers and icon-only action in single-file view
Improve file jump UX with load-aware navigation and reduced visual blink during line targeting

* fix: stabilize pill tabs and prevent git commit pathspec failures

Unified sortable tab variants to match animated styling behavior with responsive spacing and cleaner sidebar chrome
Fixed active tab pill measurement so size/position recalculates correctly when dropdowns reopen
Commit API now filters stale file paths before staging to avoid pathspec errors on deleted files

* fix: align user message action row spacing and hover behavior

* fix: persist user message view preferences in settings

Save plain-text and sticky-header toggles to settings.json when changed
Restore both chat display preferences from settings.json on startup
Validate and accept both preference fields in the settings API

* fix: improve git and sidebar tab layout on mobile

* fix: refine mobile user message action row spacing

Show mobile user-message actions in a consistent external row for sticky and non-sticky modes
Tune button row height and vertical position to match both mobile variants
Reduce sticky-header gradient tail and tighten assistant gap after user messages

* fix: improve chat action hover zones and mobile top shadow logic

Expand desktop trigger area so user action buttons reveal across the full row
Add sticky-header phantom hover row so inline actions appear from the whole button lane
Hide chat top scroll shadow on mobile only when sticky user headers are enabled

* fix: remove commit message input scrollbar flicker

Added optional scrollbar class support to shared textarea wrapper.
Disabled overlay scrollbar for Git commit message input.
Kept auto-resize behavior while preventing one-line empty-state micro-scroll.

* feat: make model provider groups collapsible in selector

Add collapsible provider headers in the chat model dropdown
Persist expanded/collapsed provider state across sessions
Refine provider header UX with inline chevrons and no hover highlight

* feat: arrange chat settings into a compact two-column layout

Places User Message Rendering next to Mermaid Rendering.
Places Diff Layout next to Diff View Mode.
Reduces right-column spacing to better match other settings sections.

* fix: show worktree branch edit controls in draft sessions

Detect worktree mode from current directory when session metadata is not yet bound
Enable immediate branch rename UI in Git sidebar without session switching

* feat: add beta badge to side panel menu action
2026-03-02 02:11:33 +02:00
Nelson PiresandBohdan Triapitsyn 73e533a315 fix(chat): align code block actions and restore horizontal scrolling across desktop and mobile (#564)
* fix(chat): use streamdown code controls for markdown blocks

* fix(chat): keep code block actions in header row and body scrollable

* fix(chat): allow horizontal scrolling in virtualized code output

* fix(chat): preserve mobile horizontal scrolling in code blocks

* fix: refine chat code block header and actions styling

* fix: restore themed code highlighting and polish chat code blocks

---------

Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
2026-03-01 15:54:02 +02:00
Henry Moran 655b5ba823 fix(ui): prevent session title from overflowing into drawer controls on mobile (#565)
packages/ui/src/components/chat/MobileSessionStatusBar.tsx
  - What: Added `min-w-0` to the title row flex container and `flex-1 min-w-0` to the session title span inside `SessionStatusHeader`.
  - Why: The flex container had `min-width: auto` (browser default), causing the title to expand beyond its constrained parent and bleed over the running/unread indicators and New button. `truncate` was a no-op without a width ceiling on the span. Fixes #556.
2026-03-01 11:03:26 +02:00
Bohdan Triapitsyn c5d4c2c2c7 ci: fix Discord release notification step 2026-03-01 01:57:03 +02:00
Bohdan Triapitsyn e895e89f42 release v1.8.2 2026-03-01 01:45:38 +02:00
Bohdan Triapitsyn ebb2a85a4f fix: adjust live VS Code streaming updates
- Handle SSE paths with query strings and trailing slashes correctly
- Normalize streamed chunk newlines before SSE block parsing
- Apply streaming fixes across chat, session editor, and agent manager panels
2026-03-01 01:42:58 +02:00
Bohdan Triapitsyn 8bfbed0e68 fix: harden self-update flow and improve chat message readability (#562)
* fix: resolve Windows CLI module loading on absolute paths

* fix: improve chat tool rows layout and timestamp readability

* fix: make web update restart more reliable

* fix: make web self-update detect package manager correctly
2026-03-01 01:21:01 +02:00
plfavreau 7b5fd9e70c fix(cli): use pathToFileURL for dynamic imports on Windows (#560)
Node's ESM loader rejects bare Windows paths (e.g. C:\...) passed to
dynamic import(), interpreting the drive letter as a URL protocol.
Convert the package-manager.js path through pathToFileURL() to produce
a valid file:// URL, matching the fix already applied to the server
import on line 628.
2026-03-01 01:15:34 +02:00
Bohdan Triapitsyn 5257f70073 chore: update workspace package versions and lockfile 2026-02-28 20:52:32 +02:00
Nelson PiresandBohdan Triapitsyn 0495bc85a0 feat(chat): show session and permission preview in desktop permission toasts (#559)
* feat(chat): add compact permission toast action component

* feat(chat): enrich permission toast with session and request preview

* fix(chat): guard permission payload parsing for toasts

---------

Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
2026-02-28 20:50:59 +02:00
934af638fe feat: add share message as image functionality (#553)
* feat: add share message as image functionality

- Add html-to-image dependency for DOM-to-PNG conversion
- Add share button to agent message footer with loading state
- Generate high-quality PNG images with 24px padding for better readability
- Use theme-aware background colors
- Handle errors gracefully with toast notifications

* fix: align lockfile workspace versions to 1.8.1

---------

Co-authored-by: Jovines <jovines@qq.com>
Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
2026-02-28 20:34:38 +02:00
Nelson Pires be413771dc feat(chat): align activity timing UI with hover-only end timestamps (#557)
* feat(chat): add shared activity timestamp formatter

* feat(chat): pass assistant created timestamp to message body

* feat(chat): render footer timestamp beside elapsed time

* feat(chat): pass timing metadata in reasoning text blocks

* feat(chat): propagate justification timing to timeline block

* feat(chat): show thinking duration with hover end time

* feat(chat): reveal tool end time on activity hover
2026-02-28 20:16:31 +02:00
Nelson Pires a1f01cf5bd refactor(tts): consolidate TTS services under lib/tts with stable entrypoint (#551)
* refactor(tts): move service module into domain folder

* refactor(tts): move summarization helpers into domain folder

* refactor(tts): add module entrypoint exports

* docs(tts): add module documentation

* refactor(web): route TTS imports through tts entrypoint

* docs(agents): map TTS module documentation
2026-02-28 16:00:39 +02:00
Bohdan Triapitsyn 6eb5d1afa9 Fix Windows path/spawn regressions and session visibility (#552)
* Update OpenCode CLI detection

* fix(windows): handle cli file-url import and cmd shim spawn

Fixes #533 and #521.

* fix(windows): stabilize api path rewrite and session merge

Fixes #548.
2026-02-28 16:00:10 +02:00
nzlov 122a45a890 fix: docker build (#547) 2026-02-28 09:48:37 +02:00
Bohdan Triapitsyn 263d4c5325 ci: send Discord notifications from release workflow 2026-02-28 05:00:34 +02:00
Bohdan Triapitsyn 81c4a45548 release v1.8.1 2026-02-28 04:51:23 +02:00
Bohdan Triapitsyn 56d2f8390e fix: prevent tunnel lock for non-tunnel web sessions 2026-02-28 04:48:35 +02:00
Bohdan Triapitsyn 76bc4f8036 release v1.8.0 2026-02-28 04:38:25 +02:00
Iuliia IvashkoandBrian-Hwang d5d0d35083 feat: redesign remote tunnel settings and named tunnel workflow (#546)
* feat: add Cloudflare Tunnel settings for desktop app

Add a 'Remote Tunnel' section in Settings (desktop-only) that lets users
start/stop a Cloudflare quick tunnel on demand, with auto-generated
password protection and a QR code for easy mobile access.

- Server: 4 new API endpoints (check/status/start/stop) reusing the
  existing cloudflare-tunnel module
- UI: TunnelSettings component with full state machine
  (checking → idle/not-available → starting → active → stopping)
- QR code rendered via the qrcode package for in-app display
- Hidden from VS Code extension (desktop/web only)

* fix: use ?token= instead of ?p= in tunnel password URLs

REST API endpoints were building passwordUrl with ?p=<token> but
SessionAuthGate reads the ?token= query param, causing QR code
auto-login to fail — the password was never extracted from the URL.

Standardize all three tunnel URL construction sites to use ?token=
so scanning the QR code correctly pre-fills and submits the password.

* feat: secure remote tunnel access with one-time connect links

* feat: redesign remote tunnel settings and access flow

* fix: cleaned up unused desktop close code path

* feat: overhaul named tunnel setup and persistence flow

* chore: align codemirror language dependency resolution

---------

Co-authored-by: Brian-Hwang <brian.hwang@cornelisnetworks.com>
2026-02-28 04:21:46 +02:00
Henry Moran a505378d79 feat(chat): show dynamic subagent type in task tool button (#545)
Display the actual subagent type (e.g., 'general', 'build') instead of hardcoded
'subAgent' in the task tool button. Changes 'session' to 'subtask' for consistency.

- Add input prop to TaskToolSummary component
- Extract subagent_type from task input
- Capitalize agent type and update button text format
2026-02-28 02:18:04 +02:00
Bohdan Triapitsyn 259405b335 ci: notify Discord when GitHub releases are published 2026-02-28 01:53:35 +02:00
Henry Moran 654d49067f feat: add Ollama Cloud quota provider (#544)
* feat: add Ollama Cloud quota provider

Adds ollama-cloud quota provider that reads auth cookie from
~/.config/ollama-quota/cookie and fetches usage from ollama.com/settings.
Returns 3 windows: session, weekly, and premium (X/Y). Reuses Ollama
logo via provider alias.

* docs(quota): add ollama-cloud provider entry to DOCUMENTATION.md
2026-02-28 01:38:28 +02:00
Bohdan Triapitsyn 2fb0aa9c96 fix: treat pasted absolute paths as normal messages 2026-02-28 01:38:01 +02:00
Bohdan Triapitsyn 9b182ee0cc fix: render multi-file patch diffs correctly in chat 2026-02-28 01:20:24 +02:00
Bohdan Triapitsyn 98892ca0ac fix: keep Settings open when dismissing dropdowns 2026-02-28 00:50:02 +02:00
Bohdan Triapitsyn 95c71789c4 Project actions: run commands from header on web + mobile, with SSH-forward URL opening (#542)
* feat: add project actions in header with reliable terminal run flow

- Add per-project Actions settings with icons, platform filters, and default action
- Run/stop actions from header using terminal tabs, including Ctrl+C then force-kill fallback
- Improve terminal UX with stable selection, resize handling, and smarter URL auto-open for localhost ports

* feat: add project actions UI with refined header dropdown behavior

* feat: add parent-session back button in chat

* fix: make web and desktop dev modes reliable and conflict-free

- Separate desktop and web dev ports to avoid collisions
- Add robust process-tree shutdown so Ctrl+C cleans sidecars
- Add true web HMR mode and keep service worker out of dev

* fix: linux safe scripts for dev

* feat: run project actions on web and add desktop SSH forward URL opening

* feat: add mobile project actions button with terminal tabs and tighter tab UI

* revert: remove experimental mobile terminal selection UI

* feat: show Add action button in header when empty

* fix: make retry countdown human-readable in status row

* fix: prevent nav rail actions from firing through overlays
2026-02-27 20:45:03 +02:00
Raph d948aa5557 fix: enable markdown rendering for user messages (#531)
* fix: enable markdown rendering for user messages

* fix: resolve unused parameter lint error

* fix: resolve lint errors (conditional hook and unused prop)
2026-02-27 20:22:59 +02:00
Asuta b68a10571c feat(vscode): support drag-and-drop file attachments in chat (#535)
* feat(vscode): implement file drop API for handling dropped files in VS Code

* refactor(vscode): deduplicate attachment parsing for picked and dropped files
2026-02-27 20:21:12 +02:00
shekohexandBohdan Triapitsyn 1d8ff97c95 feat(ui): add dynamic window title and sprite-based project/file icons (#529)
* feat(ui): add dynamic titles and sprite-based project/file icons

* feat(files): add viewer syntax fallback and tab file icons

* fix(files): restore file viewer highlighting and add diff file icons

* feat(git): add file icons and async file-viewer syntax fallback

* fix(files): force codemirror token colors in file viewer

* feat(files): add shiki view mode for file viewer

* fix(files): force codemirror parse after programmatic content updates

* feat(files): support markdown frontmatter preview

* feat(chat): use pierre diffs for tool previews

* feat(chat): add configurable beautiful-mermaid rendering

* feat(perf): virtualize chat rendering and add react-scan toggle

* feat(build): enable React Compiler in Vite React apps

* fix(chat): reduce rerenders from tooltips and streamed activity

* fix(ui): make MessageList React Compiler safe

* chore(ui): batch commit remaining pending ui updates

* fix: polish chat and diff preview rendering

- Keep Mermaid action buttons fixed while diagram content scrolls
- Align Diff All Files headers and match Git-style path truncation
- Default chat tool diffs to unified view with lightweight indicators disabled

* fix: preserve file tree expansion and delay git action label collapse

* fix: refine project icon controls in settings

---------

Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
2026-02-27 20:03:42 +02:00
Nelson Pires d6b8f28e6f refactor(skills-catalog): formalize module entrypoint and consolidate server imports (#537)
* refactor(skills-catalog): add module entrypoint exports

* refactor(web): use skills-catalog module entrypoint import

* docs(skills-catalog): add module documentation

* docs(agents): add skills-catalog docs map entry
2026-02-27 14:40:43 +02:00
nzlov eed5c8efcd fix: docker support (#532) 2026-02-27 09:34:51 +02:00
Jovines 17734a6c65 fix(notification): cache parentID from session events to fix subtask notification detection (#530) 2026-02-27 09:32:20 +02:00
shekohexandBohdan Triapitsyn 27321d454b feat(remote): add desktop SSH remote instances lifecycle and UX (#515)
* feat(remote): add desktop SSH remote instances lifecycle and settings UX

* fix(remote): cancel SSH modal connect and correct desktop runtime detection

* fix(remote): unblock ssh auth flow and disconnect on instance removal

* fix(remote-ssh): harden remote lifecycle, auth probing, and port forwarding reliability

Improve SSH remote stability by correctly handling authenticated external probes, accepting ControlMaster handoff behavior, making reconnect detection tunnel-aware, and applying extra forwards through the shared master connection with local listener validation.

---------

Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
2026-02-26 20:26:12 +02:00
JovinesandJovines 5250a20578 fix(mobile): optimize usage rate limits tabs UI for mobile (#522)
Replace AnimatedTabs with lightweight text toggle in mobile usage view
to improve visual hierarchy between navigation tabs and filter options.
The new design uses text buttons with underline indicator instead of
card-style tabs, making the two tab levels more distinguishable.

Co-authored-by: Jovines <jovines@qq.com>
2026-02-26 20:22:41 +02:00
marco mereuandClaude Opus 4.6 dc0f9b3e62 Fix Windows compatibility: git status check, OpenCode spawn, path normalization, session merge (#527)
- Add isGitRepository check before getStatus() to prevent noisy errors on non-git directories
- Resolve npm shell wrapper shims on Windows so Bun can spawn OpenCode via node interpreter
- Add Win32PathFix middleware to normalize forward slashes to backslashes in directory params
- Merge sessions from all project directories on bare GET /session for Windows path compat

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 20:21:31 +02:00
nzlov 6ca2b0da05 feat(container): add Docker deployment and terminal shell fallback (#520)
* feat(container): add Docker deployment and terminal shell fallback

Add Docker runtime assets (Dockerfile, compose file, and entrypoint) to run OpenChamber in containers with persistent config/data mounts.

Improve terminal PTY startup reliability by probing multiple shell candidates and falling back automatically across Unix and Windows environments.

* fix: add OMO install env

* docs: add Docker Compose instructions to README
2026-02-26 20:13:23 +02:00
JovinesandJovines 0e9b231fed fix(mobile): restore original MobileAgentButton using onPointerUp instead of onClick (#524)
The original design used onPointerUp to cycle agents, which doesn't trigger
focus transfer and keeps the soft keyboard open. Recent changes switched to
onClick which causes button to gain focus and closes the keyboard.

- Remove onClick handler entirely
- Restore handlePointerDown, handlePointerUp, handlePointerLeave handlers
- Use onPointerUp to trigger agent cycling
- Add onContextMenu to prevent context menu on long-press
- Add extensive comments explaining why pointer events must be used

This reverts to the behavior from commit 337c458f where clicking the agent
button doesn't close the soft keyboard.

Co-authored-by: Jovines <jovines@qq.com>
2026-02-26 20:12:29 +02:00
JovinesandJovines 32619e9f90 feat(mobile): add child session indicators to current session in MobileSessionStatusBar (#525)
- Add childIndicators prop to SessionStatusHeader component
- Display up to 3 running child sessions with their agent colors
- Show extra count (+n) when there are more than 3 child sessions
- Align visual style with non-selected session items (using brackets [])
- Pass childIndicators through CollapsedView and ExpandedView components
- Extract child indicators from current session's processed status

Co-authored-by: Jovines <jovines@qq.com>
2026-02-26 20:08:42 +02:00