1Chafa releases
2==============
3
41.8.0 (2021-08-31)
5------------------
6
7This is a major feature release.
8
9* Added basic support for the Kitty and iTerm2 graphics protocols. These are
10  enabled automatically when corresponding terminal support is detected, or
11  manually with '-f kitty' or '-f iterm'.
12
13* Implemented an 8-color mode, selectable with '-c 8' (Øyvind Kolås).
14
15* Implemented a foreground-only switch, '--fg-only'. This produces character
16  art using foreground colors only, and will avoid modifying or resetting
17  the background color. Looks best with non-contiguous symbols (e.g. ascii).
18
19* Added builtins for Japanese kana fullwidth symbols. These can now be used
20  without loading any external fonts (try '-c none --symbols wide').
21
22* Added builtins for legacy computer symbols (mainly wedges and sextant
23  blocks). These were widely used in PETSCII and Teletext, and can be enabled
24  using --symbols or --fill with their respective tags: legacy, wedge and
25  sextant (Øyvind Kolås).
26
27* Since there is a growing number of builtin symbols that may not be available
28  everywhere, the default selection has been restricted to the widely supported
29  block and border sets.
30
31* If possible, we now select a visually blank character from the specified
32  symbol/fill sets instead of hardcoding ASCII space for featureless cells.
33  One practical upshot of this is that the constant-width braille range can
34  be used to produce consistent images even in contexts with variable-width
35  fonts. U+2800 (BRAILLE PATTERN BLANK) will then be used in blank cells.
36
37* Improved terminal size detection when used with pipelines and redirection.
38  This should now produce an image properly sized for your terminal:
39
40  $ curl https://i.imgur.com/WFDEFVg.jpeg | chafa - | tee out
41
42* ChafaCanvas gained API functions for programmatically getting and setting
43  character cell contents. These are used in a new example in tests/ncurses.c
44  demonstrating ncurses integration.
45
46* Made --disable-rpath the default in order to simplify packaging.
47
48* Added a HACKING file featuring a much needed release checklist.
49
50* Improved terminal support:
51  - Ctx will now use optimizing REP sequences at high -O levels.
52  - foot now defaults to sixels (Daniel Eklöf).
53  - iTerm2 now defaults to the iTerm2 protocol.
54  - Kitty now defaults to the Kitty protocol.
55  - st now defaults to truecolor symbols (Roman Wagner).
56
57* Bug fixes:
58  github#44  Missing error handling on stdout writes (reported by Markus
59             Elfring).
60  [unfiled]  Solid symbols erroneously replaced by fill in FGBG mode.
61  [unfiled]  Integer formatter was not using fast path for 8-bit values.
62  [unfiled]  Wrong default cell aspect used for sixel graphics.
63
641.6.1 (2021-06-03)
65------------------
66
67This is a bugfix release.
68
69* Add NOCONFIGURE variable to autogen.sh to skip configure (Biswapriyo Nath).
70
71* Bug fixes:
72  github#50  SIGBUS while loading huge GIFs (reported by Grzegorz Koperwas).
73  github#52  Produces small glitches in output with some images (reported by
74             Sami Farin).
75  github#54  Haiku port fails on 32bit (Luc Schrijvers).
76  [unfiled]  Exclude RTL code points that could break the output.
77  [unfiled]  Apple Terminal lacks truecolor support, so make it default to 256
78             colors (reported by Behdad Esfahbod).
79  [unfiled]  Fix typo affecting middle dot symbol.
80
811.6.0 (2021-01-15)
82------------------
83
84This release adds major features and important fixes to both libchafa and
85the chafa command-line tool.
86
87* Added support for fullwidth symbols that take up two character
88  cells. These are common in East Asian scripts. Single-cell and
89  double-cell symbols can be mixed, and -f symbols mode will use both
90  if possible.
91
92* New symbol tags: Alpha, digit, alnum, narrow, wide, ambiguous, ugly, bad.
93  "Ambiguous" symbols have uncertain widths and may render poorly in some
94  terminals. "Ugly" denotes symbols that are unsuitable for Chafa's
95  cell-based graphics (multicolor emoji, ideographic descriptors, etc).
96  "Bad" is a superset of these two categories. Bad symbols are always
97  excluded unless explicitly enabled with e.g. CHAFA_SYMBOL_TAG_BAD
98  (--symbols +bad in the frontend).
99
100* The font loader (--glyph-file option) now does a better job with
101  proportional fonts.
102
103* Added options for controlling lossless optimization of output. Currently,
104  attribute reuse and character repetition (REP sequence) are implemented.
105
106* Added -O option to the frontend. This controls the optimization level.
107
108* Added a simple abstraction layer for terminal control sequences
109  (ChafaTermInfo and ChafaTermDb). This allows for improved terminal
110  support.
111
112* FbTerm is now supported with TERM=fbterm in the environment.
113
114* Bug fixes:
115  github#43  Fix signal handler (reported by Markus Elfring).
116  [unfiled]  Crash when invalid font paths were passed on command line.
117  [unfiled]  Small typo in fontgen's README (Tim Gates).
118  [unfiled]  Bad contrast adjustment in images with transparency.
119
1201.4.1 (2020-04-10)
121------------------
122
123This is a bugfix release.
124
125* Added configure option --disable-rpath. This allows packagers to
126  prevent the hard-coded library search path from being embedded in
127  the chafa command-line tool (Mo Zhou, github#39).
128
129* Added defaults for the yaft terminal.
130
131* Bug fixes:
132  github#40  Fails to build on hurd-i386 + other i386 (reported by
133             Mo Zhou).
134  [unfiled]  Rare failed assert with mostly transparent sixel image
135             (reported by Reddit user spryfigure).
136  [unfiled]  Minor typo in function docstring.
137
1381.4.0 (2020-04-01)
139------------------
140
141This release adds major features to both libchafa and the chafa
142command-line tool.
143
144* Added sixel graphics support. Chafa will automatically produce sixels
145  if the connected terminal supports it. It can also be forced using the
146  new -f or --format flag. This is a new implementation written from the
147  ground up to maximize throughput.
148
149* Added the --glyph-file option, which loads glyph-symbol mappings from
150  any file format supported by FreeType (TTF, PCF, etc). This allows for
151  custom font support and improved symbol selection.
152
153* Added the --speed option specifying animation speed. It accepts a
154  unitless multiplier, a specific number of frames per second, or "max"
155  for maximum throughput.
156
157* There are now two ways to assign colors to symbol cells. Formerly,
158  this was done based on the average color of the covered area. The new
159  default is to use the median color, which produces sharper edges,
160  but is slightly more prone to high-frequency noise. The new option
161  --color-extractor selects the method to employ.
162
163* When displaying multiple files, the default delay between files has
164  been changed from three seconds to zero. Animations will still play
165  through once. This can be overridden on the chafa command line with -d
166  or --duration.
167
168* Minor tweaks to built-in symbols.
169
170* Performance improvements:
171  - Halved pixel storage requirements from 64 bits to 32 bits, resulting
172    in significant memory savings.
173  - Now builds with -ffast-math, yielding a big speedup for DIN99d.
174
1751.2.2 (2020-03-02)
176------------------
177
178This minor release fixes a bug causing builds linking with libchafa to
179fail.
180
181* Bug fixes:
182  github#34  Cannot compile example (found by Petr Bílek).
183
1841.2.1 (2019-08-15)
185------------------
186
187This minor release fixes a few bugs and improves terminal detection.
188
189* Detect kitty and mlterm virtual terminals and apply optimal defaults
190  accordingly.
191
192* Make Automake build more strict and fix a few compatibility nits.
193
194* Bug fixes:
195  github#30  Failed to build on hurd-i386 (found by Mo Zhou).
196  [unfiled]  Crash on certain broken GIFs.
197
1981.2.0 (2019-08-04)
199------------------
200
201This is a feature and performance release.
202
203* Added --dither, --dither-grain and --dither-intensity options. These
204  allow for sub-cell dithering in quantized modes (none, 2, 16, 240
205  and 256). Especially beneficial when used with -p off.
206
207* Added API for ordered and diffusion-based dithering in quantization.
208
209* Added API support for multiple 8bpc pixel modes: RGB, BGR, RGBA, BGRA,
210  ARGB, ABGR with either premultiplied or unassociated alpha channels.
211
212* Smooth scaling is now done internally, meaning libchafa consumers no
213  longer need to prescale images.
214
215* Implemented a machine learning tool that can generate custom fonts
216  for efficient image reproduction from a provided dataset. This is
217  left uninstalled since it's still experimental (Mo Zhou).
218
219* Throughput improvements:
220  - GIF animations now start playing instantly.
221  - GIF CPU overhead reduced by 75%, peak memory use down 95%-99% (!).
222  - XWD common case CPU overhead down 60-70%, peak memory down 70%.
223  - Additional halving of CPU overhead in 240- and 256-color modes.
224  - Streamlined pixel pipeline for better parallelization.
225
226* Installation instructions:
227  - New: Guix (Guy Fleury Iteriteka).
228  - New: openSUSE (Michael Vetter).
229
230* Bug fixes:
231  [unfiled]  Certain SVGs had transparency replaced with a white
232             background (nemo).
233  [unfiled]  -lm dependency belongs in libchafa, not frontend.
234
2351.0.1 (2018-12-18)
236------------------
237
238* Bug fixes:
239  [unfiled]  Bad geometry calculation when specifying one dimension
240             and omitting the other.
241
2421.0.0 (2018-12-16)
243------------------
244
245This release adds features, greatly improves performance and fixes
246several bugs. Programs written for the command line and libchafa
247interfaces in this release will be supported by future versions in
248the 1.y.z series without the need for modification or recompilation.
249
250* Added ability to specify "fill" symbols to use as halftone for better
251  color approximation. This can be used to augment the regular symbol
252  selection or to replace it (with --symbols none) for a different,
253  purely intensity-based effect.
254
255* Improved preprocessing in 2-color and 16-color modes. This is optional
256  (default: on) and consists of a contrast boost and, for the 16-color
257  mode, an additional saturation boost. The new implementation lives in
258  libchafa and does not rely on ImageMagick. It is multithreaded, and due
259  to its specialized nature, much faster.
260
261* Added --watch option to continuously monitor a file.
262
263* Added more symbols:
264  - Most of the ASCII range.
265  - Braille range (github#2, thanks to Adam Borowski).
266  - Miscellaneous math and scanline symbols.
267  - More geometric symbols (black circle, triangles) (Mo Zhou).
268
269* Throughput improvements:
270  - Fast symbol candidate set reduction by median cut.
271  - Parallel processing with threads.
272  - Prescaling using bilinear interpolation instead of lanczos.
273
274* Installation instructions:
275  - New: Arch (github#12, Felix Yan).
276  - New: Debian testing/unstable (github#9, Mo Zhou).
277  - New: Fedora (github#14, Ricardo Arguello).
278  - Mention missing dependency for Debian (github#13, @medusacle).
279
280* Bug fixes:
281  github#1   -c none produces pointless \e[0m after every line (found by
282             Adam Borowski).
283  github#3   Compile error (found by Lajos Papp).
284  github#4   AM_PROG_LIBTOOL is obsolete, replace it with LT_INIT
285             (Robert-André Mauchin).
286  github#5   Port chafa to i386 architecture (Mo Zhou).
287  github#7   Chafa should not return an error when being asked for
288             --version (Mo Zhou).
289  github#10  Fix detection of MagickWand methods (Felix Yan).
290  github#11  ImageMagick 7 support (found by Felix Yan).
291  github#21  chafa.c:547: pointless assignment (found by @dcb314).
292
2930.9.0 (2018-04-24)
294------------------
295
296Initial release.
297