Skip to content

Releases: dankamongmen/notcurses

v2.2.10—reminiscent of a whale

05 May 09:19
v2.2.10
2d6bdd3
Compare
Choose a tag to compare

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

03 May 06:51
v2.2.9
923bc40
Compare
Choose a tag to compare

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

18 Apr 17:24
v2.2.8
d5b58d9
Compare
Choose a tag to compare

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!

https://vimeo.com/38864029

v2.2.6—i know your boyfriend hates me

12 Apr 09:02
v2.2.6
e017dcb
Compare
Choose a tag to compare

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), and
  • keller (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.

kitty 0.19.3:
2021-04-12-075548_845x441_scrot

XTerm 366:
2021-04-12-075815_884x556_scrot

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

behold the motherload!
this time, things will work out just fine. enjoy 2.2.6.

v2.2.5—swaggerless cretins

04 Apr 18:28
v2.2.5
8c78b08
Compare
Choose a tag to compare

v2.2.4—i want to be a fisherman

28 Mar 21:03
v2.2.4
57114c8
Compare
Choose a tag to compare

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 ncplanes 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.

Primus--John the Fisherman

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

08 Mar 12:11
v2.2.3
bc84987
Compare
Choose a tag to compare

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 and ncls can both now use pixel on terminals supporting Sixel with -bpixel. ncneofetch will use pixels where supported. Pixel graphics will be shown off in the keller 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. New tree 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 like SIGWINCH, for programs emerging from backgrounding.
  • Improve transparency in zoo demo (#1353).
  • Improve quadblitter accuracy (#1354).
  • Restore prior signal handlers in drop_signals(), catch SIGILL as fatal (#1357).

i won't denah it

v2.2.2—that's one great big ol' pistol

18 Feb 12:07
v2.2.2
c10f5a4
Compare
Choose a tag to compare
  • 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

10 Feb 00:34
v2.2.1
be4a915
Compare
Choose a tag to compare

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

08 Feb 14:35
v2.2.0
3cdf716
Compare
Choose a tag to compare

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 from NCBLIT_3x2 and NCBLIT_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 from neofetch (the tool neofetch-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() and ncls 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 atop whiteout residue. This was unfortunately the default case for DFSG builds =[.
  • notcurses-core has been split out from notcurses. libnotcurses depends on libnotcurses-core, but libnotcurses-core does not depend on libnotcurses, nor the multimedia stack. This allows distros to split up the packaging, and system administrators to only install notcurses-core when no applications need the full notcurses. See #339, #1300, #1306, #1301, and #1224. To use libnotcurses-core, link against notcurses-core instead of notcurses, and use ncdirect_core_init() or notcurses_core_init() in place of ncdirect_init() and notcurses_init() respectively.
  • The functions channel_set_palindex(), channels_fg_palindex(), and channels_bg_palindex() have been added.
  • ncplane_abs_yx() has been added.
  • ncplane_putnstr_yx(), ncplane_putstr_stained(), and ncplane_putstr_yx() now properly return the number of columns output, as long documented.
  • notcurses_linesigs_disable() and notcurses_linesigs_enable() have been added, allowing Ctrl+C etc. line discipline transformations to be disabled.
  • Two new scaling modes, NCSCALE_NONE_HIRES and NCSCALE_SCALE_HIRES, admitting higher-resolution blitters but otherwise operating like NCSCALE_NONE and NCSCALE_SCALE.
  • Multithreaded ncls, and moved it to using NCSCALE_SCALE_HIRES.
  • On Kitty and VTE-derived terminals, NCBLIT_3x2 is now used for NCBLIT_DEFAULT (up from NCBLIT_2x2).
  • Work around Kitty behavior that replaced black background with clear ones.
  • Replace cuf with hpa for lateral movement, responding much better to terminal/wcswidth() disagreements.
  • Fixed a layout bug with (some) Arabic text.
  • The allglyph demo was replaced with the animate demo. The former was largely duplicated by uniblock, and caused a great deal of performance variance, almost all due to FreeType.
  • Many bugfixes and optimizations.