Skip to content

Releases: dankamongmen/notcurses

v2.4.0—hearts alive

06 Sep 09:30
v2.4.0
8aa856f
Compare
Choose a tag to compare

120 days, 1581 commits, and 323 issues resolved since 2.3.0.
660 days, 6769 commits, and 1,442 issues resolved since Day 0.
split your lungs with blood and thunder when you see the white whale!
check out this gource video of development!


the 2.4.0 release of Notcurses is dedicated with loving memory to Gregory Allen Black, aka Pa Dank, 1949–2021.
give 'em shit in the afterlife, dad. don't take any guff from those fucking swine.
hearts alive. roll tide roll.


A MASTODONIC RELEASE, primarily focused on bugfixes, portability, and robustness, but with plenty of new features as well. This development cycle saw our first kernel patch land; it will be present in Linux 5.15. I hope to do some further kernel work to enhance the Linux console. Since 2.3.0, changes include (but are not at all limited to):

  • Notcurses now supports macOS and Microsoft Windows. It is included in Homebrew and MacPorts.
    • Big thanks to @michaelsbradleyjr who bought a Mac Mini and made it available to the project, and figured out what the hell MSYS2 and UCRT are, and generally dragged us (for better or worse) into the dread lands of closed source.
    • Here it is running in the lovely new Microsoft Terminal:

2021-09-06-001545_2526x1408_scrot

  • Support for bitmap graphics on the Linux framebuffer console.
  • Support for Linux console mouse events via GPM when built with -DUSE_GPM=on.
  • Support for the kitty keyboard protocol.
    • I encourage its adoption by other terminals!
  • Tremendous improvement in Sixel and especially Kitty graphics, including support for extremely efficient updates using the new Kitty animation protocol, including a feature motivated by Notcurses.
  • Support for NCBLIT_PIXEL in ncuplot/ncdplot. Behold beautiful pixel plots:

2021-09-06-044721_1256x1389_scrot

  • The terminal is now extensively (but efficiently) queried on startup. Some properties are derived from the results.
    • Numerous patches were submitted to upstream terminals to support this functionality.
    • Eventually, this will be expanded to eliminate our reliance on TERM and dependence on terminfo.
    • Eliminated the need to call notcurses_check_pixel_support() before using NCBLIT_PIXEL.
  • Non-interpolative scaling is now available for ncvisuals, suitable for pixel art and other purposes (thanks @joseluis !).
    • ncplayer now supports -n for non-interpolative scaling
  • Removed NCSTYLE_{INVIS, BLINK, STANDOUT, REVERSE}. They remain defined for now, but will be removed for ABI3.
    • Added ncchannels_reverse() to make up for NCSTYLE_REVERSE.
  • Scrolling is now supported on the standard plane.
  • A new binary, notcurses-info, explores Unicode conformance and terminal capabilities in a single screen of output.

2021-09-06-045342_807x625_scrot

  • The new "CLI mode" supports CLI-style (as opposed to fullscreen TUI) applications with the full power of Notcurses, and is intended to replace Direct Mode. Direct Mode will be maintained, but not expanded any further. ncneofetch, notcurses-demo's summary table, and notcurses-info all use CLI mode.
  • Added support for synchronized updates
  • Scrolling a plane now scrolls bound planes with it, unless they're created with NCPLANE_OPTION_FIXED.
  • Added NCOPTION_PRESERVE_CURSOR.
  • ncvisual_subtitle_plane() has replaced ncvisual_subtitle(), and now supports all LibAV subtitle types, including Type-1 DVB (bitmap subtitles)
  • ncblit_as_rgba()/ncvisual_from_plane() now support NCBLIT_BRAILLE
  • Added ncvisual_from_rgb_loose(), ncvisual_from_rgb_packed() (thanks @kaniini!), and ncvisual_from_palindex()
  • ncls now defaults to pixel blitting.
  • Added ncplane_moverel() (thanks @tomek-szczesny!).

with <3 from the dankest

hearts alive

v2.3.18—first in flight

01 Sep 00:07
v2.3.18
e6ce519
Compare
Choose a tag to compare

mostly bugfixen and windows work.

v2.3.17—i love it

