v1.3.0—hypnotize
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 toon
, used on Fedora (#450) - Fix Python module installation on Arch (#357, #462)
- New
USE_RUST
andUSE_NETWORK
CMake options, both defaulting tooff
, 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 twoint*
pointers in which geometry is returned.NULL
is acceptable (#367)- Ctrl+L now invokes
notcurses_refresh()
innotcurses-demo
(#379) - Mice can now drive
ncselector
andncmultiselect
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()
andncplane_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 thereel
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 withoutsetlocale()
(#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()
andncdirect_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)