Observed behavior
Multiple related portrait rendering issues, all stemming from terminal graphics protocol (Kitty/Sixel) interaction with WezTerm multi-monitor handling:
- Starting a second forestage on another monitor erases the portrait from the first session
- Moving a window between monitors erases the portrait (toggle on/off restores it)
- On a different-resolution monitor, the portrait renders as a partial/cropped image
- Size cycling in bottom position causes horizontal drift (small=far right, original=near center)
Root cause
- ratatui-image captures
picker.font_size() once at startup
- Kitty protocol images stored in terminal graphics memory are invalidated by monitor/DPI changes
- Multiple instances may compete for graphics IDs
- Cell size calculations use stale font metrics after the display context changes
Fix direction
- Listen for terminal resize events and re-query font size from the picker
- Re-send image data after resize/move (force re-render)
- May need ratatui-image upstream support for resize-aware rendering
Priority
Low — these are edge cases that affect multi-monitor setups. The portrait is cosmetic and can be restored with Ctrl+P or Alt+P toggle. Core TUI functionality (text, input, conversation) is unaffected.
Environment
- Terminal: WezTerm
- OS: macOS (multi-monitor, different resolutions)
- ratatui-image 10.0, crossterm 0.29
Observed behavior
Multiple related portrait rendering issues, all stemming from terminal graphics protocol (Kitty/Sixel) interaction with WezTerm multi-monitor handling:
Root cause
picker.font_size()once at startupFix direction
Priority
Low — these are edge cases that affect multi-monitor setups. The portrait is cosmetic and can be restored with Ctrl+P or Alt+P toggle. Core TUI functionality (text, input, conversation) is unaffected.
Environment