Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
147 commits
Select commit Hold shift + click to select a range
fc1d9f2
feat(desktop-gpui): scaffold standalone gpui app
richiemcilroy Aug 16, 2026
faa7326
feat(desktop-gpui): embed Geist and register it with the text system
richiemcilroy Aug 16, 2026
8ac78df
feat(desktop-gpui): real device enumeration
richiemcilroy Aug 16, 2026
d467a66
feat(desktop-gpui): main recording window shell, compact and expanded
richiemcilroy Aug 16, 2026
6395bad
feat(desktop-gpui): device picker panels
richiemcilroy Aug 16, 2026
7019934
feat(desktop-gpui): fidelity pass and the remaining picker panels
richiemcilroy Aug 16, 2026
36bfe21
docs(desktop-gpui): README with deviations and a parity roadmap
richiemcilroy Aug 16, 2026
582f6a2
feat(desktop-gpui): animate the expand/collapse resize
richiemcilroy Aug 16, 2026
346fd4c
chore(desktop-gpui): drop two icons that went dead in the refactor
richiemcilroy Aug 16, 2026
6f8d39b
feat(desktop-gpui): recording engine integration
richiemcilroy Aug 16, 2026
1c6e189
feat(desktop-gpui): arm, start, stop recording from the main window
richiemcilroy Aug 16, 2026
2b74bd3
fix(desktop-gpui): embed stop-circle.svg (caught by the asset round-t…
richiemcilroy Aug 16, 2026
c9c11dd
docs(desktop-gpui): recording section, deviations, screenshots
richiemcilroy Aug 16, 2026
ce383cb
chore(desktop-gpui): disable incremental compilation to cap disk growth
richiemcilroy Aug 16, 2026
085d565
feat(desktop-gpui): window-management layer and the recording control…
richiemcilroy Aug 16, 2026
3e8e4ee
fix(desktop-gpui): repair gpui display links on macOS 26
richiemcilroy Aug 16, 2026
e11c58b
feat(desktop-gpui): camera preview window with app-scoped feeds
richiemcilroy Aug 16, 2026
b0554d2
docs(desktop-gpui): camera preview, feeds, and the macOS 26 display-l…
richiemcilroy Aug 16, 2026
dcf05ae
feat(desktop-gpui): target-select overlays with the native start flow
richiemcilroy Aug 16, 2026
af4b33a
docs(desktop-gpui): roadmap, deviations and traps for the target-sele…
richiemcilroy Aug 16, 2026
81b6d4d
fix(desktop-gpui): hide/reshow the main window outside the App borrow
richiemcilroy Aug 16, 2026
08fe9ab
feat(desktop-gpui): native liquid-glass window material for the main …
richiemcilroy Aug 16, 2026
28b041a
feat(desktop-gpui): settings window with the shared Tauri store
richiemcilroy Aug 16, 2026
c7f19df
feat(desktop-gpui): mode select window and the teleprompter
richiemcilroy Aug 17, 2026
ab4863a
feat(desktop-gpui): real Recents library and the camera-blur config b…
richiemcilroy Aug 17, 2026
b389de6
feat(desktop-gpui): editor crate stack integrated, frame-0 rendered h…
richiemcilroy Aug 17, 2026
7ec1fc4
feat(desktop-gpui): the editor window -- shell, project load, real fr…
richiemcilroy Aug 17, 2026
a63076c
feat(desktop-gpui): editor playback -- transport, live playhead, seek…
richiemcilroy Aug 17, 2026
f3697ca
refactor(desktop-gpui): the shared ui component library
richiemcilroy Aug 17, 2026
195529e
feat(desktop-gpui): the timeline, 1:1 read-only -- every track, real …
richiemcilroy Aug 17, 2026
a189eee
feat(desktop-gpui): timeline interactions -- select, trim, drag, spli…
richiemcilroy Aug 17, 2026
62e4d3b
feat(desktop-gpui): sidebar infrastructure and the Background tab, 1:1
richiemcilroy Aug 17, 2026
7ed1231
feat(desktop-gpui): real text input -- IME-backed, everywhere
richiemcilroy Aug 17, 2026
654eb15
feat(desktop-gpui): the config sidebar complete -- every tab, every p…
richiemcilroy Aug 17, 2026
490be21
fix(desktop-gpui): traffic lights -- strip AppKit's foreign buttons, …
richiemcilroy Aug 17, 2026
1ab7690
feat(desktop-gpui): settings Recordings page, 1:1 -- library list, ac…
richiemcilroy Aug 17, 2026
bd72db7
fix(desktop-gpui): main-window traffic lights stay colored, glyphs on…
richiemcilroy Aug 17, 2026
4cb9a3f
feat(desktop-gpui): the tray, 1:1 -- native NSStatusItem, app menus, …
richiemcilroy Aug 17, 2026
23605d1
fix(desktop-gpui): working cmd-W, and the target picker hides the mai…
richiemcilroy Aug 17, 2026
dd1743b
fix(desktop-gpui): true-aspect instant bolt, dock icon, dock-click re…
richiemcilroy Aug 17, 2026
92c65a7
fix(desktop-gpui): dock icon takes the macOS 26 squircle treatment
richiemcilroy Aug 17, 2026
2678ffa
perf(desktop-gpui): camera preview paints its IOSurface directly, no …
richiemcilroy Aug 18, 2026
54c7d06
perf(recording): zero-copy VideoToolbox input for fragmented display …
richiemcilroy Aug 18, 2026
796f41b
perf(export): IOSurface end-to-end video path, zero CPU pixel work
richiemcilroy Aug 18, 2026
794902c
chore(perf): clippy -D warnings compliance for the zero-copy paths
richiemcilroy Aug 18, 2026
de70ab7
chore(desktop-gpui): add import, transcription, and platform dependen…
richiemcilroy Aug 18, 2026
12014ce
build(desktop-gpui): add macOS Info.plist for the GPUI bundle
richiemcilroy Aug 18, 2026
7494b69
build(desktop-gpui): add macOS app bundle script
richiemcilroy Aug 18, 2026
9cee398
perf(rendering): retain AVAssetReader frames on CVPixelBuffer
richiemcilroy Aug 18, 2026
790d717
perf(rendering): expose IOSurface texture usage and batched NV12 convert
richiemcilroy Aug 18, 2026
8ecb539
perf(rendering): upload camera and display layers from IOSurface
richiemcilroy Aug 18, 2026
1c8ef5d
feat(editor): add BGRA surface frame format for zero-copy preview
richiemcilroy Aug 18, 2026
2f7d6ff
perf(editor): bound prefetch and frame cache by decoded bytes
richiemcilroy Aug 18, 2026
da894bb
docs(editor): record GPUI playback optimization findings
richiemcilroy Aug 18, 2026
fada967
test(desktop-gpui): assert BGRA surface matches RGBA frame-0
richiemcilroy Aug 18, 2026
74ec276
feat(desktop-gpui): add in-app HSV color picker
richiemcilroy Aug 18, 2026
0b91ecb
feat(desktop-gpui): add OS permission checks
richiemcilroy Aug 18, 2026
b4f128e
feat(desktop-gpui): add permissions-first onboarding window
richiemcilroy Aug 18, 2026
334f716
feat(desktop-gpui): add project configuration presets
richiemcilroy Aug 18, 2026
b9ca8b4
feat(desktop-gpui): add media import pipeline
richiemcilroy Aug 18, 2026
5337aa0
feat(desktop-gpui): add caption transcription
richiemcilroy Aug 18, 2026
acd6a2b
feat(desktop-gpui): add remaining settings pages
richiemcilroy Aug 18, 2026
1d0866a
feat(desktop-gpui): add editor canvas move and snap
richiemcilroy Aug 18, 2026
2a867f8
feat(desktop-gpui): add clips sidebar
richiemcilroy Aug 18, 2026
9b0fce1
feat(desktop-gpui): add editor crop dialog
richiemcilroy Aug 18, 2026
22d6b70
feat(desktop-gpui): add editor export page
richiemcilroy Aug 18, 2026
4796e3f
feat(desktop-gpui): add remaining settings and editor icons
richiemcilroy Aug 18, 2026
b4ece48
style(desktop-gpui): drop Geist SemiBold and map semibold to bold
richiemcilroy Aug 18, 2026
049f3ea
style(desktop-gpui): add blue_6 theme token
richiemcilroy Aug 18, 2026
31bcfc4
feat(desktop-gpui): add auth, automations, hotkeys, and export prefs
richiemcilroy Aug 18, 2026
c6ffe87
feat(desktop-gpui): add screenshot listing, reveal, and thumbnail cache
richiemcilroy Aug 18, 2026
cd7d477
feat(desktop-gpui): add file dialogs and clipboard helpers
richiemcilroy Aug 18, 2026
83e1881
feat(desktop-gpui): add screenshots library and remaining settings pages
richiemcilroy Aug 18, 2026
36b651b
feat(desktop-gpui): wire onboarding and editor reload
richiemcilroy Aug 18, 2026
0f31a1e
feat(desktop-gpui): enable import and onboarding tray menus
richiemcilroy Aug 18, 2026
bf73667
feat(desktop-gpui): add recordings and screenshots library panel
richiemcilroy Aug 18, 2026
6fa445a
feat(desktop-gpui): add audio lane helpers and mask contracts
richiemcilroy Aug 18, 2026
569426b
feat(desktop-gpui): wire in-process caption transcription
richiemcilroy Aug 18, 2026
c688cb7
feat(desktop-gpui): use color picker and canvas controls in sidebar
richiemcilroy Aug 18, 2026
95df761
feat(desktop-gpui): complete remaining editor config panels
richiemcilroy Aug 18, 2026
916c42b
feat(desktop-gpui): improve timeline zoom, waveform, and clip tracks
richiemcilroy Aug 18, 2026
23cd0b8
feat(desktop-gpui): isolate preview sections and wire crop, clips, ex…
richiemcilroy Aug 18, 2026
2333653
feat(desktop-gpui): add settings text input and editor button tooltips
richiemcilroy Aug 18, 2026
c47d71b
feat(desktop-gpui): register new modules and open onboarding on launch
richiemcilroy Aug 18, 2026
aba04a3
style(desktop-gpui): rustfmt remaining windows and UI components
richiemcilroy Aug 18, 2026
315036f
docs: add GPUI vs Tauri and Electron performance comparison
richiemcilroy Aug 18, 2026
b869e98
perf(desktop-gpui): stop relayouting camera window chrome per frame
richiemcilroy Aug 18, 2026
19c4de6
perf(desktop-gpui): keep the startup onboarding gate off the main thread
richiemcilroy Aug 18, 2026
b74d9ed
rules
richiemcilroy Aug 18, 2026
d0b2ad3
build(desktop-gpui): add libc, md-5, and appearance dependencies
richiemcilroy Aug 18, 2026
2dd3185
feat(desktop-gpui): add clip speed and mute icons
richiemcilroy Aug 18, 2026
8c33387
feat(desktop-gpui): register clip speed and mute icons
richiemcilroy Aug 18, 2026
31b0b13
feat(desktop-gpui): add new-instance-wins single-instance guard
richiemcilroy Aug 18, 2026
2f561f6
feat(desktop-gpui): add desktop auth session helpers
richiemcilroy Aug 18, 2026
14897c9
feat(desktop-gpui): persist auth plan and organization snapshot
richiemcilroy Aug 18, 2026
b2b034b
feat(desktop-gpui): apply settings theme to native appearance
richiemcilroy Aug 18, 2026
d211118
feat(desktop-gpui): add native theme, frame, and auth platform APIs
richiemcilroy Aug 18, 2026
ba25091
feat(desktop-gpui): broadcast theme changes to open windows
richiemcilroy Aug 18, 2026
df946e2
feat(desktop-gpui): bind chrome windows to settings theme
richiemcilroy Aug 18, 2026
28df98b
feat(desktop-gpui): add settings sign-in and live theme switch
richiemcilroy Aug 18, 2026
adacc4f
feat(desktop-gpui): add exported video upload client
richiemcilroy Aug 18, 2026
bc77a1e
feat(desktop-gpui): add share and upload flow to editor export
richiemcilroy Aug 18, 2026
8410e32
feat(desktop-gpui): restore window layout across dev relaunches
richiemcilroy Aug 18, 2026
7ec884b
feat(desktop-gpui): add save-to-relaunch dev loop
richiemcilroy Aug 18, 2026
f48615d
docs(desktop-gpui): document the save-to-relaunch dev loop
richiemcilroy Aug 18, 2026
286a1db
feat(desktop-gpui): register auth, upload, and restore on launch
richiemcilroy Aug 18, 2026
9176f96
fix(desktop-gpui): end slider drag on mouse-up outside window
richiemcilroy Aug 18, 2026
9f69477
fix(desktop-gpui): make buttons and tab rail keyboard-focusable
richiemcilroy Aug 18, 2026
e10c289
feat(editor): mute 1x-speed clips during audio render
richiemcilroy Aug 18, 2026
1900e00
feat(desktop-gpui): add clip speed, zoom, and track edit helpers
richiemcilroy Aug 18, 2026
253eca2
feat(desktop-gpui): add canvas overlay drag for masks and text
richiemcilroy Aug 18, 2026
b560b01
feat(desktop-gpui): add editor audio library picker
richiemcilroy Aug 18, 2026
3c980d2
feat(desktop-gpui): add gap segments and empty track placeholders
richiemcilroy Aug 18, 2026
6e63ce9
feat(desktop-gpui): add camera 3D pose evaluation and audio replace c…
richiemcilroy Aug 18, 2026
1ca7207
feat(desktop-gpui): wire editor tracks, clip speed, and audio picker
richiemcilroy Aug 18, 2026
b693585
feat(desktop-gpui): show audio picker and camera 3D setup in sidebar
richiemcilroy Aug 18, 2026
4f9a350
fix(rendering): gate nv12 surface output state to macos for windows c…
richiemcilroy Aug 18, 2026
1437ef4
fix(desktop-gpui): propagate thumbnail upload failure instead of repo…
richiemcilroy Aug 18, 2026
9c49102
fix(desktop-gpui): keep video id on thumbnail failure so retry reuses…
richiemcilroy Aug 18, 2026
f835b67
fix(desktop-gpui): regenerate missing thumbnail from exported video b…
richiemcilroy Aug 18, 2026
b856587
fix(desktop-gpui): persist sharing meta before thumbnail upload
richiemcilroy Aug 18, 2026
4433605
perf(desktop-gpui): stop playhead notifying the whole editor during p…
richiemcilroy Aug 19, 2026
d283de8
perf(desktop-gpui): repaint camera preview only when the camera error…
richiemcilroy Aug 19, 2026
30f2515
perf(desktop-gpui): quantize the mic meter and skip unchanged level n…
richiemcilroy Aug 19, 2026
a54c631
perf(rendering): cache bind groups and views in the BGRA surface conv…
richiemcilroy Aug 19, 2026
15c5cc2
feat(desktop-gpui): port window exclusion matching and recording sett…
richiemcilroy Aug 19, 2026
f73a737
feat(desktop-gpui): apply recording defaults and window exclusions at…
richiemcilroy Aug 19, 2026
7dd081f
feat(desktop-gpui): open the editor after a studio recording stops
richiemcilroy Aug 19, 2026
6f270c2
feat(desktop-gpui): wire the plan badge to the real license state
richiemcilroy Aug 19, 2026
8f54c99
feat(desktop): add cap-gpui launcher module
richiemcilroy Aug 19, 2026
c552590
feat(desktop): register gpui launch commands and startup auto-launch
richiemcilroy Aug 19, 2026
7edcc98
build(desktop): bundle a staged cap-gpui binary as the gpui resource
richiemcilroy Aug 19, 2026
f39e9a8
feat(desktop): add Cap GPUI toggle to experimental settings
richiemcilroy Aug 19, 2026
3e0cd1b
feat(desktop-gpui): capture screenshots from the overlay, tray and ha…
richiemcilroy Aug 19, 2026
273e639
feat(rendering): let RenderVideoConstants build its device from expli…
richiemcilroy Aug 19, 2026
7a34cf6
feat(desktop-gpui): add a screenshot editor window with a GPU-styled …
richiemcilroy Aug 19, 2026
93fdd08
feat(desktop-gpui): export the edited screenshot to a PNG or the clip…
richiemcilroy Aug 19, 2026
9e13af5
feat(desktop-gpui): screenshot editor styling panel
richiemcilroy Aug 19, 2026
b212640
feat(desktop-gpui): register the store's global hotkeys
richiemcilroy Aug 19, 2026
4abb2b2
Merge branch 'main' into gpui
richiemcilroy Aug 20, 2026
9db8bd6
feat(desktop-gpui): rebuild screenshot editor to 1:1 Tauri parity
richiemcilroy Aug 21, 2026
90d96a5
feat(desktop-gpui): bring the camera preview bubble to full parity
richiemcilroy Aug 21, 2026
187b4e4
feat(desktop-gpui): handle every cap:// deep-link action
richiemcilroy Aug 21, 2026
32ef6dc
feat(desktop-gpui): record a new clip from inside the editor
richiemcilroy Aug 21, 2026
7204235
fix(desktop-gpui): hotkey parity audit fixes; drop the overlay setting
richiemcilroy Aug 21, 2026
5a993f4
feat(desktop-gpui): shared wiring for the parity units
richiemcilroy Aug 21, 2026
1da2659
chore(desktop): dev-loop and hand-off updates for the gpui app
richiemcilroy Aug 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
938 changes: 938 additions & 0 deletions .github/assets/gpui-vs-tauri-electron-performance.html

Large diffs are not rendered by default.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 5 additions & 4 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ These rules are enforced by CI (`cargo clippy -D warnings`, Biome). Fixing them

### Post-edit checks (run before you say "done")
- Prefer scoped, fast checks over full workspace gates. Do not run long full-repo checks by default.
- Touched any Rust file → `cargo fmt --all` and `cargo check -p <crate>`. On macOS, if `cinder` is on `PATH`, use `cinder` instead of `cargo` for `check`, `build`, `test`, and `run` (not `fmt` or `clippy`). Add `--all-targets`, `--workspace`, or clippy only when explicitly requested, when preparing CI/PR final validation, or when the change needs broader coverage. Never use Cinder in CI or release builds.
- Touched any Rust file → `cargo fmt --all` and `cargo check -p <crate>`. Add `--all-targets`, `--workspace`, or clippy only when explicitly requested, when preparing CI/PR final validation, or when the change needs broader coverage.
- Touched any TS / JS / JSON / CSS / MD file → run the narrowest applicable formatter/linter on touched files first, such as `pnpm exec biome check --write <files>`. Use full `pnpm format`, `pnpm lint`, and `pnpm typecheck` only when explicitly requested or when the change spans shared types/packages.
- Touched DB schema → `pnpm db:generate` before relying on it.

Expand Down Expand Up @@ -61,7 +61,7 @@ Additionally, `unused_must_use = "deny"` applies to all Rust code: every `Result
- Build: `pnpm build` (Turbo). Desktop release: `pnpm tauri:build`.
- DB: `pnpm db:generate` → `pnpm db:push` → `pnpm db:studio`.
- Docker: `pnpm docker:up | docker:stop | docker:clean`.
- Quality: `pnpm lint`, `pnpm format`, `pnpm typecheck`. Rust: `cargo build -p <crate>`, `cargo test -p <crate>`. On macOS, prefer `cinder` over `cargo` for those local `build` / `test` / `check` / `run` commands when it is installed.
- Quality: `pnpm lint`, `pnpm format`, `pnpm typecheck`. Rust: `cargo build -p <crate>`, `cargo test -p <crate>`.

## Coding Style & Naming
- TypeScript / JS / JSON / CSS: **tab indent** and **double-quoted** strings, enforced by Biome (see `biome.json`). Do not configure per-file overrides.
Expand All @@ -73,11 +73,12 @@ Additionally, `unused_must_use = "deny"` applies to all Rust code: every `Result

## Testing
- TS/JS: Vitest where present (e.g., desktop). Name tests `*.test.ts(x)` near sources.
- Rust: `cargo test` per crate; tests in `src` or `tests`. On macOS, use `cinder test` when Cinder is installed.
- Rust: `cargo test` per crate; tests in `src` or `tests`.
- Prefer unit tests for logic and light smoke tests for flows; no strict coverage yet.

## Commits & PRs
- Conventional style: `feat:`, `fix:`, `chore:`, `improve:`, `refactor:`, `docs:` (e.g., `fix: hide watermark for pro users`).
- Never add `Co-authored-by` or other attribution trailers (Cursor, Cursor Agent, or anyone else). Commit as the user only.
- PRs: clear description, linked issues, screenshots/GIFs for UI, env/migration notes. Keep scope tight and update docs when behavior changes.

## Agent‑Specific Practices
Expand Down Expand Up @@ -110,6 +111,6 @@ Prefer the smallest correct fix, but only after checking whether the narrow fix
## Code Formatting & Lint Checks
Before declaring any task complete, the agent should run the fastest useful check for every file type it touched and report anything skipped.

- **Rust**: `cargo fmt --all` and `cargo check -p <crate>` for the touched crate. On macOS, if `cinder` is on `PATH`, run that check as `cinder check -p <crate>`. Add `--all-targets`, `--workspace`, or `cargo clippy -p <crate> --all-targets -- -D warnings` only for explicit requests, CI/PR final validation, or changes that need broader coverage.
- **Rust**: `cargo fmt --all` and `cargo check -p <crate>` for the touched crate. Add `--all-targets`, `--workspace`, or `cargo clippy -p <crate> --all-targets -- -D warnings` only for explicit requests, CI/PR final validation, or changes that need broader coverage.
- **TS / JS / JSON / CSS / MD**: prefer scoped checks such as `pnpm exec biome check --write <files>`. Use full `pnpm format`, `pnpm lint`, and `pnpm typecheck` only when explicitly requested or when the change is broad enough to justify it.
- If a scoped check fails, fix the violation in the source (do NOT suppress with `#[allow(...)]`, `// biome-ignore`, or `any` unless explicitly approved). The Pre-Generation Invariants show the correct form for every denied lint.
2 changes: 0 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,6 @@ Requirements:
- pnpm 10.5.2
- Rust 1.88 or newer
- Docker for MySQL, MinIO, and local services
- Optional on macOS: [Cinder](https://github.com/CapSoftware/cinder) for faster local `check` / `build` / `test` / `run` and desktop watch. `pnpm dev:desktop` uses it automatically when `cinder` is on `PATH`. Install with `pnpm cinder:install`. Set `CAP_USE_CINDER=0` to force stock Cargo.

Install and set up the repo:

Expand All @@ -143,7 +142,6 @@ Common commands:
| `pnpm format` | Format with Biome |
| `pnpm typecheck` | Run TypeScript project references |
| `cargo test -p <crate>` | Run Rust tests for a crate |
| `pnpm cinder:install` | Install Cinder for faster local macOS Rust commands |

Database commands:

Expand Down
Loading
Loading