v2.4.2—as if she were the last one she thought i'd betray
ok look, this one has an absolute shitton of churn in it. i'd not have released it yet, except a few bugfixes needed to go out. here's the deal: i completely rewrote the input subsystem, which was already complex as hell. it now spawns its own thread so that i can reliably get terminal messages even if you're not looking for input--i have to have my own execution context involved. it is a great improvement overall, but has deep, subtle, platform-specific effects.
Microsoft Windows definitely regresses a bit with this release; I recommend you stick to 2.4.1 on that platform. otherwise, brave souls are encouraged to beat on this, and report any bugs you find.
- The Rust bindings are no longer included in the main Notcurses repository. They can instead be found here: dankamongmen/libnotcurses-sys
- Notcurses now supports Unicode 14 (if the underlying system supports it).
- The input subsystem has been completely rewritten, making it much more robust.
NCOPTION_DRAIN_INPUT
andNCDIRECT_OPTION_DRAIN_INPUT
have been added. Your program ought use them if it doesn't intend to handle input. Failure to do so will result in unnecessary work, and possibly even dropped messages from the console.- A distinct input thread is now spawned, ensuring responsive handling of terminal control sequences even when the user isn't actively looking for input.
- Notcurses can now distinguish between a key press, a repeat, and a key release for some events.
NCKEY_RELEASE
has been removed. When a mouse button is released, you'll now get the actual button (plusNCTYPE_RELEASE
). - When input is redirected from a file,
notcurses-input
will now exit once the entire file is processed. Not coincidentally,NCKEY_EOF
now indicates the end of input. notcurses_getvec()
allows batched reads from input.- Sequences beginning with an Escape character that aren't recognized control sequences are now returned as input.
- GPM mouse events now account for margins.
- Mouse clicks in the margins are no longer returned.
SIGWINCH
andSIGCONT
are now masked in the thread that callsnotcurses_init()
. This is because the addition of a distinct input thread exacerbated the problem ofSIGWINCH
being delivered to an unexpected thread. While this change will suffice for otherwise single-threaded programs, it remains your responsibility to ensure all threads have maskedSIGWINCH
andSIGCONT
. See the FAQs!- A bug was fixed when moving graphics using the Kitty protocol in the presence of margins.
- A bug was fixed when using multiframe bitmap graphics using the Kitty protocol, and a graphic was drawn over, then restored.
- A resize callback can now be set for the standard plane.
- A bug was fixed when characters were erased in a resize callback, thanks @kevinconley19.
- Notcurses now supports libavformat 59+.
- Cell blitting in direct mode is now faster and more robust.
ncneofetch
no longer attempts to runxrandr
on Microsoft Windows.ncneofetch
properly centers its logo now, a problem most noticeable on macOS.