Files
headquarter/openspec/changes/fix-tmux-mouse-config/change.md
T
Developer 4c14966ae3 fix: write valid multi-line tmux config in Pi Agent images
The Pi Agent dockerfile templates created ~/.tmux.conf with a literal
\n because the RUN command used single-quoted echo. Tmux never parsed
the malformed line, so mouse mode stayed off. Without tmux mouse mode,
mouse-wheel events in xterm.js fell back to Up/Down arrow keys and
cycled shell command history instead of scrolling the terminal buffer.

- Use printf '%s\n' to write real newlines in .tmux.conf.
- Apply the same fix to the ranger rc.conf where the same bug existed.
- Update tool-images/pi-agent.dockerfile and both affected alembic
  migration dockerfile strings.

Quality gates: npm run typecheck, npm run lint, npm test -- --run (87 passed),
py_compile on changed migrations.

Refs: openspec/changes/fix-tmux-mouse-config
2026-06-14 08:48:39 +00:00

1.4 KiB

Fix tmux Mouse Mode Configuration in Pi Agent Images

Summary

The Pi Agent dockerfile templates create /home/user/.tmux.conf using echo '... \n ...' with single quotes. In both Dockerfile RUN commands and Python-embedded dockerfile strings, single quotes prevent \n from being interpreted as a newline, so the resulting .tmux.conf contains a single malformed line such as:

set -g mouse on\nset -g default-terminal "screen-256color"

Tmux fails to parse this, so set -g mouse on is never applied. Without tmux mouse mode, xterm.js sends mouse-wheel events as Up/Down arrow keys to the shell, causing wheel scroll to cycle command history instead of scrolling the terminal/tmux buffer.

Scope

  • tool-images/pi-agent.dockerfile
  • apps/api/alembic/versions/20260527160017_add_pi_agent_tool_type.py
  • apps/api/alembic/versions/2026_05_28_add_tool_definition_manifests.py

Acceptance Criteria

  • Pi Agent image builds write a valid multi-line .tmux.conf.
  • .tmux.conf contains set -g mouse on on its own line.
  • .tmux.conf contains set -g default-terminal "screen-256color" on its own line.
  • Ranger config is also fixed where the same literal \n bug exists.
  • Alembic migration dockerfile strings produce the same valid commands as the standalone Dockerfile.
  • openspec/specs/tool-terminal
  • tool-images/pi-agent.dockerfile