You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Rolling up all post-initial-push fixes from CI, Copilot review, and
the second-round review agent into one commit.
Loader & tests
- Honour `(fboundp 'ghostel--new)' in the unified module loader so
`cl-letf' stubs in the pure-Elisp test suite short-circuit as they
did before the consolidation. Restores the title-tracking tests
on the elisp-only CI job.
CRLF across calls
- Persist `last_input_was_cr' on the Terminal struct so a CRLF pair
split across two `ghostel--write-input' calls isn't double-
normalized into \r\r\n. Reset in `resize' alongside the other
reset state. Regression tests: canonical split, empty chunk
between CR and LF, standalone CR followed by complete CRLF.
OSC iterator correctness
- Treat a following `\e]' introducer as a payload boundary so one
OSC missing its terminator doesn't cannibalize the next OSC's
bytes as its own payload. Input `\e]7;PARTIAL\e]52;c;aGVsbG8=\a'
previously dispatched OSC 7 with garbage and starved OSC 52
entirely; now OSC 7 is recognized as partial and skipped, OSC 52
dispatches normally. Regression test added.
- Rename `OscEntry.term' -> `OscEntry.terminator' to remove the
visual collision with `Terminal *term' in dispatchPostWriteOscs.
- Clarify the `dispatchPostWriteOscs' docstring: it handles the
four post-vtWrite OSCs; color queries use the same iterator from
a different call site.
Redraw hash gate
- Skip `computeFirstScrollbackRowHash' at end-of-redraw when no
writes happened this frame and the start-of-redraw rotation
check didn't populate `cached_row0_hash'. Row 0 can't have
moved, so the stored hash is still current. Covers cursor-only
and idle-timer redraws.
Naming and comments
- Rename `last_wrote_cr' -> `last_input_was_cr': the field names
the input-stream property, not a normalizer implementation
detail that might change underneath it.
- `loadRawCell' docstring notes the memoize assumes idempotent
fetch (true today in libghostty).
README
- Refresh the 5 MB PTY throughput table: ghostel 70 -> 87 MB/s
plain, 56 -> 64 MB/s URL-heavy. Other backends within noise.
0 commit comments