22 Aug 20:08
v2.3.17
1915fb4
Compare
Choose a tag to compare
  • fixed major bug on non-Linux platforms, introduced in 2.3.15, that broke all frames >2MB
  • add support for NCBLIT_PIXEL to plots
  • use absolute coordinates for rendering sprixels, resolving placement of bound sprixels
  • add notcurses_enter_alternate_screen() and notcurses_leave_alternate_screen()
  • stop honoring the renderfp field of notcurses_options. it is left in until ABI3

v2.3.16—can i get a whoop whoop

20 Aug 02:15
v2.3.16
5449878
Compare
Choose a tag to compare

this exists because ncdirect_set_*_rgb() was broken on environments with fewer than 8 colors, which hopefully don't exist much outside of Fedora and Alpine's build environments, where the unit tests were failing.

bounce with me

v2.3.15—we're taking the atm with us to mexico

17 Aug 23:18
v2.3.15
c9fbc5d
Compare
Choose a tag to compare

This is the first Notcurses release that builds on Windows, though Windows support is still very experimental.

  • Terminals which invert cursor reports are now detected in all modes, and accounted for #1886
  • Terminals which 0-index cursor reports are now detected in all modes, and accounted for #2044
    • This fixes notcurses-info output in kmscon
  • notcurses-tester now only requires 50 columns to run, down from 80 #2042
  • Loop on EBUSY and EWOULDBLOCK in control_read(), eliminating some initialization failures, thanks @christianparpart !
  • Properly hold fixed subplanes where they are on parent plane scroll #2036
  • Implement terminfo k*n input sequences, so we no longer return error on ctrl/shift+special #2028
  • Improve startup latency and unite direct/rendered mode startup #2023
  • notcurses-info: simplify coloring
  • Detect kitty graphics support via query #1998
  • Merge in portable fbuf replacement for POSIX memstreams, necessary for windows #1977 , #2038
    • We now build and, to a degree, work on Microsoft Windows #463
  • Lots of improvements for Linux framebuffer console graphics #2048
  • Fix ncls path separation #2063

v2.3.13—it was the heat of the moment

05 Aug 03:37
v2.3.13
9fcbf00
Compare
Choose a tag to compare

Primarily a bugfix release, especially for the macOS environment. Most development work this cycle has not yet been merged, and is all about supporting Microsoft Windows and the Microsoft Terminal.

  • Obliterate any query text bled out by the terminal #2019
  • Allow the intro demo to run in any size window #2015
  • Allow the uniblock demo to run in 25 lines #2018
  • Force EGC combinations when U+200D Zero-width-joiner is used #2016
  • Plug memory leak in the composing+reflecting Kitty blitter used with 0.22.1+ #2012
  • Added some emoji to notcurses-info #2005
  • Fix invalid free() in fission demo #2003
  • Fix failure in fission demo #2002
  • Support building on macOS Mojave and other environments lacking C++17 std::filesystem #2001
  • Properly detect pixel geometry when running in Docker #1891
  • New portable functions notcurses_accountname() and notcurses_hostname() #2022

v2.3.12—drop a gem on 'em

29 Jul 04:55
v2.3.12
1e248e4
Compare
Choose a tag to compare

