Commit graph

61 commits

Author SHA1 Message Date
Lawrence Chen
944d337fcf Keep localhost visible in SSH omnibar URLs
Remote loopback requests still route through the localtest.me alias for proxy transport, but the omnibar now canonicalizes the alias host back to localhost for display.
2026-03-01 21:29:14 -08:00
Lawrence Chen
0d3d71661d Show SSH heartbeat status on blank browser tabs
Propagate workspace remote state + heartbeat into browser panels, add heartbeat emission in remote session controller, extend docker bootstrap regression for heartbeat continuity after blank browser open, and scrub workspace/surface env vars in tagged reload launches.
2026-03-01 19:40:22 -08:00
Lawrence Chen
803912a9e3 Route remote localhost browser traffic through SSH proxy 2026-03-01 19:04:36 -08:00
Lawrence Chen
bfe36f817d Address remaining PR #239 review findings 2026-02-28 19:14:46 -08:00
Lawrence Chen
47f4b5e55a Address PR review feedback for SSH remote workspace flow 2026-02-28 17:36:07 -08:00
Lawrence Chen
c179ee74ea Merge origin/main into issue-151-ssh-remote-port-proxying 2026-02-28 17:17:30 -08:00
Lawrence Chen
6800cd44bb WIP: advance ssh remote workspace proxying 2026-02-28 17:05:55 -08:00
Lawrence Chen
1392bd16d7 Revert "Use workspace color for notification ring and selection bar (#664)"
This reverts commit 4bfe95d125.
2026-02-27 18:24:51 -08:00
Lawrence Chen
4bfe95d125
Use workspace color for notification ring and selection bar (#664)
- Notification/focus flash uses workspace customColor (fallback: accent)
- Selection bar/indicator uses workspace customColor when set
- Flash color propagated through Panel.triggerFlash(color:) API
- Browser panel flash overlay uses workspace color
- Regression tests for flash color resolution

Fixes https://github.com/manaflow-ai/cmux/issues/557
2026-02-27 18:14:19 -08:00
Lawrence Chen
9ae737026d
Fix browser eval: await promises, always-on console hooks, undefined detection (#613)
- Wrap eval scripts in async IIFE that detects and awaits thenables,
  using callAsyncJavaScript when available (macOS 11+) (#603)
- Register console/error telemetry hooks as WKUserScript at document
  start so they survive navigation and are active before page JS (#604)
- Return typed envelope {__cmux_t, __cmux_v} from eval to distinguish
  undefined from no return value; CLI prints "undefined" (#605)
- Keep dialog hooks as lazy injection only (not document-start) to
  avoid suppressing WKUIDelegate native dialogs
- Add regression tests for async wrapper and undefined CLI rendering
2026-02-27 01:42:27 -08:00
Travis Carr
570ed27b5d
Add Kagi as a search provider option (#561)
Co-authored-by: Travis Carr <tcarr@nvidia.com>
2026-02-26 16:23:10 -08:00
Lawrence Chen
930a6b5bc9
Use sheet modal for insecure HTTP warning prompt (#511)
Fixes CMUXTERM-MACOS-DD
2026-02-25 18:00:45 -08:00
Lawrence Chen
9140371fcd guard devtools restore from unsafe first-responder churn 2026-02-25 15:59:49 -08:00
Lawrence Chen
109ce43c70 settings: control sidebar PR link open target 2026-02-24 20:59:06 -08:00
Lawrence Chen
afbfb5a117 Use native WebKit middle-click handling for browser links (#416)
* Add middle-click debug logging for browser links

* Handle browser middle-click via native WebKit actions

* Fix flaky middle-click new-tab detection in browser
2026-02-24 14:35:10 -08:00
austinpower1258
05209e7d50 Fix stale browser favicon after navigation 2026-02-24 14:35:09 -08:00
Lawrence Chen
06cd25ed52 Fix session restore routing and browser history persistence 2026-02-24 14:34:55 -08:00
Austin Wang
d42126a082
Handle deeplink URL schemes in embedded browser (#392) 2026-02-23 10:51:28 -08:00
Lawrence Chen
2499ba1bb2
Fix browser-surface click focus without regressing open (#355)
* Allow click-to-focus for unfocused browser surfaces

* Add browser click-focus diagnostics and guard fix

* Allow pointer-initiated browser focus through responder guard
2026-02-23 03:09:19 -08:00
Lawrence Chen
6f44f17f33 Fix follow-up PR331 settings and split focus regressions 2026-02-22 19:55:06 -08:00
Lawrence Chen
0046b674aa Split open-wrapper interception into its own setting 2026-02-22 18:26:07 -08:00
Lawrence Chen
d496a07a84
Hide new-tab toggles and align dark-mode button styling (#322)
* Hide new-tab browser toggles and align dark-mode button style

* Switch forced dark mode from dimming overlay to dark theme

* Add tri-state browser theme mode for embedded web view

* Hide browser theme menu chevron in toolbar

* Use outline icons for browser theme toggle

* Align browser theme icon tint with DevTools button

* Force monochrome rendering for browser toolbar icons

* Reduce browser theme icon weight for visual parity

* Tune browser theme icon stroke for perceptual color match

* Force flat SF Symbol color rendering for toolbar icons

* Use button popover for browser theme selector
2026-02-22 17:41:10 -08:00
Austin Wang
fb2ae855db
Light mode (#258) 2026-02-21 15:39:25 -08:00
Lawrence Chen
8ac554fb06
Follow up PR 242: refresh browser under-page background on theme updates (#272)
* Address PR 242 follow-ups for titlebar and browser background

* Restore titlebar border per follow-up scope

* Refresh browser under-page color with Ghostty opacity

* Browser: theme blank page fallback for about:blank

* Browser: keep new tabs webview-less until first nav
2026-02-21 05:30:21 -08:00
Lawrence Chen
685996ef0d
Remove border below titlebar (#242)
* Remove border below titlebar

Remove the 1px separator line overlay at the bottom of the custom
titlebar and its associated fakeTitlebarSeparatorColor computed property.

* Remove tab hover background in bonsplit

Update bonsplit submodule to remove the background fill on hovered
non-selected tabs.

* Restore titlebar border with system separator color, hover bg on all tabs, browser theme bg

- Add back 1px bottom border on titlebar using NSColor.separatorColor
  (matches bonsplit tab separator color)
- Tab hover background now applies to all tabs including the selected one
- Browser address bar and under-page background now use Ghostty theme
  background color instead of window background
2026-02-21 04:31:55 -08:00
Austin Wang
3c0e3a7c82
Fix flaky browser download activity accounting (#246)
* Add debug tracing for context-menu download flow

* Remove temporary download debug instrumentation
2026-02-20 22:15:35 -08:00
Lawrence Chen
41b2db5962 Preserve approved HTTP request semantics and fix test imports 2026-02-20 21:24:03 -08:00
Austin Wang
95ac588bb2
Fix browser download UX and stabilize browser crash path (#235)
* Fix browser download UX and stabilize download crash path

* Fix context menu image/link download target resolution

* Restore native WebKit context-menu download actions

* Improve browser download feedback and context menu downloads

* Fix flaky alternating context-menu downloads

* Stabilize linked-file context downloads

* Use per-menu-item fallback for context downloads

* Harden linked-file URL resolution for context downloads
2026-02-20 21:21:03 -08:00
Lawrence Chen
73cbfce432 Fix WKWebView JavaScript dialogs in browser panel 2026-02-20 20:53:59 -08:00
Lawrence Chen
5ae36fcb91
Merge pull request #203 from cmer/browser-whitelist
Add wildcard hostname allowlist for built-in browser routing
2026-02-20 20:47:51 -08:00
Lawrence Chen
cf38330483 Address review: allow favicon refresh across history URL changes 2026-02-20 20:23:16 -08:00
Lawrence Chen
26a88a4b2e Fix favicon race during back/forward navigation 2026-02-20 20:17:58 -08:00
Lawrence Chen
01313b6c9a Expand default HTTP host allowlist for local dev 2026-02-20 19:55:59 -08:00
Lawrence Chen
1d5be22820 Normalize IDN host allowlist entries 2026-02-20 19:34:34 -08:00
Lawrence Chen
ce6b5e3999 Harden terminal URL host allowlist routing 2026-02-20 19:25:51 -08:00
Lawrence Chen
64f6e34e7b Merge origin/main into pr-203-browser-whitelist 2026-02-20 19:10:59 -08:00
Lawrence Chen
39c16183ee
Merge pull request #222 from manaflow-ai/feat-pr117-review-followup
Follow up browser DevTools and portal review comments from PR 117
2026-02-20 19:03:38 -08:00
Austin Wang
04431751ce
Fix file drag-and-drop and file input in browser panel (#214)
* Fix file drag-and-drop and file input in browser panel (#194)

Two fixes for the browser panel:

1. File drag-and-drop from Finder: CmuxWebView previously suppressed ALL
   drag type registration as a no-op to prevent bonsplit tab drags from
   being intercepted. Now it selectively filters out only the text-based
   types that conflict with bonsplit (public.text, public.utf8-plain-text,
   public.plain-text) and the custom tab transfer types, while allowing
   file URL types through so Finder drops work.

2. File <input> elements: Added the WKUIDelegate runOpenPanelWith method
   to BrowserUIDelegate so clicking a file input opens the native macOS
   file picker (NSOpenPanel), with support for multiple selection and
   directory picking as specified by the HTML element.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore(claude-opus-4-6): take a look at https://github.com/manaflow-ai/cmux/issues...

* ok

* wok

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 18:26:23 -08:00
Lawrence Chen
f294699670 Fix browser DevTools retry and portal visibility follow-ups 2026-02-20 18:00:20 -08:00
Lawrence Chen
438b7a6a41 Merge remote-tracking branch 'origin/main' into fix/browser-devtools-shortcuts-pr
# Conflicts:
#	Sources/Panels/BrowserPanel.swift
#	Sources/cmuxApp.swift
#	cmuxTests/CmuxWebViewKeyEquivalentTests.swift
#	vendor/bonsplit
2026-02-20 15:48:27 -08:00
Lawrence Chen
3ffceb7e8e Fix insecure HTTP proceed to be one-time unless saved 2026-02-20 15:16:12 -08:00
Lawrence Chen
79b34052cb Persist HTTP allowlist selection when opening externally 2026-02-20 15:00:54 -08:00
Lawrence Chen
821e3ab4c3 Guard insecure HTTP in browser with allowlist and proceed flow 2026-02-20 14:55:26 -08:00
Carl Mercier
5e74161324
Add wildcard hostname allowlist for built-in browser routing (#195)
Adds a configurable host allowlist in Settings > Browser that controls
which terminal links open in the cmux embedded browser vs the system
default browser. Supports exact match and wildcard prefix patterns
(e.g. localhost, 127.0.0.1, *.localtest.me). Empty list preserves
existing behavior of opening all web links in cmux.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 16:24:50 -06:00
Lawrence Chen
5560492d27
Add preference to disable in-app browser for terminal links (#174)
* Add preference for terminal link browser target

Fixes https://github.com/manaflow-ai/cmux/issues/172

* Route non-web terminal links to external opener

Only route http/https terminal links to cmux's embedded browser.
Absolute paths, file:// URLs, and non-web schemes now open via NSWorkspace.

Refs https://github.com/manaflow-ai/cmux/issues/172
2026-02-20 13:58:39 -08:00
Lawrence Chen
153b73c952 Add earlier devtools shortcut snapshots and geometry probes 2026-02-20 01:04:16 -08:00
Lawrence Chen
db66fc4bb0 Stabilize browser portal bounds and log inspector height metrics 2026-02-19 23:19:00 -08:00
Lawrence Chen
943858acff Defer and auto-arm devtools refresh across reparent 2026-02-19 21:17:55 -08:00
Lawrence Chen
54a0f78d75 Harden browser devtools split reparent flow 2026-02-19 21:13:41 -08:00
Lawrence Chen
f546c289c3 Preserve devtools webview during split teardown 2026-02-19 20:38:31 -08:00