Skip to content

TUI build broken: quadraui bumped ratatui 0.29->0.30 (Frame/Buffer/Rect split into ratatui-core), vimcode's tui_main still on 0.29 types (~46 errors, 4 files) #590

Description

@JDonaghy

Summary

quadraui develop bumped its ratatui dependency from 0.29 to 0.30 at some point between commit ebb4ab7 and the current tip (unrelated to #445 or #452 — discovered as a side effect of validating those). ratatui 0.30 split Frame/Buffer/Rect out into a new ratatui-core crate. quadraui::tui::Backend::enter_frame_scope (and the rest of quadraui's TUI backend surface) now speaks ratatui-core types.

vimcode's own Cargo.toml pins ratatui = "0.29" directly, and src/tui_main/ calls into quadraui's backend using ratatui 0.29 types (e.g. backend.enter_frame_scope(frame, ...) where frame: ratatui::Frame). Cargo resolves both ratatui 0.29 (vimcode's direct dep) and ratatui 0.30 + ratatui-core (quadraui's dep) side by side as distinct crates, so the build fails at type-checking with E0308 everywhere vimcode's ratatui-0.29 types cross the boundary into quadraui's ratatui-core-based API:

error[E0308]: mismatched types
    --> src/tui_main/render_impl.rs:1437:31
     |
1437 |     backend.enter_frame_scope(frame, |b| {
     |             ----------------- ^^^^^ expected `ratatui_core::terminal::frame::Frame<'_>`, found `ratatui::Frame<'_>`
     |
     = note: `ratatui::Frame<'_>` and `ratatui_core::terminal::frame::Frame<'_>` have similar names, but are actually distinct types

Scope

46 distinct errors (per binary target — vimcode builds two: vcd and vimcode), spread across:

  • src/tui_main/panels.rs — 36 call sites
  • src/tui_main/render_impl.rs — 28 call sites
  • src/tui_main/quadraui_tui.rs — 6 call sites
  • src/tui_main/mod.rs — 4 call sites

This is a real migration, not a one-line fix: bump vimcode's ratatui pin to 0.30 (or whatever quadraui currently uses) and update every touched call site to use ratatui-core-sourced Frame/Buffer/Rect (either directly, or via whatever re-export quadraui now expects — worth checking whether quadraui re-exports ratatui_core types for consumers, which would be the cleaner fix than vimcode taking a second direct ratatui-core dependency).

Severity

Currently blocks every vimcode build — GTK and TUI both, since vimcode's Cargo.toml always enables quadraui's tui feature (quadraui = { path = "...", features = ["tui", "terminal"] }, unconditional, not gated behind vimcode's own gui/tui top-level features). This was masked until now by two prior blockers in the same dependency-resolution path (#445's accelerator-dispatch gap needed quadraui changes first, then #452's unicode-width conflict prevented cargo from even reaching type-checking). With #452 fixed and vimcode's companion [patch.crates-io] entry added (see vimcode commit 8f47955 on branch issue-587-command-palette-fails-to-open-silently-b), dependency resolution now succeeds and this is the next and only remaining blocker.

Repro

cd vimcode  # with the [patch.crates-io] vt100 entry from commit 8f47955, quadraui path-dep pointing at a quadraui checkout on develop tip
cargo build --features gui --no-default-features
# or
cargo build --features tui --no-default-features

Cross-repo note

Filed while validating vimcode#587 (unrelated bug — command palette). Not attempted as part of that fix: too large a migration to improvise without visual TUI verification available, and clearly out of scope for a targeted bug fix. See coord context show vimcode 587 for the full chain of discoveries (#445#452 → this).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingcoordTracked by coord-tui pipeline

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions