Commit Graph

7 Commits

Author SHA1 Message Date
Brian Krabach b2b9fd1746 fix: smooth Android terminal scroll via delta accumulation
Old: variable deltaY*3 per touchmove — Android batches events causing
burst-scroll then pause (jumpy). New: accumulate pixels across events,
fire fixed deltaY=120 per SCROLL_PX pixels. Each scroll step is
identical regardless of when Android delivers touchmove events.

SCROLL_PX=20 → ~40px swipe = 2 scroll clicks. Accumulator resets on
touchstart and touchend. macOS/iPad/mouse-wheel path unchanged.
2026-03-28 16:19:30 -07:00
Brian Krabach c1701bf26b fix: sidebar-item flex-shrink:0 — cards were compressing to fit, eliminating scroll
Without flex-shrink:0, flex compresses all sidebar cards proportionally
when the container is shorter than their total height. Cards visually
fit the screen with no overflow — scrollTop stays 0, touch handler
has nothing to scroll. One property restores the intended overflow.
2026-03-28 16:04:02 -07:00
Brian Krabach 383b28c85e fix: sidebar touch scroll via scrollTop — bypasses broken CSS path
position:fixed + overflow:hidden on .session-sidebar in mobile overlay
mode prevents Android Chrome from routing native touch-scroll to the
child .sidebar-list (overflow-y:auto). Direct scrollTop manipulation
always works. Mirrors the terminal WheelEvent approach: take JS control
rather than relying on native CSS touch-scroll routing.
2026-03-28 15:52:37 -07:00
Brian Krabach 195912edf9 fix: touch scroll dispatches WheelEvent instead of scrollLines
scrollLines() only moves xterm.js's local scrollback buffer (outside).
WheelEvent dispatch goes through xterm.js's mouse reporting path —
if tmux mouse mode is on, escape sequences reach the PTY so tmux and
applications (vim, less, etc.) handle the scroll (inside).

Same behavior as mouse wheel on desktop.
2026-03-28 15:01:01 -07:00
Brian Krabach 3d91bd5c68 feat: touch scroll for terminal and sidebar on mobile
Terminal: add touchstart/touchmove/touchend IIFE on #terminal-container.
Vertical swipe delta translated to _term.scrollLines(n). touchmove is
non-passive (required for e.preventDefault to block page scroll while
swiping inside terminal). mouse wheel scroll unaffected (separate wheel
event path in xterm.js).

Sidebar: add touch-action:pan-y + overscroll-behavior:contain to
.sidebar-list. Tells browser explicitly that vertical panning is allowed
and prevents scroll chaining when reaching list ends.
2026-03-28 14:37:57 -07:00
Brian Krabach 4ffdc1bd99 fix: three mobile/WSL bugs reported by tester
- Mobile idle tiles: display:none → height:36px so session content is
  visible (all sessions are 'idle' with zero bells — was blank on iPhone)
- .tile-pre dead CSS: merge font/color rules into .tile-body pre (the
  actual HTML selector) so snapshot text renders with monospace + muted
  color; update mobile active-tier selector to match
- systemd PATH: strip /mnt/ entries from PATH before writing service
  unit file — WSL paths with spaces caused systemd to reject the line
2026-03-28 09:03:33 -07:00
Brian Krabach 74b63033d7 refactor: rename coordinator → muxplex package, move frontend inside as package data 2026-03-28 02:02:50 -07:00