Skip to content

feat: allow native keyboard on iPad and desktop#25

Merged
my-claude-utils merged 1 commit intomainfrom
feat/native-keyboard
Mar 17, 2026
Merged

feat: allow native keyboard on iPad and desktop#25
my-claude-utils merged 1 commit intomainfrom
feat/native-keyboard

Conversation

@my-claude-utils
Copy link
Owner

Summary

Resolves #24 — our first community issue! 🎉

  • Native keyboard toggle in Skin Studio, visible only on iPad/desktop (screen width >= 768px)
  • When enabled: xterm.js textarea is restored, terminal.onData wires physical keystrokes to the PTY, on-screen keyboard and context strip are hidden
  • When disabled (default): existing behavior unchanged, on-screen keyboard works as before
  • CLI token display: one-time bootstrap token now shown in plain text in npx clsh-dev output for easy copy-paste on desktop
  • Auth screen: label updated from "Bootstrap Token" to "One-Time Token" for clarity

Files changed

File Change
packages/web/src/hooks/useNativeKeyboard.ts New hook — localStorage-backed toggle
packages/web/src/hooks/useTerminal.ts Textarea suppression now reactive to nativeKeyboard
packages/web/src/components/TerminalView.tsx Conditional onData handler + keyboard visibility
packages/web/src/components/SkinStudio.tsx Toggle UI with iOS-style switch
packages/web/src/App.tsx Wire hook through to components
packages/web/src/lib/types.ts Props updated
packages/agent/src/tunnel.ts Print token in CLI output
packages/web/src/components/AuthScreen.tsx "One-Time Token" label

Test plan

  • Desktop (>= 768px): Toggle visible in Skin Studio, enables physical keyboard input
  • Phone (< 768px): Toggle NOT visible, on-screen keyboard works as before
  • iPad: Toggle visible, physical keyboard works when external keyboard connected
  • npx clsh-dev terminal output shows token in plain text
  • Token is single-use and expires after 5 minutes (no security regression)
  • Settings persist across page reloads (localStorage)

Add a toggle in Skin Studio (visible only on screens >= 768px) that lets
users switch from the on-screen keyboard to their device's physical
keyboard. When enabled, xterm.js textarea is restored and terminal.onData
wires keystrokes directly to the PTY. On-screen keyboard and context
strip are hidden.

Also displays the one-time bootstrap token in the CLI startup output so
desktop users can copy-paste it, and updates the auth screen label from
"Bootstrap Token" to "One-Time Token" for clarity.

Closes #24
@my-claude-utils my-claude-utils merged commit 62fc2bf into main Mar 17, 2026
2 checks passed
@my-claude-utils my-claude-utils deleted the feat/native-keyboard branch March 17, 2026 14:53
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.

[Feature]: Allow Native Keyboard

1 participant