fix(tui): stabilize cursor, Unicode input and resize with real PTY tests - #34
Conversation
|
Warning Review limit reachedNext included review available in 59 minutes. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (16)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
This PR successfully refactors line number formatting by introducing a centralized format_line_number function. The implementation correctly calculates padding based on total line count and consistently applies it across the codebase. No blocking issues identified.
You can now have the agent implement changes and create commits directly on your pull request's source branch. Simply comment with /q followed by your request in natural language to ask the agent to make changes.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 23a2e697d6
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
|
/q review |
There was a problem hiding this comment.
Review Summary
I've completed a thorough review of this PR focusing on the reactor error handling, terminal resize logic, typeahead input handling, and server cursor positioning improvements.
Analysis:
The changes implement solid improvements across multiple areas:
- Enhanced error reporting in the reactor without panic scenarios
- Improved terminal resize handling with better cursor positioning
- Fixed Unicode input handling in the typeahead system
- Better cursor positioning and rendering in the server
Findings:
The implementation is sound with no critical defects identified. The code follows good practices, maintains consistency with the existing codebase, and the changes are working improvements rather than introducing new issues.
Conclusion:
No blocking issues found. The PR is ready to merge.
You can now have the agent implement changes and create commits directly on your pull request's source branch. Simply comment with /q followed by your request in natural language to ask the agent to make changes.
|
Codex Review: Didn't find any major issues. Chef's kiss. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Terminal stabilization, 2026-09-20
This layer follows
stabilize/01-reproducible-lpeg-build(PR #33).It fixes observed terminal behavior rather than replacing the editor model.
Reproductions and repairs
K_SPECIALcontinuations; retain incomplete input.use-dev-ttybackend. Its poll loop needs a positive timeout; use one millisecond.SIGWINCHinterruptedepoll_wait; the server exited with an I/O error.Interruptedas an empty reactor wakeup, preserving timer and signal processing. Other I/O errors still propagate.&columnsand&linesretained startup values.The resize trace showed both keyboard and signal readiness in one epoll batch.
The old terminal backend returned the resize event before consuming keyboard
readiness; a later edge-triggered poll did not report those unread bytes again.
No delay or retry was added to the test to hide that failure.
Tests
crates/oxvim/tests/tui_e2e.rslaunches the actual binary with an embeddedserver in a pseudoterminal. A VT parser checks the current screen and cursor,
and file checks compare saved bytes. Each session uses a private home,
configuration, working directory, and document. Deadlines bound waits.
Failures retain an ANSI transcript and screen snapshot; children are killed
and reaped during failed-session cleanup.
Four scenarios cover editing and saving; Unicode, arrows, undo and redo;
command-line insertion and deletion; and shrink/grow with immediate input.
The two existing
interactive_ptyscenarios also pass. The four new scenariospassed 20 consecutive runs, totaling 80 successful scenario executions.
A separate traced resize run passed with observed
EINTRdeliveries.Focused commands, from the repository root:
The Windows command was a cross-check on Linux, not a native editor run.
The workflow runs actual Linux PTY tests and native Windows terminal-library
tests, pins action revisions and Rust 1.98.0, and uploads failed PTY artifacts.
It does not label the terminal-library job as full Windows editor coverage.
Broader validation and limits
The first fresh workspace nextest run completed 3,470 tests: 3,461 passed,
nine failed, and one additional test was skipped. Eight failures require a
dynamic tree-sitter parser fixture; the remaining performance-contract test
requires
.references/neovim/build/bin/nvim. These failures were not skipped,marked ignored, or changed into passing tests.
For the parser rerun, the C grammar fixture is tree-sitter-c v0.24.2, archive
SHA-256
2eeb4db31f8fa0865e45488503d13403923bcb485a1bdb637abff8c42dd97364.Build its
src/parser.cas a shared library and setOXVIM_TREE_SITTER_PARSERto its absolute path andOXVIM_TREE_SITTER_LANGUAGE=c. Fixture sources belong undertarget, notin the product source or the read-only reference checkout.
Workspace all-target Clippy also finds existing denied
unwrap_usedcallsin
ox-text/src/swapfile.rstests. Focused Clippy completes, with existingwarnings in other library code. No workspace-wide lint allowance was added.
This layer does not establish full Windows editor support, upstream functional
or oldtest parity, or the comparative performance contract. It makes no
throughput or latency-improvement claim. Those gates remain distinct from
passing real-terminal regressions.