github dankamongmen/notcurses v1.3.0
v1.3.0—hypnotize

latest releases: v3.0.9, v3.0.8, v3.0.7...
4 years ago

A little under two months, 350 commits, and 77 issues after 1.2.0, here comes Notcurses 1.3.0, with tons of bugfixes and new features. This release adds a number of "widgets"—fully-functional TUI elements you can pull off the shelf and into your application. In addition, the Notcurses book has been published and made available for purchase. It's Apache 2.0-licensed, just like Notcurses, so you can grab the unmodified PDF or even the XeLaTeX source if you prefer that to the paperback.

Distribution-wise, we're still waiting on the Debian FTPMasters to admit our submitted 1.2.1 into NEW. With the assistance of @dcantrell , we're primed to go into Fedora Core. Once we're in both of those, as far as I'm concerned, we're on track to be everywhere. The AUR package is of course kept up to date for my Arch folk. Debian Unstable, Ubuntu Focal, and Fedora 32 packages are available from DSSCAW.

Changes since 1.2.0

Packaging / compilation

  • Introduction of a Fedora specfile and preparation for RPM packaging (#465, #328)
  • New USE_TESTS CMake option, defaulting to on, used on Fedora (#450)
  • Fix Python module installation on Arch (#357, #462)
  • New USE_RUST and USE_NETWORK CMake options, both defaulting to off, for Rust (#101)
  • Install notcurses-pydemo (#359)
  • Arch binaries now look to the proper location for runtime data (#363)

New features

  • notcurses_stddim_yx() convenience function allows one to acquire stdplane and its geometry in one call (#365)
  • ncplane_putc_stainable() allows glyphs to be changed without changing color (#352)
  • ncplane_stain() allows colors to be changed without affecting glyphs (#347)
  • ncplane_format() allows attribute to be changed without affecting glyphs (#347)
  • notcurses_resize(), always a confusing function, has been removed from the public API (#367)
  • notcurses_refresh() now accepts two int* pointers in which geometry is returned. NULL is acceptable (#367)
  • Ctrl+L now invokes notcurses_refresh() in notcurses-demo (#379)
  • Mice can now drive ncselector and ncmultiselect widgets (#305)
  • Mice can now drive menu widget (#305)
  • Direct mode now has cursor movement functions (#382, #419)
  • Histograms have been added via the ncplot widget (#464, #457, #441, #445, #448, #447, #438, #439, #436, #136 )
  • notcurses-input now shows a histogram indicating events/sec (#430, #455)
  • Fix up notcurses-pydemo following static inline conversions (#459)
  • Planes other than the standard plane can now be enslaved to some other plane, so that when the parent is moved, the enslaved plane is also moved, and the enslaved plane moves relative to the master plane (#70)
  • notcurses-tetris has been added (#421)
  • ncplane_mergedown() has been added (#413, #417, #361)
  • ncvisual_render() was changed to allow a 0-size render (#422)
  • normal demo was added to do some basic fractal generation (#145)
  • Margins can now be applied to the rendering area (#293)
  • Direct mode can now enable/disable the cursor (#402)
  • High-resolution gradients (#398)
  • ncplane_rotate_cw() and ncplane_rotate_ccw() (#351)
  • notcurses-demo can now generate high-precision JSON summaries (#387)
  • Gradients now allow defaults in one of fore or background (#376)
  • Scrolling can be enabled on a per-plane basis. Currently this only means that output can continue from one line to the next. Actual scrolling will be implemented by 1.4.0 (#323, #443).

Bugfixes

  • Gradients with minimal variation are now drawn with full accuracy (#368)
  • notcurses-demo invoked with -d0 no longer goes into an infinite loop in the reel demo (#377)
  • Shitty weird glyph in upper left of uniblock demo has been purged (#259)
  • uniblock no longer has its walls disrupted by R2L glyphs (#183)
  • Scrolling arrows are properly placed in all known selector configurations (#388)
  • Fix horrible bug in ncplane_dup() (#429)
  • Fix unit tests when run outside of UTF8 locale (#428)
  • C++ no longer allows for multiple standard planes (#409)
  • ncplane_polyfill no longer enters an infinite recursion when fed a null EGC (#418)
  • Improve diagnostic when notcurses_init() is called without setlocale() (#414)
  • Fixed coredump on about 1% of geometries in fallin' demo (#407)
  • notcurses-refresh no longer samples the post-optimization raster buffer (#380)
  • Reset attributes manually in notcurses_init() and ncdirect_init() (#393)
  • Don't throw an uncaught exception on bad filename in notcurses-view (#378)
  • Gradients now set alpha values properly (#389)
  • Stop throwing exception on resize in reel demo (#390)
  • All user-supplied escapes are filtered for output (#375)
  • Fix valgrind warnings in menu PoC (#383)

Don't miss a new notcurses release

NewReleases is sending notifications on new releases.