Terminal rendering repeats entire conversation history (regressed in v2.1.101)
Bug Description
The Ink terminal renderer appends full frames instead of updating in-place, causing the entire conversation history to be repeated on every re-render cycle.
Environment
- OS: macOS (Darwin 25.3.0, ARM64)
- Terminal: Apple_Terminal (
TERM_PROGRAM=Apple_Terminal,TERM=xterm-256color) - Install method: Volta (
volta install @anthropic-ai/claude-code) - Locale:
LANG=zh_CN.UTF-8
Regression
Binary search across versions:
| Version | Status |
|---------|--------|
| v2.1.100 | ✅ No issue |
| v2.1.101 | ❌ First affected version |
| v2.1.104 | ❌ Affected (particularly severe) |
| v2.1.108 | ❌ Affected |
| v2.1.112 | ❌ Affected |
The bug was introduced in v2.1.101 and affects all subsequent versions.
Steps to Reproduce
- Install via Volta:
volta install @anthropic-ai/claude-code@2.1.101 - Start an interactive session:
claude - Send a few messages
- Observe that the entire conversation history is re-rendered below the existing output on each update cycle (e.g., when the spinner state changes)
Expected Behavior
Ink should update the terminal display in-place using ANSI escape sequences, only changing the portions that actually changed.
Actual Behavior
Each re-render cycle appends the full conversation as a new frame below the previous one, causing the terminal to scroll with massive duplicated output.
Additional Notes
- The issue is not related to Chinese localization — verified by reproducing on the unmodified English CLI
- The issue may be related to Ink's ANSI escape sequence handling changes in v2.1.101
- Apple_Terminal has limited support for complex cursor manipulation compared to iTerm2 or VS Code terminal
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