Skip to content

feat: keyboard UX improvements and session management#60

Closed
aakhter wants to merge 5 commits intoArk0N:masterfrom
aakhter:feat/keyboard-ux
Closed

feat: keyboard UX improvements and session management#60
aakhter wants to merge 5 commits intoArk0N:masterfrom
aakhter:feat/keyboard-ux

Conversation

@aakhter
Copy link
Copy Markdown
Contributor

@aakhter aakhter commented Apr 5, 2026

Summary

  • Disable Ctrl+K kill-all-sessions: Too easy to trigger accidentally (common browser shortcut), now requires confirmation or is disabled
  • Session rename with prefix preservation: Rename sessions while keeping auto-generated prefixes intact
  • Shift+Enter / Ctrl+Enter multiline input: Send multiline input via tmux send-keys -H 0x0a for reliable newline injection
  • Alt+1-9 session switching: Standard keyboard shortcut to quickly switch between sessions, bypasses xterm.js key handling

Test plan

  • Verify Ctrl+K no longer kills all sessions without confirmation
  • Rename a session -- verify prefix is preserved
  • Type multiline input with Shift+Enter -- verify newlines are sent correctly
  • Press Alt+3 -- verify it switches to the 3rd session tab

aakhter and others added 5 commits April 4, 2026 22:15
Right-click a tab to add custom description text while
preserving the auto-generated w<N>-caseName prefix.
Prefix shown muted, suffix shown bold in tabs and modal.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The previous approach sent \n through the WebSocket -> session.write()
path, but tmux didn't pass it through to Claude Code correctly.
The new approach uses a server-side /send-key endpoint that calls
`tmux send-keys -H 0a` to inject a raw line feed byte directly
into the tmux pane. Also disabled the Ctrl+Enter -> quickStart()
shortcut that was intercepting the key before the terminal handler.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Alt+digit in the document capture-phase handler switches to the
Codeman session at that index. The terminal custom key handler
returns false for Alt+digit so xterm.js doesn't consume the event.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Ark0N added a commit that referenced this pull request Apr 11, 2026
Cherry-picked from PR #60 (keyboard UX) and PR #61 (file download):

- Alt+1-9 session switching
- Disable Ctrl+K (too easy to trigger accidentally)
- Session rename with prefix preservation (w1-case: description)
- Shift+Enter / Ctrl+Enter multiline input via tmux send-keys -H
- Android virtual keyboard fix for non-composition input
- File download button in browser file explorer (?download=true)

Dropped from PR #60: stale package-lock.json, upload popup (missing upload.html)
Dropped from PR #61: standalone /api/download endpoint (arbitrary fs access)
Fixed from PR #60: execFileSync replaced with async execFile

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@Ark0N
Copy link
Copy Markdown
Owner

Ark0N commented Apr 11, 2026

Thanks for the contribution! Cherry-picked the following into master (f3cbe9b):

  • Alt+1-9 session switching
  • Ctrl+K disabled (too easy to trigger accidentally)
  • Session rename with prefix preservation
  • Shift+Enter / Ctrl+Enter multiline input via tmux send-keys -H
  • Android virtual keyboard fix

Not included:

  • package-lock.json — was based on v0.3.11 (current master is v0.5.10), causing massive merge conflicts
  • openUploadPopup() / upload button — references /upload.html which doesn't exist in the repo
  • execFileSync in send-key route — replaced with async execFile to avoid blocking the event loop

@Ark0N Ark0N closed this Apr 11, 2026
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.

2 participants