1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832
|
Chafa releases
==============
1.18.0 (2025-11-09)
-------------------
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 (github#301, Hayaki Saito).
- Added support for HEIF files on all platforms (github#297).
* Terminal support:
- Improved detection of ghostty inside tmux (github#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:
github#293 Don't leave stdin in non-blocking mode (found by @YanceyChiew).
[unfiled] Use glibtoolize when libtoolize is unavailable (Hayaki Saito).
[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.
1.16.2 (2025-07-04)
-------------------
This is a bugfix release. It also improves I/O robustness and SVG rendering
quality.
* Bug fixes:
github#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 Xavier Moffett).
[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.
1.16.1 (2025-05-21)
-------------------
This release fixes two important bugs.
* Bug fixes:
github#282 Fish completion not included in release tarball (found by
@knuxify).
github#283 Piping and redirection are broken in Windows (found by @veltza).
1.16.0 (2025-05-18)
-------------------
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 (github#174), and blue noise dithering was introduced
(github#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 (github#266).
* Added completions for the fish shell (Hoang Nguyen) and updated those for
zsh (Sebastian Stark).
* Bug fixes:
github#111 Provide auto detection of background for perception of
transparency (found by Akash Patel).
github#228 Sixel capability not detected in foot + tmux (found by @amigthea).
github#236 Ghostty shows pwd/lock indicator when using Chafa (found by
Eduard Rozenberg).
github#238 Sixel image quality significantly different from img2sixel and
ImageMagick (found by Rashil Gandhi).
github#239 Chafa leaves echo on (found by @veltza).
github#245 JPEG file not recognized (found by Lionel Dricot).
github#246 Examples using deprecated functions (found by @sechshelme).
github#249 Sixel detection doesn't set default values (found by @veltza).
github#254 -t 1 doesn't work with -f iterm (@AnonymouX47).
github#255 Animations scroll/walk up the screen (found by @AnonymouX47).
github#265 Enable Kitty image protocol for Warp (found by Soham Parmar).
github#266 On Windows, in a cmd.exe window, filename wildcard expansion is
broken (found by @garoto).
github#273 -t 1 messes up some images (found by @AnonymouX47).
github#274 -f {kitty,iterm} swaps BG color channels for SVG (found by
@AnonymouX47).
github#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.
1.14.5 (2024-11-03)
-------------------
This release addresses a handful of medium-severity bugs.
* Bug fixes:
github#217 Improve sixel and general terminal support inside tmux (found
by Steven Walton).
github#221 Support JPEGs with CMYK color space (found by Lionel Dricot).
github#225 Fix --font-ratio doing nothing (found by @johnd0e).
[unfiled] Ensure CLI tool gets linked with libm.
1.14.4 (2024-09-10)
-------------------
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:
github#216 Dither intensity does not work properly (found by @veltza).
1.14.3 (2024-09-09)
-------------------
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 github#211, big thanks to James Holderness).
* Now supports the Ghostty terminal, defaulting to the Kitty graphics protocol
there.
* Bug fixes:
github#185 Chafa version 1.14 breaks image preview on lf (found by
@Steven79203).
github#210 Crash with -f sixels (found by Chris Antos).
github#211 Sixels are too small in Windows Terminal (found by @veltza).
github#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.
1.14.2 (2024-07-26)
-------------------
This is a bugfix release. github#205 is particularly serious, since it affects
many users on distributions that build with LTO enabled.
* Bug fixes:
github#203 Chafa 1.14.1 fails to build on i686 (reported by @tranzystorekk).
github#205 Symbols mode not working since 1.14.1 (reported by Folke
Lemaitre).
github#206 Crash when importing more than 32767 glyphs (reported by @stgiga).
[unfiled] Fix erroneous base64 encoding of final byte in some circumstances.
1.14.1 (2024-06-17)
-------------------
This release brings bug fixes, compatibility improvements and some performance
enhancements.
* A JPEG XL (.jxl) loader was added using libjxl (github#188, @oupson).
* Added detection of the Eat "Emulate a Terminal" Emacs terminal (Simon Law).
* 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 Mo Zhou).
* Bug fixes:
github#189 Fix installation of zsh completions (Felix Yan).
github#190 Fix a small memory leak in ChafaCanvas (found by @jstkdng).
github#192 Wrong sixel padding in some circumstances (found by @dnkl).
github#195 tmux passthrough enabled when already set (found by Ron Lau).
github#196 iTerm mode not enabled automatically (found by @sudo-burger).
1.14.0 (2024-01-08)
-------------------
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
(github#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 (github#116,
github#162, thanks to Samantha Collins and @m040601).
* New option: --view-size=<WxH>. Specifies width and height of the viewport,
overriding the detected terminal size (github#140, reported by Jamin
Thornsberry).
* New option: --fit-width. Fits images to the width of the viewport, allowing
them to be taller than the viewport's height (github#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'
(github#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 (github#119,
reported by @ErrorNoInternet).
* New symbol selector: "imported". This selects glyphs loaded with
--glyph-file (github#124, reported by @clort81).
* MS Windows: Experimental support for ConHost output (-f conhost). This allows
direct output on older versions of MS Windows (github#170, @oshaboy).
* Fontgen: Added a BDF font writer (Mo Zhou).
* Fontgen: Cleanup and modernization (Mo Zhou).
* 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 (Wu Zhenyu).
* Installation methods added: Scoop (Launch Lee) and Winget (@sitiom).
* CI: Ported to GitHub actions (Erica Ferrua Edwardsdóttir).
* Bug fixes:
github#107 "Unknown file format" when using AVIF on stdin (found by @ndren).
github#152 Broken linking with libwebp-1.3.1 (found by Vladimír Čunát).
[unfiled] Fix make check with --without-tools (Samuel Thibault).
[unfiled] Fix --duration not working well with still images (@Delgan).
[unfiled] Fix sixel rendering of animations (@Delgan).
[unfiled] Fix operator precedence in geometry calculation (Johan Mattsson).
1.12.5 (2023-05-21)
-------------------
This is a bugfix release.
* Bug fixes:
github#123 Crash on canvas created with chafa_canvas_new_similar()
(reported by Erica Ferrua Edwardsdóttir).
github#141 Distortion when rowstride is not a multiple of 4 (reported by
@jstkdng).
[unfiled] Missing comma in --help output (reported by @Freed-Wu).
1.12.4 (2022-11-12)
-------------------
This release improves support for Microsoft Windows and fixes several bugs.
* MS Windows: Added support for Unicode command-line arguments.
* MS Windows: Enabled support for building a DLL.
* Improved quality of accelerated symbol picking (the default with -w 6 and
lower), especially along sharp edges.
* The XWD loader now supports unaligned image data, which can occur when the
header is of an uneven length. Such images will no longer be rejected.
* Bug fixes:
github#100 Reading image data from stdin fails on Windows (reported by
@TransparentLC).
github#104 Artifacts with transparent animations on Kitty (reported by Akash
Patel).
github#112 Bad documentation for -c default (reported by Jakub Wilk).
github#113 Autogen/build fails on CentOS 7 (partial solution) (reported by
Ivan Shatsky).
huntr.dev Uncontrolled memory allocation in lodepng (reported by
@JieyongMa).
[unfiled] -lm should not be in pkg-config Libs: list (Tomasz Kłoczko).
[unfiled] The --watch switch was broken with the introduction of --animate.
1.12.3 (2022-07-01)
-------------------
A bug crept into the previous release that prevented successful package builds
in some environments. This has been fixed.
* Increased GLib minimum version to 2.26.
* Enabled a few compiler warnings not included in '-Wall -Wextra' in order to
catch more potential issues early. Also started using '-Werror' selectively.
* Silenced deprecation warnings for older GLib APIs that we would like to
keep using a bit longer.
* Bug fixes:
github#96 Regression: Fails to build on Linux/Debian (reported by Mo Zhou).
1.12.2 (2022-06-28)
-------------------
This release adds basic support for Microsoft Windows.
* Made everything compile for the x86_64-w64-mingw32 target using gcc.
* Added support for the Windows 10 Command Prompt.
* Improved error reporting.
1.12.1 (2022-06-20)
-------------------
This release fixes one important input validation bug and several instances of
undefined behavior revealed by fuzzing.
* Increased GLib minimum version to 2.20.
* Added 12 new test inputs, including bad inputs to handle gracefully.
* Added a few symbols to API documentation that were accidentally left out.
* Bug fixes:
huntr.dev CVE-2022-2061: Out-of-bounds read in libnsgif's lzw_decode()
(Sudhakar Verma of CrowdStrike).
[unfiled] Undefined behavior in libnsgif due to uninitialized frame fields.
[unfiled] Signed integer overflow in chafa_pack_color().
[unfiled] Integer overflow in normalization pass on some images.
[unfiled] Potential unaligned access with corrupt XWD images.
[unfiled] Integer overflow in quantization on some images.
[unfiled] Calculating offset from NULL pointer in LodePNG.
1.12.0 (2022-06-06)
-------------------
This is a feature release with new image loaders aimed at phasing out
ImageMagick. It also has new convenience functions, character art improvements,
tests and bug fixes.
Special thanks go to the very fine security researchers at huntr.dev for their
help in hardening Chafa over the last few releases.
* The ImageMagick dependency is now optional and deprecated. Packagers are
encouraged to drop the ImageMagick dependency (--without-imagemagick) and
add direct dependencies on relevant image codecs. ImageMagick support will be
removed in a future release.
* Added image loaders for the following formats: JPEG, SVG, TIFF, WebP. Like
the existing GIF, PNG and XWD loaders, these are much faster and generally
safer than their ImageMagick counterparts. If ImageMagick is enabled, it will
be used as a fallback. Supported image loaders will be listed in the
--version output.
* Implemented a 16/8 mode producing 8 colors and an additional 8 bright
foreground-only colors for a total of 16 foreground and 8 background colors.
When using ANSI escape sequences in symbol mode, the sequence for bold text
is used to enable bright colors. This scheme corresponds to that of the IBM
PC's VGA hardware text modes and was popular with terminal emulators in the
late 1980s to early 2000s.
With a few tweaks, output from this mode can be turned into ANSI art scene
.ANS files compatible with utilities like the wonderful Ansilove, e.g:
$ chafa -f symbols -c 16/8 -s 80 --symbols space+solid+half --fill stipple \
in.jpg | tr -d '\n' | iconv -c -f utf8 -t cp437 > out.ans
$ ansilove out.ans -o out.png
* New builtin Latin symbols (available with --symbols latin). This class
comprises most of the symbols from the Latin-1 Supplement, Latin Extended-A
and -B, IPA Extensions and Spacing Modifier Letters plus a few Latin-like
symbols from other ranges, using Terminus as the reference font. The ASCII
class is also a subset of this class.
* Reworked ASCII symbols to be more representative of modern terminal fonts. As
with the other Latin ranges, the reference font is now Terminus.
* New option: --scale <n>. This takes a real number specifying the on-screen
scaling factor relative to the input's pixel size, respecting the terminal
size. The special argument 'max' will fit the output to the terminal. The
defaults are 1.0 for iTerm, Kitty and sixels, and 4.0 for symbols. Suggested
by Lionel Dricot in github#84.
* Deprecated option: --zoom. Use '--scale max' instead.
* Added a battery of simple tests that can be run with 'make check'.
* Made 'configure' friendlier. It's now more lenient with dependencies, and
the summary is more detailed and colorized if possible.
* Bug fixes:
github#62 Too big alloc on bogus terminal dimensions (reported by
Sotiris Papatheodorou and Mo Zhou).
huntr.dev Null pointer dereference caused by calling post_func on unused
batch entries (reported by @han0nly).
[unfiled] Small memory leaks when using iTerm and Kitty formats.
[unfiled] Wide symbol coverages leaked in symbol map destructor.
[unfiled] No error code if files failed to load.
1.10.3 (2022-05-04)
-------------------
This release fixes multiple input validation issues. These were found in the
'chafa' command-line tool and do not affect the library backend.
* Improved input validation in the XWD loader.
* Bug fixes:
huntr.dev Buffer over-read when compiled with -O0 or non-x86 target
(reported by @JieyongMa).
1.10.2 (2022-04-25)
-------------------
This release adds security/responsible disclosure guidelines and fixes a few
issues with input validation in the 'chafa' command-line tool.
* Added disclosure guidelines in SECURITY.md (suggested by Jamie Slome).
* Bug fixes:
huntr.dev Null pointer dereference in libnsgif with crafted GIF file
(reported by @JieyongMa).
[unfiled] File magic would not effectively rule out internal loaders.
[unfiled] Very big images could cause absurd allocation requests triggering
an abort in the loader.
1.10.1 (2022-04-04)
-------------------
This release brings one small but important fix and a few minor corrections
to the documentation.
* Bug fixes:
github#87 Garbled last row of pixels on some images (found by @hydrargyrum).
[unfiled] Correctly label new functions since 1.10.
1.10.0 (2022-03-20)
-------------------
This is a feature release focused on compatibility, presentation and
ergonomics.
* New option: --animate <bool>. On by default. Can be turned off to replace
animations with a still frame. Suggested by Lionel Dricot in github#79.
* New option: --center or -C <bool>. Off by default. Can be turned on to center
images. Suggested by Lionel Dricot in github#83.
* New options: --margin-bottom <n> and --margin-right <n>. These permit
using all available space (with --margin-bottom 0) or some smaller amount.
Suggested by @crmabs in github#61.
* New option: --polite <bool>. On by default. Can be turned off to correct
issues caused by previous terminal state (e.g. no sixel scrolling) and
improve presentation (e.g. by temporarily hiding the cursor). This can
leave the terminal in an altered state, which is somewhat rude.
* New option: --threads <n>. Allows manually specifying the number of threads
to use. Defaults to one per detected logical CPU core.
* When invoked with redirected input and no arguments, act like a filter as
if invoked with "-". Here's an example that downloads an image, converts it
to Unicode text and mails it to hello@example.com:
$ curl https://hpjansson.org/chafa/img/lc.jpg \
| chafa -f symbols -c none -s 77 --invert --dither bayer \
| mailx hello@example.com
* If input or output is being redirected, default to playing animations only
once instead of looping forever. This can be overridden with '-d inf'.
* Replaced obsolete Autoconf macros (Mikel Olasagasti Uranga).
* Improved image loaders:
- GIF: Load GIF87a images as well as GIF89a.
- PNG: Add an internal copy of LodePNG, bypassing ImageMagick. This improves
performance and helps with eventually phasing out the latter.
- XWD: Support images generated by 'convert'.
* Improved terminal support:
- Contour: Enable sixel support (Dmitry Atamanov).
- foot: Open-ended TERM string matching (Daniel Eklöf).
- Konsole: Enable sixel support (Dmitry Atamanov).
- WezTerm: Enable sixel support.
* Bug fixes:
github#76 Smolscale uses too much stack space (found by Hoang Nguyen).
github#81 Chafa --version is returned to stderr, not stdout (found by
Lionel Dricot).
[unfiled] Potential memory overrun when using Floyd-Steinberg dithering
in symbols mode.
[unfiled] iTerm2 compatibility issue with WezTerm and possibly others.
1.8.0 (2021-08-31)
------------------
This is a major feature release.
* Added basic support for the Kitty and iTerm2 graphics protocols. These are
enabled automatically when corresponding terminal support is detected, or
manually with '-f kitty' or '-f iterm'.
* Implemented an 8-color mode, selectable with '-c 8' (Øyvind Kolås).
* Implemented a foreground-only switch, '--fg-only'. This produces character
art using foreground colors only, and will avoid modifying or resetting
the background color. Looks best with non-contiguous symbols (e.g. ascii).
* Added builtins for Japanese kana fullwidth symbols. These can now be used
without loading any external fonts (try '-c none --symbols wide').
* Added builtins for legacy computer symbols (mainly wedges and sextant
blocks). These were widely used in PETSCII and Teletext, and can be enabled
using --symbols or --fill with their respective tags: legacy, wedge and
sextant (Øyvind Kolås).
* Since there is a growing number of builtin symbols that may not be available
everywhere, the default selection has been restricted to the widely supported
block and border sets.
* If possible, we now select a visually blank character from the specified
symbol/fill sets instead of hardcoding ASCII space for featureless cells.
One practical upshot of this is that the constant-width braille range can
be used to produce consistent images even in contexts with variable-width
fonts. U+2800 (BRAILLE PATTERN BLANK) will then be used in blank cells.
* Improved terminal size detection when used with pipelines and redirection.
This should now produce an image properly sized for your terminal:
$ curl https://i.imgur.com/WFDEFVg.jpeg | chafa - | tee out
* ChafaCanvas gained API functions for programmatically getting and setting
character cell contents. These are used in a new example in tests/ncurses.c
demonstrating ncurses integration.
* Made --disable-rpath the default in order to simplify packaging.
* Added a HACKING file featuring a much needed release checklist.
* Improved terminal support:
- Ctx will now use optimizing REP sequences at high -O levels.
- foot now defaults to sixels (Daniel Eklöf).
- iTerm2 now defaults to the iTerm2 protocol.
- Kitty now defaults to the Kitty protocol.
- st now defaults to truecolor symbols (Roman Wagner).
* Bug fixes:
github#44 Missing error handling on stdout writes (reported by Markus
Elfring).
[unfiled] Solid symbols erroneously replaced by fill in FGBG mode.
[unfiled] Integer formatter was not using fast path for 8-bit values.
[unfiled] Wrong default cell aspect used for sixel graphics.
1.6.1 (2021-06-03)
------------------
This is a bugfix release.
* Add NOCONFIGURE variable to autogen.sh to skip configure (Biswapriyo Nath).
* Bug fixes:
github#50 SIGBUS while loading huge GIFs (reported by Grzegorz Koperwas).
github#52 Produces small glitches in output with some images (reported by
Sami Farin).
github#54 Haiku port fails on 32bit (Luc Schrijvers).
[unfiled] Exclude RTL code points that could break the output.
[unfiled] Apple Terminal lacks truecolor support, so make it default to 256
colors (reported by Behdad Esfahbod).
[unfiled] Fix typo affecting middle dot symbol.
1.6.0 (2021-01-15)
------------------
This release adds major features and important fixes to both libchafa and
the chafa command-line tool.
* Added support for fullwidth symbols that take up two character
cells. These are common in East Asian scripts. Single-cell and
double-cell symbols can be mixed, and -f symbols mode will use both
if possible.
* New symbol tags: Alpha, digit, alnum, narrow, wide, ambiguous, ugly, bad.
"Ambiguous" symbols have uncertain widths and may render poorly in some
terminals. "Ugly" denotes symbols that are unsuitable for Chafa's
cell-based graphics (multicolor emoji, ideographic descriptors, etc).
"Bad" is a superset of these two categories. Bad symbols are always
excluded unless explicitly enabled with e.g. CHAFA_SYMBOL_TAG_BAD
(--symbols +bad in the frontend).
* The font loader (--glyph-file option) now does a better job with
proportional fonts.
* Added options for controlling lossless optimization of output. Currently,
attribute reuse and character repetition (REP sequence) are implemented.
* Added -O option to the frontend. This controls the optimization level.
* Added a simple abstraction layer for terminal control sequences
(ChafaTermInfo and ChafaTermDb). This allows for improved terminal
support.
* FbTerm is now supported with TERM=fbterm in the environment.
* Bug fixes:
github#43 Fix signal handler (reported by Markus Elfring).
[unfiled] Crash when invalid font paths were passed on command line.
[unfiled] Small typo in fontgen's README (Tim Gates).
[unfiled] Bad contrast adjustment in images with transparency.
1.4.1 (2020-04-10)
------------------
This is a bugfix release.
* Added configure option --disable-rpath. This allows packagers to
prevent the hard-coded library search path from being embedded in
the chafa command-line tool (Mo Zhou, github#39).
* Added defaults for the yaft terminal.
* Bug fixes:
github#40 Fails to build on hurd-i386 + other i386 (reported by
Mo Zhou).
[unfiled] Rare failed assert with mostly transparent sixel image
(reported by Reddit user spryfigure).
[unfiled] Minor typo in function docstring.
1.4.0 (2020-04-01)
------------------
This release adds major features to both libchafa and the chafa
command-line tool.
* Added sixel graphics support. Chafa will automatically produce sixels
if the connected terminal supports it. It can also be forced using the
new -f or --format flag. This is a new implementation written from the
ground up to maximize throughput.
* Added the --glyph-file option, which loads glyph-symbol mappings from
any file format supported by FreeType (TTF, PCF, etc). This allows for
custom font support and improved symbol selection.
* Added the --speed option specifying animation speed. It accepts a
unitless multiplier, a specific number of frames per second, or "max"
for maximum throughput.
* There are now two ways to assign colors to symbol cells. Formerly,
this was done based on the average color of the covered area. The new
default is to use the median color, which produces sharper edges,
but is slightly more prone to high-frequency noise. The new option
--color-extractor selects the method to employ.
* When displaying multiple files, the default delay between files has
been changed from three seconds to zero. Animations will still play
through once. This can be overridden on the chafa command line with -d
or --duration.
* Minor tweaks to built-in symbols.
* Performance improvements:
- Halved pixel storage requirements from 64 bits to 32 bits, resulting
in significant memory savings.
- Now builds with -ffast-math, yielding a big speedup for DIN99d.
1.2.2 (2020-03-02)
------------------
This minor release fixes a bug causing builds linking with libchafa to
fail.
* Bug fixes:
github#34 Cannot compile example (found by Petr Bílek).
1.2.1 (2019-08-15)
------------------
This minor release fixes a few bugs and improves terminal detection.
* Detect kitty and mlterm virtual terminals and apply optimal defaults
accordingly.
* Make Automake build more strict and fix a few compatibility nits.
* Bug fixes:
github#30 Failed to build on hurd-i386 (found by Mo Zhou).
[unfiled] Crash on certain broken GIFs.
1.2.0 (2019-08-04)
------------------
This is a feature and performance release.
* Added --dither, --dither-grain and --dither-intensity options. These
allow for sub-cell dithering in quantized modes (none, 2, 16, 240
and 256). Especially beneficial when used with -p off.
* Added API for ordered and diffusion-based dithering in quantization.
* Added API support for multiple 8bpc pixel modes: RGB, BGR, RGBA, BGRA,
ARGB, ABGR with either premultiplied or unassociated alpha channels.
* Smooth scaling is now done internally, meaning libchafa consumers no
longer need to prescale images.
* Implemented a machine learning tool that can generate custom fonts
for efficient image reproduction from a provided dataset. This is
left uninstalled since it's still experimental (Mo Zhou).
* Throughput improvements:
- GIF animations now start playing instantly.
- GIF CPU overhead reduced by 75%, peak memory use down 95%-99% (!).
- XWD common case CPU overhead down 60-70%, peak memory down 70%.
- Additional halving of CPU overhead in 240- and 256-color modes.
- Streamlined pixel pipeline for better parallelization.
* Installation instructions:
- New: Guix (Guy Fleury Iteriteka).
- New: openSUSE (Michael Vetter).
* Bug fixes:
[unfiled] Certain SVGs had transparency replaced with a white
background (nemo).
[unfiled] -lm dependency belongs in libchafa, not frontend.
1.0.1 (2018-12-18)
------------------
* Bug fixes:
[unfiled] Bad geometry calculation when specifying one dimension
and omitting the other.
1.0.0 (2018-12-16)
------------------
This release adds features, greatly improves performance and fixes
several bugs. Programs written for the command line and libchafa
interfaces in this release will be supported by future versions in
the 1.y.z series without the need for modification or recompilation.
* Added ability to specify "fill" symbols to use as halftone for better
color approximation. This can be used to augment the regular symbol
selection or to replace it (with --symbols none) for a different,
purely intensity-based effect.
* Improved preprocessing in 2-color and 16-color modes. This is optional
(default: on) and consists of a contrast boost and, for the 16-color
mode, an additional saturation boost. The new implementation lives in
libchafa and does not rely on ImageMagick. It is multithreaded, and due
to its specialized nature, much faster.
* Added --watch option to continuously monitor a file.
* Added more symbols:
- Most of the ASCII range.
- Braille range (github#2, thanks to Adam Borowski).
- Miscellaneous math and scanline symbols.
- More geometric symbols (black circle, triangles) (Mo Zhou).
* Throughput improvements:
- Fast symbol candidate set reduction by median cut.
- Parallel processing with threads.
- Prescaling using bilinear interpolation instead of lanczos.
* Installation instructions:
- New: Arch (github#12, Felix Yan).
- New: Debian testing/unstable (github#9, Mo Zhou).
- New: Fedora (github#14, Ricardo Arguello).
- Mention missing dependency for Debian (github#13, @medusacle).
* Bug fixes:
github#1 -c none produces pointless \e[0m after every line (found by
Adam Borowski).
github#3 Compile error (found by Lajos Papp).
github#4 AM_PROG_LIBTOOL is obsolete, replace it with LT_INIT
(Robert-André Mauchin).
github#5 Port chafa to i386 architecture (Mo Zhou).
github#7 Chafa should not return an error when being asked for
--version (Mo Zhou).
github#10 Fix detection of MagickWand methods (Felix Yan).
github#11 ImageMagick 7 support (found by Felix Yan).
github#21 chafa.c:547: pointless assignment (found by @dcb314).
0.9.0 (2018-04-24)
------------------
Initial release.
|