Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
fb5166e
docs: add framework-agnostic UI inventory for a future rewrite
cursoragent Sep 3, 2026
45aea30
Add GPUI native rewrite of the 2code desktop shell.
cursoragent Sep 3, 2026
8112e14
Implement GPUI terminal grid, updater, and sidebar fidelity.
cursoragent Sep 3, 2026
e7076a6
Add GPUI file-tree rename, fonts/sounds, detector, and watcher.
cursoragent Sep 3, 2026
bf00216
Restore PTY sessions on launch and close GPUI fidelity gaps.
cursoragent Sep 3, 2026
d119980
Add GPUI pointer drag-and-drop for sidebar and file tree.
cursoragent Sep 3, 2026
997b556
Port the full agent detector and add in-app update install.
cursoragent Sep 3, 2026
c75e397
Close GPUI keyboard and start-entry inventory gaps.
cursoragent Sep 3, 2026
dae6fc3
Port remaining GPUI workspace surfaces from the inventory.
cursoragent Sep 3, 2026
8669637
Add GPUI installed-app pickers, review copy, and markdown slash menu.
cursoragent Sep 3, 2026
9584903
Add GPUI create-project polish, settings edit, and file-viewer fidelity.
cursoragent Sep 3, 2026
7812873
Add GPUI code-editor highlighting and inventory chrome polish.
cursoragent Sep 3, 2026
0f93446
Add GPUI agent notifications, file-draft debounce, and chrome polish.
cursoragent Sep 3, 2026
440a3dc
Match GPUI terminals and git status to the inventory contract.
cursoragent Sep 3, 2026
8eb4f17
Complete file-tree root menus and notes toolbar labels.
cursoragent Sep 3, 2026
34f26f9
Keep the profile sidebar mounted and match terminal preview chrome.
cursoragent Sep 3, 2026
e066b91
Keep every PTY grid mounted across profile switches.
cursoragent Sep 3, 2026
5e712e5
Match GPUI project groups and terminal settings to the inventory.
cursoragent Sep 3, 2026
bbabe92
Show GPUI file find on demand and surface sidebar layout errors.
cursoragent Sep 3, 2026
d49475a
Add GPUI file-find cycling, GitHub avatars, and top-bar labels.
cursoragent Sep 3, 2026
209b156
Match GPUI git previews, palette copy, and settings labels.
cursoragent Sep 3, 2026
8169a88
Surface remaining GPUI inventory copy and PR check errors.
cursoragent Sep 3, 2026
9d3cc3e
Feed GPUI debug logs and make release CI ship GPUI.
cursoragent Sep 3, 2026
ba5e6f2
Publish GPUI binaries and match more inventory chrome.
cursoragent Sep 3, 2026
e4acf56
Wrap markdown selections and make GPUI tests the product gate.
cursoragent Sep 3, 2026
7b5c548
Replace GPUI binaries in place and drop leftover Tauri from default c…
cursoragent Sep 3, 2026
6652f36
Match GPUI file marks and leftover product docs to the inventory.
cursoragent Sep 3, 2026
6f7161b
Add GPUI terminal selection copy and markdown wrap shortcuts.
cursoragent Sep 3, 2026
925bd27
Port leftover xterm WebLinks, progress, and clear to GPUI.
cursoragent Sep 3, 2026
b9d7163
Match GPUI notes and markdown files to the leftover Milkdown layout.
cursoragent Sep 3, 2026
587a0d9
Port leftover file-tree create/delete, keyboard, and iTerm images.
cursoragent Sep 3, 2026
7827b38
Measure GPUI terminal cells from the font and render wide glyphs.
cursoragent Sep 3, 2026
a06ac18
Port leftover git review comments to structured GPUI queue cards.
cursoragent Sep 3, 2026
6b32d81
Match GPUI git history to the leftover commit list and drill-in.
cursoragent Sep 3, 2026
d98adf4
Match GPUI git file rows and About dates to leftover FileListItem.
cursoragent Sep 3, 2026
258bb00
Port leftover git-diff keyboard nav and search-only command palette.
cursoragent Sep 3, 2026
9f3d0c1
Match leftover Switch Branch rows and GitDiff chrome.
cursoragent Sep 3, 2026
c456f5d
Match leftover ProjectTopBar chrome and DebugLog dialog.
cursoragent Sep 3, 2026
065ce95
Match leftover CommitComposer, git header, and Sonner toasts.
cursoragent Sep 3, 2026
81c590d
Drop unused git panel view binding.
cursoragent Sep 3, 2026
4be0e87
Match leftover sidebar profile sublist and empty terminal CTA.
cursoragent Sep 3, 2026
f056c21
Match leftover dialog chrome and New Terminal hover dropdown.
cursoragent Sep 3, 2026
0f52237
Match leftover file viewer, link dialogs, and Windows chrome.
cursoragent Sep 3, 2026
0046a1e
Match leftover topbar, file menu, and settings chrome.
cursoragent Sep 3, 2026
41fabe1
Match leftover About update card and section order.
cursoragent Sep 3, 2026
e1d25ce
Match leftover NativeSelect settings pickers.
cursoragent Sep 3, 2026
a0a5c54
Match leftover Templates list and draft dialog.
cursoragent Sep 3, 2026
b0c94b8
Match leftover tab icons, debug auto-scroll, and sticky folders.
cursoragent Sep 3, 2026
19bcb62
Harden leftover Windows PTY startup test.
cursoragent Sep 3, 2026
162561f
Match leftover notification defaults and topbar padding.
cursoragent Sep 3, 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
43 changes: 43 additions & 0 deletions .github/workflows/gpui-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: GPUI Check

