Skip to content

Fix mobile terminal scroll recovery#17

Open
ZacharyZcR wants to merge 1 commit into
Termix-SSH:mainfrom
ZacharyZcR:fix/mobile-terminal-scroll-bottom
Open

Fix mobile terminal scroll recovery#17
ZacharyZcR wants to merge 1 commit into
Termix-SSH:mainfrom
ZacharyZcR:fix/mobile-terminal-scroll-bottom

Conversation

@ZacharyZcR
Copy link
Copy Markdown
Member

Overview

Improve mobile terminal behavior during high-volume output by keeping bottom-following stable and giving users a quick way back to live output.

  • Added: ...
  • Updated: terminal output scrolling to preserve user position or stick to the bottom intentionally
  • Removed: ...
  • Fixed: mobile terminal sessions getting stranded away from the bottom during fast output

Changes Made

  • Track xterm scroll position inside the WebView and report whether the viewport is at the bottom.
  • Preserve the current viewport when the user has scrolled up to read history.
  • Continue auto-following new output when the terminal was already at the bottom before the write.
  • Add a native floating scroll-to-bottom button that appears only when the terminal is away from live output.
  • Attempt to enable xterm WebGL rendering when available, with a quiet fallback to the existing renderer if WebGL is unsupported.

Related Issues

Screenshots / Demos

Not included; this needs an iOS terminal session with high-volume SSH output to verify interactively.

Validation run locally:

  • npx eslint app/tabs/sessions/terminal/Terminal.tsx passes with existing warnings only.
  • git diff --check passes.
  • npx tsc --noEmit still fails on existing repository-wide TypeScript errors outside this change.

Checklist

  • Code follows project style guidelines
  • Supports mobile and desktop UI/app (if applicable)
  • I have read Contributing.md

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.

[BUG]

1 participant