Conversation
Empty tree rendered FileTreeStatusView instead of FileTreeVirtualBody because showStatusView keyed off flat.length. New File/New Folder set pending state and getDisplayFlat injected the edit-row sentinel, but the sentinel only renders inside the virtual body — so the input never appeared and create silently failed. Gate on displayFlat.length so a pending create flips rendering to the body. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QkLC8RsJKLN52SeVqDPmFL
Two behavior-preserving fast-paths on the hot PTY delivery path, no structural/protocol changes: - OSC notification scan: bail before three global-regex matchAll scans when the chunk contains no OSC introducer (ESC ]). Plain text / CSI / SGR chunks (the vast majority) now skip the scans entirely. - NDJSON parseFrame: gate ReadyFrameSchema.safeParse behind a cheap `type === "ready"` tag check (ready is emitted once, at handshake) so every data/response/event frame no longer pays a full Zod parse just to fail it; only parse EventFrameSchema when the `event` key is present. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QkLC8RsJKLN52SeVqDPmFL
…nd nav
Two coordinated fixes in the xterm custom key handler, verified against a
throwaway harness driving the real @xterm/xterm 6.0.0 through the recorded
Korean-IME event sequences:
- Bare Cmd/Meta guard: xterm's CompositionHelper treats Meta (keyCode 91) as
a composition-ending key, so pressing Cmd mid-composition finalizes the
syllable, and the following compositionend re-sends it (its
_compositionPosition never advances) — duplicating the last syllable on the
Mac-laptop Cmd+←/→ line-nav path ("안녕하세요" + Cmd+← → "요안녕하세요").
Swallow the bare Meta keydown while composing (no preventDefault, so the
textarea caret is untouched and offsets stay synced — avoids the earlier
"stuck" desync class) so the syllable commits exactly once via compositionend.
- Defer the ^A/^E byte: writing the nav byte synchronously raced ahead of
xterm's deferred composition commit, dragging the syllable to the wrong side
of the cursor move (physical Home → "요안녕하세"). Scheduling it on a later
macrotask preserves FIFO order behind the composed syllable.
Harness result (real xterm): all four nav cases (Cmd+←, Cmd+→, physical
Home/End) now emit the syllable once, in order. Adds handler-level regression
tests; existing nav tests flush the deferred write before asserting.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QkLC8RsJKLN52SeVqDPmFL
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QkLC8RsJKLN52SeVqDPmFL
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
v0.8.1 이후 버그/성능 수정 3건. 신규 기능 없음 → patch bump (0.8.2).
Fixed
안녕하세요→요안녕하세요/안녕하세요요). xterm이 Cmd/Meta에서 조합을 조기 확정하는 것을 막고,^A/^Enav 바이트를 defer. Home/End→^A/^E 인터셉트(의도된 동작)는 유지.Changed (perf)
Protocol & Remote 영향
검증