on:
workflow_call:

jobs:
gpui:
name: GPUI
runs-on: ubuntu-24.04

steps:
- name: Checkout
uses: actions/checkout@v6

- name: Install Linux dependencies
run: |
sudo apt update
sudo apt install -y \
build-essential \
pkg-config \
libssl-dev \
libsqlite3-dev \
libxkbcommon-dev \
libxkbcommon-x11-dev \
libwayland-dev \
libvulkan-dev \
libx11-dev \
libxcursor-dev \
libxi-dev \
libxrandr-dev

- name: Setup Rust
uses: dtolnay/rust-toolchain@stable

- name: Cache Rust artifacts
uses: Swatinem/rust-cache@v2
with:
cache-bin: false
workspaces: |
src-gpui -> target

- name: Test GPUI crate
run: cargo test --manifest-path src-gpui/Cargo.toml
169 changes: 84 additions & 85 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,37 +13,29 @@ on:

jobs:
smoke:
name: Linux Smoke Gate
uses: ./.github/workflows/tauri-smoke.yml
name: GPUI Gate
uses: ./.github/workflows/gpui-check.yml

publish:
name: Publish (${{ matrix.name }})
gpui-binaries:
name: GPUI binary (${{ matrix.name }})
needs: smoke
runs-on: ${{ matrix.platform }}
permissions:
contents: write
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
# Build macOS packages on native CPU runners so app architectures stay aligned.
- name: macOS arm64
platform: macos-15
rustTargets: aarch64-apple-darwin
args: --target aarch64-apple-darwin
- name: macOS x64
platform: macos-15-intel
rustTargets: x86_64-apple-darwin
args: --target x86_64-apple-darwin
- name: Linux x64
platform: ubuntu-24.04
rustTargets: ""
args: ""
- name: Windows x64
platform: windows-latest
rustTargets: ""
args: --bundles nsis

- name: linux-x64
os: ubuntu-24.04
target: ""
bin: 2code
- name: macos-arm64
os: macos-15
target: aarch64-apple-darwin
bin: 2code
- name: windows-x64
os: windows-latest
target: ""
bin: 2code.exe
steps:
- name: Checkout
uses: actions/checkout@v6
Expand All @@ -53,83 +45,90 @@ jobs:
run: |
sudo apt-get update
sudo apt-get install -y \
libwebkit2gtk-4.1-dev \
build-essential \
curl \
wget \
file \
just \
pkg-config \
libssl-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
patchelf

- name: Install just (macOS)
if: runner.os == 'macOS'
run: brew install just

- name: Install just (Windows)
if: runner.os == 'Windows'
run: choco install just -y

- name: Setup Bun
uses: oven-sh/setup-bun@v2
libsqlite3-dev \
libxkbcommon-dev \
libxkbcommon-x11-dev \
libwayland-dev \
libvulkan-dev \
libx11-dev \
libxcursor-dev \
libxi-dev \
libxrandr-dev

- name: Setup Rust
if: matrix.target == ''
uses: dtolnay/rust-toolchain@stable

- name: Setup Rust with target
if: matrix.target != ''
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.rustTargets }}
targets: ${{ matrix.target }}

- name: Cache Rust artifacts
uses: Swatinem/rust-cache@v2
with:
cache-bin: false
workspaces: |
src-tauri -> target

- name: Install app dependencies
run: bun install --frozen-lockfile
src-gpui -> target

- name: Install Apple Developer ID G2 certificate
if: runner.os == 'macOS'
- name: Build GPUI app
shell: bash
run: |
curl -fsSL https://www.apple.com/certificateauthority/DeveloperIDG2CA.cer -o "$RUNNER_TEMP/DeveloperIDG2CA.cer"
security import "$RUNNER_TEMP/DeveloperIDG2CA.cer" -k "$HOME/Library/Keychains/login.keychain-db"
security find-identity -v -p codesigning
if [ -n "${{ matrix.target }}" ]; then
cargo build --release --manifest-path src-gpui/Cargo.toml --target "${{ matrix.target }}"
echo "GPUI_BIN=src-gpui/target/${{ matrix.target }}/release/${{ matrix.bin }}" >> "$GITHUB_ENV"
else
cargo build --release --manifest-path src-gpui/Cargo.toml
echo "GPUI_BIN=src-gpui/target/release/${{ matrix.bin }}" >> "$GITHUB_ENV"
fi

- name: Prepare Apple notarization key
if: runner.os == 'macOS'
shell: bash
env:
APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
APPLE_API_KEY_P8: ${{ secrets.APPLE_API_KEY_P8 }}
- name: Upload GPUI binary
uses: actions/upload-artifact@v4
with:
name: 2code-gpui-${{ matrix.name }}
path: ${{ env.GPUI_BIN }}
if-no-files-found: error

publish:
name: Publish GPUI
needs: gpui-binaries
runs-on: ubuntu-24.04
permissions:
contents: write
steps:
- name: Download GPUI binaries
uses: actions/download-artifact@v4
with:
path: dist

- name: Stage release assets
run: |
mkdir -p "$RUNNER_TEMP/appstoreconnect/private_keys"
key_path="$RUNNER_TEMP/appstoreconnect/private_keys/AuthKey_${APPLE_API_KEY}.p8"
printf '%s' "$APPLE_API_KEY_P8" > "$key_path"
chmod 600 "$key_path"
echo "APPLE_API_KEY_PATH=$key_path" >> "$GITHUB_ENV"
mkdir -p release-assets
if [ -f dist/2code-gpui-linux-x64/2code ]; then
cp dist/2code-gpui-linux-x64/2code release-assets/2code-linux-x64
fi
if [ -f dist/2code-gpui-macos-arm64/2code ]; then
cp dist/2code-gpui-macos-arm64/2code release-assets/2code-macos-arm64
fi
if [ -f dist/2code-gpui-windows-x64/2code.exe ]; then
cp dist/2code-gpui-windows-x64/2code.exe release-assets/2code-windows-x64.exe
fi
ls -la release-assets
test -n "$(ls -A release-assets)"

- name: Build and publish
uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
APPLE_API_ISSUER: ${{ secrets.APPLE_API_ISSUER }}
APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
APPLE_API_KEY_PATH: ${{ env.APPLE_API_KEY_PATH }}
- name: Publish GitHub release
uses: softprops/action-gh-release@v2
with:
tauriScript: bun tauri
tagName: v__VERSION__
releaseName: 2code v__VERSION__
releaseBody: See the assets to download this version and install.
releaseDraft: false
files: release-assets/*
generate_release_notes: true
prerelease: ${{ github.event_name == 'workflow_dispatch' && inputs.prerelease || contains(github.ref_name, '-') }}
generateReleaseNotes: true
includeUpdaterJson: true
retryAttempts: 2
args: ${{ matrix.args }}
body: |
Native GPUI 2code builds. Download the binary for your platform and run it.

- `2code-linux-x64`
- `2code-macos-arm64`
- `2code-windows-x64.exe`
8 changes: 1 addition & 7 deletions .github/workflows/tauri-smoke.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,7 @@ name: Tauri Smoke

on:
workflow_call:
push:
branches:
- dev
- "codex/**"
pull_request:
branches:
- dev
workflow_dispatch:

jobs:
smoke:
Expand Down
8 changes: 7 additions & 1 deletion .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@ on:
pull_request:
branches:
- dev
workflow_dispatch:

jobs:
frontend:
name: Frontend
name: Leftover React (manual)
if: github.event_name == 'workflow_dispatch'
runs-on: ubuntu-24.04

steps:
Expand Down Expand Up @@ -102,3 +104,7 @@ jobs:

- name: Run Rust tests
run: cargo test --manifest-path src-tauri/Cargo.toml

gpui:
name: GPUI check
uses: ./.github/workflows/gpui-check.yml
Loading
Loading