Skip to content

chore(core): bump ratatui to 0.30 and drop tui-term fork#35547

Merged
FrozenPandaz merged 1 commit intonrwl:masterfrom
FrozenPandaz:investigate-ratatui-upgrade
May 4, 2026
Merged

chore(core): bump ratatui to 0.30 and drop tui-term fork#35547
FrozenPandaz merged 1 commit intonrwl:masterfrom
FrozenPandaz:investigate-ratatui-upgrade

Conversation

@FrozenPandaz
Copy link
Copy Markdown
Contributor

Current Behavior

packages/nx/Cargo.toml pins ratatui = "0.29" and consumes tui-term from a personal git fork (JamesHenry/tui-term @ 88e3b614…). The fork carries two custom commits on top of upstream tui-term: a vt100 → vt100-ctt swap, and a Modifier::DIM mapping for dimmed PTY content. tui-logger is also held back at 0.17.2.

The upstream a-kenji/tui-term repo has since merged the dim-modifier patch (PR #340) and shipped tui-term 0.3.4 against the new modular ratatui-core 0.1 / ratatui-widgets 0.3 crates that came with ratatui 0.30. This means we no longer need to maintain a tui-term fork at all — the only remaining reason for it (the dim patch) is upstream.

Expected Behavior

  • ratatui bumped to 0.30.0.
  • tui-term swapped from the JamesHenry/tui-term git dep to crates.io tui-term = { version = "0.3.4", default-features = false }.
  • tui-logger bumped 0.17.20.18.2 (which targets ratatui ^0.30).
  • vt100-ctt stays as-is — we still need its all_contents, all_contents_formatted, get_total_content_rows, and Parser::get_raw_output APIs that aren't in upstream vt100. Its default tui-term feature is now disabled so it doesn't drag old ratatui 0.29 / tui-term 0.2 back into the dep tree.
  • New packages/nx/src/native/tui/vt100_adapter.rs (~95 lines) implements tui_term::widget::{Screen, Cell} for vt100_ctt::{Screen, Cell} via #[repr(transparent)] newtypes (orphan-rule workaround). The two PseudoTerminal::new(&*screen) call sites in terminal_pane.rs and inline_app.rs now wrap the screen with Vt100CttScreen::wrap(&screen).
  • One unused Stylize import dropped from tasks_list.rs (ratatui 0.30 made the styling methods inherent).

Resolved dep tree after the bump:

ratatui v0.30.0
ratatui-core v0.1.0
ratatui-widgets v0.3.0
ratatui-crossterm v0.1.0
ratatui-macros v0.7.0
tui-logger v0.18.2
tui-term v0.3.4               (crates.io, no fork)
vt100-ctt v0.16.0 (fork)      (kept for scrollback / raw_output APIs)

cargo check and cargo clippy --frozen --all-targets are clean (warnings only, all pre-existing on master). cargo test --lib passes 350/352; the two flaky failures are in native::watch::watcher::tests (filesystem-event timing tests, unrelated and inconsistent across runs).

Related Issue(s)

None — refactor / dependency hygiene.

@netlify
Copy link
Copy Markdown

netlify Bot commented May 2, 2026

👷 Deploy request for nx-docs pending review.

Visit the deploys page to approve it

Name Link
🔨 Latest commit 7bb82af

@netlify
Copy link
Copy Markdown

netlify Bot commented May 2, 2026

👷 Deploy request for nx-dev pending review.

Visit the deploys page to approve it

Name Link
🔨 Latest commit 7bb82af

@nx-cloud
Copy link
Copy Markdown
Contributor

nx-cloud Bot commented May 2, 2026

View your CI Pipeline Execution ↗ for commit 7bb82af

Command Status Duration Result
nx affected --targets=lint,test,build,e2e,e2e-c... ✅ Succeeded 18m 5s View ↗
nx run-many -t check-imports check-lock-files c... ✅ Succeeded 3s View ↗
nx-cloud record -- pnpm nx-cloud conformance:check ✅ Succeeded 17s View ↗
nx build workspace-plugin ✅ Succeeded 2m 7s View ↗
nx-cloud record -- nx sync:check ✅ Succeeded 24s View ↗
nx-cloud record -- nx format:check ✅ Succeeded <1s View ↗

☁️ Nx Cloud last updated this comment at 2026-05-04 13:55:48 UTC

Upstream tui-term 0.3.4 absorbed the dim-modifier patch that was the only
reason we maintained JamesHenry/tui-term, so swap the git dep for the
crates.io release with default features off and supply a small in-tree
adapter that implements tui_term::widget::{Screen, Cell} on top of
vt100_ctt::{Screen, Cell}. vt100-ctt stays as-is for the scrollback /
raw_output APIs we still rely on; turn off its default tui-term feature
to keep ratatui 0.29 out of the tree. tui-logger goes 0.17.2 -> 0.18.2
to track ratatui 0.30.
@FrozenPandaz FrozenPandaz force-pushed the investigate-ratatui-upgrade branch from b03e606 to 7bb82af Compare May 3, 2026 14:15
@FrozenPandaz FrozenPandaz marked this pull request as ready for review May 3, 2026 14:28
@FrozenPandaz FrozenPandaz requested a review from a team as a code owner May 3, 2026 14:28
@FrozenPandaz FrozenPandaz requested a review from lourw May 3, 2026 14:28
Copy link
Copy Markdown
Contributor

@nx-cloud nx-cloud Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Important

At least one additional CI pipeline execution has run since the conclusion below was written and it may no longer be applicable.

Nx Cloud has identified a possible root cause for your failed CI:

We determined this failure is unrelated to the PR's changes, which are confined to Rust TUI dependencies and source code. The Gradle e2e test fails due to a file hash cache lock collision within the test infrastructure ("Cannot lock file hash cache as it has already been locked by this process"), a concurrency issue in the Gradle daemon that has no causal connection to bumping ratatui or replacing the tui-term fork. Re-running the e2e suite in isolation should resolve this.

No code changes were suggested for this issue.

You can trigger a rerun by pushing an empty commit:

git commit --allow-empty -m "chore: trigger rerun"
git push

Nx Cloud View detailed reasoning on Nx Cloud ↗


🎓 Learn more about Self-Healing CI on nx.dev

@FrozenPandaz FrozenPandaz merged commit d1bb468 into nrwl:master May 4, 2026
17 of 18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants