Releases: hpjansson/chafa
Chafa 1.18.0
This is a feature and bugfix release.
-
Increased GLib minimum version to 2.58 (released in 2018).
-
New options:
--files=FNAMEand--files0=FNAME. These allow reading lists of input files from a file or standard input. Paths can be separated by newlines or a zero byte (--files0). These options can be specified multiple times. -
New option:
--link=[auto|on|off]. When used with--label, this controls whether each label should be anOSC 8-style hyperlink to its input file. -
Multiple files can now be decoded in parallel. This greatly speeds up grid mode on multi-core systems. Controllable with
--threads. -
ConHost support was removed due to incompleteness and lack of interest.
-
Image loaders:
-
Terminal support:
- Improved detection of ghostty inside tmux (#296, reported by @timsofteng).
- Added support for GNU/Hurd console.
-
Tests:
- Expanded symbol matching tests with more cases and detailed diagnostics.
- Added a test for CLI tool return values in various scenarios.
-
Bug fixes:
#293 Don't leave stdin in non-blocking mode (found by @YanceyChiew).
[unfiled] Use glibtoolize when libtoolize is unavailable (@saitoha).
[unfiled] GNU/Hurd: Don't stall if pipe is closed on remote end.
[unfiled] _mm_empty() not always called immediately after MMX use.
[unfiled] FP division by zero possible in sixel palette generation.
[unfiled] Don't wait for response if probing is unsupported.
[unfiled] Wrong exit code returned on some failures.
Chafa 1.16.2
This is a bugfix release. It also improves I/O robustness and SVG rendering quality.
- Bug fixes:
#288 SVG scaling seems to be done after bitmap conversion (found by @joveian).
[unfiled] MinGW: Undeclared function error forstrlen()(@carlo-bramini).
[unfiled] Assert when usingchafa_canvas_draw_all_pixels()with Kitty passthrough (found by @ravachol).
[unfiled] Hangs when running with closed stdin (found by @SapphirusBeryl).
[unfiled] Potential overrun when output dimension is exactly 1 pixel.
[unfiled] Small memory leak on failed load in the grid layout.
[unfiled] Occasional warnings from JPEG loader that should not be printed.
Chafa 1.16.1
Chafa 1.16.0
This is a feature release with lots of additional polish and some new API.
Thanks to everyone who chipped in with issues and code. Special thanks to @AnonymouX47 for helping out with the grid implementation and for going above and beyond with QA and bugfixing in general.
-
Added terminal probing. Currently we can determine geometry, colors and sixel capabilities this way. This supplements the existing heuristics.
-
The internal terminal database and heuristics were refactored for clarity, with new API added to simplify the configuration process.
-
I/O is now threaded, resulting in improved responsiveness and pipelining.
-
New option:
--grid=WxH,--grid=[auto|on|off]or-g. This lays out multiple images in a grid for easy browsing. -
New option:
--label=[on|off]or-l. Labels each image with its filename. Works in both continuous and grid layouts. -
New option:
--probe=[auto|on|off]. Controls whether to actively probe the terminal. Can take a real number denoting how long to wait for a response. -
Sixel quality improved significantly. The quantizer was reimplemented with modern algorithms (#174), and blue noise dithering was introduced (#238).
-
The new blue noise dithering is also available in symbols mode, and can be turned on with
--dither noise. It can be turned off with--dither none. -
Numerous small improvements were made to sixel handling:
- Terminal cursor placement quirks are now represented and handled.
- Images can now cover their cell extents completely.
- Workaround for animations "walking up the screen" on quirky terminals.
-
The JPEG XL loader was improved with optional memory mapping and better container support (@oupson).
-
Enabled wildcard expansion in Windows builds (#266).
-
Added completions for the fish shell (@folliehiyuki) and updated those for zsh (@sstark).
-
Bug fixes:
#111 Provide auto detection of background for perception of transparency (found by @acxz).
#228 Sixel capability not detected in foot + tmux (found by @amigthea).
#236 Ghostty shows pwd/lock indicator when using Chafa (found by @edrozenberg).
#238 Sixel image quality significantly different from img2sixel and ImageMagick (found by @rashil2000).
#239 Chafa leaves echo on (found by @veltza).
#245 JPEG file not recognized (found by @ploum).
#246 Examples using deprecated functions (found by @sechshelme).
#249 Sixel detection doesn't set default values (found by @veltza).
#254 -t 1 doesn't work with -f iterm (@AnonymouX47).
#255 Animations scroll/walk up the screen (found by @AnonymouX47).
#265 Enable Kitty image protocol for Warp (found by @SohamP2812).
#266 On Windows, in a cmd.exe window, filename wildcard expansion is broken (found by @garoto).
#273 -t 1 messes up some images (found by @AnonymouX47).
#274 -f {kitty,iterm} swaps BG color channels for SVG (found by @AnonymouX47).
#278 Images not always padded to cell boundary (found by @veltza).
[unfiled] Fix broken bashisms resulting in logic failure (@eli-schwartz).
[unfiled] Small leak in chafa_canvas_print_rows() (@korei999).
[unfiled] Uninitialized histogram in nearest-neighbor interp.
Chafa 1.14.5
This release addresses a handful of medium-severity bugs.
Chafa 1.14.4
Chafa 1.14.3
This release brings important fixes for sixel rendering and Windows Terminal, plus a few other odds and ends.
-
Sixel transparency has been reenabled for still frames. Animations will be pre-composited on an opaque background to prevent flicker/glitchiness (discussed in #211, big thanks to @j4james).
-
Now supports the Ghostty terminal, defaulting to the Kitty graphics protocol there.
-
Bug fixes:
#185 Chafa version 1.14 breaks image preview on lf (found by @Steven79203).
#210 Crash with -f sixels (found by @chrisant996).
#211 Sixels are too small in Windows Terminal (found by @veltza).
#212 Aspect-preserving calculations are off in some cases.
[unfiled] Inconsistent fraction parsing in CLI arguments.
[unfiled] A few small memory leaks in the JPEG XL loader.
Chafa 1.14.2
This is a bugfix release. #205 is particularly serious, since it affects many users on distributions that build with LTO enabled.
Chafa 1.14.1
This release brings bug fixes, compatibility improvements and some performance enhancements.
-
A JPEG XL (.jxl) loader was added using libjxl (#188, @oupson).
-
Added detection of the Eat "Emulate a Terminal" Emacs terminal (@sfllaw).
-
Symbols mode was sped up significantly on AVX2-capable platforms.
-
Tests: A new test driver was added. It will log the specifics of any failures, which aids debugging of CI builds (issue found by @cdluminate).
-
Bug fixes:
#189 Fix installation of zsh completions (@felixonmars).
#190 Fix a small memory leak in ChafaCanvas (found by @jstkdng).
#192 Wrong sixel padding in some circumstances (found by @dnkl).
#195 tmux passthrough enabled when already set (found by @ronyclau).
#196 iTerm mode not enabled automatically (found by @sudo-burger).
Chafa 1.14.0
This is a feature release with mostly practical improvements and bug fixes. It also adds a modest amount of new API in preparation for things to come.
-
Removed ImageMagick loader support. Packagers can now remove this dependency (#157).
-
Polite mode is now off by default. The new default eliminates cursor flicker and makes the output more robust against unusual terminal settings. The old behavior can be restored with
--polite on. -
Added image loaders for the AVIF and QOI formats. Thanks to @jerch for suggesting the latter.
-
sRGB gamma is now handled correctly in scaling operations.
-
New option:
--passthrough=<auto|none|screen|tmux>. This allows passing graphics protocols like Sixels, iTerm and Kitty through a terminal multiplexer. It will be enabled automatically for Kitty, and can be enabled manually for other protocols with more limited support (#116, #162, thanks to @newyorkthink and @m040601). -
New option:
--view-size=<WxH>. Specifies width and height of the viewport, overriding the detected terminal size (#140, reported by @jaminthorns). -
New option:
--fit-width. Fits images to the width of the viewport, allowing them to be taller than the viewport's height (#115, thanks to @SuperDuperDeou). -
New option:
--relative=<bool>. Enables relative cursor positioning. Useful if you've pre-positioned the cursor at a particular offset where you want frames to appear, but tends to make the output illegible in pagers, e.g.less -R(#146, thanks to @Delgan and @AnonymouX47). -
New option:
--exact-size=<auto|on|off>. Preserves the input pixel size when possible. Useful to avoid artifacts caused by resampling (#119, reported by @ErrorNoInternet). -
New symbol selector:
imported. This selects glyphs loaded with--glyph-file(#124, reported by @clort81). -
MS Windows: Experimental support for ConHost output (
-f conhost). This allows direct output on older versions of MS Windows (#170, @oshaboy). -
Fontgen: Added a BDF font writer (@cdluminate).
-
Fontgen: Cleanup and modernization (@cdluminate).
-
The help text and manual page were overhauled for readability, and the API documentation now includes symbol indexes by version and deprecation status.
-
Added a zsh completion script (@Freed-Wu).
-
Installation methods added: Scoop (@LaunchLee) and Winget (@sitiom).
-
CI: Ported to GitHub actions (@GuardKenzie).
-
Bug fixes:
#107 "Unknown file format" when using AVIF on stdin (found by @ndren).
#152 Broken linking with libwebp-1.3.1 (found by @vcunat).
[unfiled] Fix make check with--without-tools(@sthibaul).
[unfiled] Fix--durationnot working well with still images (@Delgan).
[unfiled] Fix sixel rendering of animations (@Delgan).
[unfiled] Fix operator precedence in geometry calculation (@mjunix).