Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
9dd6698
Add browser import flow with installed-browser detection
lawrencecchen Feb 22, 2026
e70ebe6
Tone down empty browser import overlay
lawrencecchen Feb 23, 2026
c1ffc17
Make browser import a 2-step choice flow
lawrencecchen Feb 23, 2026
3bce419
Use single-window browser import wizard with close button
lawrencecchen Feb 23, 2026
e4e53a9
Mention extensions not yet supported in import note
lawrencecchen Feb 23, 2026
19b59ca
Reapply "Merge pull request #239 from manaflow-ai/issue-151-ssh-remot…
lawrencecchen Mar 12, 2026
1d540d0
Merge origin/main into issue-122-import-browser-cookies-history-settings
lawrencecchen Mar 13, 2026
2e6856f
Fix ssh stack review regressions
lawrencecchen Mar 13, 2026
601e5a9
Merge origin/main into pr-ssh-stack-main
lawrencecchen Mar 13, 2026
4fffe3b
Address ssh stack review follow-ups
lawrencecchen Mar 13, 2026
21246c7
Merge origin/main into pr-ssh-stack-main
lawrencecchen Mar 13, 2026
b0bfabd
Optimize remote daemon builds and TCP latency
lawrencecchen Mar 13, 2026
50b5969
Add remote favicon proxy regression
lawrencecchen Mar 13, 2026
2c9464c
Proxy remote browser favicon fetches
lawrencecchen Mar 13, 2026
965965c
Merge origin/main into pr-ssh-stack-main
lawrencecchen Mar 13, 2026
6dd0f15
Add ssh profile-noise regression
lawrencecchen Mar 13, 2026
815ed87
Avoid sourcing profile in ssh bootstrap
lawrencecchen Mar 13, 2026
1b95c25
Add ssh stack regression tests
lawrencecchen Mar 13, 2026
85e6a5a
Fix ssh stack review regressions
lawrencecchen Mar 13, 2026
29d046c
Fix ghostty deferred-init regression harness
lawrencecchen Mar 13, 2026
2eae782
Merge remote-tracking branch 'origin/main' into pr-ssh-stack-main
lawrencecchen Mar 14, 2026
5e7458b
Fix SSH workspace priming and restore state
lawrencecchen Mar 14, 2026
902ee03
Fix SSH transport dedupe and loopback review issues
lawrencecchen Mar 14, 2026
ca4f4b7
Fix browser move and zsh bootstrap regressions
lawrencecchen Mar 14, 2026
60137e0
Add regressions for v1 panel focus preservation
lawrencecchen Mar 14, 2026
3fbfd74
Fix socket focus and startup env regressions
lawrencecchen Mar 14, 2026
94f7529
Add regression test for deferred terminal portal sync
lawrencecchen Mar 16, 2026
8d1d472
Defer terminal portal sync past layout churn
lawrencecchen Mar 16, 2026
95ef1c8
Keep portal sync responsive during live resize
lawrencecchen Mar 17, 2026
971b2b4
fix: show sidebar update banner from background checks (#1543)
austinywang Mar 17, 2026
08854f1
Update bonsplit for split transparency
lawrencecchen Mar 17, 2026
975a850
Update bonsplit for split transparency
lawrencecchen Mar 17, 2026
1480171
Support folder drops on dock icon (#1571)
austinywang Mar 17, 2026
eb95cb3
Merge pull request #1568 from manaflow-ai/task-split-transparency-dis…
lawrencecchen Mar 17, 2026
7f220dc
Fix sidebar PR badges for restored workspaces (#1570)
austinywang Mar 17, 2026
92cb422
feat: add browser profile mapping import flow
lawrencecchen Mar 17, 2026
9bf6ad9
Avoid blocking browser PR metadata updates (#1564)
austinywang Mar 17, 2026
150600d
Fix #1574: remove top update banner in sidebar (#1575)
austinywang Mar 17, 2026
dc6bcb2
fix: address browser import review feedback
lawrencecchen Mar 17, 2026
746fb8e
Merge pull request #318 from manaflow-ai/issue-122-import-browser-coo…
lawrencecchen Mar 17, 2026
03dc055
Merge remote-tracking branch 'origin/main' into pr-ssh-stack-main
lawrencecchen Mar 17, 2026
832426a
Stabilize SSH remote flow after merging main
lawrencecchen Mar 17, 2026
60aab29
Make remote proxy close idempotent
lawrencecchen Mar 17, 2026
b0d994c
Fix UI test helper closure captures
lawrencecchen Mar 17, 2026
1604ff4
Merge pull request #1549 from manaflow-ai/issue-1541-resolution-spinner
lawrencecchen Mar 17, 2026
93bc5ea
Merge origin/main into pr-ssh-stack-main
lawrencecchen Mar 17, 2026
8cd3677
Add remote CLI relay regressions
lawrencecchen Mar 17, 2026
bbdb626
Fix nightly remote daemon and SSH relay wiring
lawrencecchen Mar 17, 2026
a561a27
Migrate CI/CD to WarpBuild, consolidate test jobs (#1501)
lawrencecchen Mar 17, 2026
8531e4f
Merge remote-tracking branch 'origin/main' into pr-ssh-stack-main
lawrencecchen Mar 17, 2026
66174ce
Fix release browser portal compile
lawrencecchen Mar 17, 2026
1b4fd60
Merge pull request #1591 from manaflow-ai/task-fix-nightly-build-failure
lawrencecchen Mar 17, 2026
1fc4bcb
Add macOS 26 (Tahoe) compat tests, skip zig build via stub (#1590)
lawrencecchen Mar 17, 2026
96bd246
Add regression tests for SSH remote CLI follow-ups
lawrencecchen Mar 17, 2026
dfcbaa3
Fix SSH remote CLI and loopback proxy follow-ups
lawrencecchen Mar 17, 2026
de138fa
Fix remote daemon build script using relative output path after cd (#…
lawrencecchen Mar 17, 2026
6856c52
Merge remote-tracking branch 'origin/main' into task-ssh-followup-rev…
lawrencecchen Mar 17, 2026
d8a968c
Address SSH follow-up PR review comments
lawrencecchen Mar 17, 2026
f585461
Merge pull request #1596 from manaflow-ai/task-ssh-followup-review-fixes
lawrencecchen Mar 17, 2026
e158258
fix: restore Sparkle automatic update checks (#1597)
austinywang Mar 17, 2026
ceb8692
feat: add native MCP protocol support to socket server
EtanHey Mar 17, 2026
001508d
fix: address MCP server review findings
EtanHey Mar 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 15 additions & 9 deletions .github/workflows/build-ghosttykit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,10 @@ on:

jobs:
build-ghosttykit:
# Never run Depot jobs for fork pull requests (avoid billing on external PRs).
# Never run WarpBuild jobs for fork pull requests (avoid billing on external PRs).
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
runs-on: depot-macos-latest
runs-on: warp-macos-15-arm64-6x
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
Expand Down Expand Up @@ -61,13 +62,18 @@ jobs:
if: steps.check-release.outputs.exists == 'false'
run: |
set -euo pipefail
if ! command -v zig >/dev/null 2>&1; then
if command -v brew >/dev/null 2>&1; then
brew install zig
else
echo "zig is required to build GhosttyKit.xcframework. Install zig and retry." >&2
exit 1
fi
ZIG_REQUIRED="0.15.2"
if command -v zig >/dev/null 2>&1 && zig version 2>/dev/null | grep -q "^${ZIG_REQUIRED}"; then
echo "zig ${ZIG_REQUIRED} already installed"
else
echo "Installing zig ${ZIG_REQUIRED} from tarball"
curl -fSL "https://ziglang.org/download/${ZIG_REQUIRED}/zig-aarch64-macos-${ZIG_REQUIRED}.tar.xz" -o /tmp/zig.tar.xz
tar xf /tmp/zig.tar.xz -C /tmp
sudo mkdir -p /usr/local/bin /usr/local/lib
sudo cp -f /tmp/zig-aarch64-macos-${ZIG_REQUIRED}/zig /usr/local/bin/zig
sudo cp -rf /tmp/zig-aarch64-macos-${ZIG_REQUIRED}/lib /usr/local/lib/zig
export PATH="/usr/local/bin:$PATH"
zig version
fi
cd ghostty && zig build -Demit-xcframework=true -Demit-macos-app=false -Dxcframework-target=universal -Doptimize=ReleaseFast

Expand Down
78 changes: 48 additions & 30 deletions .github/workflows/ci-macos-compat.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,17 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [macos-14, macos-15]
include:
- os: warp-macos-15-arm64-6x
timeout: 20
smoke: true
skip_zig: false
- os: warp-macos-26-arm64-6x
timeout: 20
smoke: false
skip_zig: true # zig 0.15.2 MachO linker can't resolve libSystem on macOS 26
runs-on: ${{ matrix.os }}
timeout-minutes: ${{ matrix.timeout }}
steps:
- name: Checkout
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
Expand All @@ -39,45 +48,49 @@ jobs:
echo "Selected: $XCODE_APP"
echo "DEVELOPER_DIR=$XCODE_DIR" >> "$GITHUB_ENV"
export DEVELOPER_DIR="$XCODE_DIR"
xcodebuild -version
XCODE_VER="$(xcodebuild -version | head -1)"
echo "XCODE_VER=$XCODE_VER" >> "$GITHUB_ENV"
echo "$XCODE_VER"
xcrun --sdk macosx --show-sdk-path
sw_vers

- name: Cache GhosttyKit.xcframework
id: cache-ghosttykit
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4
with:
path: GhosttyKit.xcframework
key: ghosttykit-${{ hashFiles('.gitmodules', 'ghostty') }}

- name: Download pre-built GhosttyKit.xcframework
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
if: steps.cache-ghosttykit.outputs.cache-hit != 'true'
run: |
set -euo pipefail
GHOSTTY_SHA=$(git -C ghostty rev-parse HEAD)
TAG="xcframework-$GHOSTTY_SHA"
URL="https://github.com/manaflow-ai/ghostty/releases/download/$TAG/GhosttyKit.xcframework.tar.gz"
echo "Downloading xcframework for ghostty $GHOSTTY_SHA"
MAX_RETRIES=30
RETRY_DELAY=20
for i in $(seq 1 $MAX_RETRIES); do
if curl -fSL -o GhosttyKit.xcframework.tar.gz "$URL"; then
echo "Download succeeded on attempt $i"
break
fi
if [ "$i" -eq "$MAX_RETRIES" ]; then
echo "Failed to download xcframework after $MAX_RETRIES attempts" >&2
exit 1
fi
echo "Attempt $i/$MAX_RETRIES failed, retrying in ${RETRY_DELAY}s..."
sleep $RETRY_DELAY
done
tar xzf GhosttyKit.xcframework.tar.gz
rm GhosttyKit.xcframework.tar.gz
test -d GhosttyKit.xcframework
./scripts/download-prebuilt-ghosttykit.sh

- name: Install zig
if: ${{ !matrix.skip_zig }}
run: |
if ! command -v zig >/dev/null 2>&1; then
brew install zig
ZIG_REQUIRED="0.15.2"
if command -v zig >/dev/null 2>&1 && zig version 2>/dev/null | grep -q "^${ZIG_REQUIRED}"; then
echo "zig ${ZIG_REQUIRED} already installed"
else
echo "Installing zig ${ZIG_REQUIRED} from tarball"
curl -fSL "https://ziglang.org/download/${ZIG_REQUIRED}/zig-aarch64-macos-${ZIG_REQUIRED}.tar.xz" -o /tmp/zig.tar.xz
tar xf /tmp/zig.tar.xz -C /tmp
sudo mkdir -p /usr/local/bin /usr/local/lib
sudo cp -f /tmp/zig-aarch64-macos-${ZIG_REQUIRED}/zig /usr/local/bin/zig
sudo cp -rf /tmp/zig-aarch64-macos-${ZIG_REQUIRED}/lib /usr/local/lib/zig
export PATH="/usr/local/bin:$PATH"
zig version
fi

- name: Clean DerivedData
run: rm -rf ~/Library/Developer/Xcode/DerivedData/GhosttyTabs-*
- name: Cache DerivedData
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4
with:
path: ~/Library/Developer/Xcode/DerivedData/GhosttyTabs-*
key: deriveddata-${{ matrix.os }}-${{ env.XCODE_VER }}-${{ hashFiles('GhosttyTabs.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved') }}-${{ hashFiles('GhosttyTabs.xcodeproj/project.pbxproj') }}
restore-keys: |
deriveddata-${{ matrix.os }}-${{ env.XCODE_VER }}-${{ hashFiles('GhosttyTabs.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved') }}-
deriveddata-${{ matrix.os }}-${{ env.XCODE_VER }}-

- name: Cache Swift packages
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4
Expand Down Expand Up @@ -107,6 +120,8 @@ jobs:
done

- name: Run unit tests
env:
CMUX_SKIP_ZIG_BUILD: ${{ matrix.skip_zig && '1' || '0' }}
run: |
set -euo pipefail
SOURCE_PACKAGES_DIR="$PWD/.ci-source-packages"
Expand Down Expand Up @@ -147,6 +162,7 @@ jobs:
fi

- name: Create virtual display
if: matrix.smoke
run: |
set -euo pipefail
echo "=== Display before ==="
Expand All @@ -162,6 +178,7 @@ jobs:
system_profiler SPDisplaysDataType 2>/dev/null || echo "(no display info)"

- name: Build app for smoke test
if: matrix.smoke
run: |
set -euo pipefail
SOURCE_PACKAGES_DIR="$PWD/.ci-source-packages"
Expand All @@ -171,6 +188,7 @@ jobs:
-destination "platform=macOS" build

- name: Smoke test
if: matrix.smoke
run: |
set -euo pipefail
chmod +x scripts/smoke-test-ci.sh
Expand Down
Loading