Skip to content

chore(deps): bump vt100 from 0.16.2 to 0.18.1 - #608

Merged
vyncint merged 5 commits into
mainfrom
dependabot/cargo/vt100-0.18.1
Oct 27, 2026
Merged

vyncint merged 5 commits into
mainfrom
dependabot/cargo/vt100-0.18.1

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Oct 26, 2026

Copy link
Copy Markdown
Contributor

Bumps vt100 from 0.16.2 to 0.18.1.

Changelog

Sourced from vt100's changelog.

[0.18.1] - 2026-10-19

Fixed

  • actually release the intended changes that were supposed to be in 0.18.0

[0.18.0] - 2026-10-18

Added

  • Screen::contents_formatted_basic, which is like Screen::contents_formatted, but restricts escape sequences to SGR escapes only, and control characters to '\n'.
  • Screen::write_contents_formatted_basic, like Screen::contents_formatted_basic but writes to any type implementing std::fmt::Write instead of returning a String.
  • Callbacks::on_scroll, called when a row scrolls off the top of the scrollback. This enables capturing terminal output in a streaming fashion. Currently this can only be used to obtain the row contents in the "basic formatted" style (the same returned by Screen::contents_formatted_basic).
  • Parser::DEFAULT_ROWS and Parser::DEFAULT_COLS, set to 24 and 80 (the same already used by Parser::default). These have type NonZeroU16.
  • Parser::set_size, which is like Screen::set_size but calls the on_scroll callback when a row is pushed off the top of scrollback (which is now possible due to the other set_size changes).
  • Parser::screen_and_callbacks_mut, which returns mutable references to both the screen and callbacks object at once. This was not possible with the existing methods.
  • capture::basic_formatted_to_plain, which converts a basic formatted capture (as returned by Screen::contents_formatted_basic) into a plain text one without allocating.
  • capture::basic_formatted_rows, which splits a basic formatted capture into individual rows without allocating.
  • capture::basic_formatted_to_plain_indexed, which is like capture::basic_formatted_to_plain, but also includes the original index of each plain text substring.

Changed

  • Bumped MSRV to 1.85 and edition to 2024

  • Parser::new and Screen::set_size now take NonZeroU16s instead of u16s. Passing 0 for rows or cols was not supported and resulted in panics. Additionally, Screen::size now returns NonZeroU16s.

  • The following methods of Screen now return/yield strings rather than byte vectors:

    • attributes_formatted
    • contents_diff
    • contents_formatted
    • cursor_state_formatted
    • input_mode_diff

... (truncated)

Commits
  • fb0f54e changelog and version bump
  • b88a5a1 a few tweaks to github actions
  • c20819d feat: add capture::basic_formatted_to_plain_indexed (#38)
  • 17965e8 perf: trim trailing blank cells from scrollback rows (#36)
  • a87517b feat: make vertical resizes more closely match real terminal emulators even w...
  • 33abc97 feat: change behavior of set_size (#31)
  • 46d1dfb feat: add Parser::screen_and_callbacks_mut (#29)
  • 04d933f feat: add basic formatted capture utilities, fix: fix handling of triple-widt...
  • 1102dff feat: make Screen::size return NonZeroU16s (#26)
  • 32e8a3e fix: respect alternate screen in Screen::contents_formatted_basic (#24)
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [vt100](https://github.com/doy/vt100-rust) from 0.16.2 to 0.18.1.
- [Changelog](https://github.com/doy/vt100-rust/blob/main/CHANGELOG.md)
- [Commits](doy/vt100-rust@v0.16.2...v0.18.1)

---
updated-dependencies:
- dependency-name: vt100
  dependency-version: 0.18.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot
dependabot Bot requested a review from vyncint as a code owner October 26, 2026 02:10
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file rust Pull requests that update rust code labels Oct 26, 2026
vt100 0.18 takes and returns sizes as NonZeroU16; termlens never asks for
a zero dimension, so the adapter converts at the edges. Upstream also
implements REP, HPA, HVP, DECSCUSR and ED 3, fixes the wide-character
resize panic, and resizes as xterm does: a shorter screen pushes rows into
history and a taller one pulls them back. The history capture assumed
history only grows below its cap, so:

- the attribute shadow keeps the primary's history whether styled history
  is on or not; a taller screen pulls rows back onto both grids, and with
  none the shadow's came back blank and the lockstep assertion fired;
- a shorter history is rows that came back onto the grid, and they leave
  the copy, newest first;
- RIS and ED 3 are announced by the tracker and fed alone, so the copy
  restarts its mark explicitly. Inferred from the length, an ED 3 followed
  by more rows than the mark held lost the first of them;
- nothing is captured while the alternate screen is up: its grid's zero
  length read as an emptied history, and every return copied the whole
  history again (#576).

Signed-off-by: Vyncint Ng <115854244+vyncint@users.noreply.github.com>
BACKENDS.md measures 0.18.1, DESIGN.md says how height changes, RIS and
ED 3 move history, and LIMITATIONS.md that history outlives ED 3.

Signed-off-by: Vyncint Ng <115854244+vyncint@users.noreply.github.com>
CHANGELOG entries for #576, #577, #578 and the backend move, the
insert-mode exception for REP in LIMITATIONS.md, and the two comments
that named vt100 0.16 as the version whose behaviour they rely on.

Signed-off-by: Vyncint Ng <115854244+vyncint@users.noreply.github.com>
@vyncint

vyncint commented Oct 27, 2026

Copy link
Copy Markdown
Owner

The bump needed more than the API port, so three commits sit on top of Dependabot's, plus a merge of main (the branch predated #606, and a plain squash would have reverted its lockfile bumps).

API port. Sizes are NonZeroU16 at vt100's edges; termlens never asks for zero (the builder's floor is 2).

What the whole suite missed and a behaviour probe found. 0.18 resizes as xterm does: a shorter screen pushes rows into history, a taller one pulls them back. With that:

  • the attribute shadow had no history when styled history was off, so after shrink → grow its grid came back blank and the lockstep debug_assert fired ("the attribute shadow diverged from the primary grid"). It now keeps the primary's history.
  • the history copy treated any shorter history as RIS and restarted. Rows pulled back onto the grid now leave the copy; RIS and ED 3 (CSI 3 J, now implemented upstream, sent by clear) are announced by the tracker and fed alone, so the copy restarts explicitly. Inferred from the length, clear followed by more rows than the mark held lost the first of them.
  • nothing is captured while the alternate screen is up — that was Leaving the alternate screen duplicates every scrolled-off history row #576.

Upstream fixes this brings: #577 (the wide-character resize panic: reproduced on 0.16.2 — row.rs:89 index out of bounds — and gone on 0.18.1), #578 (REP), HVP/HPA (silently ignored on 0.16: abc\e[1;1fX drew abcX), IL/DL outside the scroll region, VS16 emoji width.

Verification. Eight new unit tests; five mutations of the fix (no alternate-screen guard, shadow without history, shorter history read as a reset, tracker not announcing ED 3, ED 3 on the alternate screen restarting the mark) each fail the tests they should. Full workspace suite, clippy, rustdoc -D warnings, DCO and attribution gates pass locally. The behaviour differences a snapshot can show are listed under Changed in the CHANGELOG.

@vyncint vyncint left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

Reviewed with the port on top: 16/16 checks green; behaviour verified with a probe against 0.16.2, and every fix in the history capture pinned by a test that a mutation of the fix fails.

@vyncint
vyncint merged commit c2e9a98 into main Oct 27, 2026
16 checks passed
@vyncint
vyncint deleted the dependabot/cargo/vt100-0.18.1 branch October 27, 2026 08:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file rust Pull requests that update rust code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant