Skip to content

feat(app): remote terminal UI - #1669

Draft
rixzkiye wants to merge 22 commits into
slopus:mainfrom
rixzkiye:feat/terminal/4-app-ui
Draft

feat(app): remote terminal UI#1669
rixzkiye wants to merge 22 commits into
slopus:mainfrom
rixzkiye:feat/terminal/4-app-ui

Conversation

@rixzkiye

@rixzkiye rixzkiye commented Aug 7, 2026

Copy link
Copy Markdown

Summary

Layer 4 of 6, stacked on #1668. Adds the terminal UI and an explicit disabled state for the default-off daemon rollout gate.

  • Machine Sessions | Terminals tabs, list/create/close flows, and approval policy.
  • Remote terminal screen with live renderer, status/exit/truncation states, takeover, and mobile keyboard bar.
  • Working-directory prompt for new terminals.
  • Clear HAPPY_TERMINAL_ENABLED disabled state instead of a generic RPC error.

Atomic commits unique to this layer

  1. feat(cli+app): expose remote terminal approval policy over RPC
  2. refactor(app): resolve terminal view by platform extension
  3. feat(app): add mobile keyboard bar for remote terminals
  4. feat(app): add remote terminal screen with live renderer
  5. feat(app): add terminal tabs and approval settings to machine screen
  6. feat(app): show remote terminal rollout state

Validation — 2026-08-11

  • pnpm --filter happy-app typecheck — passed.
  • pnpm --filter happy exec tsc --noEmit — passed.
  • Terminal client suite — 6 tests passed.
  • Merge-tree with current origin/main — clean.

Review this layer

Unique diff: rixzkiye/happy@feat/terminal/3-app-client...feat/terminal/4-app-ui

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.

Final ownership states, accessibility/readiness polish, lifecycle fencing, and bounded attach buffering land in #1671.

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