Skip to content

Releases: hpjansson/chafa

Chafa 1.18.0

10 Nov 00:30
1.18.0

Choose a tag to compare

This is a feature and bugfix release.

  • Increased GLib minimum version to 2.58 (released in 2018).

  • New options: --files=FNAME and --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 an OSC 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:

    • Added support for CoreGraphics loaders on MacOS (#301, @saitoha).
    • Added support for HEIF files on all platforms (#297).
  • 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

04 Jul 22:08
1.16.2

Choose a tag to compare

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 for strlen() (@carlo-bramini).
    [unfiled] Assert when using chafa_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

20 May 22:55
1.16.1

Choose a tag to compare

This release fixes two important bugs.

  • Bug fixes:
    #282 Fish completion not included in release tarball (found by @knuxify).
    #283 Piping and redirection are broken in Windows (found by @veltza).

Chafa 1.16.0

18 May 20:19
1.16.0

Choose a tag to compare

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

03 Nov 02:31
1.14.5

Choose a tag to compare

This release addresses a handful of medium-severity bugs.

  • Bug fixes:
    #217 Improve sixel and general terminal support inside tmux (found by @stevenwalton).
    #221 Support JPEGs with CMYK color space (found by @ploum).
    #225 Fix --font-ratio doing nothing (found by @johnd0e).
    [unfiled] Ensure CLI tool gets linked with libm.

Chafa 1.14.4

09 Sep 23:53
1.14.4

Choose a tag to compare

This quick follow-up release corrects the incomplete fix for the CLI argument fraction parsing. It now accepts C locale formatting in addition to that of the current locale.

  • Bug fixes:
    #216 Dither intensity does not work properly (found by @veltza).

Chafa 1.14.3

09 Sep 02:06
1.14.3

Choose a tag to compare

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

25 Jul 23:44
1.14.2

Choose a tag to compare

This is a bugfix release. #205 is particularly serious, since it affects many users on distributions that build with LTO enabled.

  • Bug fixes:
    #203 Chafa 1.14.1 fails to build on i686 (reported by @tranzystorekk).
    #205 Symbols mode not working since 1.14.1 (reported by @folke).
    #206 Crash when importing more than 32767 glyphs (reported by @stgiga).
    [unfiled] Fix erroneous base64 encoding of final byte in some circumstances.

Chafa 1.14.1

17 Jun 20:18
1.14.1

Choose a tag to compare

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

08 Jan 20:08
1.14.0

Choose a tag to compare

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 --duration not working well with still images (@Delgan).
    [unfiled] Fix sixel rendering of animations (@Delgan).
    [unfiled] Fix operator precedence in geometry calculation (@mjunix).