8 Commits
Author SHA1 Message Date
weidu12123 9d35744dd0 feat(gpui): add local proxy routing and polish terminal, file browser, and UI interactions 2026-10-19 00:26:34 +08:00
weidu12123 a3e79b97b6 feat: ship GPUI native client and fix SFTP session recovery
- Rebuild the GPUI client against the 1:1 UI spec with all six modules,
  terminal context menu, SSE reveal, system tray and standalone windows.
- Add an SFTP session self-healing layer: detect dead channels, drop the
  cached session, reconnect and retry across every file and transfer path.
- Add a terminal refresh button that recreates the pane in place, with
  proper loading and error feedback in both GPUI and the Web console.
- Route startup and autostart through vps-switch-gpui when it is present,
  and make repeated launches wake the existing window via a file lock.
- Strip debuginfo in release, add a GitHub Actions matrix workflow for
  macOS and Linux, and refresh the Windows installers and README.
2026-10-18 12:09:49 +08:00
weidu12123 aa0a05d352 feat(gpui): add the filter menu at measured sizes
The popover matches the old computed styles: 256px wide, white/95,
16px radius, 14px padding, xl shadow, a three-way status grid with
counts and dots, the amber favourite chip, role chips and dynamic tag
chips. The theme now names Segoe UI explicitly so text metrics stay
stable.
2026-10-17 18:21:10 +08:00
weidu12123andClaude Fable 5 69e04889f6 fix(gpui): align the header and host cards to measured styles
The old front end is still served by the daemon, so its computed styles
are the source of truth: header is 50px with a white/75 ground and a
zinc-200/75 bottom border; buttons are 29px tall, the repository button
is 12px-rounded while search/filter/check are pills; round controls are
32px on white/85. Cards have no fill by default (bg-white/82 is not a
valid Tailwind class, so the old cards render transparent), hover to
95% white; borders zinc-200/80, 16px radius, 14/16 padding, 1px 4px 2%
shadow, status dots carry an 8px glow, and per-card buttons are
25px/28px.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-10-17 18:09:59 +08:00
weidu12123andClaude Fable 5 8bed005d85 feat(gpui): rebuild the client against the 1:1 UI spec
The workspace now mirrors the old front end: a top bar with the brand,
repository button and session tabs, search, filter summary, check-all
and theme/settings/add controls; a host card list with OS badges,
status dots, role and pin chips plus per-card actions; a terminal stage
with split, light/dark terminal, right-wing and popout controls; and
the right-side probe drawer with nameplate, CPU, memory, disk, network
and role/tag cards, sampled every 2.8s. The old DockArea scaffold is
gone; layout and colours follow docs/ui-spec.md.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-10-17 17:59:00 +08:00
weidu12123andClaude Fable 5 582c4f4958 feat(gpui): render real terminals from the daemon's byte stream
The client creates a pane over HTTP, attaches to the terminal
WebSocket, and re-parses the byte stream with the same
alacritty_terminal release the daemon uses. Rendering splits each row
into ASCII runs shaped with a per-cell force width and wide CJK glyphs
shaped individually at their column, because force_width snaps every
glyph to one cell and would overlap Chinese text.

Verified against the live daemon: the local PowerShell prompt and
vip-hk's full MOTD parse correctly (examples/terminal_smoke.rs).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-10-17 17:48:03 +08:00
weidu12123andClaude Fable 5 5299ff513f feat(gpui): open terminal tabs from the host list, with headless UI tests
Double-clicking a host (or clicking an already selected one) opens a
terminal tab in the center dock. Three headless tests drive the real
panel with real pointer events. They use gpui-base's test_support
because gpui-kit's test-support feature drags in the gpui-fast
dependency tree, which conflicts with gpui-pre 0.3.9 on Windows.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-10-17 17:29:31 +08:00
weidu12123andClaude Fable 5 73d1735f87 feat(gpui): scaffold the native client talking to the daemon
The workspace now builds two products from one repo: the existing
daemon crate and a new vps-switch-gpui crate that renders the daemon's
HTTP API. The client keeps all networking on a dedicated current-thread
tokio runtime and drains events on the UI thread, so GPUI's executor is
never touched from other threads.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-10-17 17:18:50 +08:00