Skip to content

feat(app): remote terminal client and renderer - #1668

Draft
rixzkiye wants to merge 16 commits into
slopus:mainfrom
rixzkiye:feat/terminal/3-app-client
Draft

feat(app): remote terminal client and renderer#1668
rixzkiye wants to merge 16 commits into
slopus:mainfrom
rixzkiye:feat/terminal/3-app-client

Conversation

@rixzkiye

@rixzkiye rixzkiye commented Aug 7, 2026

Copy link
Copy Markdown

Summary

Layer 3 of 6, stacked on #1667. Adds the encrypted app client and web/native renderers; it remains draft until the earlier layers land.

  • Machine-scoped terminal control RPC client.
  • Encrypted TerminalStream with subscribe-first attach, replay/resync, output sequencing, and input acknowledgements.
  • Web xterm renderer and offline native WebView renderer.
  • useTerminalSession hook for the UI layer.

Atomic commits unique to this layer

  1. build(app): add xterm renderer dependencies
  2. feat(app): add remote terminal types and control RPC client
  3. feat(app): add encrypted terminal stream client with replay and resync
  4. feat(app): add web and native terminal renderer views
  5. feat(app): add useTerminalSession hook

Validation — 2026-08-11

  • pnpm --filter happy-app typecheck — passed.
  • pnpm --filter happy-app exec vitest run sources/sync/terminalClient.test.ts — 6 tests passed.
  • Merge-tree with current origin/main — clean.

Review this layer

Unique diff: rixzkiye/happy@feat/terminal/2-protocol...feat/terminal/3-app-client

Stack workflow

Because these contributor branches live in a fork and I do not have push access to slopus/happy, GitHub requires every upstream PR to target main. Descendant PRs therefore show cumulative diffs.

Only the first unmerged layer is ready for review. Later layers stay draft. After each parent lands, I will restack descendants onto the updated main before promoting the next PR; this remains correct whether maintainers rebase-merge or squash-merge.

Merge order: #1666#1667#1668#1669#1670#1671.

#1671 replaces the initial stream implementation with the final protocol-v3, explicit writer, readiness, lifecycle-fencing, and bounded-buffer behavior.

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