I think this will be a pretty solid one. Did a lot of testing and bugfixing this week.

  • Fix crash/errors on Linux framebuffer graphics when they weren't multiples of the cell geometry (#1996)
  • Scrub Linux framebuffer so multiframe partially-transparent graphics don't combine.
  • Support Type-1 DVB bitmap subtitles with ffmpeg (#1311). ncplayer will now display them when pixel blitting is available, regardless of whether pixel blitting is being used for the main image. They're only available from the new function ncvisual_subtitle_plane(), which supersedes ncvisual_subtitle(). The latter is now deprecated, and will be removed in ABI3.
  • Fix a memory leak on frame decode when a container had subtitles. This leak has been present since ffmpeg support was added, i.e. pre-1.0.
  • Add ncvisual_from_palindex() to build ncvisuals from palette-indexed streams.
  • Add support for Kitty 0.22.0's self-referential composition, though disable it for now due to a presumed bug in Kitty (see kovidgoyal/kitty#3874). When enabled, this allows for much less memory usage/copying when using Kitty graphics #1900. I proposed it; see kovidgoyal/kitty#3809 for more details. Thanks @kovidgoyal for implementing it!
  • In CLI mode, always move to the bottom before attempting to scroll #1994. This fixes notcurses-info when launched close to, but not at, the bottom of the screen.
  • Propagate out the error when we abort in intro; it was always reporting FAILURE rather than ABORTED.
  • Handle arbitrary glyph widths #1873. wcwidth() doesn't report any widths greater than 2 currently, but it might in the future, and should we ever use mosaics, we'll need this.
  • Added static inline nccell_cols(), which is faster than nccell_width(), which has been deprecated and will be removed for ABI 3.
  • Implement wipes and restores in Linux framebuffer graphics #1954.
  • Many changes necessary for supporting Windows, which is coming very soon
  • Removed sigset_t from the API by deprecating notcurses_getc() and ncdirect_getc(). notcurses_get() and ncdirect_get() have been added, which do not take a sigset_t. There was much rejoicing.
  • We now run CI on macOS (#1933), thanks @michaelsbradleyjr !
  • ncplayer now passes a specified loglevel through to ncdirect_core_init() #1981
  • Get Linux framebuffer graphics working in direct mode #1959
  • Fix terrible bug where we returned error instead of special keys from input
  • Replace %ju + uintmax_t casts everywhere with PRIu64 from inttypes.h
  • We now deflate Kitty bitmaps, reducing bandwidth at the cost of some latency #1695
  • Fix NCVISUAL_ADD_ALPHA when restoring cells in Kitty graphics
  • Flush before deciding whether to use Synchronized Update mode, to get the true length
  • ncmenu now uses NCPLANE_OPTION_FIXED so it doesn't move on scrolling planes #1958
  • Recognize Terminology based off DA3
  • Invert DECSDM on foot 1.8.2+ (thanks @dknl!)
  • notcurses-demo now creates the HUD and FPS graph with NCPLANE_OPTION_FIXED, so they no longer scroll off the screen in the whiteout demo, heh

Enjoy!

laughin' at bassheads

v2.3.11—up against the wall, motherfucker!

20 Jul 18:10
v2.3.11
30d71ab
Compare
Choose a tag to compare
  • Experimental support for iTerm2 and Linux fbcon bitmaps
  • SIGFPE is now handled like other fatal signals
  • NCALPHA_HIGHCONTRAST now works properly atop default backgrounds
  • NCPLANE_OPTION_FIXED has been added to change default behavior of bound planes, which now scroll alongside the parent plane.
  • Notcurses now requires libz to build.

v2.3.10—uncontrollable

15 Jul 02:46
v2.3.10
3aaff6a
Compare
Choose a tag to compare
  • OS X is now supported, closing our oldest open bug (#195). File bugs, kiddos.
  • Fixed brown-bagger segfault on context shutdown.
  • XTPOPCOLORS and XTPUSHCOLORS are now emitted on terminals that support them (XTerm, Kitty).
  • notcurses-info will now continue after hitting an unsupported Unicode character, rather than truncating the line.

v2.3.9

12 Jul 16:29
v2.3.9
561f4eb
Compare
Choose a tag to compare
  • Fixed major regressions from 2.3.8: menu highlighting is working once more, as are pointer inputs (mice) and the 8x1 plotter. Sorry about that!
  • notcurses_detected_terminal() and ncdirect_detected_terminal() now both return a heap-allocated string, which will contain the terminal version if Notcurses was able to detect it. This result ought be free()d.
  • Added ncplane_moverel() thanks to @tomek-szczesny.
  • Documented ncplane_move_yx() in notcurses_plane.3, and removed the false comment that "passing -1 as a coordinate will hold that axis constant" from USGAE.md and notcurses.h. This has never been true.
  • Added ncdirect_putegc() to perform Unicode segmentation. It returns the number of columns consumed, and makes available the number of bytes used by the EGC.
  • ncmenus can now be used with any plane, not just the standard plane.
  • Added ncchannels_reverse(), which reverses the color aspects of the two channels, while keeping other elements constant.
  • CHANNELS_RGB_INITIALIZER and CHANNEL_RGB_INITIALIZER have been renamed NCCHANNELS_INITIALIZER and NCCHANNEL_INITIALIZER. The former two are now deprecated, and will be removed for ABI3.