mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-24 05:41:40 +00:00
fix(tui): address Copilot review comments
- stringWidth: true LRU on cache hit (touch-on-read via delete+set) so hot strings stay resident under long sessions; was insertion-order FIFO before - virtualHeights: include todos, panel sections, and intro version in messageHeightKey so height-cache reuse correctly invalidates when todo content / panel sections change - virtualHeights: estimate trail+todos rows at todos.length+2 (or 2 collapsed) instead of the generic ~1-line fallback, so initial virtualization offsets are closer to reality - useInputHandlers: clearTimeout on unmount for scrollIdleTimer so pending relaxStreaming() never fires after teardown - render-node-to-output: drop unused declined.noHint counter from scrollFastPathStats; it was always 0 (the "hint missing" branch is outside the diagnostics block) - perfPane / hermes-ink.d.ts: follow the noHint removal - wheelAccel: replace ~/claude-code path comment with generic attribution that doesn't reference a developer-local checkout
This commit is contained in:
parent
b115ea62da
commit
527ac351b4
7 changed files with 42 additions and 13 deletions
|
|
@ -311,13 +311,16 @@ export const stringWidth: (str: string) => number = str => {
|
|||
const cached = widthCache.get(str)
|
||||
|
||||
if (cached !== undefined) {
|
||||
// True LRU: refresh recency by re-inserting (Map iteration is insertion order).
|
||||
widthCache.delete(str)
|
||||
widthCache.set(str, cached)
|
||||
|
||||
return cached
|
||||
}
|
||||
|
||||
const w = rawStringWidth(str)
|
||||
|
||||
if (widthCache.size >= WIDTH_CACHE_LIMIT) {
|
||||
// Drop oldest entry — Map iteration order is insertion order.
|
||||
widthCache.delete(widthCache.keys().next().value!)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue