Releases: dankamongmen/notcurses
v2.1.8—my hyperbole is hyper, my energy kinetic
- Fix abort on certain screen resizes (#1302)
ncneofetch
: fall back to ncart if built without multimedia support- Eliminate per-
ncvisual
leak of subtitle context memory - CMake support for
NotcursesCore
notcurses-tetris
renamed tonctetris
- null multimedia implementation
- Initialize libreadline on demand; eliminate
NCDIRECT_OPTION_NO_READLINE
(only existed since 2.1.6) - Add raster timing stats
- Rename
notcurses_directmode.3
man page tonotcurses_direct.3
- Add missing function
channel_set_palindex()
- Implement transparent blitter stacking (#106, #1317)
v2.1.7—land to reform, limb by limb
- Split
libnotcurses
intolibnotcurses
andlibnotcurses-core
. Link against the latter (usingncdirect_core_init()
and/ornotcurses_core_init()
) to build a client binary that can run without multimedia support being installed. - Renamed
notcurses-view
toncplayer
. - Tidy up the
animate
demo a bit. - Fix
pkg-config
files for static linking.
v2.1.5—it's my job to keep punk rock elite
- Resolved a bug when a plane with grandchildren was removed or reparented.
- Replaced the
allglyph
demo withanimate
. The former was wildly divergent in runtime, mostly reflecting libfreetype's feelings that day, and tended to dominate deltas across runs. It was also kinda redundant, given theuniblock
demo. - Imports all the ASCII logos from
neofetch
, and uses them as fallbacks if we don't know a pretty logo for the distro inncneofetch
. - Addressed various issues keeping us from building on DragonFly BSD.
- Test (using
wcwidth()
) for libc support of Unicode 13 at startup, and deny sextants if it's lacking. This prevents us from trying to use sextants on FreeBSD, which was causingnotcurses-demo
to blow up infallin'
. - New functions
ncplane_abs_yx()
andncplane_abs_y()
/ncplane_abs_x()
. - Don't use
tiparm()
with parameterless control sequences. - Read
/etc/os-release
and use anyLOGO
field found therein. ncneofetch
now usesvendor_id
in/proc/cpuinfo
; fixes s390xncneofetch
now usessysctl(3)
on BSD, where it now works- FIxed return values of a few output functions to return columns not bytes written
v2.1.4—only came to save the game like a memory card
- Resolves bug when switching from palette-indexed color to RGB color in direct mode.
- Improve image quality in
ncneofetch
withNCSCALE_SCALE_HIRES
. - Parse
/etc/os-release
looking for aLOGO
entry inncneofetch
. - Catch fatal signals in direct mode like we do fullscreen mode.
- Resolves bug in
fallin'
demo that led to failure in the presence ofNCBLIT_3x2
. - Resolves some longstanding bugs related to very wide EGCs.
- Improvements to documentation.
v2.1.3—what the hell is a jygawatt?
- Fix for slight systematic progress bar overestimation
- Fix for crash in
fallin
demo when run whilewhiteout
residue is on the screen- This affects the default run in DFSG builds :/
notcurses-view
,notcurses-demo
, andncls
all now accept-V
for versioning info- Fix for
BigMult
unit test in locales with decimal separators other than '.' ncdirect_*()
setters have been deprecated, and reimplemented as wrappers aroundncdirect_set_*
equivalents- Gobs of Rust work courtesy @joseluis
- Fix writeout timing statistics
v2.1.2—i can freak a fit that pump with the peep
https://www.youtube.com/watch?v=BqdfGNlUHA4
Since 2.1.1:
- Added two new scaling specifications:
NCSCALE_NONE_HIRES
andNCSCALE_SCALE_HIRES
. These act likeNCSCALE_NONE
andNCSCALE_SCALE
, except they admit use of higher-resolution blitters. - On Kitty and VTE-based terminal emulators (well, anything with
kitty
,vte
, orgnome
in theTERM
variable), we now default toNCBLIT_3x2
rather thanNCBLIT_2x2
forNCSCALE_NONE_HIRES
,NCSCALE_SCALE_HIRES
, andNCSCALE_STRETCH
. - Work around
kitty
behavior that left large transparent areas in the place of black ones - Added
notcurses_linesigs_enable()
andnotcurses_linesigs_disable()
to enable/disable Ctrl+C, Ctrl+Z, and Ctrl-\. - Divide
ncdirect_render_image()
into componentncdirect_render_frame()
andncdirect_raster_frame()
(the original remains), allowing multiple threads to decode images concurrently. - Direct mode image rendering now honors transparency.
- We now use
hpa
rather thancuf
andcup
for horizontal movement. This has negligible effects on non-pathological speed/bandwidth, but improves our behavior in rare situations where our concept of our location diverges from the terminal's. notcurses-view
now has a-t
option to show media for a certain amount of time, rather than prompting to continue.ncls
now usesNCSCALE_SCALE_HIRES
.ncls
is now multithreaded, substantially accelerating it when listing multiple files.notcurses-demo
now rejects extra command line arguments.- Fixed list corruption in
ncpile_drop()
.
v2.1.1—ever since a young buck i been on the comeup
- New progress bar widget,
ncprogbar
- Fix bugs in
ncplane_reparent()
that could lead to undefined behavior - Fix layout bug with Arabic text
- Add progress bars to
uniblock
andallglyph
demos - Added
--align
argument toncls
- New unit tests,
((nonnull))
annotations on widget functions - Remove meaningless %r/%w averages from
notcurses-demo
summary - Disallow some invalid parameters to
ncplane_resize()
slice like a ninja, cut like a razor blade
v2.1.0—rubberband man
Notcurses 2.1.0 sexblitter via notcurses-view
in a 343x70 xterm4-terminal
, Liberation Mono 11—let's play Global Thermonuclear War.
88 issues were closed since 2.0, including:
- A
notcurses
context now supports one or more piles. A pile is a set ofncplane
s, ordered on a distinct z-axis. Distinct piles can be freely modified or rendered concurrently. Rendering and rasterization have been broken up; seencpile_render()
andncpile_rasterize()
. Of course,notcurses_render()
continues to function, rendering+rasterizing the standard pile (that pile with which the standard plane is associated).- Added
ncpile_top()
andncpile_bottom()
- Unless you're using parallelism to achieve the highest level of performance, you probably needn't concern yourself with piles. There is no API/conceptual breakage, only extensions.
- Added
- The powerful new 3x2 "sexblitter" (and plotter) has been added, using Unicode 13's sextant glyphs.
- Support for these glyphs is not yet robust in all terminal emulators, but we're working on it!
- It's not yet been set as the default for
NCSCALE_STRETCH
, but will be soon
- Added the
ncls
tool, and a manual page for it. - @igo95862 's experimental new Python wrappers are available, though the original ones are still around
- You are encouraged to migrate to these wrappers! They're much better.
cell
has been renamednccell
. The former name is retained as an alias.cell
is kept for backwards-compatibility only. It will be removed in 3.0.
- Fixed a longstanding bug in input when pasting long supra-ASCII sequences
- Fixed a longstanding bug with EGCs containing multiple printing glyphs
ncvisual_decode_loop()
has been added to support looping through the frames of a video, and back to the beginning.- The
keller
demo was added, providing a slideshow of media blitted using each blitter in sequence.- This is the last planned demo. There are now 25 demos in
notcurses-demo
.
- This is the last planned demo. There are now 25 demos in
notcurses-demo
can now runnotcurses_debug()
in a subwindow on demand.notcurses-demo
now graphs frames plots at 2Hz, using Braille- Fixed the colors of the birds in the
eagle
demo notcurses-view
now accepts-q
to inhibit writing info while rendering.- Blitter switching in media res has been fixed in
notcurses-view
. - Quadblitter's rasterization emits fewer bytes of control sequences
- Quadblitter's rasterization has been substantially optimized time-wise.
ncmenu
items can be disabled/enabled on the fly.ncmenu
s now stretch/shrink along with their binding planencmenu_offer_input()
now handles section shortcuts.ncmenu
handles menu items without long descriptions properly now.- Added the
ncinput_equal()
predicate. - Small bugfixes were made to tablet-positioning in
ncreel
. - A plane's resize callback function can be set/acquired with
ncplane_set_resizecb()
andncplane_resizecb()
. - Resize callbacks are now propagated across
ncplane_dup()
ncplane_create()
is now preferred toncplane_new()
. Thencplane_options
struct has eliminated itshoriz
union, replacing it withint x
(previously a member of said union). We weren't buying any actual type safety with the union, and this means less to type in initializers. Sorry for the API breakage :(.- A bug that could send the ffmpeg decoder into a livelock has been resolved.
- Fixed a bug in plots when the range of values was very small
ncdirect_image_render()
now properly resets colors and styles upon completion.ncreader
now supports most major readline keyboard shortcuts.- Manual pages no longer have
--
folded down into an en dash. - Notcurses now supports
NCSTYLE_STRUCK
for struckthrough text.- As this isn't defined in
terminfo
, you use it at your own risk, though I suppose that's true for everything.
- As this isn't defined in
- Bug fixed affecting
NCSTYLE_ITALIC
following other SGR controls in both fullscreen and direct mode. - A longstanding bug in the
subproc
unit tests leading to deadlock has been resolved. ncplane_reparent_family()
has been added, allowing anncplane
to be reparented without losing its children.- Added
notcurses_stddim_yx_const()
, aconst
analogue ofnotcurses_stddim_yx()
. - Added new
cell_load_egc32()
to support loading from auint32_t
(as opposed toconst char*
) - New macros
NOTCURSES_VERSION_COMPARABLE
andNOTCURSES_VERNUM_ORDERED
As you'll note, API change has dropped drastically since the freewheeling 1.x days, but I'm still of a mind to suffer a one-time breakage rather than carry crap eternally forward, especially if the fixups are trivial (as they were in the case of ncplane_options
). If you can't deal with that, there are about four-thousand other TUI libraries...
...but none of them are so 🔥🌿💯 as Notcurses =]. Word is bond.
Hack on! —dank and the gang
v2.0.12—moosebumps
good lord, please let the unit tests be fixed on alpine
v2.0.11—i opened up shop at 13
v2.0.11