GPUI rewrite of the 2code desktop shell - #391
Draft
AkaraChen wants to merge 50 commits into
Draft
Conversation
Document every 2code window, screen, region, dialog, and layout contract so a later UI-framework rewrite can rebuild the product without reading the current React stack. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Introduce src-gpui, a GPUI + gpui-component app that talks to the existing Rust domain crates directly. It implements the inventory surfaces: two windows, app sidebar, home, profile workspace, persistent PTY terminals, file viewer, git panel/diff, command palette, dialogs, settings, debug, and en/zh i18n. Tauri/React remains in-tree as the legacy shell while this becomes the new primary binary. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
✅ Deploy Preview for grand-selkie-225f87 canceled.
|
Render vt100 cells with ANSI colors and search cycling, check GitHub releases on startup and from About, persist sidebar resize/reorder, preview images, and autosave notes. Document GPUI as the primary desktop shell while the Tauri UI remains as reference. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Inline rename and drag-to-PTY close more file-tree inventory gaps. Settings now lists system fonts and notification sounds. Agent status uses a rule-based detector and can play the waiting sound. A filesystem watcher refreshes the tree, and just start launches the GPUI app instead of the Tauri shell. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Wire DB session restore into the workspace, sync notes when switching profiles, render a real two-column git split, and add keyboard sidebar resize plus file-tree multi-select. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Sort-mode project rows, pin/unpin zones, and group headers accept native GPUI drops. File-tree paths can be dragged onto folders or the tree root to move them. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Replace the phrase/alias detector with the TS engine (regions, gates, idle confirmation) and all 18 agent manifests. Capture OSC title via vt100 callbacks. Download the GitHub release asset and open it from About. Git diffs gain +/- counts, image preview, and a review-comment queue. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Bind Esc to dismiss overlays, wire palette and terminal-search keys, add sidebar arrow navigation, show file-type icons, expand the markdown toolbar, and make ./start.sh / bun start launch the GPUI shell. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Add project-level terminal templates, markdown notes with live preview, git-dirty files in the tree, unique New File/Folder names, completed agent-dot dismiss, drop-on-terminal-tab paths, file find, archive counts, top-bar reorder, and Enter-to-submit on create/rename dialogs. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Detect editors, terminals, browsers, and shells; expose them in Settings. Review Queue can copy or copy-and-clear. Terminal links skip confirm with Ctrl/Cmd-click and offer Open With. Markdown files get a / slash menu. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Close more inventory gaps: dashed folder picker with basename fill and busy spinner, show-all-fonts and empty-sound states, click-to-edit templates, text line numbers, image checkerboard, and a GPUI CI check job. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Switch the text viewer to gpui-component's code editor (tree-sitter languages, line numbers, no wrap), show the first-run tour as a right-side popover after 300ms, and add Windows / project-name tooltips plus file-tree open animation. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Waiting agents now raise a system notification, file drafts sync after 400ms instead of on every frame, Windows maximize reflects restore state, and installing an update quits so the installer can replace the app. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Deleted tree files stay visible but no longer open, status badges map word statuses (untracked/deleted/ignored), Cmd+F / font-size shortcuts and paste work like the xterm shell, and archive previews use file icons. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Root context menu now copies relative/absolute paths, Open skips deleted git files, and the notes toolbar exposes numbered lists plus i18n tooltips. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Closing Files/Git/Notes no longer unmounts the tree. Markdown tools insert at the caret, settings show the inventory terminal preview sample, search hits use the xterm colors, and the file tree shows a sticky folder crumb. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Terminals from all workspaces stay in one pty-layer with stable session ids, matching the old TerminalLayer contract. PDF/Office previews rasterize page one when pdftoppm is available, and toasts dismiss on click. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Project context menus now list existing groups with a current-group check, remove, and inline create. Sort mode shows folder drop hints, and Settings uses Dark/Light theme labels plus preview, custom shell, and font empty states. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Cmd+F opens an i18n find bar on the file viewer instead of keeping it always visible. Sidebar pin, drop, and reorder failures now use the inventory error copy, and the default shell chip uses the defaultOption label. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Cmd+F find now steps through matches with prev/next and Enter/Shift+Enter. Sidebar project rows load GitHub avatar URLs when present, Settings Top Bar uses inventory labels and empty states, and project templates show their relative cwd. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Show rename paths and HEAD/worktree image sides in the git viewer, add command-palette parent paths and inventory strings, and surface template/worktree/updater copy that the Tauri UI already had. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Add worktree/template/notes/path strings from the Tauri UI, show an empty-profile hint in the sidebar, and keep a failed PR-status tooltip instead of treating every miss as “no pull request”. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Attach the domain tracing layer to the debug panel so the wrench is not an empty shell, gate releases on GPUI check instead of Tauri smoke, and upload native 2code binaries as the product artifacts. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Tagged GitHub releases now attach the GPUI linux/macOS/Windows binaries instead of a leftover Tauri bundle. Settings top-bar controls can be dragged to reorder or dropped onto Available to remove, Reset uses the shared defaults, About shows the app icon and maintainer avatar, and terminal tabs take their left icon from title keywords with a pulsing running-status dot. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Toolbar and slash commands now wrap the current editor selection instead of inserting empty marks at the caret. Notes gets the same slash menu as the markdown viewer, and a failed file open shows the inventory error pane. CI runs the GPUI test suite on PRs; leftover React checks are manual only. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
…ommands. Install now overwrites the running 2code binary for linux/macOS/Windows GPUI assets instead of only opening a downloaded installer. Dirty git paths still appear in an unscanned file tree, and just start / tauri:dev / verify all go through GPUI tests rather than leftover React. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Language badges and extra file kinds distinguish the tree, tabs, palette, and Git list. Home uses a FolderPlus empty state, terminal search is 224px, Top Bar reordering is drag-only, and agent docs now describe GPUI as the product. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
PTY grids now support drag/shift selection with xterm-style highlight, auto-copy on mouse up, Cmd+C copy, and Ctrl+C copy-or-SIGINT. Notes and markdown files wrap bold/italic with Cmd/Ctrl+B and I. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
URLs and file paths are underlined and clickable on the PTY grid, OSC 9;4 draws a progress bar, and Ctrl+L clears the session log plus the local screen like the old xterm addons. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Replace the source/preview split with a single editor pane, a grouped icon toolbar, a vertical i18n slash menu, table and link operations, and leftover code-block language/copy chrome. Enable ligatures on terminals and editors the way xterm and Monaco did. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
New File/Folder now land under the right-clicked folder, Delete covers the current multi-selection, and the tree accepts arrow/Enter/Delete/F2. PTY sessions decode OSC 1337 inline images and send ^V for image clipboard pastes the way leftover xterm did. Slow UI ticks write frontend-perf.jsonl when the performance profile is on. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
PTY columns now come from the advance of "W" (xterm's metric) instead of a 0.62em guess, so CJK/emoji no longer leave empty columns. Continuation cells are skipped and wide glyphs span two columns. Sidebar resize and completed-dot tooltips match the leftover hardcoded labels. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Comments now keep file, range, selected diff, and body. Copy uses the leftover
agent prompt ("Please address these review comments"), the composer matches
Comment on / Add to queue / Cancel, and the queue dialog shows leftover cards
with Copy / Copy and clear all.
Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Commit rows now show leftover hardcoded relative time, mono hash, author, and
file/+/- stats. Opening a commit uses the leftover back-arrow header, message
and hash, and "{count} changed file(s)" list with basename/parent and selection.
Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Git changes and history lists now use leftover basename + parent path rows, outline A/D/M/R badges, dim unchecked files, and discard only from the right-click menu. About stores the raw release timestamp and formats it as a leftover medium date plus long relative time. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
The large git overlay now steps files and commits like the leftover reducer, Space toggles include, Enter drills into a commit, and Escape/Backspace leave drill-in instead of closing the dialog. Cmd/Ctrl+Enter pushes when there are no local changes but the branch is ahead. The command palette matches leftover cmdk: search row only, stacked name/parent results, and leftover empty copy. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Switch Branch is leftover max-width, search-only (no footer), branch glyph, current/trunk/used chips, and green/red ahead-behind counts only on non-current rows. The large diff overlay uses leftover 88rem x 56rem sizing and a truncated branch title with a Close tooltip. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Center the project name and branch with leftover px-32 padding, a semibold name, and the branch glyph. Show git +/− only when leftover toGitDiffSummary would, and open Debug Log as the leftover 32rem dialog with search, trash clear, level badges, and filtered/total footer. Cmd+Shift+D now toggles that dialog only when debug mode is on. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Leftover composer shows Push only on a clean tree and Commit only when files exist, without the extra All/None row. Select-all is tri-state, commit toasts use a 7-char hash and clear the form, and toasts render leftover Sonner icons on a popover surface. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Leftover ProjectMenuItem only shows Default / extra profiles / New Profile when a project has extra profiles; a single default stays a row with + create. Non-default rows use the leftover branch glyph, and the empty-terminal CTA matches leftover Empty media (32px muted tile) without a forced split button. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Create/rename/delete dialogs now use leftover title marks, 384/512 widths, popover panel, outline Cancel, Folder+pencil picker, and leftover delete-profile alerts. The tab-bar New Terminal control hover-opens leftover template groups instead of a split caret. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Binary/archive previews now use leftover headers without an extra Open button, the text editor no longer shows a leftover-inaccurate Save toolbar, and Open Link / Choose File follow leftover title icons, rows, and the leftover Open-with split. Home uses leftover house mark; onboarding sits next to Add Project; Windows caption hover/active matches leftover. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Hide empty PR status, show leftover browser names and app tooltips, scroll the git file list, and restore leftover file-tree menu separators plus About copyright. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Use leftover max-w-2xl layout, version badge beside the title, outline repo/releases, and a bordered Update card with leftover available/not-available badges. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Replace chip grids for language, theme, terminal theme, shell, font, sound, and topbar apps with leftover 32px bordered dropdowns; keep leftover ToggleGroup chips for radius. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Settings and project settings now use leftover bordered rows with commandPreview, ghost edit/delete, and a 512px TerminalTemplateDraftDialog instead of an always-visible inline form. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Tab icons now follow leftover title keywords only (otherwise TerminalWindow). Debug log tracks leftover 40px-from-bottom auto-scroll, and the file tree pins leftover sticky folders from visible rows plus scroll. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
Poll for leftover tmpl-ok instead of a fixed 2s sleep so PowerShell init no longer races close. Also show leftover TerminalWindow on the Edit Template dialog title. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
New prefs start with leftover notifications off and leftover Ping sound. Top bar right padding is leftover 20px, or leftover 118px on Windows. Co-authored-by: AkaraChen <AkaraChen@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rewrite 2code’s desktop UI in GPUI so the product is no longer a Tauri+React shell. Domain crates (
model/repo/service/infra) are reused in-process;src-gpuiis the native app.This revision
Leftover notification defaults and leftover top bar padding:
CI on
b0c94b8(leftover tab icons / debug auto-scroll / sticky folders) completed with all 10 checks green.Also still on the branch: leftover Templates list + 512px draft dialog; leftover Windows PTY startup test now polls for leftover
tmpl-ok.Still open vs
docs/ui-inventory.mdHow to run
just start # or: ./start.sh or cd src-gpui && cargo runSame app data dir as Tauri:
$XDG_DATA_HOME/com.akrc.code(or platform equivalent).Base:
dev.