Releases: dankamongmen/notcurses
v2.2.10—reminiscent of a whale
So I'd somehow gotten into my head that the variable is BUILD_TYPE
, not CMAKE_BUILD_TYPE
, and so I've been setting the former to Debug
for...who knows how long, assuming that was testing with all my assert()
s, which obviously it was not. Thus we get embarrassing assert()
s firing all over notcurses-demo
(see #1630 and #1629). Those have been addressed; thus this brown-bagger of a release. Sorry about that.
We also got #1625 handled with a big assist from @dnkl , so ncdirect_cursor_down()
will scroll as (presumably) expected when on the last line. This fixes the dirlines
PoC; thanks to @joseluis to noticing the problem and filing a bug.
The new NCVISUAL_OPTION_CHILDPLANE
allows you to indicate that the n
field of ncvisual_options
refers not to the plane onto which you'd like to blit, but the parent of a new plane. A plane will be created using the other parameters in the ncvisual_options
, as a child of this parent. This means things like, say, vertically centering a sprixel relative to the standard plane can be done in one step (#1603).
The new wipebitmap
PoC identified two problems, both of which have been rectified (#1631). Kitty bitmaps could be rebuilt using slightly incorrect alpha values, and rebuilt bitmaps weren't always invalidated as necessary for redisplay.
v2.2.9—orcastyle
so much work, so many issues fixed and improvements made...but we're not yet ready for 2.3.0.
all the abi3 renaming is now complete. old functions are marked deprecated; migration to the new ones ought be wholly mechanical, usually simply a matter of adding an nc
prefix to cell
or channel
. palette256
changes to ncpalette
. that's about it.
two new stats have been added for tracking sprixel emissions and elisions.
v2.2.8—over the falls
Solid sprixel support is so close I can taste it. The demos all ought look pretty much correct in whatever terminal you're using, Sixel or Kitty-based, whatever. The cell_*()
to nccell_*()
migration is complete, and all cell_*()
functions are now marked ((deprecated))
. Convert ASAP! It's just a matter of adding nc
to the front of your function calls. It's looking like there will be a 2.3.0 release after all prior to big bad 3.0.0. Hack on!
v2.2.6—i know your boyfriend hates me
Sprixels, as written up here, are now working pretty decently. They're not all the way there, but great progress has been made. You'll now find them used in notcurses-demo
, particularly in:
intro
(an orca rides a segway along the bottom, and a famed scientist exclaims in surprise),xray
(the central video now uses sprixels, if available),yield
(the background is drawn with a sprixel, if available), andkeller
(pixelblitter has been added to the blitter examples)
The new caps-rendered
binary is available for a quick look at the increasingly-complex terminal properties detected for your environment.
Most remaining sprixel work has to do with performance and eliminating flicker. The story on overlapping sprixels is not yet decided, but that's mainly an issue of implementation decisions, rather than major outstanding design. We're at the point where you definitely ought be filing bugs on any problems you find. I think the API as stands will work going forward, but I reserve the right to change it for sprixels until 2.3.0.
Speaking of 2.3.0, it's possible (but unlikely) that we'll go directly to 3.0.0 instead. We'll definitely be doing 3.0.0 once the sprixel implementation is perfected. 3.0.0 will drop some (already deprecated) functionality, so make sure you're addressing any deprecation warnings.
and now, one of Atlanta's greatest cultural treasures...
brann dailor, brent hinds, troy sanders, and bill kelliher are MASTODON
this time, things will work out just fine. enjoy 2.2.6.
v2.2.5—swaggerless cretins
v2.2.5
v2.2.4—i want to be a fisherman
I'm not delighted with this release, and am not sure I encourage packagers to pick it up. It's got a ton of upheaval. Unfinished staircases to nowhere. Wires hanging from the wall, sparking menacingly. An agitated orca thrashes its powerful tail about. The dolorous moans of the dying and recently dead rise in all the world's languages. You have no face, and need to scream. This is indeed a disturbing universe.
If that doesn't scare you off, 2.2.4 is a huge new release adding Kitty bitmap support and integrating both it and Sixel bitmaps into the overall Notcurses model -- you can put them below other planes, you can put them above other planes, you can erase them, all that good stuff, and it ought more or less work. There are problematic areas, but this is more than enough to play with. So there you go, my droogs, the first library in the world (to the best of my knowledge) to integrate both Sixel and Kitty bitmap graphics, plus all the text you've grown to know and love from Notcurses. That's kinda neat. With that said, do not expect this to reflect the intended experience, and do expect behavior and perhaps even the API to change. It's quite likely that I'll require you to only blit bitmaps to new planes, which might even have a different type than the venerable ncplane
that they currently overload. I strongly encourage you to create new, purpose-specific ncplane
s for NCBLIT_PIXEL
blitting, rather than using existing planes, and not to render text on those planes unto which you have rendered bitmaps both for futureproofing, and for your own sanity (trust me on this).
That's not it, though. 2.2.4 also introduces notcurses_debug_caps()
and the caps-rendered
PoC. The new option NCOPTION_NO_CLEAR_BITMAPS
for notcurses_init()
will inhibit the latter's attempts to clear the screen of existing bitmaps on start. You probably don't want to use it. ncplane_halign()
and ncplane_valign()
have been introduced; ncplane_align()
is now a passthrough to ncplane_halign()
, and deprecated. It will be removed in ABI3. The NCPLANE_OPTION_VERALIGNED
option has been added for ncplane_create()
. The NCVISUAL_OPTION_HORALIGNED
and NCVISUAL_OPTION_VERALIGNED
flags have been added for ncvisual_render()
and ncvisual_stream()
. @MasFlam contributed the nctabbed
widget, so thanks a lot--check out the big brain on @MasFlam ! The redundant notcurses_canpixel()
function has been removed (use notcurses_check_pixel_support()
). The NCPLANE_OPTION_MARGINALIZED
flag has been added for ncplane_create()
, allowing planes to be created with margins relative to their parent plane. The ncplane_resize_aligned()
resize callback now takes care of vertical alignment if NCPLANE_OPTION_VERALIGNED
was used. Finally, new resize callback ncplane_resize_marginalized()
has been added, intended for use with NCPLANE_OPTION_MARGINALIZED
; it will recompute margins and move/shrink/grow a plane as necessary on a parent plane resize.
Now years gone by we find the man who rules the sea.
He sets out on a dark May morning.
To bring his catch back to this small community.
He doesn't see the danger dawning.
Four hours up, oh the ocean swelled and swelled
The fog rolled in it started raining.
"The starboard bow! Oh my God we're going down!"
They do not hear his frantic mayday.
AND HE SAYS:
When I grow up I want to be
one of the harvesters of the sea.
I think before my days are done,
I want to be a fisherman.
I'll live and die a fisherman!
v2.2.3—ambitionz az a ridah
Rather more of a "technology preview" release than I'd like, but big things were building up, and needed a release:
- EXPERIMENTAL support for pixel graphics via
NCBLIT_PIXEL
. They pretty much work, but they're neither as fast nor as attractive as they'll eventually be, and they interact poorly with intersecting planes. As standalone units, they're not too bad. See #1380, #1383, #1381, #1378, #1373, and #200.ncplayer
andncls
can both now use pixel on terminals supporting Sixel with-bpixel
.ncneofetch
will use pixels where supported. Pixel graphics will be shown off in thekeller
demo when supported. - INITIAL support for the
nctree
widget. There will be some more work involving expanding and collapsing, but this gives a pretty accurate portrait of where it's going. See #1164. Newtree
PoC. - Work around annoying export of
bswap
in recent OpenImageIO. - More robust output (always loop on
EBUSY
et al), including a fix for the crafty #1090. - Treat
SIGCONT
likeSIGWINCH
, for programs emerging from backgrounding. - Improve transparency in
zoo
demo (#1353). - Improve quadblitter accuracy (#1354).
- Restore prior signal handlers in
drop_signals()
, catchSIGILL
as fatal (#1357).
v2.2.2—that's one great big ol' pistol
- Accesses to statistics are now locked (#1139)
ncplayer
uses direct mode when invoked with-k
, speeding up function (#1342)- The cursor is now always positioned following output on exit (#1345)
- Always flush term reset at start, fixing late reset on e.g.
tmux
(#1350) ncplayer -L
on videos no longer delays between loops (#1352)- QR Codes can now be blitted only using
NCBLIT_2x1
, since that's the only one scanners work with.
strap them kids in; give 'em a little bit of vodka in a cherry cola
https://www.youtube.com/watch?v=O2iGMYeZb9Q
v2.2.1—woo-hah
Brown bag release: I broke UTF8 tracking in both modes late in the 2.1.x series, fixed it in one, and called it a day, because I'm a dumbass. Sorry about that. Direct Mode (and ncls
) can once again use glyphs beyond the 7-bit ASCII character set.
v2.2.0—no one man should have all that power
Notcurses 2.2.0
This series took just about two months, and saw 461 commits. 100 issues were closed during the course of 2.2.0 development. Please note that notcurses-view
has been renamed ncplayer
, and notcurses-tetris
has been renamed nctetris
. The Rust wrappers have been significantly improved by @joseluis. MacOSX support is supposedly coming really soon now from @grendello . While we're still carrying around my original Python wrappers in cffi/
, @igo95862 's far superior ones are available in python/
. I presented on Notcurses at FOSDEM 2021.
Changes since 2.1.8
- Blitters properly degrade to
NCBLIT_2x2
fromNCBLIT_3x2
andNCBLIT_BRAILLE
on linux console (#1334) - Fix transparent blitter stacking when the lower plane has no transparency (#1322)
ncplayer
now always shows actual blitter being used (#1336)- First use of
notcurses_getc()
and other input functions no longer resets colors on tmux (#1314) - When using rendered mode but inhibiting the alternate screen, the cursor is now placed on the bottom left on exit (#1337)
Other changes since 2.1.0
- "Transparent blitter stacking". When visuals are blitted atop one another, we change rendering strategy slightly (this only applies to cells rendered as part of visuals) so that transparent visuals look more like what's logically expected. For full details, see #1068 and #1322. This seemingly subtle issue was necessary for proper sprite support.
- Direct mode now supports GNU Readline transparently using
ncdirect_readline()
. See #1120 and #1326. - New statistics have been added to track rasterization time. The performance output includes these, as does the
notcurses-demo
summary table. See #1324. - A bug has been fixed that sometimes caused
ncplayer
to abort on resize #1302 ncneofetch
now includes the various ASCII art fromneofetch
(the toolneofetch-rip
is used to automatically extract them). This is used whenever no image is known for the distro, when that image can't be loaded, and if there is no multimedia support. See #1260 and #1304.- Notcurses now builds and works on DragonFly BSD, see #1121
- A new progress bar widget has been added, and added to the
uniblock
demo, see #1202, #1209, #1213, and #1151. ncdirect_visual_render()
andncls
now support alignment, see #1195- Direct mode now installs fatal signal handlers by default, like rendered mode. This can be disabled with
NCDIRECT_OPTION_NO_QUIT_SIGHANDLERS
. - Fixed crash in
fallin
demo when run atopwhiteout
residue. This was unfortunately the default case for DFSG builds =[. notcurses-core
has been split out fromnotcurses
.libnotcurses
depends onlibnotcurses-core
, butlibnotcurses-core
does not depend onlibnotcurses
, nor the multimedia stack. This allows distros to split up the packaging, and system administrators to only installnotcurses-core
when no applications need the fullnotcurses
. See #339, #1300, #1306, #1301, and #1224. To uselibnotcurses-core
, link againstnotcurses-core
instead ofnotcurses
, and usencdirect_core_init()
ornotcurses_core_init()
in place ofncdirect_init()
andnotcurses_init()
respectively.- The functions
channel_set_palindex()
,channels_fg_palindex()
, andchannels_bg_palindex()
have been added. ncplane_abs_yx()
has been added.ncplane_putnstr_yx()
,ncplane_putstr_stained()
, andncplane_putstr_yx()
now properly return the number of columns output, as long documented.notcurses_linesigs_disable()
andnotcurses_linesigs_enable()
have been added, allowing Ctrl+C etc. line discipline transformations to be disabled.- Two new scaling modes,
NCSCALE_NONE_HIRES
andNCSCALE_SCALE_HIRES
, admitting higher-resolution blitters but otherwise operating likeNCSCALE_NONE
andNCSCALE_SCALE
. - Multithreaded
ncls
, and moved it to usingNCSCALE_SCALE_HIRES
. - On Kitty and VTE-derived terminals,
NCBLIT_3x2
is now used forNCBLIT_DEFAULT
(up fromNCBLIT_2x2
). - Work around Kitty behavior that replaced black background with clear ones.
- Replace
cuf
withhpa
for lateral movement, responding much better to terminal/wcswidth()
disagreements. - Fixed a layout bug with (some) Arabic text.
- The
allglyph
demo was replaced with theanimate
demo. The former was largely duplicated byuniblock
, and caused a great deal of performance variance, almost all due to FreeType. - Many bugfixes and optimizations.