Tags

Tags give the ability to mark specific points in history as being important
  • 1.10.3

    9ddf7efa · Bump to 1.10.3 ·
    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

    30865fb0 · Bump to 1.10.2 ·
    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

    b79569ce · Bump to 1.10.1 ·
    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

    cb4959f2 · Finalize 1.10.0 release ·
    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

    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

    2ad08561 · Finalize 1.6.1 release ·
    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

    4662f26f · Finalize 1.6.0 release ·
    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

    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

    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

    ece735fa · NEWS: Fix date typo. ·
    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

    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

    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

    1.0.1 (2018-12-18)
    
    * Bug fixes:
      [unfiled]  Bad geometry calculation when specifying one dimension
                 and omitting the other.
    
  • 1.0.0

    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

    607375b9 · Add 0.9.0 NEWS entry. ·