Skip to content

Releases: dankamongmen/notcurses

v2.3.8—a game where men throw ducks at balloons

04 Jul 05:14
v2.3.8
1189891
Compare
Choose a tag to compare

a bugfix release.

  • stop using Synchronized Update Mode with kitty due to a bug which was rapidly fixed upstream (#1864)
  • fix serious issues in the OpenImageIO backend that had gone neglected for too long (#1722, #1723).
  • ncvisual_blitset_geom() fixes for several cases, mostly involving NCVISUAL_OPTION_CHILDPLANE (#1854 )
  • fix SM-based Synchronization Mode (#1850)
  • clear old glyphs even when under new sixel (#1537). this fixes the [xray] demo in foot and xterm
  • mojibake demo: add new emoji from Unicode 14.0β
  • fix cell_extended_p() for big-endian

v2.3.7—the phrase that pays

29 Jun 11:10
v2.3.7
8b6a30c
Compare
Choose a tag to compare
  • Colorized notcurses-info, and move to new scrolling-rendered mode (#1823)
  • ncls now uses NCBLIT_PIXEL by default. If using NCBLIT_PIXEL, it will default to NCSCALE_NONE_HIRES (#1835)
  • Support SM/RM-based Synchronized Updates in addition to DCS-based (#1850/#1845)
  • Fix crash when filling in transparent sprixcell with new frame, manifested as crash in ncplayer -bpixel -a (#1847)
  • Stop using sgr (#1818)
  • Identify the Linux framebuffer console, and extract pixel geometry from it (#1369)
  • Fix cursor detection in the Linux console (#1837)
  • Emit damaged glyphs when hidden by opaque kitty sprixcells. This won't be necessary anymore once we move to the animation protocol for holing out Kitty bitmaps, but it's necessary for now (#1704)
  • Fix problems compiling Rust crate on non-x86 architectures (#1339)
  • Reject control characters when loading nccells or outputing to an ncplane (#1840)
    • '\n' is still allowed, for scrolling planes only. '\0' is always allowed to zorch out a cell.
  • Added ncplane_scrolling_p() (#1841)
  • Add labels to interp PoC
  • Fix double free() in ffmpeg backend when destroying an ncvisual following a resize (#1800)
  • If TIOCGWINSZ fails, check LINES/COLUMNS environment variables, and terminfo database (#1826)
  • Fine libreadline properly on FreeBSD, and fix up FreeBSD builds prior to FreeBSD 12
  • Unified attribute backends for direct and rendered mode, eliminating a bunch of code duplication and some small errors
  • Don't install man pages for binaries we haven't built (#1824)
  • Added NCOPTION_PRESERVE_CURSOR (#1823)
  • Don't use C=1 with Kitty unless it's at least version 0.20.0, fixing NCBLIT_PIXEL on pre-0.20.0 Kitty (#1804)
  • Fix bouncing effect in XTerm when bitmap hit the last line (#1820)

scream on 'em, axl

v2.3.6—split the cigarillo like a lumberjack

24 Jun 02:35
v2.3.6
481d539
Compare
Choose a tag to compare

The 2.3.5 release had a harmless -Wformat-security violation, but since it was blowing up -Werror builds, I went ahead and cut this.

v2.3.5—assisted living dracula

23 Jun 17:08
v2.3.5
a14a527
Compare
Choose a tag to compare

a monster of a minor release

  • Terminals not replying with cell-pixel geometry in TIOCGWINSZ ioctl()s, but claiming to support Sixel, could trigger floating-point exceptions. Such terminals will now have Sixel disabled. Contour now returns the geometry (#1805).
  • Added support for Application Synchronized Updates, and a new stat to track them (#1582).
  • New stat for bytes emitted as bitmaps (#1801)
  • Terminal versions are now extracted from query replies when available (#1798)
  • Repaired bouncing effect when playing fullscreen sixels introduced in 2.3.4 (#1789)
  • Submitted a PR to MLterm to invert its handling of DECSDM (#1782)
  • Moved to KDFONTOP from GIO_FONTX/PIO_FONTX, fixing font reprogramming in the Linux console (#1726)
  • Add new ncvisual_from_rgb_{packed,loose}() (#1767)
  • Use Kitty's move capability when possible (#1395)
  • Quad and sexblitter now honor NOINTERPOLATIVE all the way through (#1763)
  • Query responses identifying terminals can now override TERM (#1761)
  • Added NCSTYLE_UNDERCURL (#1758)
  • Detect the default background at startup and work around Kitty's transparent background weirdness (#1292)
  • ncplane_rgba() now works for NCBLIT_BRAILLE (#1441)
  • Fixed bug that prevented notcurses_enable_cursor() from working (#1812)
  • Fixed bug that prevented NCVISUAL_OPTION_ADDALPHA from working for colors with red or green components
  • Use the u7 terminfo capability rather than hardcoding cursor location query
  • Lots of terminal query fixes

kamikazi stlye

v2.3.4—you can expect a forecast of vengeance

12 Jun 21:27
v2.3.4
160868d
Compare
Choose a tag to compare
  • Added the flag NCVISUAL_OPTION_NOINTERPOLATE to use non-interpolative scaling in ncvisual_render(). ncvisual_render() without a multimedia engine will now use this method for any requested scaling (previously, scaling was not performed without a linked multimedia backend).
  • NCVISUAL_OPTION_BLEND used with NCBLIT_PIXEL will now, when the Kitty graphics protocol is in use, cut the alpha of each pixel in half.
  • ncvisual_inflate() has been rewritten as a wrapper around the new function ncvisual_resize_noninterpolative(), and deprecated. It will be removed for ABI3. Godspeed, ncvisual_inflate(); we hardly knew ye.
  • ncdirectf_render() has been changed to accept a ncvisual_options, replacing and extending its four final arguments. Sorry about the breakage here, but ncdirectf_render() was introduced pretty recently (2.3.1). As a result, ncdirectf_render() and ncdirect_stream() now honor NCVISUAL_OPTION_BLEND and NCVISUAL_OPTION_NOINTERPOLATE. All of this also applies to ncdirect_geomf().
  • ncplayer now accepts -n to force non-interpolative scaling.
  • A new binary is installed, notcurses-info. It prints information about the terminal environment in which it runs. More information is available from its man page, notcurses-info(1).
  • Added ncdirect_light_box(), ncdirect_heavy_box(), nccells_light_box(), and nccells_heavy_box(). Publicized nccells_ascii_box(). All are static inline.
  • A bug was fixed in ncplane_move_yx(): root planes were being moved relatively instead of absolutely. This was never the intended behavior.
  • It was previously possible to pass NULL as the second parameter of ncplane_mergedown_simple(), and have the standard plane be used as the destination. This is no longer supported, since the source plane could be in another pile. An error will instead be returned.
  • Fixed a bug in ncdirect_box() where default/palette-indexed colors weren't properly used on the top and bottom borders.
  • Added notcurses_detected_terminal() and ncdirect_detected_terminal().

v2.3.3—this is a legitimate medical van

12 Jun 20:55
v2.3.3
4ca1036
Compare
Choose a tag to compare

Don't use this release. It has a broken unit test when run in ASCII mode.

v2.3.2—before i get too deep

03 Jun 06:29
v2.3.2
507d2c8
Compare
Choose a tag to compare

A good-sized release, after a more lengthy delay than is typical.

  • ncplane_at_yx() now returns the EGC occupying that cell, even if the cell is a secondary column of a wide glyph. Previously, it returned an empty string in this case. ncplane_at_yx_cell() still replicates the exact nccell, allowing you to fully distinguish between the primary column of a wide glyph, the secondary column(s) of same, and an empty string. Furthermore, ncplane_at_yx() now takes the base cell into account; the result is exactly what is fed into rendering logic.
    • Note that this change cascades, affecting e.g. ncplane_contents().
  • Added notcurses_cursor_yx() to get the current location of the terminal cursor.
  • Added ncdirect_supported_styles() and ncdirect_styles() to the Direct Mode API.
  • Closed memory leaks in ncvisual API (#1712, #1711)
  • Support resizing visuals in the absence of a multimedia engine via simple noninterpolative sampling (#1705)
  • Explicitly prevent more than one context (struct notcurses or struct ncdirect) at a time in a process
  • ncplane_as_rgba() now supports NCBLIT_2x2 and NCBLIT_3x2, and requires the desired (inverse-)blitter to be passed explicitly (i.e. no NCBLIT_DEFAULT) (#1697)
  • Restore colors properly following sgr/sgr0 in direct mode, for both palette and RGB (#1703)
  • Fix bug in ncvisual_from_bgra() that manifested as broad inability to render in Rust, thanks @joseluis (#1703)
  • Unified much of the storage shared across direct and rendered mode, killing off duplicated code, and packed all escapes into a single, tight, cache-friendly buffer (#1525)
  • Always convert visuals to RGBA if not loaded in RGBA, fixing ncpixel API for them (#1680)
  • Rust bindings now use bindgen 0.57, meaning maybe we can build a Fedora package, thanks @joseluis (#1339)
  • Emit rmkx on exit, thanks @dnkl
  • Always pad image data suitably for ffmpeg's SIMD-heavy backend (#1675)
  • Rebuild auxiliary vectors on a new frame in both Sixel (#1642) and Kitty (#1605)
  • Python CFFI fixes, thanks @scauligi
  • ncplayer in direct mode (-k) was printing too many rows (#1673)
  • Respect leny/lenx from ncvisual_options when rendering once more (#1661)
  • Strengthened a lot of unit tests, wrote about a dozen new unit tests.
  • Updated a number of man pages.

There's probably other stuff. It's a pretty big release.

heh she said deep beavis

v2.3.1—this december is the december of our december

18 May 08:04
v2.3.1
739c960
Compare
Choose a tag to compare
  • Fixes the build on FreeBSD, and in the Zig c compiler
  • Honors maxx and maxy when rendering images in direct mode
  • Robustifies direct mode cursor queries, especially when redirected to a file
  • Don't acquire the signal atomic if we're not registering any signal handlers
  • Add ncdirectf_{from_file, geom, render, free}(), a rather roundabout way of providing efficient access to media information in direct mode
  • @igo95862 's python updates
  • @scauligi 's cffi updates
  • Fix ncvisual_resize() when enlarging a frame using ffmpeg
  • notcurses-tester: accept any argument starting with -l and treat it as -l8
  • Always enable 8bpc RGB for foot, kitty, and alacritty, without needing COLORTERM
  • Add artix art to ncneofetch (thanks @dknl)
  • Add spaceships to box demo

v2.3.0—triumph

09 May 22:54
v2.3.0
ea4c593
Compare
Choose a tag to compare

This tremendous release—90 days, 169 issues closed, and 992 commits—is dedicated to the memory of Dan Kaminsky, hacker, genuinely nice guy, and friend. We'll miss you, DanK.

The flagship new feature is of course support for portable terminal bitmaps; both Sixel and Kitty are supported using a single NCBLIT_PIXEL interface. Extensive work has gone into flicker-free, fast presentation. No other library in the known universe supplies such power, and I can't wait to see what y'all do with it.

There are too many other improvements to really list here. Check the release notes and the 2.3.0 milestone (linked above). I spent close to 700 hours on this release, and poured a great deal of my strength into it. But one must have chaos in oneself to give birth to a dancing star.

Go forth and hack. <3 the dankest a/k/a nick black
Wu-Tang Clan, Triumph

Olympic torch flaming, it burn so sweet
The thrill of victory, the agony, defeat
We crush slow, flaming deluxe slow
For judgment day cometh, conquer, it's war
Allow us to escape, hell glow spinning bomb
Pocket full of shells out the sky, Golden Arms
Tune spit the shit, immortal combat sound
The fake false step make the blood stain the ground

v2.2.11—stay lit

08 May 22:25
v2.2.11
dc9db79
Compare
Choose a tag to compare

2.3.0 is very, very close. Adds ncplane_erase_region() to erase a subregion of a plane. Adds ncblit_rgb_packed() and ncblit_rgb_loose() to blit RGBx and pure RGB. Fixes some flicker when using sixel. Fixes an error in sixel wiping. Relaxes an EGC test to WARN to pass on musl+s390x. Fixes notcurses-base.pc so that Requires.private specifies the proper source of Terminfo on the system, fixing static linking when libtinfo is built into libncurses instead of being a standalone deal.