Skip to content

v0.0.2

Choose a tag to compare

@github-actions github-actions released this 17 Aug 13:56
· 40 commits to main since this release

uncurses is a Rust library for building terminal user interfaces. It gives you a direct, framework-free way to draw to the terminal and read input — you own every cell and your own event loop, whether you run inline, take over the full screen, or mix the two.

A diffing renderer that redraws only what changed, Unicode-aware width, truecolor styling with automatic downsampling, hyperlinks, and typed keyboard, mouse, and paste input. It asks the terminal what it supports instead of looking it up in a terminfo database, so the same code runs on Linux, macOS, and Windows.

[dependencies]
uncurses = "0.0.2"

Using ratatui? uncurses-ratatui provides a backend.

Guides, concepts, and API reference: uncurses.org

Changelog

Bug Fixes

  • Point Examples nav at the GitHub examples directory
  • Skip the website deploy for pull requests from forks
  • Apply raw mode to each half of a split terminal
  • Restore the terminal even when teardown fails
  • Accept EINVAL for a non-terminal descriptor on Solaris
  • Require a libc that implements Debug for its structs
  • Reset LNM on every raw-mode entry
  • Build the delay checks on platforms without TABDLY/BSDLY
  • Gate apply_line_discipline to unix/windows
  • Truncate per row instead of ending the whole paint
  • Treat CRLF as a line break in the literal paint path
  • Return early when the start row is below the clip
  • Repaint after color profile changes (#21)
  • Make resize a no-op when the size is unchanged (#24)

Documentation

  • Clarify how uncurses replaces terminfo
  • Report task_picker progress to the terminal

Features

  • Expose the saved state and re-export libc
  • Report progress with OSC 9;4
  • Derive TABS/BS/ONLCR from the host line discipline

Miscellaneous Tasks

  • Lead release notes with an intro and fold the changelog
  • Publish the workspace in one pass

Refactor

  • Name the Windows state halves like the Unix ones
  • Grant TABS/BS on raw-mode entry instead of deriving them

Testing

  • Prime pty attributes instead of assuming a platform default
  • Skip the pty helper where the slave is not a terminal