Claude Chill: टर्मिनल में Claude Code की flickering समस्या को ठीक करना
(github.com/davidbeesley)- Claude Chill एक PTY proxy tool है जो Claude Code द्वारा पूरे टर्मिनल को बार-बार redraw करने पर होने वाली latency और flickering समस्याओं को कम करता है
- यह Claude Code द्वारा उपयोग किए जाने वाले synchronized output (sync blocks) को intercept करता है और VT100-आधारित rendering के जरिए स्क्रीन के केवल बदले हुए हिस्सों को ही update करता है
- यह history buffer बनाए रखता है, जिससे scrollback संभव होता है, और Ctrl+6 कुंजी से ‘lookback mode’ में जाकर पूरा output history देखा जा सकता है
- एक निश्चित समय तक input न होने पर history को अपने-आप dump करने वाला auto-lookback फीचर भी देता है
- Linux और macOS पर काम करता है, और terminal performance व readability को बेहतर बनाने वाला हल्का solution है
अवलोकन
- Claude Chill एक PTY proxy program है, जिसे Claude Code के terminal output से जुड़ी समस्याओं को हल करने के लिए बनाया गया है
- Claude Code पूरे output को sync blocks में wrap करके एक साथ render करता है, लेकिन इस प्रक्रिया में हजारों लाइनों का full-screen refresh हो सकता है
- इसके कारण latency, flickering, और scrollback loss जैसी समस्याएँ पैदा होती हैं
- Claude Chill टर्मिनल और Claude Code के बीच बैठकर सिर्फ output diff लागू करता है और history buffer बनाए रखता है
मुख्य फीचर
- Sync block interception: Claude Code द्वारा भेजे गए बड़े synchronized blocks को detect और process करता है
- VT-आधारित rendering: VT100 emulator का उपयोग करके screen state को track करता है और केवल बदले हुए हिस्से output करता है
- History retention और lookback mode: output को buffer में save रखता है ताकि पुराने logs देखे जा सकें
- Ctrl+6 कुंजी से lookback mode में प्रवेश
- Claude का output अस्थायी रूप से रोककर पूरा history टर्मिनल में दिखाता है
- कुंजी दोबारा दबाकर या Ctrl+C से बाहर निकला जा सकता है
- Auto-lookback: एक निश्चित समय तक (डिफ़ॉल्ट 15 सेकंड) input न होने पर history अपने-आप dump हो जाता है
-a 0option से इसे disable किया जा सकता है- auto dump के समय स्क्रीन थोड़ी देर के लिए flicker कर सकती है
इंस्टॉलेशन और उपयोग
- इंस्टॉल:
cargo install --path crates/claude-chill - चलाने के उदाहरण:
- सामान्य रन:
claude-chill claude - arguments के साथ:
claude-chill -- claude --verbose - history size सेट करना:
claude-chill -H 50000 claude - auto-lookback disable करना:
claude-chill -a 0 claude
- सामान्य रन:
- मुख्य options:
-H, --history: history की अधिकतम lines (डिफ़ॉल्ट 100000)-k, --lookback-key: lookback mode toggle key-a, --auto-lookback-timeout: auto-lookback wait time (ms)
कॉन्फ़िगरेशन फ़ाइल
- स्थान:
- Linux:
~/.config/claude-chill.toml - macOS:
~/Library/Application Support/claude-chill.toml
- Linux:
- मुख्य items:
history_lines: history की अधिकतम lineslookback_key: lookback mode toggle keyrefresh_rate: rendering FPSauto_lookback_timeout_ms: auto-lookback समय
Keyboard protocol और key settings
- Kitty Keyboard Protocol को support करने वाले टर्मिनल (Kitty, Ghostty, WezTerm आदि) में mode अपने-आप switch हो जाता है
- जब Claude Code Kitty mode को activate करता है, Claude Chill भी उसी encoding को अपने-आप पहचान लेता है
- key format:
[modifier][key]- उदाहरण:
[f12],[ctrl][g],[ctrl][shift][j]
- उदाहरण:
- डिफ़ॉल्ट key Ctrl+6 ASCII 0x1E भेजती है, और यह ज़्यादातर terminals से टकराती नहीं है
- macOS में Ctrl+Shift+6 (Ctrl+^) वही काम करता है
काम करने का तरीका
- Claude Chill एक virtual terminal (PTY) बनाता है और Claude Code को child process के रूप में चलाता है
- I/O proxy architecture:
Terminal ⇄ claude-chill ⇄ Claude Code - मुख्य processing steps:
- input: Claude तक forward किया जाता है, केवल lookback key को block किया जाता है
- output: sync blocks को detect किया जाता है और asynchronous output को वैसे ही pass through किया जाता है
- VT emulation के जरिए screen state track की जाती है
- पिछली state से तुलना करके सिर्फ diff render किया जाता है
- history buffer बनाए रखा जाता है और lookback mode support किया जाता है
- SIGWINCH, SIGINT, SIGTERM जैसे signals Claude तक forward किए जाते हैं
ध्यान देने योग्य बातें
- यह एक निजी सुविधा के लिए बनाया गया tool है, इसलिए इस पर व्यापक testing नहीं की गई है
- Linux और macOS पर काम करना verified है
- महत्वपूर्ण system या infrastructure environments में इसके उपयोग की सिफारिश नहीं की जाती
- MIT License
1 टिप्पणियां
Hacker News की राय
मैं Claude Code की TUI rendering पर काम करता हूँ
लंबे समय तक असुविधा के लिए माफ़ी, लेकिन आज हमने सभी users के लिए differential renderer deploy कर दिया है
हमने rendering system को पूरी तरह से फिर से लिखा है, और अब सिर्फ़ लगभग 1/3 sessions में ही बीच-बीच में flickering होता है। लगातार होने वाला flickering लगभग ख़त्म हो गया है
मैंने VSCode terminal और tmux के लिए synchronized output (DEC mode 2026) support patch भी submit किया था, और वह पहले ही merge हो चुका है
अगर आप पूरी तरह बिना flicker वाला अनुभव चाहते हैं, तो Ghostty recommend करता हूँ। संबंधित जानकारी issue #769 comment, xterm.js PR #5453, tmux PR #4744 में देख सकते हैं
GitHub issues (#1913, #826, #3648) पर हर दिन comments आते हैं, लेकिन दिसंबर rollback के बाद से Anthropic की तरफ़ से जवाब लगभग नहीं के बराबर थे
technical difficulty समझ में आती है, लेकिन लगता है कि communication की कमी ने users का trust कम कर दिया
मैं सिर्फ़ एक-दो agents ही चला रहा हूँ, फिर भी यह हो रहा है। सोच रहा हूँ कि कहीं पुराने plan का rate limit तो नहीं बचा हुआ, या long-context sessions इसकी वजह तो नहीं हैं
फिर भी इस tool की वजह से मैं ऐसे apps बना पा रहा हूँ जो पहले असंभव थे, इसलिए यह सच में रोमांचक है
macOS iTerm में हर बार window focus हटने पर screen ऊपर scroll हो जाती थी, जो बहुत परेशान करने वाला था
Ghostty 1.0 से memory leak था, और Claude Code जैसे CLI apps अक्सर वही conditions बना देते थे जिससे समस्या सामने आ जाती थी
fix पहले ही merge हो चुका है और 1.3 release में शामिल होगा
अगर इसे Zed की तरह flexible बनाया जा सके, तो अनुभव बहुत बेहतर हो सकता है
मैंने कई महीनों से Claude Code इस्तेमाल नहीं किया, इसलिए यह जानकर हैरानी हुई कि flicker अब भी ठीक नहीं हुआ
मुझे लगने लगा है कि इसे open source न करने की वजह competition नहीं, बल्कि शायद codebase की अव्यवस्था हो सकती है
issue #769 में इससे जुड़ी जानकारी है
मैंने local में npm package patch किया था, लेकिन वह परफ़ेक्ट नहीं है। ढाँचागत रूप से rendering तरीका बदलना पड़ेगा
संदर्भ के लिए, OpenAI Codex Rust + ratatui में लिखा गया है, इसलिए वहाँ यह समस्या नहीं है
ऐसे जटिल bugs आख़िरकार किसी इंसान को weekend पर बैठकर खुद ठीक करने पड़ते हैं, लेकिन लगता है कि वे सिर्फ़ agents चला रहे हैं
दूसरे CLI tools (opencode, codex, gemini, droid आदि) में यह समस्या नहीं है
अगर उन्होंने इसे tmux environment में खुद इस्तेमाल किया होता, तो समझते कि यह कितना दर्दनाक है, फिर भी मैं थोड़ा सहानुभूति रखना चाहता हूँ
मैं Claude Code इस्तेमाल करना चाहता हूँ, लेकिन Ghostty का scrollback feature टूटा हुआ है, इसलिए नहीं कर पाता
PTY proxy output stream को intercept कर लेता है, जिससे Ghostty के internal buffer access में रुकावट आती है
मैं सोच रहा था कि flickering ठीक-ठीक क्या है
कभी-कभी Claude Code अचानक ऊपर scroll हो जाता है, फिर वापस नीचे आना मुश्किल होता है, और terminal restart करने पर ही सब सामान्य होता है
अच्छा होता अगर input box को terminal के नीचे fix करने के लिए एक toggle feature होता
chat और input box के बीच बार-बार scroll करना झंझट भरा है
mobile usability के लिहाज़ से यह game changer feature हो सकता है
readme.md का format देखकर दिलचस्प लगा कि शायद Claude Code ने खुद लिखा हो
लगता है यह update पिछले कुछ महीनों में Claude Code के लिए सबसे बड़ा योगदान है
मैं इसे तुरंत install करके test करने वाला हूँ
संबंधित ख़बर के तौर पर, मैंने पिछली पोस्ट देखी थी जिसमें कहा गया था कि “Claude Code की terminal rendering को 85% बेहतर किया गया”
आख़िरकार flickering कम करने के लिए धन्यवाद। यह सिरदर्द पैदा करने वाला bug था, अब थोड़ी राहत मिलेगी
उम्मीद है Anthropic इस समस्या को जल्द पूरी तरह हल करेगा
Codex, session लंबे होने पर भी काफ़ी responsive रहता है, जबकि Claude समय के साथ lag करने लगता है