Skip to content

feat: add native GPUI desktop alternative for stack evaluation - #52

Open
boggedbrush wants to merge 1 commit into
mainfrom
feat/gpui-native-alternative
Open

boggedbrush wants to merge 1 commit into
mainfrom
feat/gpui-native-alternative

Conversation

@boggedbrush

Copy link
Copy Markdown
Owner

Purpose

Add a runnable native Rust/GPUI alternative to evaluate alongside the current Electron app and Tauri alternatives (#36 and #40). The branch starts from current main and replaces the UI/runtime with native controls while reusing the existing Python operations, allowing a controlled first renderer comparison.

Implementation

  • Standalone GPUI application with Dashboard, T7 Patch, EXE Swapper, Enhanced, Graphics, DXVK, and Tools sections; native folder selection, editable settings, launch profiles, mod actions, status, and logs.
  • Sequential HTTP worker keeps long operations off the UI thread; operation confirmations, backend error/depot messages, periodic status refresh, and preserved input drafts.
  • Python supervisor owns an ephemeral-loopback API and native executable, waits for health, and cleans up on exit/failure. Defer native quit past GPUI 0.2.2's X11 close callback to avoid its borrow panic.
  • Pinned toolkit/toolchain and Cargo.lock, Windows/Linux build CI, prerequisite-based evaluation ZIPs, a process-tree measurement tool, and an X11 native close regression smoke check against a read-only fake API.
  • Research, implementation plan, stack comparison, parity matrix, measurements, and reviewer checklist. Build/run instructions.

Validation

Passed locally on Linux:

  • Locked debug and optimized release builds; rustfmt and Clippy with warnings denied.
  • 4 Rust protocol tests and 6 Python launcher/lifecycle tests.
  • Real API health/status on an ephemeral port and service shutdown verification.
  • Native window rendering and Dashboard/Graphics/text-entry inspection under Xvfb/Openbox, Mesa software Vulkan, and a compositor; FPS input draft preserved during refresh.
  • Native startup and normal X11 window-close regression check for both debug and release binaries.
  • Existing Electron TypeScript check (tsc --noEmit), archive contents, and process-tree sampler smoke checks.

Native GPUI evaluation

Evaluation boundaries

This is an experimental evaluation slice, not full production parity. Python remains required; the ZIPs do not bundle its runtime. Logs are polled rather than streamed. Signed installers, updater integration, detailed depot UX, and hardware/accessibility validation remain follow-up gates. No comparative performance win is claimed; the measurement plan accounts for the entire process tree and backend/package differences from #40.

Windows/Wayland/Steam Deck and actual game-file/mod-install workflows need the documented manual checks. Automatic approval review blocked a GUI Apply-click smoke check as potentially file-changing; no game-mutating UI actions were executed in this environment. Confirmation behavior was reviewed in code. Hosted CI results are separate from the local validation above.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 52b8d2150d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread native/gpui/src/ui.rs
.child(
Button::new("refresh")
.label(if self.busy { "Working…" } else { "Refresh" })
.disabled(self.busy)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Disable refresh while an operation awaits confirmation

When the confirmation panel is open, Refresh remains enabled because this check ignores self.pending. Clicking it starts a status request and sets busy; if Confirm is clicked before that request finishes, the pending operation is removed and send immediately returns because the view is busy. The UI then says the operation is running even though it was never queued. Disable refresh while a confirmation is pending, disable confirmation while busy, or retain the pending request until it is successfully sent.

Useful? React with 👍 / 👎.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 2, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-02T04:13:33.008795Z 52b8d21 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant