1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340
|
# Changelog
## [0.15.2] - 2023-02-05
### Changed
* Bumped dependencies
## [0.15.1] - 2021-12-21
### Changed
* Removed a lot of unnecessary test data from the packaged crate, making
downloads faster
## [0.15.0] - 2021-12-15
### Added
* `Screen::errors` to track the number of parsing errors seen so far
### Fixed
* No longer generate spurious diffs in some cases where the cursor is past the
end of a row
* Fix restoring the cursor position when scrolled back
### Changed
* Various internal refactorings
## [0.14.0] - 2021-12-06
### Changed
* Unknown UTF-8 characters default to a width of 1, rather than 0 (except for
control characters, as mentioned below)
### Fixed
* Ignore C1 control characters rather than adding them to the cell data, since
they are non-printable
## [0.13.2] - 2021-12-05
### Changed
* Delay allocation of the alternate screen until it is used (saves a bit of
memory in basic cases)
## [0.13.1] - 2021-12-04
### Fixed
* Fixed various line wrapping state issues
* Fixed cursor positioning after writing zero width characters at the end of
the line
* Fixed `Screen::cursor_state_formatted` to draw the last character in a line
with the appropriate drawing attributes if it needs to redraw it
## [0.13.0] - 2021-11-17
### Added
* `Screen::alternate_screen` to determine if the alternate screen is in use
* `Screen::row_wrapped` to determine whether the row at the given index should
wrap its text
* `Screen::cursor_state_formatted` to set the cursor position and hidden state
(including internal state like the one-past-the-end state which isn't visible
in the return value of `cursor_position`)
### Fixed
* `Screen::rows_formatted` now outputs correct escape codes in some edge cases
at the beginning of a row when the previous row was wrapped
* VPA escape sequence can no longer position the cursor off the screen
## [0.12.0] - 2021-03-09
### Added
* `Screen::state_formatted` and `Screen::state_diff` convenience wrappers
### Fixed
* `Screen::attributes_formatted` now correctly resets previously set attributes
where necessary
### Removed
* Removed `Screen::attributes_diff`, since I can't actually think of any
situation where it does a thing that makes sense.
## [0.11.1] - 2021-03-07
### Changed
* Drop dependency on `enumset`
## [0.11.0] - 2021-03-07
### Added
* `Screen::attributes_formatted` and `Screen::attributes_diff` to retrieve the
current state of the drawing attributes as escape sequences
* `Screen::fgcolor`, `Screen::bgcolor`, `Screen::bold`, `Screen::italic`,
`Screen::underline`, and `Screen::inverse` to retrieve the current state of
the drawing attributes directly
## [0.10.0] - 2021-03-06
### Added
* Implementation of `std::io::Write` for `Parser`
## [0.9.0] - 2021-03-05
### Added
* `Screen::contents_between`, for returning the contents logically between two
given cells (for things like clipboard selection)
* Support SGR subparameters (so `\e[38:2:255:0:0m` behaves the same way as
`\e[38;2;255;0;0m`)
### Fixed
* Bump `enumset` to fix a dependency which fails to build
## [0.8.1] - 2020-02-09
### Changed
* Bumped `vte` dep to 0.6.
## [0.8.0] - 2019-12-07
### Removed
* Removed the unicode-normalization feature altogether - it turns out that it
still has a couple edge cases where it causes incorrect behavior, and fixing
those would be a lot more effort.
### Fixed
* Fix a couple more end-of-line/wrapping bugs, especially around cursor
positioning.
* Fix applying combining characters to wide characters.
* Ensure cells can't have contents with width zero (to avoid ambiguity). If an
empty cell gets a combining character applied to it, default that cell to a
(normal-width) space first.
## [0.7.0] - 2019-11-23
### Added
* New (default-on) cargo feature `unicode-normalization` which can be disabled
to disable normalizing cell contents to NFC - it's a pretty small edge case,
and the data tables required to support it are quite large, which affects
size-sensitive targets like wasm
## [0.6.3] - 2019-11-20
### Fixed
* Fix output of `contents_formatted` and `contents_diff` when the cursor
position ends at one past the end of a row.
* If the cursor position is one past the end of a row, any char, even a
combining char, needs to cause the cursor position to wrap.
## [0.6.2] - 2019-11-13
### Fixed
* Fix zero-width characters when the cursor is at the end of a row.
## [0.6.1] - 2019-11-13
### Added
* Add more debug logging for unhandled escape sequences.
### Changed
* Unhandled escape sequence warnings are now at the `debug` log level.
## [0.6.0] - 2019-11-13
### Added
* `Screen::input_mode_formatted` and `Screen::input_mode_diff` give escape
codes to set the current terminal input modes.
* `Screen::title_formatted` and `Screen::title_diff` give escape codes to set
the terminal window title.
* `Screen::bells_diff` gives escape codes to trigger any audible or visual
bells which have been seen since the previous state.
### Changed
* `Screen::contents_diff` no longer includes audible or visual bells (see
`Screen::bells_diff` instead).
## [0.5.1] - 2019-11-12
### Fixed
* `Screen::set_size` now actually resizes when requested (previously the
underlying storage was not being resized, leading to panics when writing
outside of the original screen).
## [0.5.0] - 2019-11-12
### Added
* Scrollback support.
* `Default` impl for `Parser` which creates an 80x24 terminal with no
scrollback.
### Removed
* `Parser::screen_mut` (and the `pub` `&mut self` methods on `Screen`). The few
things you can do to change the screen state directly are now exposed as
methods on `Parser` itself.
### Changed
* `Cell::contents` now returns a `String` instead of a `&str`.
* `Screen::check_audible_bell` and `Screen::check_visual_bell` have been
replaced with `Screen::audible_bell_count` and `Screen::visual_bell_count`.
You should keep track of the "since the last method call" state yourself
instead of having the screen track it for you.
### Fixed
* Lots of performance and output optimizations.
* Clearing a cell now sets all of that cell's attributes to the current
attribute set, since different terminals render different things for an empty
cell based on the attributes.
* `Screen::contents_diff` now includes audible and visual bells when
appropriate.
## [0.4.0] - 2019-11-08
### Removed
* `Screen::fgcolor`, `Screen::bgcolor`, `Screen::bold`, `Screen::italic`,
`Screen::underline`, `Screen::inverse`, and `Screen::alternate_screen`:
these are just implementation details that people shouldn't need to care
about.
### Fixed
* Fixed cursor movement when the cursor position is already outside of an
active scroll region.
## [0.3.2] - 2019-11-08
### Fixed
* Clearing cells now correctly sets the cell background color.
* Fixed a couple bugs in wide character handling in `contents_formatted` and
`contents_diff`.
* Fixed RI when the cursor is at the top of the screen (fixes scrolling up in
`less`, for instance).
* Fixed VPA incorrectly being clamped to the scroll region.
* Stop treating soft hyphen specially (as far as i can tell, no other terminals
do this, and i'm not sure why i thought it was necessary to begin with).
* `contents_formatted` now also resets attributes at the start, like
`contents_diff` does.
## [0.3.1] - 2019-11-06
### Fixed
* Make `contents_formatted` explicitly show the cursor when necessary, in case
the cursor was previously hidden.
## [0.3.0] - 2019-11-06
### Added
* `Screen::rows` which is like `Screen::contents` except that it returns the
data by row instead of all at once, and also allows you to restrict the
region returned to a subset of columns.
* `Screen::rows_formatted` which is like `Screen::rows`, but returns escape
sequences sufficient to draw the requested subset of each row.
* `Screen::contents_diff` and `Screen::rows_diff` which return escape sequences
sufficient to turn the visible state of one screen (or a subset of the screen
in the case of `rows_diff`) into another.
### Changed
* The screen is now exposed separately from the parser, and is cloneable.
* `contents_formatted` now returns `Vec<u8>` instead of `String`.
* `contents` and `contents_formatted` now only allow getting the contents of
the entire screen rather than a subset (but see the entry for `rows` and
`rows_formatted` above).
### Removed
* `Cell::new`, since there's not really any reason that this is useful for
someone to do from outside of the crate.
### Fixed
* `contents_formatted` now preserves the state of empty cells instead of
filling them with spaces.
* We now clear the row wrapping state when the number of columns in the
terminal is changed.
* `contents_formatted` now ensures that the cursor has the correct hidden state
and location.
* `contents_formatted` now clears the screen before starting to draw.
## [0.2.0] - 2019-11-04
### Changed
* Reimplemented in pure safe rust, with a much more accurate parser
* A bunch of minor API tweaks, some backwards-incompatible
## [0.1.2] - 2016-06-04
### Fixed
* Fix returning uninit memory in get_string_formatted/get_string_plaintext
* Handle emoji and zero width unicode characters properly
* Fix cursor positioning with regards to scroll regions and wrapping
* Fix parsing of (ignored) character set escapes
* Explicitly suppress status report escapes
## [0.1.1] - 2016-04-28
### Fixed
* Fix builds
## [0.1.0] - 2016-04-28
### Added
* Initial release
|