Commit Graph
26 Commits
Author SHA1 Message Date
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
Iuliia Ivashko 8647e0c1a4 fix(vscode): align fs read/raw endpoint security with web runtime (#491)
Route /api/fs/read and /api/fs/raw through the extension bridge with workspace-boundary enforcement and canonical path checks, so VS Code parity matches hardened web endpoint behavior.
2026-02-24 03:29:25 +02:00
Iuliia Ivashko de99b55a14 fix(chat): persist default thinking variant selection (#492)
Treat selecting Default as an explicit variant clear across send-time persistence, stream metadata sync, and historical session analysis so stale non-default variants are not reapplied.
2026-02-24 03:29:01 +02:00
Iuliia Ivashko d2d39c48ac feat(chat): add Mermaid fullscreen preview and harden file preview paths (#490)
* feat(chat): add mermaid preview popups and fullscreen diagram viewer

Enable opening Mermaid diagrams from markdown and file attachments with a dedicated fullscreen dialog, while tightening preview loading behavior and sizing for more reliable interaction.

* refactor(chat): extract shared preview overlay hooks

Centralize fullscreen preview transition and viewport lifecycle logic so image and Mermaid dialogs stay behaviorally aligned while reducing maintenance overhead.

* fix(security): enforce workspace boundaries for fs read endpoints

Validate /api/fs/read and /api/fs/raw paths against active workspace roots and canonical realpaths to block traversal and symlink escapes before serving file contents.

* fix(chat): remove dead Mermaid copy component

Drop an unused merge-leftover component in MarkdownRenderer to keep lint clean without changing Mermaid preview behavior.
2026-02-24 01:49:06 +02:00
Iuliia Ivashko 50a66bb6f1 fix(auth): show actionable provider re-auth errors (#450) 2026-02-20 00:34:34 +02:00
Iuliia Ivashko e4a2486312 chore: remove GitHub Actions cloud runtime (workflow, scripts, docs) (#443)
Remove the 'OpenChamber for Actions' feature that ran OpenChamber on
GitHub runners via Cloudflare/Ngrok tunnels. This was a separate
deployment target with its own lifecycle scripts and documentation
that added maintenance overhead without benefiting local usage.

Deleted:
- .github/workflows/opencode.yml (Actions workflow)
- scripts/monitor.sh (service self-heal loop)
- scripts/persistence-save.sh (artifact encryption/upload)
- scripts/persistence-restore.sh (artifact decrypt/restore)
- scripts/opencode-config.sh (Actions config bootstrap)
- docs/OPENCHAMBER_FOR_ACTIONS.md (user guide)

Updated:
- README.md: removed 'GitHub Actions (Cloud Usage)' section

Local Cloudflare Quick Tunnel support (--try-cf-tunnel) is unaffected.
2026-02-18 18:44:57 +02:00
Iuliia Ivashko 138772e66e fix(managed-runtime): secure auth and lifecycle control across runtimes (#437)
* feat: add OpenCode server authentication with auto-generated passwords

* fix(auth): separate user env and managed OpenCode password state

* fix(auth): enforce env precedence and managed password rotation across runtimes

* fix(vscode): rotate managed auth on startup and harden webview proxy

* build: add dev icons and config for Tauri desktop development

* fix(runtime): start managed OpenCode via CLI and expose active API port

* fix(managed-runtime): control OpenCode lifecycle and surface secure diagnostics

* docs: remove VS Code plugin test runbook
2026-02-17 18:01:57 +02:00
Iuliia Ivashko 12606b9e53 feat(desktop): persist main window geometry across restarts (#432)
Save and restore main-window bounds/state in desktop settings so reopen behavior is consistent, while keeping new windows on defaults. Add debounce, off-screen fallback, and minimum-size guards to prevent unusable or stale geometry restores.
2026-02-16 14:05:42 +02:00
Iuliia Ivashko 081be1b7d0 feat(worktrees): ship upstream-first worktree flow across web + vscode (#418)
* feat: add worktree validation and deleteLocalBranch option

Add API to validate and create worktrees with new payload types
Allow deleting local branches when removing worktrees via UI and API
Introduce OpenCode style random names for worktrees when not provided

* feat: enable SSH/HTTPS transport detection for PR picker

Load remotes for the current project directory to inform PR picker options.
Determine preferred push transport from remotes and apply it.
Expose sshUrl in API for frontend to build SSH clone URLs

* feat: extend head repo with sshUrl and improve push error messages

Add sshUrl field to head repo mapping
Enhance push failure handling to display stderr or stdout details
Return push details on success

* fix: worktree path

* feat: worktree set upstream on creation

Enable pushing to upstream by default when no remote is specified
Remove per-remote dropdown for push actions and auto-use first/upstream remote
Update server and VSCode git services to support push without explicit remote and set upstream

* fix: worktree-name sanitization

* feat: rename worktree path field and branch prefix

* feat(worktrees): add git.worktree facade, validation endpoint, upstream/remote-aware creation, and non-blocking setup execution

* refactor(git): use git.worktree namespace in branch picker

* feat(worktrees): sync OpenCode sandbox metadata on create/remove

* fix(worktrees): accept new path key in workspace guard and validate remote startRef

* chore(docs): remove temporary worktree testing plan

* feat: add git worktree management API (list/create/delete/validate) for vscode

* feat: wire root tracking remote and defaults for new worktrees

Add resolveRootTrackingRemote to detect upstream remote for root branch
Apply upstream defaults when creating new worktrees to auto-set upstream
Replace validation and creation flow to use new worktreeCreate APIs

* feat(worktrees): enable root tracking remote handling
2026-02-13 19:18:22 +02:00
Iuliia Ivashko 91a1f64f77 fix(session-sidebar): prevent keydown propagation during inline rename 2026-02-10 02:30:25 +02:00
Iuliia Ivashko 89116483b7 feat(desktop): enable multi-window support and new window action (#377)
* feat(macos): add New Window menu item

Add a New Window option to the macOS menu bar
Trigger opening a separate window when the New Window action is selected

* feat: enable multiple desktop windows and new window shortcut

Enable multiple desktop windows by extending manifest to main-*
Expose desktop_new_window to create additional windows from UI
Show New Window shortcut in Help dialog (Desktop only) with Shift + Alt + <mod> + N

* feat(desktop): enable opening host URL in new window from host switcher

Add a new action to launch a URL in a separate window from the host switcher
Wire the UI to open the selected host in a new window using a dedicated control
Expose a cross-platform API to create a new window pointing at a URL

* fix(desktop): validate URL scheme before opening new window

* fix(desktop): skip unreachable hosts when opening new windows
2026-02-10 02:07:04 +02:00
Iuliia Ivashko 1efe8a1cba fix(PierreDiffViewer): use currentTheme.variant for dark mode (#376) 2026-02-09 19:13:55 +02:00
Iuliia Ivashko f65388cf13 chore: update .gitignore to exclude build outputs and IDE locals 2026-02-09 16:48:05 +02:00
Iuliia IvashkoandBohdan Triapitsyn b432437b02 feat: Add desktop Open In button (#350)
* feat: add OpenInAppButton and macOS path opener

* feat: filter installed apps on macOS and use in OpenInAppButton

* feat: fetch and display macOS app icons in OpenInAppButton

* feat(desktop): cache and fetch installed macOS apps

* feat: add force refresh and retry for installed apps

* feat(OpenInAppButton): add Copy Path action in dropdown header

* feat: enhance caching mechanism for apps discovery

---------

Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
2026-02-08 04:32:14 +02:00
Iuliia Ivashko a620807cab Merge pull request #245 from btriapitsyn/fix-traffic-lights
Adjust macOS traffic lights handling and header padding
2026-01-30 02:58:51 +02:00
Iuliia Ivashko 9b706119e6 style: fix session sidebar title truncation to show elipsis for UX consistency 2026-01-30 02:56:16 +02:00
Iuliia Ivashko 5550193861 feat(ui): adapt macOS header/vav bar height for legacy versions & fix traffic lights wobble 2026-01-30 01:44:33 +02:00
Iuliia Ivashko 4af5b5dc75 fix(SessionSidebar): prevent overflow in session name 2026-01-30 01:18:38 +02:00
Iuliia Ivashko 63324f14d8 build: switch release job to macos-15 runner for forward compatibility 2026-01-30 01:11:48 +02:00
Iuliia Ivashko 2b62b0b73c fix: macOS traffic lights and header padding 2026-01-30 01:07:39 +02:00
yulia-ivashko 6371c8cb2e Merge pull request #244 from btriapitsyn/fix-chat-elements-padding
Adjust input area layout
2026-01-29 22:35:23 +02:00
Iuliia Ivashko 2acb7ef0d0 fix: control elements padding in chatbox 2026-01-29 22:27:26 +02:00
yulia-ivashko 3265799624 Merge pull request #243 from btriapitsyn/fix-worktrees
feat: add kind metadata for worktrees and PR workflow support
2026-01-29 21:38:15 +02:00
yulia-ivashko 85372a13cf fix: improve git diff --no-index error handling 2026-01-29 21:37:20 +02:00
Iuliia Ivashko dd6d78b0db fix(worktrees): default to HEAD when no startPoint provided
- Use git reset --hard HEAD by default when startPoint is not provided or is HEAD
- Preserve resetting to the provided startPoint when a concrete value is supplied
2026-01-29 21:34:24 +02:00
yulia-ivashkoandIuliia Ivashko 0bd4dc12e4 chore: update Cargo.lock when bumping version (#240)
Co-authored-by: Iuliia Ivashko <iivashko@gonewfire.com>
2026-01-29 17:57:04 +02:00