1# Changelog
2
3* [1.10.3](#1-10-3)
4* [1.10.2](#1-10-2)
5* [1.10.1](#1-10-1)
6* [1.10.0](#1-10-0)
7* [1.9.2](#1-9-2)
8* [1.9.1](#1-9-1)
9* [1.9.0](#1-9-0)
10* [1.8.2](#1-8-2)
11* [1.8.1](#1-8-1)
12* [1.8.0](#1-8-0)
13* [1.7.2](#1-7-2)
14* [1.7.1](#1-7-1)
15* [1.7.0](#1-7-0)
16* [1.6.4](#1-6-4)
17* [1.6.3](#1-6-3)
18* [1.6.2](#1-6-2)
19* [1.6.1](#1-6-1)
20* [1.6.0](#1-6-0)
21* [1.5.4](#1-5-4)
22* [1.5.3](#1-5-3)
23* [1.5.2](#1-5-2)
24* [1.5.1](#1-5-1)
25* [1.5.0](#1-5-0)
26* [1.4.4](#1-4-4)
27* [1.4.3](#1-4-3)
28* [1.4.2](#1-4-2)
29* [1.4.1](#1-4-1)
30* [1.4.0](#1-4-0)
31* [1.3.0](#1-3-0)
32* [1.2.3](#1-2-3)
33* [1.2.2](#1-2-2)
34* [1.2.1](#1-2-1)
35* [1.2.0](#1-2-0)
36
37
38## 1.10.3
39
40### Added
41
42* Kitty keyboard protocol:
43  - [Report event types](https://sw.kovidgoyal.net/kitty/keyboard-protocol/#report-events)
44    (mode `0b10`)
45  - [Report alternate keys](https://sw.kovidgoyal.net/kitty/keyboard-protocol/#report-alternates)
46    (mode `0b100`, but not that only the _shifted_ key is reported,
47    not the _base layout key_)
48  - [Report all keys as escape codes](https://sw.kovidgoyal.net/kitty/keyboard-protocol/#report-all-keys)
49    (mode `0b1000`)
50  - [Report associated text](https://sw.kovidgoyal.net/kitty/keyboard-protocol/#report-text)
51    (mode `0b10000`)
52
53
54### Fixed
55
56* Crash when bitmap fonts are scaled down to very small font sizes
57  (https://codeberg.org/dnkl/foot/issues/830).
58* Crash when overwriting/erasing an OSC-8 URL.
59
60
61## 1.10.2
62
63### Added
64
65* New value, `max`, for `[tweak].grapheme-width-method`.
66* Initial support for the [Kitty keyboard protocol](https://sw.kovidgoyal.net/kitty/keyboard-protocol/).
67  Modes supported:
68  - [Disambiguate escape codes](https://sw.kovidgoyal.net/kitty/keyboard-protocol/#disambiguate) (mode `0b1`)
69* “Window menu” (compositor provided) on right clicks on the CSD title
70  bar.
71
72
73### Fixed
74
75* An ongoing mouse selection is now finalized on a pointer leave event
76  (for example by switching workspace while doing a mouse selection).
77* OSC-8 URIs in the last column
78* OSC-8 URIs sometimes being applied to too many, and seemingly
79  unrelated cells (https://codeberg.org/dnkl/foot/issues/816).
80* OSC-8 URIs incorrectly being dropped when resizing the terminal
81  window with the alternate screen active.
82* CSD border not being dimmed when window is not focused.
83* Visual corruption with large CSD borders
84  (https://codeberg.org/dnkl/foot/issues/823).
85* Mouse cursor shape sometimes not being updated correctly.
86* Color palette changes (via OSC 4/104) no longer affect RGB colors
87  (https://codeberg.org/dnkl/foot/issues/678).
88
89
90### Contributors
91
92* Jonas Ådahl
93
94
95## 1.10.1
96
97### Added
98
99* `-Dthemes=false|true` meson command line option. When disabled,
100  example theme files are **not** installed.
101* XDG desktop file for footclient.
102
103
104### Fixed
105
106* Regression: `letter-spacing` resulting in a “not a valid option”
107  error (https://codeberg.org/dnkl/foot/issues/795).
108* Regression: bad section name in configuration error messages.
109* Regression: `pipe-*` key bindings not being parsed correctly,
110  resulting in invalid error messages
111  (https://codeberg.org/dnkl/foot/issues/809).
112* OSC-8 data not being cleared when cell is overwritten
113  (https://codeberg.org/dnkl/foot/issues/804,
114  https://codeberg.org/dnkl/foot/issues/801).
115
116
117### Contributors
118
119* Arnavion
120* Craig Barnes
121* Soc Virnyl Silab Estela
122* Xiretza
123
124
125## 1.10.0
126
127### Added
128
129* `notify-focus-inhibit` boolean option, which can be used to control
130  whether desktop notifications should be inhibited when the terminal
131  has keyboard focus
132* `[colors].scrollback-indicator` color-pair option, which specifies
133  foreground and background colors for the scrollback indicator.
134* `[key-bindings].noop` action. Key combinations assigned to this
135  action will not be sent to the application
136  (https://codeberg.org/dnkl/foot/issues/765).
137* Color schemes are now installed to `${datadir}/foot/themes`.
138* `[csd].border-width` and `[csd].border-color`, allowing you to
139  configure the width and color of the CSD border.
140* Support for `XTMODKEYS` with `Pp=4` and `Pv=2` (_modifyOtherKeys=2_).
141* `[colors].dim0-7` options, allowing you to configure custom “dim”
142  colors (https://codeberg.org/dnkl/foot/issues/776).
143
144
145### Changed
146
147* `[tweak].grapheme-shaping` is now enabled by default when both foot
148  itself, and fcft has been compiled with support for it.
149* Default value of `[tweak].grapheme-width-method` changed from
150  `double-width` to `wcswidth`.
151* INSTALL.md: `--override tweak.grapheme-shaping=no` added to PGO
152  command line.
153* Foot now terminates if there are no available seats - for example,
154  due to the compositor not implementing a recent enough version of
155  the `wl_seat` interface (https://codeberg.org/dnkl/foot/issues/779).
156* Boolean options in `foot.ini` are now limited to
157  “yes|true|on|1|no|false|off|0”, Previously, anything that did not
158  match “yes|true|on”, or a number greater than 0, was treated as
159  “false”.
160* `[scrollback].multiplier` is no longer applied when the alternate
161  screen is in use (https://codeberg.org/dnkl/foot/issues/787).
162
163
164### Removed
165
166* The bundled PKGBUILD.
167* Deprecated `bell` option (replaced with `[bell]` section in 1.8.0).
168* Deprecated `url-launch`, `jump-label-letters` and `osc8-underline`
169  options (moved to a dedicated `[url]` section in 1.8.0)
170
171
172### Fixed
173
174* ‘Sticky’ modifiers in input handling; when determining modifier
175  state, foot was looking at **depressed** modifiers, not
176  **effective** modifiers, like it should.
177* Fix crashes after enabling CSD at runtime when `csd.size` is 0.
178* Convert `\r` to `\n` when reading clipboard data
179  (https://codeberg.org/dnkl/foot/issues/752).
180* Clipboard occasionally ceasing to work, until window has been
181  re-focused (https://codeberg.org/dnkl/foot/issues/753).
182* Don’t propagate window title updates to the Wayland compositor
183  unless the new title is different from the old title.
184
185
186### Contributors
187
188* armin
189* Craig Barnes
190* Daniel Martí
191* feeptr
192* Mitja Horvat
193* Ronan Pigott
194* Stanislav Ochotnický
195
196
197## 1.9.2
198
199### Changed
200
201* PGO helper scripts no longer set `LC_CTYPE=en_US.UTF-8`. But, note
202  that “full” PGO builds still **require** a UTF-8 locale; you need
203  to set one manually in your build script
204  (https://codeberg.org/dnkl/foot/issues/728).
205
206
207## 1.9.1
208
209### Added
210
211* Warn when it appears the primary font is not monospaced. Can be
212  disabled by setting `[tweak].font-monospace-warn=no`
213  (https://codeberg.org/dnkl/foot/issues/704).
214* PGO build scripts, in the `pgo` directory. See INSTALL.md -
215  _Performance optimized, PGO_, for details
216  (https://codeberg.org/dnkl/foot/issues/701).
217* Braille characters (U+2800 - U+28FF) are now rendered by foot
218  itself (https://codeberg.org/dnkl/foot/issues/702).
219* `-e` command-line option. This option is simply ignored, to appease
220  program launchers that blindly pass `-e` to any terminal emulator
221  (https://codeberg.org/dnkl/foot/issues/184).
222
223
224### Changed
225
226* `-Ddefault-terminfo` is now also applied to the generated terminfo
227  definitions when `-Dterminfo=enabled`.
228* `-Dcustom-terminfo-install-location` no longer accepts `no` as a
229  special value, to disable exporting `TERMINFO`. To achieve the same
230  result, simply don’t set it at all. If it _is_ set, `TERMINFO` is
231  still exported, like before.
232* The default install location for the terminfo definitions have been
233  changed back to `${datadir}/terminfo`.
234* `dpi-aware=auto`: fonts are now scaled using the monitor’s DPI only
235  when **all** monitors have a scaling factor of one
236  (https://codeberg.org/dnkl/foot/issues/714).
237
238
239### Fixed
240
241* Added workaround for GNOME bug where multiple button press events
242  (for the same button) is sent to the CSDs without any release or
243  leave events in between (https://codeberg.org/dnkl/foot/issues/709).
244* Line-wise selection not taking soft line-wrapping into account
245  (https://codeberg.org/dnkl/foot/issues/726).
246
247
248### Contributors
249
250* [craigbarnes](https://codeberg.org/craigbarnes)
251* Arnavion
252
253
254## 1.9.0
255
256### Added
257
258* Window title in the CSDs
259  (https://codeberg.org/dnkl/foot/issues/638).
260* `-Ddocs=disabled|enabled|auto` meson command line option.
261* Support for `~`-expansion in the `include` directive
262  (https://codeberg.org/dnkl/foot/issues/659).
263* Unicode 13 characters U+1FB3C - U+1FB6F, U+1FB9A and U+1FB9B to list
264  of box drawing characters rendered by foot itself (rather than using
265  font glyphs) (https://codeberg.org/dnkl/foot/issues/474).
266* `XM`+`xm` to terminfo.
267* Mouse buttons 6/7 (mouse wheel left/right).
268* `url.uri-characters` option to `foot.ini`
269  (https://codeberg.org/dnkl/foot/issues/654).
270
271
272### Changed
273
274* Terminfo files can now co-exist with the foot terminfo files from
275  ncurses. See `INSTALL.md` for more information
276  (https://codeberg.org/dnkl/foot/issues/671).
277* `bold-text-in-bright=palette-based` now only brightens colors from palette
278* Raised grace period between closing the PTY and sending `SIGKILL` (when
279  terminating the client application) from 4 to 60 seconds.
280* When terminating the client application, foot now sends `SIGTERM` immediately
281  after closing the PTY, instead of waiting 2 seconds.
282* Foot now sends `SIGTERM`/`SIGKILL` to the client application’s process group,
283  instead of just to the client application’s process.
284* `kmous` terminfo capability from `\E[M` to `\E[<`.
285* pt-or-px values (`letter-spacing`, etc) and the line thickness
286  (`tweak.box-drawing-base-thickness`) in box drawing characters are
287  now translated to pixel values using the monitor’s scaling factor
288  when `dpi-aware=no`, or `dpi-aware=auto` and the scaling factor is
289  larger than 1 (https://codeberg.org/dnkl/foot/issues/680).
290* Spawning a new terminal with a working directory that does not exist
291  is no longer a fatal error.
292
293
294### Removed
295
296* `km`/`smm`/`rmm` from terminfo; foot prefixes Alt-key combinations
297  with `ESC`, and not by setting the 8:th “meta” bit, regardless of
298  `smm`/`rmm`. While this _can_ be disabled by, resetting private mode
299  1036, the terminfo should reflect the **default** behavior
300  (https://codeberg.org/dnkl/foot/issues/670).
301* Keypad application mode keys from terminfo; enabling the keypad
302  application mode is not enough to make foot emit these sequences -
303  you also need to disable private mode 1035
304  (https://codeberg.org/dnkl/foot/issues/670).
305
306
307### Fixed
308
309* Rendering into the right margin area with `tweak.overflowing-glyphs`
310  enabled.
311* PGO builds with clang (https://codeberg.org/dnkl/foot/issues/642).
312* Crash in scrollback search mode when selection has been canceled due
313  to terminal content updates
314  (https://codeberg.org/dnkl/foot/issues/644).
315* Foot process not terminating when the Wayland connection is broken
316  (https://codeberg.org/dnkl/foot/issues/651).
317* Output scale being zero on compositors that does not advertise a
318  scaling factor.
319* Slow-to-terminate client applications causing other footclient instances to
320  freeze when closing a footclient window.
321* Underlying cell content showing through in the left-most column of
322  sixels.
323* `cursor.blink` not working in GNOME
324  (https://codeberg.org/dnkl/foot/issues/686).
325* Blinking cursor stops blinking, or becoming invisible, when
326  switching focus from, and then back to a terminal window on GNOME
327  (https://codeberg.org/dnkl/foot/issues/686).
328
329
330### Contributors
331
332* Nihal Jere
333* [nowrep](https://codeberg.org/nowrep)
334* [clktmr](https://codeberg.org/clktmr)
335
336
337## 1.8.2
338
339### Added
340
341* `locked-title=no|yes` to `foot.ini`
342  (https://codeberg.org/dnkl/foot/issues/386).
343* `tweak.overflowing-glyphs` option, which can be enabled to fix rendering
344  issues with glyphs of any width that appear cut-off
345  (https://codeberg.org/dnkl/foot/issues/592).
346
347
348### Changed
349
350* Non-empty lines are now considered to have a hard linebreak,
351  _unless_ an actual word-wrap is inserted.
352* Setting `DECSDM` now _disables_ sixel scrolling, while resetting it
353  _enables_ scrolling (https://codeberg.org/dnkl/foot/issues/631).
354
355
356### Removed
357
358* The `tweak.allow-overflowing-double-width-glyphs` and
359  `tweak.pua-double-width` options (which have been superseded by
360  `tweak.overflowing-glyphs`).
361
362
363### Fixed
364
365* FD exhaustion when repeatedly entering/exiting URL mode with many
366  URLs.
367* Double free of URL while removing duplicated and/or overlapping URLs
368  in URL mode (https://codeberg.org/dnkl/foot/issues/627).
369* Crash when an unclosed OSC-8 URL ran into un-allocated scrollback
370  rows.
371* Some box-drawing characters were rendered incorrectly on big-endian
372  architectures.
373* Crash when resizing the window to the smallest possible size while
374  scrollback search is active.
375* Scrollback indicator being incorrectly rendered when window size is
376  very small.
377* Reduced memory usage in URL mode.
378* Crash when the `E3` escape (`\E[3J`) was executed, and there was a
379  selection, or sixel image, in the scrollback
380  (https://codeberg.org/dnkl/foot/issues/633).
381
382
383### Contributors
384
385* [clktmr](https://codeberg.org/clktmr)
386
387
388## 1.8.1
389
390### Added
391
392* `--log-level=none` command-line option.
393* `Tc`, `setrgbf` and `setrgbb` capabilities in `foot` and `foot-direct`
394  terminfo entries. This should make 24-bit RGB colors work in tmux and
395  neovim, without the need for config hacks or detection heuristics
396  (https://codeberg.org/dnkl/foot/issues/615).
397
398
399### Changed
400
401* Grapheme cluster width is now limited to two cells by default. This
402  may cause cursor synchronization issues with many applications. You
403  can set `[tweak].grapheme-width-method=wcswidth` to revert to the
404  behavior in foot-1.8.0.
405
406
407### Fixed
408
409* Grapheme cluster state being reset between codepoints.
410* Regression: custom URL key bindings not working
411  (https://codeberg.org/dnkl/foot/issues/614).
412
413
414### Contributors
415
416* [craigbarnes](https://codeberg.org/craigbarnes)
417
418
419## 1.8.0
420
421### Grapheme shaping
422
423This release adds _experimental, opt-in_ support for grapheme cluster
424segmentation and grapheme shaping.
425
426(note: several of the examples below may not render correctly in your
427browser, viewer or editor).
428
429Grapheme cluster segmentation is the art of splitting up text into
430grapheme clusters, where a cluster may consist of more than one
431Unicode codepoint. For example, �� is a single codepoint, while ����‍��
432consists of 4 codepoints (_Woman_ + _Medium skin tone_ + _Zero width
433joiner_ + _Rocket_). The goal is to _cluster_ codepoints belonging to
434the same grapheme in the same cell in the terminal.
435
436Previous versions of foot implemented a simple grapheme cluster
437segmentation technique that **only** handled zero-width
438codepoints. This allowed us to cluster combining characters, like q́
439(_q_ + _COMBINING ACUTE ACCENT_).
440
441Once we have a grapheme cluster, we need to _shape_ it.
442
443Combining characters are simple: they are typically rendered as
444multiple glyphs layered on top of each other. This is why previous
445versions of foot got away with it without any actual text shaping
446support.
447
448Beyond that, support from the font library is needed. Foot now depends
449on fcft-2.4, which added support for grapheme and text shaping. When
450rendering a cell, we ask the font library: give us the glyph(s) for
451this sequence of codepoints.
452
453Fancy emoji sequences aside, using libutf8proc for grapheme cluster
454segmentation means **improved correctness**.
455
456For full support, the following is required:
457
458* fcft compiled with HarfBuzz support
459* foot compiled with libutf8proc support
460* `tweak.grapheme-shaping=yes` in `foot.ini`
461
462If `tweak.grapheme-shaping` has **not** been enabled, foot will
463neither use libutf8proc to do grapheme cluster segmentation, nor will
464it use fcft’s grapheme shaping capabilities to shape combining
465characters.
466
467This feature is _experimental_ mostly due to the “wcwidth” problem;
468how many cells should foot allocate for a grapheme cluster? While the
469answer may seem simple, the problem is that, whatever the answer is,
470the client application **must** come up with the **same**
471answer. Otherwise we get cursor synchronization issues.
472
473In this release, foot simply adds together the `wcwidth()` of all
474codepoints in the grapheme cluster. This is equivalent to running
475`wcswidth()` on the entire cluster. **This is likely to change in the
476future**.
477
478Finally, note that grapheme shaping is not the same thing as text (or
479text run) shaping. In this version, foot only shapes individual
480graphemes, not entire text runs. That means e.g. ligatures are **not**
481supported.
482
483
484### Added
485
486* Support for DECSET/DECRST 2026, as an alternative to the existing
487  "synchronized updates" DCS sequences
488  (https://codeberg.org/dnkl/foot/issues/459).
489* `cursor.beam-thickness` option to `foot.ini`
490  (https://codeberg.org/dnkl/foot/issues/464).
491* `cursor.underline-thickness` option to `foot.ini`
492  (https://codeberg.org/dnkl/foot/issues/524).
493* Unicode 13 characters U+1FB70 - U+1FB8B to list of box drawing
494  characters rendered by foot itself (rather than using font glyphs)
495  (https://codeberg.org/dnkl/foot/issues/471).
496* Dedicated `[bell]` section to config, supporting multiple actions
497  and a new `command` action to run an arbitrary command.
498  (https://codeberg.org/dnkl/foot/pulls/483)
499* Dedicated `[url]` section to config.
500* `[url].protocols` option to `foot.ini`
501  (https://codeberg.org/dnkl/foot/issues/531).
502* Support for setting the full 256 color palette in foot.ini
503  (https://codeberg.org/dnkl/foot/issues/489)
504* XDG activation support, will be used by `[bell].urgent` when
505  available (falling back to coloring the window margins red when
506  unavailable) (https://codeberg.org/dnkl/foot/issues/487).
507* `ctrl`+`c` as a default key binding; to cancel search/url mode.
508* `${window-title}` to `notify`.
509* Support for including files in `foot.ini`
510  (https://codeberg.org/dnkl/foot/issues/555).
511* `ENVIRONMENT` section in **foot**(1) and **footclient**(1) man pages
512  (https://codeberg.org/dnkl/foot/issues/556).
513* `tweak.pua-double-width` option to `foot.ini`, letting you force
514  _Private Usage Area_ codepoints to be treated as double-width
515  characters.
516* OSC 9 desktop notifications (iTerm2 compatible).
517* Support for LS2 and LS3 (locking shift) escape sequences
518  (https://codeberg.org/dnkl/foot/issues/581).
519* Support for overriding configuration options on the command line
520  (https://codeberg.org/dnkl/foot/issues/554,
521  https://codeberg.org/dnkl/foot/issues/600).
522* `underline-offset` option to `foot.ini`
523  (https://codeberg.org/dnkl/foot/issues/490).
524* `csd.button-color` option to `foot.ini`.
525* `-Dterminfo-install-location=disabled|<custom-path>` meson command
526  line option (https://codeberg.org/dnkl/foot/issues/569).
527
528
529### Changed
530
531* [fcft](https://codeberg.org/dnkl/fcft): required version bumped from
532  2.3.x to 2.4.x.
533* `generate-alt-random-writes.py --sixel`: width and height of emitted
534  sixels has been adjusted.
535* _Concealed_ text (`\E[8m`) is now revealed when highlighted.
536* The background color of highlighted text is now adjusted, when the
537  foreground and background colors are the same, making the
538  highlighted text legible
539  (https://codeberg.org/dnkl/foot/issues/455).
540* `cursor.style=bar` to `cursor.style=beam`. `bar` remains a
541  recognized value, but will eventually be deprecated, and removed.
542* Point values in `line-height`, `letter-spacing`,
543  `horizontal-letter-offset` and `vertical-letter-offset` are now
544  rounded, not truncated, when translated to pixel values.
545* Foot’s exit code is now -26/230 when foot itself failed to launch
546  (due to invalid command line options, client application/shell not
547  found etc). Footclient’s exit code is -36/220 when it itself fails
548  to launch (e.g. bad command line option) and -26/230 when the foot
549  server failed to instantiate a new window
550  (https://codeberg.org/dnkl/foot/issues/466).
551* Background alpha no longer applied to palette or RGB colors that
552  matches the background color.
553* Improved performance on compositors that does not release shm
554  buffers immediately, e.g. KWin
555  (https://codeberg.org/dnkl/foot/issues/478).
556* `ctrl + w` (_extend-to-word-boundary_) can now be used across lines
557  (https://codeberg.org/dnkl/foot/issues/421).
558* Ignore auto-detected URLs that overlap with OSC-8 URLs.
559* Default value for the `notify` option to use `-a ${app-id} -i
560  ${app-id} ...` instead of `-a foot -i foot ...`.
561* `scrollback-*`+`pipe-scrollback` key bindings are now passed through
562  to the client application when the alt screen is active
563  (https://codeberg.org/dnkl/foot/issues/573).
564* Reverse video (`\E[?5h`) now only swaps the default foreground and
565  background colors. Cells with explicit foreground and/or background
566  colors remain unchanged.
567* Tabs (`\t`) are now preserved when the window is resized, and when
568  copying text (https://codeberg.org/dnkl/foot/issues/508).
569* Writing a sixel on top of another sixel no longer erases the first
570  sixel, but the two are instead blended
571  (https://codeberg.org/dnkl/foot/issues/562).
572* Running foot without a configuration file is no longer an error; it
573  has been demoted to a warning, and is no longer presented as a
574  notification in the terminal window, but only logged on stderr.
575
576
577### Deprecated
578
579* `bell` option in `foot.ini`; set actions in the `[bell]` section
580  instead.
581* `url-launch` option in `foot.ini`; use `launch` in the `[url]`
582  section instead.
583* `jump-label-letters` option in `foot.ini`; use `label-letters` in
584  the `[url]` section instead.
585* `osc8-underline` option in `foot.ini`; use `osc8-underline` in the
586  `[url]` section instead.
587
588
589### Removed
590
591* Buffer damage quirk for Plasma/KWin.
592
593
594### Fixed
595
596* `generate-alt-random-writes.py --sixel` sometimes crashing,
597  resulting in PGO build failures.
598* Wrong colors in the 256-color cube
599  (https://codeberg.org/dnkl/foot/issues/479).
600* Memory leak triggered by “opening” an OSC-8 URI and then resetting
601  the terminal without closing the URI
602  (https://codeberg.org/dnkl/foot/issues/495).
603* Assertion when emitting a sixel occupying the entire scrollback
604  history (https://codeberg.org/dnkl/foot/issues/494).
605* Font underlines being positioned below the cell (and thus being
606  invisible) for certain combinations of fonts and font sizes
607  (https://codeberg.org/dnkl/foot/issues/503).
608* Sixels with transparent bottom border being resized below the size
609  specified in _”Set Raster Attributes”_.
610* Fonts sometimes not being reloaded with the correct scaling factor
611  when `dpi-aware=no`, or `dpi-aware=auto` with monitor(s) with a
612  scaling factor > 1 (https://codeberg.org/dnkl/foot/issues/509).
613* Crash caused by certain CSI sequences with very large parameter
614  values (https://codeberg.org/dnkl/foot/issues/522).
615* Rare occurrences where the window did not close when the shell
616  exited. Only seen on FreeBSD
617  (https://codeberg.org/dnkl/foot/issues/534)
618* Foot process(es) sometimes remaining, using 100% CPU, when closing
619  multiple foot windows at the same time
620  (https://codeberg.org/dnkl/foot/issues/542).
621* Regression where `<mod>+shift+tab` always produced `\E[Z` instead of
622  the correct `\E[27;<mod>;9~` sequence
623  (https://codeberg.org/dnkl/foot/issues/547).
624* Crash when a line wrapping OSC-8 URI crossed the scrollback wrap
625  around (https://codeberg.org/dnkl/foot/issues/552).
626* Selection incorrectly wrapping rows ending with an explicit newline
627  (https://codeberg.org/dnkl/foot/issues/565).
628* Off-by-one error in markup of auto-detected URLs when the URL ends
629  in the right-most column.
630* Multi-column characters being cut in half when resizing the
631  alternate screen.
632* Restore `SIGHUP` in spawned processes.
633* Text reflow performance (https://codeberg.org/dnkl/foot/issues/504).
634* IL+DL (`CSI Ps L` + `CSI Ps M`) now moves the cursor to column 0.
635* SS2 and SS3 (single shift) escape sequences behaving like locking
636  shifts (https://codeberg.org/dnkl/foot/issues/580).
637* `TEXT`+`STRING`+`UTF8_STRING` mime types not being recognized in
638  clipboard offers (https://codeberg.org/dnkl/foot/issues/583).
639* Memory leak caused by custom box drawing glyphs not being completely
640  freed when destroying a foot window instance
641  (https://codeberg.org/dnkl/foot/issues/586).
642* Crash in scrollback search when current XKB layout is missing
643  _compose_ definitions.
644* Window title not being updated while window is hidden
645  (https://codeberg.org/dnkl/foot/issues/591).
646* Crash on badly formatted URIs in e.g. OSC-8 URLs.
647* Window being incorrectly resized on CSD/SSD run-time changes.
648
649
650### Contributors
651* [r\_c\_f](https://codeberg.org/r_c_f)
652* [craigbarnes](https://codeberg.org/craigbarnes)
653
654
655## 1.7.2
656
657### Added
658
659* URxvt OSC-11 extension to set background alpha
660  (https://codeberg.org/dnkl/foot/issues/436).
661* OSC 17/117/19/119 - change/reset selection background/foreground
662  color.
663* `box-drawings-uses-font-glyphs=yes|no` option to `foot.ini`
664  (https://codeberg.org/dnkl/foot/issues/430).
665
666
667### Changed
668
669* Underline cursor is now rendered below text underline
670  (https://codeberg.org/dnkl/foot/issues/415).
671* Foot now tries much harder to keep URL jump labels inside the window
672  geometry (https://codeberg.org/dnkl/foot/issues/443).
673* `bold-text-in-bright` may now be set to `palette-based`, in which
674  case it will use the corresponding bright palette color when the
675  color to brighten matches one of the base 8 colors, instead of
676  increasing the luminance
677  (https://codeberg.org/dnkl/foot/issues/449).
678
679
680### Fixed
681
682* Reverted _"Consumed modifiers are no longer sent to the client
683  application"_ (https://codeberg.org/dnkl/foot/issues/425).
684* Crash caused by a double free originating in `XTSMGRAPHICS` - set
685  number of color registers
686  (https://codeberg.org/dnkl/foot/issues/427).
687* Wrong action referenced in error message for key binding collisions
688  (https://codeberg.org/dnkl/foot/issues/432).
689* OSC 4/104 out-of-bounds accesses to the color table. This was the
690  reason pywal turned foot windows transparent
691  (https://codeberg.org/dnkl/foot/issues/434).
692* PTY not being drained when the client application terminates.
693* `auto_left_margin` not being limited to `cub1`
694  (https://codeberg.org/dnkl/foot/issues/441).
695* Crash in scrollback search mode when searching beyond the last output.
696
697
698### Contributors
699
700* [cglogic](https://codeberg.org/cglogic)
701
702
703## 1.7.1
704
705### Changed
706
707* Update PGO build instructions in `INSTALL.md`
708  (https://codeberg.org/dnkl/foot/issues/418).
709* In scrollback search mode, empty cells can now be matched by spaces.
710
711
712### Fixed
713
714* Logic that repairs invalid key bindings ended up breaking valid key
715  bindings instead (https://codeberg.org/dnkl/foot/issues/407).
716* Custom `line-height` settings now scale when increasing or
717  decreasing the font size at run-time.
718* Newlines sometimes incorrectly inserted into copied text
719  (https://codeberg.org/dnkl/foot/issues/410).
720* Crash when compositor send `text-input-v3::enter` events without
721  first having sent a `keyboard::enter` event
722  (https://codeberg.org/dnkl/foot/issues/411).
723* Deadlock when rendering sixel images.
724* URL labels, scrollback search box or scrollback position indicator
725  sometimes not showing up, caused by invalidly sized surface buffers
726  when output scaling was enabled
727  (https://codeberg.org/dnkl/foot/issues/409).
728* Empty sixels resulted in non-empty images.
729
730
731## 1.7.0
732
733### Added
734
735* The `pad` option now accepts an optional third argument, `center`
736  (e.g. `pad=5x5 center`), causing the grid to be centered in the
737  window, with equal amount of padding of the left/right and
738  top/bottom side (https://codeberg.org/dnkl/foot/issues/273).
739* `line-height`, `letter-spacing`, `horizontal-letter-offset` and
740  `vertical-letter-offset` to `foot.ini`. These options let you tweak
741  cell size and glyph positioning
742  (https://codeberg.org/dnkl/foot/issues/244).
743* Key/mouse binding `select-extend-character-wise`, which forces the
744  selection mode to 'character-wise' when extending a selection.
745* `DECSET` `47`, `1047` and `1048`.
746* URL detection and OSC-8 support. URLs are highlighted and activated
747  using the keyboard (**no** mouse support). See **foot**(1)::URLs, or
748  [README.md](README.md#urls) for details
749  (https://codeberg.org/dnkl/foot/issues/14).
750* `-d,--log-level={info|warning|error}` to both `foot` and
751  `footclient` (https://codeberg.org/dnkl/foot/issues/337).
752* `-D,--working-directory=DIR` to both `foot` and `footclient`
753  (https://codeberg.org/dnkl/foot/issues/347)
754* `DECSET 80` - sixel scrolling
755  (https://codeberg.org/dnkl/foot/issues/361).
756* `DECSET 1070` - sixel private color palette
757  (https://codeberg.org/dnkl/foot/issues/362).
758* `DECSET 8452` - position cursor to the right of sixels
759  (https://codeberg.org/dnkl/foot/issues/363).
760* Man page **foot-ctlseqs**(7), documenting all supported escape
761  sequences (https://codeberg.org/dnkl/foot/issues/235).
762* Support for transparent sixels (DCS parameter `P2=1`)
763  (https://codeberg.org/dnkl/foot/issues/391).
764* `-N,--no-wait` to `footclient`
765  (https://codeberg.org/dnkl/foot/issues/395).
766* Completions for Bash shell
767  (https://codeberg.org/dnkl/foot/issues/10).
768* Implement `XTVERSION` (`CSI > 0q`). Foot will reply with
769  `DCS>|foot(<major>.<minor>.<patch>)ST`
770  (https://codeberg.org/dnkl/foot/issues/359).
771
772
773### Changed
774
775* The fcft and tllist library subprojects are now handled via Meson
776  [wrap files](https://mesonbuild.com/Wrap-dependency-system-manual.html)
777  instead of needing to be manually cloned.
778* Box drawing characters are now rendered by foot, instead of using
779  font glyphs (https://codeberg.org/dnkl/foot/issues/198)
780* Double- or triple clicking then dragging now extends the selection
781  word- or line-wise (https://codeberg.org/dnkl/foot/issues/267).
782* The line thickness of box drawing characters now depend on the font
783  size (https://codeberg.org/dnkl/foot/issues/281).
784* Extending a word/line-wise selection now uses the original selection
785  mode instead of switching to character-wise.
786* While doing an interactive resize of a foot window, foot now
787  requires 100ms of idle time (where the window size does not change)
788  before sending the new dimensions to the client application. The
789  timing can be tweaked, or completely disabled, by setting
790  `resize-delay-ms` (https://codeberg.org/dnkl/foot/issues/301).
791* `CSI 13 ; 2 t` now reports (0,0).
792* Key binding matching logic; key combinations like `Control+Shift+C`
793  **must** now be written as either `Control+C` or `Control+Shift+c`,
794  the latter being the preferred
795  variant. (https://codeberg.org/dnkl/foot/issues/376)
796* Consumed modifiers are no longer sent to the client application
797  (https://codeberg.org/dnkl/foot/issues/376).
798* The minimum version requirement for the libxkbcommon dependency is
799  now 1.0.0.
800* Empty pixel rows at the bottom of a sixel is now trimmed.
801* Sixels with DCS parameter `P2=0|2` now use the _current_ ANSI
802  background color for empty pixels instead of the default background
803  color (https://codeberg.org/dnkl/foot/issues/391).
804* Sixel decoding optimized; up to 100% faster in some cases.
805* Reported sixel “max geometry” from current window size, to the
806  configured maximum size (defaulting to 10000x10000).
807
808
809### Removed
810
811* The `-g,--geometry` command-line option (which had been deprecated
812  and superseded by `-w,--window-size-pixels` since 1.5.0).
813
814
815### Fixed
816
817* Some mouse bindings (_primary paste_, for example) did not require
818  `shift` to be pressed while used in a mouse grabbing
819  application. This meant the mouse event was never seen by the
820  application.
821* Terminals spawned with `ctrl`+`shift`+`n` not terminating when
822  exiting shell (https://codeberg.org/dnkl/foot/issues/366).
823* Default value of `-t,--term` in `--help` output when foot was built
824  without terminfo support.
825* Drain PTY when the client application terminates.
826
827
828### Contributors
829
830* [craigbarnes](https://codeberg.org/craigbarnes)
831* toast
832* [l3mon4d3](https://codeberg.org/l3mon4d3)
833* [Simon Schricker](mailto:s.schricker@sillage.at)
834
835
836## 1.6.4
837
838### Added
839
840* `selection-target=none|primary|clipboard|both` to `foot.ini`. It can
841  be used to configure which clipboard(s) selected text should be
842  copied to. The default is `primary`, which corresponds to the
843  behavior in older foot releases
844  (https://codeberg.org/dnkl/foot/issues/288).
845
846
847### Changed
848
849* The IME state no longer stays stuck in the terminal if the IME goes
850  away during preedit.
851* `-Dterminfo` changed from a `boolean` to a `feature` option.
852* Use standard signals instead of a signalfd to handle
853  `SIGCHLD`. Fixes an issue on FreeBSD where foot did not detect when
854  the client application had terminated.
855
856
857### Fixed
858
859* `BS`, `HT` and `DEL` from being stripped in bracketed paste mode.
860
861
862### Contributors
863
864* [tdeo](https://codeberg.org/tdeo)
865* jbeich
866
867
868## 1.6.3
869
870### Added
871
872* Completions for fish shell
873  (https://codeberg.org/dnkl/foot/issues/11)
874* FreeBSD support (https://codeberg.org/dnkl/foot/issues/238).
875* IME popup location support: foot now sends the location of the cursor
876  so any popup can be displayed near the text that is being typed.
877
878
879### Changed
880
881* Trailing comments in `foot.ini` must now be preceded by a space or tab
882  (https://codeberg.org/dnkl/foot/issues/270)
883* The scrollback search box no longer accepts non-printable characters.
884* Non-formatting C0 control characters, `BS`, `HT` and `DEL` are now
885  stripped from pasted text.
886
887
888### Fixed
889
890* Exit when the client application terminates, not when the TTY file
891  descriptor is closed.
892* Crash on compositors not implementing the _text input_ interface
893  (https://codeberg.org/dnkl/foot/issues/259).
894* Erased, overflowing glyphs (when
895  `tweak.allow-overflowing-double-width-glyphs=yes` - the default) not
896  properly erasing the cell overflowed **into**.
897* `word-delimiters` option ignores `#` and subsequent characters
898  (https://codeberg.org/dnkl/foot/issues/270)
899* Combining characters not being rendered when composed with colored
900  bitmap glyphs (i.e. colored emojis).
901* Pasting URIs from the clipboard when the source has not
902  newline-terminated the last URI
903  (https://codeberg.org/dnkl/foot/issues/291).
904* Sixel “current geometry” query response not being bounded by the
905  current window dimensions (fixes `lsix` output)
906* Crash on keyboard input when repeat rate was zero (i.e. no repeat).
907* Wrong button encoding of mouse buttons 6 and 7 in mouse events.
908* Scrollback search not matching composed characters.
909* High CPU usage when holding down e.g. arrow keys while in scrollback
910  search mode.
911* Rendering of composed characters in the scrollback search box.
912* IME pre-edit cursor when positioned at the end of the pre-edit
913  string.
914* Scrollback search not matching multi-column characters.
915
916
917### Contributors
918
919* [pc](https://codeberg.org/pc)
920* [FollieHiyuki](https://codeberg.org/FollieHiyuki)
921* jbeich
922* [tdeo](https://codeberg.org/tdeo)
923
924
925## 1.6.2
926
927### Fixed
928
929* Version number in `meson.build`.
930
931
932## 1.6.1
933### Added
934
935* `--seed` to `generate-alt-random.py`, enabling deterministic PGO
936  builds.
937
938
939### Changed
940
941
942* Use `-std=c11` instead of `-std=c18`.
943* Added `-Wno-profile-instr-unprofiled` to Clang cflags in PGO builds
944  ([INSTALL.md](https://codeberg.org/dnkl/foot/src/branch/releases/1.6/INSTALL.md#user-content-performance-optimized-pgo))
945
946
947### Fixed
948
949* Missing dependencies in meson, causing heavily parallelized builds
950  to fail.
951* Background color when alpha < 1.0 being wrong
952  (https://codeberg.org/dnkl/foot/issues/249).
953* `generate-alt-random.py` failing in containers.
954
955
956### Contributors
957
958* [craigbarnes](https://codeberg.org/craigbarnes)
959* [sterni](https://codeberg.org/sterni)
960
961
962## 1.6.0
963
964### For packagers
965
966Starting with this release, foot can be PGO:d (compiled using profile
967guided optimizations) **without** a running Wayland session. This
968means foot can be PGO:d in e.g. sandboxed build scripts. See
969[INSTALL.md](INSTALL.md#user-content-performance-optimized-pgo).
970
971
972### Added
973
974* IME support. This is compile-time optional, see
975  [INSTALL.md](INSTALL.md#user-content-options)
976  (https://codeberg.org/dnkl/foot/issues/134).
977* `DECSET` escape to enable/disable IME: `CSI ? 737769 h` enables IME
978  and `CSI ? 737769 l` disables it. This can be used to
979  e.g. enable/disable IME when entering/leaving insert mode in vim.
980* `dpi-aware` option to `foot.ini`. The default, `auto`, sizes fonts
981  using the monitor’s DPI when output scaling has been
982  **disabled**. If output scaling has been **enabled**, fonts are
983  sized using the scaling factor. DPI-only font sizing can be forced
984  by setting `dpi-aware=yes`. Setting `dpi-aware=no` forces font
985  sizing to be based on the scaling factor.
986  (https://codeberg.org/dnkl/foot/issues/206).
987* Implement reverse auto-wrap (_auto\_left\_margin_, _bw_, in
988  terminfo). This mode can be enabled/disabled with `CSI ? 45 h` and
989  `CSI ? 45 l`. It is **enabled** by default
990  (https://codeberg.org/dnkl/foot/issues/150).
991* `bell` option to `foot.ini`. Can be set to `set-urgency` to make
992  foot render the margins in red when receiving `BEL` while **not**
993  having keyboard focus. Applications can dynamically enable/disable
994  this with the `CSI ? 1042 h` and `CSI ? 1042 l` escape
995  sequences. Note that Wayland does **not** implement an _urgency_
996  hint like X11, but that there is a
997  [proposal](https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/9)
998  to add support for this. The value `set-urgency` was chosen for
999  forward-compatibility, in the hopes that this proposal eventualizes
1000  (https://codeberg.org/dnkl/foot/issues/157).
1001* `bell` option can also be set to `notify`, in which case a desktop
1002  notification is emitted when foot receives `BEL` in an unfocused
1003  window.
1004* `word-delimiters` option to `foot.ini`
1005  (https://codeberg.org/dnkl/foot/issues/156).
1006* `csd.preferred` can now be set to `none` to disable window
1007  decorations. Note that some compositors will render SSDs despite
1008  this option being used (https://codeberg.org/dnkl/foot/issues/163).
1009* Terminal content is now auto-scrolled when moving the mouse above or
1010  below the window while selecting
1011  (https://codeberg.org/dnkl/foot/issues/149).
1012* `font-bold`, `font-italic` `font-bold-italic` options to
1013  `foot.ini`. These options allow custom bold/italic fonts. They are
1014  unset by default, meaning the bold/italic version of the regular
1015  font is used (https://codeberg.org/dnkl/foot/issues/169).
1016* Drag & drop support; text, files and URLs can now be dropped in a
1017  foot terminal window (https://codeberg.org/dnkl/foot/issues/175).
1018* `clipboard-paste` and `primary-paste` scrollback search bindings. By
1019  default, they are bound to `ctrl+v ctrl+y` and `shift+insert`
1020  respectively, and lets you paste from the clipboard or primary
1021  selection into the search buffer.
1022* Support for `pipe-*` actions in mouse bindings. It was previously
1023  not possible to add a command to these actions when used in mouse
1024  bindings, making them useless
1025  (https://codeberg.org/dnkl/foot/issues/183).
1026* `bold-text-in-bright` option to `foot.ini`. When enabled, bold text
1027  is rendered in a brighter color
1028  (https://codeberg.org/dnkl/foot/issues/199).
1029* `-w,--window-size-pixels` and `-W,--window-size-chars` command line
1030  options to `footclient` (https://codeberg.org/dnkl/foot/issues/189).
1031* Short command line options for `--title`, `--maximized`,
1032  `--fullscreen`, `--login-shell`, `--hold` and `--check-config`.
1033* `DECSET` escape to modify the `escape` key to send `\E[27;1;27~`
1034  instead of `\E`: `CSI ? 27127 h` enables the new behavior, `CSI ?
1035  27127 l` disables it (the default).
1036* OSC 777;notify: desktop notifications. Use in combination with the
1037  new `notify` option in `foot.ini`
1038  (https://codeberg.org/dnkl/foot/issues/224).
1039* Status line terminfo capabilities `hs`, `tsl`, `fsl` and `dsl`. This
1040  enables e.g. vim to set the window title
1041  (https://codeberg.org/dnkl/foot/issues/242).
1042
1043
1044### Changed
1045
1046* Blinking text now uses the foreground color, but dimmed down in its
1047  off state, instead of the background color.
1048* Sixel default maximum size is now 10000x10000 instead of the current
1049  window size.
1050* Graphical glitches/flashes when resizing the window while running a
1051  fullscreen application, i.e. the 'alt' screen
1052  (https://codeberg.org/dnkl/foot/issues/221).
1053* Cursor will now blink if **either** `CSI ? 12 h` or `CSI Ps SP q`
1054  has been used to enable blinking. **cursor.blink** in `foot.ini`
1055  controls the default state of `CSI Ps SP q`
1056  (https://codeberg.org/dnkl/foot/issues/218).
1057* The sub-parameter versions of the SGR RGB color escapes (e.g
1058  `\E[38:2...m`) can now be used _without_ the color space ID
1059  parameter.
1060* SGR 21 no longer disables **bold**. According to ECMA-48, SGR 21 is
1061  _”double underline_”. Foot does not (yet) implement that, but that’s
1062  no reason to implement a non-standard behavior.
1063* `DECRQM` now returns actual state of the requested mode, instead of
1064  always returning `2`.
1065
1066
1067### Removed
1068
1069* Support for loading configuration from `$XDG_CONFIG_HOME/footrc`.
1070* `scrollback` option from `foot.ini`.
1071* `geometry` from `foot.ini`.
1072* Key binding action `scrollback-up` and `scrollback-down`.
1073
1074
1075### Fixed
1076
1077* Error when re-assigning a default key binding
1078  (https://codeberg.org/dnkl/foot/issues/233).
1079* `\E[s`+`\E[u` (save/restore cursor) now saves and restores
1080  attributes and charset configuration, just like `\E7`+`\E8`.
1081* Report mouse motion events to the client application also while
1082  dragging the cursor outside the grid.
1083* Parsing of the sub-parameter versions of indexed SGR color escapes
1084  (e.g. `\E[38:5...m`)
1085* Frames occasionally being rendered while application synchronized
1086  updates is in effect.
1087* Handling of failures to parse the font specification string.
1088* Extra private/intermediate characters in escape sequences not being
1089  ignored.
1090
1091
1092### Contributors
1093
1094* [kennylevinsen](https://codeberg.org/kennylevinsen)
1095* [craigbarnes](https://codeberg.org/craigbarnes)
1096
1097
1098## 1.5.4
1099
1100### Changed
1101
1102
1103* Num Lock by default overrides the keypad mode. See
1104  **foot.ini**(5)::KEYPAD, or
1105  [README.md](README.md#user-content-keypad) for details
1106  (https://codeberg.org/dnkl/foot/issues/194).
1107* Single-width characters with double-width glyphs are now allowed to
1108  overflow into neighboring cells by default. Set
1109  **tweak.allow-overflowing-double-width-glyphs** to ‘no’ to disable
1110  this.
1111
1112### Fixed
1113
1114* Resize very slow when window is hidden
1115  (https://codeberg.org/dnkl/foot/issues/190).
1116* Key mappings for key combinations with `shift`+`tab`
1117  (https://codeberg.org/dnkl/foot/issues/210).
1118* Key mappings for key combinations with `alt`+`return`.
1119* `footclient` `-m` (`--maximized`) flag being ignored.
1120* Crash with explicitly sized sixels with a height less than 6 pixels.
1121* Key mappings for `esc` with modifiers.
1122
1123
1124### Contributors
1125
1126* [craigbarnes](https://codeberg.org/craigbarnes)
1127
1128
1129## 1.5.3
1130
1131### Fixed
1132
1133* Crash when libxkbcommon cannot find a suitable libX11 _compose_
1134  file. Note that foot will run, but without support for dead keys.
1135  (https://codeberg.org/dnkl/foot/issues/170).
1136* Restored window size when window is un-tiled.
1137* XCursor shape in CSD corners when window is tiled.
1138* Error handling when processing keyboard input (maybe
1139  https://codeberg.org/dnkl/foot/issues/171).
1140* Compilation error _"overflow in conversion from long 'unsigned int'
1141  to 'int' changes value... "_ seen on platforms where the `request`
1142  argument in `ioctl(3)` is an `int` (for example: linux/ppc64).
1143* Crash when using the mouse in alternate scroll mode in an unfocused
1144  window (https://codeberg.org/dnkl/foot/issues/179).
1145* Character dropped from selection when "right-click-hold"-extending a
1146  selection (https://codeberg.org/dnkl/foot/issues/180).
1147
1148
1149## 1.5.2
1150
1151### Fixed
1152
1153* Regression: middle clicking double pastes in e.g. vim
1154  (https://codeberg.org/dnkl/foot/issues/168)
1155
1156
1157## 1.5.1
1158
1159### Changed
1160
1161* Default value of the **scrollback.multiplier** option in `foot.ini`
1162  from `1.0` to `3.0`.
1163* `shift`+`insert` now pastes from the primary selection by
1164  default. This is in addition to middle-clicking with the mouse.
1165
1166
1167### Fixed
1168
1169* Mouse bindings now match even if the actual click count is larger
1170  than specified in the binding. This allows you to, for example,
1171  quickly press the middle-button to paste multiple times
1172  (https://codeberg.org/dnkl/foot/issues/146).
1173* Color flashes when changing the color palette with OSC 4,10,11
1174  (https://codeberg.org/dnkl/foot/issues/141).
1175* Scrollback position is now retained when resizing the window
1176  (https://codeberg.org/dnkl/foot/issues/142).
1177* Trackpad scrolling speed to better match the mouse scrolling speed,
1178  and to be consistent with other (Wayland) terminal emulators. Note
1179  that it is (much) slower compared to previous foot versions. Use the
1180  **scrollback.multiplier** option in `foot.ini` if you find the new
1181  speed too slow (https://codeberg.org/dnkl/foot/issues/144).
1182* Crash when `foot.ini` contains an invalid section name
1183  (https://codeberg.org/dnkl/foot/issues/159).
1184* Background opacity when in _reverse video_ mode.
1185* Crash when writing a sixel image that extends outside the terminal's
1186  right margin (https://codeberg.org/dnkl/foot/issues/151).
1187* Sixel image at non-zero column positions getting sheared at
1188  seemingly random occasions
1189  (https://codeberg.org/dnkl/foot/issues/151).
1190* Crash after either resizing a window or changing the font size if
1191  there were sixels present in the scrollback while doing so.
1192* _Send Device Attributes_ to only send a response if `Ps == 0`.
1193* Paste from primary when clipboard is empty.
1194
1195
1196### Contributors
1197
1198* [craigbarnes](https://codeberg.org/craigbarnes)
1199* [zar](https://codeberg.org/zar)
1200
1201
1202## 1.5.0
1203
1204### Deprecated
1205
1206* `$XDG_CONFIG_HOME/footrc`/`~/.config/footrc`. Use
1207  `$XDG_CONFIG_HOME/foot/foot.ini`/`~/.config/foot/foot.ini` instead.
1208* **scrollback** option in `foot.ini`. Use **scrollback.lines**
1209  instead.
1210* **scrollback-up** key binding. Use **scrollback-up-page** instead.
1211* **scrollback-down** key binding. Use **scrollback-down-page**
1212  instead.
1213
1214
1215### Added
1216
1217* Scrollback position indicator. This feature is optional and
1218  controlled by the **scrollback.indicator-position** and
1219  **scrollback.indicator-format** options in `foot.ini`
1220  (https://codeberg.org/dnkl/foot/issues/42).
1221* Key bindings in _scrollback search_ mode are now configurable.
1222* `--check-config` command line option.
1223* **pipe-selected** key binding. Works like **pipe-visible** and
1224  **pipe-scrollback**, but only pipes the currently selected text, if
1225  any (https://codeberg.org/dnkl/foot/issues/51).
1226* **mouse.hide-when-typing** option to `foot.ini`.
1227* **scrollback.multiplier** option to `foot.ini`
1228  (https://codeberg.org/dnkl/foot/issues/54).
1229* **colors.selection-foreground** and **colors.selection-background**
1230  options to `foot.ini`.
1231* **tweak.render-timer** option to `foot.ini`.
1232* Modifier support in mouse bindings
1233  (https://codeberg.org/dnkl/foot/issues/77).
1234* Click count support in mouse bindings, i.e double- and triple-click
1235  (https://codeberg.org/dnkl/foot/issues/78).
1236* All mouse actions (begin selection, select word, select row etc) are
1237  now configurable, via the new **select-begin**,
1238  **select-begin-block**, **select-extend**, **select-word**,
1239  **select-word-whitespace** and **select-row** options in the
1240  **mouse-bindings** section in `foot.ini`
1241  (https://codeberg.org/dnkl/foot/issues/79).
1242* Implement XTSAVE/XTRESTORE escape sequences, `CSI ? Ps s` and `CSI ?
1243  Ps r` (https://codeberg.org/dnkl/foot/issues/91).
1244* `$COLORTERM` is now set to `truecolor` at startup, to indicate
1245  support for 24-bit RGB colors.
1246* Experimental support for rendering double-width glyphs with a
1247  character width of 1. Must be explicitly enabled with
1248  `tweak.allow-overflowing-double-width-glyphs`
1249  (https://codeberg.org/dnkl/foot/issues/116).
1250* **initial-window-size-pixels** options to `foot.ini` and
1251  `-w,--window-size-pixels` command line option to `foot`. This option
1252  replaces the now deprecated **geometry** and `-g,--geometry`
1253  options.
1254* **initial-window-size-chars** option to `foot.ini` and
1255  `-W,--window-size-chars` command line option to `foot`. This option
1256  configures the initial window size in **characters**, and is an
1257  alternative to **initial-window-size-pixels**.
1258* **scrollback-up-half-page** and **scrollback-down-half-page** key
1259  bindings. They scroll up/down half of a page in the scrollback
1260  (https://codeberg.org/dnkl/foot/issues/128).
1261* **scrollback-up-line** and **scrollback-down-line** key
1262  bindings. They scroll up/down a single line in the scrollback.
1263* **mouse.alternate-scroll-mode** option to `foot.ini`. This option
1264  controls the initial state of the _Alternate Scroll Mode_, and
1265  defaults to `yes`. When enabled, mouse scroll events are translated
1266  to up/down key events in the alternate screen, letting you scroll in
1267  e.g. `less` and other applications without enabling native mouse
1268  support in them (https://codeberg.org/dnkl/foot/issues/135).
1269
1270
1271### Changed
1272
1273* Renamed man page for `foot.ini` from **foot**(5) to **foot.ini**(5).
1274* Configuration errors are no longer fatal; foot will start and print
1275  an error inside the terminal (and of course still log errors on
1276  stderr).
1277* Default `--server` socket path to use `$WAYLAND_DISPLAY` instead of
1278  `$XDG_SESSION_ID` (https://codeberg.org/dnkl/foot/issues/55).
1279* Trailing empty cells are no longer highlighted in mouse selections.
1280* Foot now searches for its configuration in
1281  `$XDG_DATA_DIRS/foot/foot.ini`, if no configuration is found in
1282  `$XDG_CONFIG_HOME/foot/foot.ini` or in `$XDG_CONFIG_HOME/footrc`.
1283* Minimum window size changed from four rows and 20 columns, to 1 row
1284  and 2 columns.
1285* **scrollback-up/down** renamed to **scrollback-up/down-page**.
1286* fcft >= 2.3.0 is now required.
1287
1288
1289### Fixed
1290
1291* Command lines for **pipe-visible** and **pipe-scrollback** are now
1292  tokenized (i.e. syntax checked) when the configuration is loaded,
1293  instead of every time the key binding is executed.
1294* Incorrect multi-column character spacer insertion when reflowing
1295  text.
1296* Compilation errors in 32-bit builds.
1297* Mouse cursor style in top and left margins.
1298* Selection is now **updated** when the cursor moves outside the grid
1299  (https://codeberg.org/dnkl/foot/issues/70).
1300* Viewport sometimes not moving when doing a scrollback search.
1301* Crash when canceling a scrollback search and the window had been
1302  resized while searching.
1303* Selection start point not moving when the selection changes
1304  direction.
1305* OSC 10/11/104/110/111 (modify colors) did not update existing screen
1306  content (https://codeberg.org/dnkl/foot/issues/94).
1307* Extra newlines when copying empty cells
1308  (https://codeberg.org/dnkl/foot/issues/97).
1309* Mouse events from being sent to client application when a mouse
1310  binding has consumed it.
1311* Input events from getting mixed with paste data
1312  (https://codeberg.org/dnkl/foot/issues/101).
1313* Missing DPI values for “some” monitors on Gnome
1314  (https://codeberg.org/dnkl/foot/issues/118).
1315* Handling of multi-column composed characters while reflowing.
1316* Escape sequences sent for key combinations with `Return`, that did
1317  **not** include `Alt`.
1318* Clipboard (or primary selection) is now cleared when receiving an
1319  OSC-52 command with an invalid base64 encoded payload.
1320* Cursor position being set outside the grid when reflowing text.
1321* CSD buttons to be hidden when window size becomes so small that they
1322  no longer fit.
1323
1324
1325### Contributors
1326
1327* [craigbarnes](https://codeberg.org/craigbarnes)
1328* [birger](https://codeberg.org/birger)
1329* [Ordoviz](https://codeberg.org/Ordoviz)
1330* [cherti](https://codeberg.org/cherti)
1331
1332
1333## 1.4.4
1334### Changed
1335
1336* Mouse cursor is now always a `left_ptr` when inside the margins, to
1337  indicate it is not possible to start a selection.
1338
1339
1340### Fixed
1341
1342* Crash when starting a selection inside the margins.
1343* Improved font size consistency across multiple monitors with
1344  different DPI (https://codeberg.org/dnkl/foot/issues/47).
1345* Handle trailing comments in `footrc`
1346
1347
1348## 1.4.3
1349### Added
1350
1351* Section to [README.md](README.md) describing how to programmatically
1352  identify foot.
1353* [LICENSE](LICENSE), [README.md](README.md) and
1354  [CHANGELOG.md](CHANGELOG.md) are now installed to
1355  `${datadir}/doc/foot`.
1356* Support for escaping quotes in **pipe-visible** and
1357  **pipe-scrollback** commands.
1358
1359
1360### Changed
1361
1362* Primary DA to no longer indicate support for _Selective Erase_,
1363  _Technical Characters_ and _Terminal State Interrogation_.
1364* Secondary DA to report foot as a VT220 instead of a VT420.
1365* Secondary DA to report foot's version number in parameter 2, the
1366  _Firmware Version_. The string is made up of foot's major, minor and
1367  patch version numbers, always using two digits for each version
1368  number and without any other separating characters. Thus, _1.4.2_
1369  would be reported as `010402` (i.e. the full response would be
1370  `\E[>1;010402;0c`).
1371* Scrollback search to only move the viewport if the match lies
1372  outside it.
1373* Scrollback search to focus match, that requires a viewport change,
1374  roughly in the center of the screen.
1375* Extending a selection with the right mouse button now works while
1376  dragging the mouse.
1377
1378
1379### Fixed
1380
1381* Crash in scrollback search.
1382* Crash when a **pipe-visible** or **pipe-scrollback** command
1383  contained an unclosed quote
1384  (https://codeberg.org/dnkl/foot/issues/49).
1385
1386
1387### Contributors
1388
1389* [birger](https://codeberg.org/birger)
1390* [cherti](https://codeberg.org/cherti)
1391
1392
1393## 1.4.2
1394
1395### Changed
1396
1397* Maximum window title length from 100 to 2048.
1398
1399
1400### Fixed
1401
1402* Crash when overwriting a sixel and the row being overwritten did not
1403  cover an entire cell.
1404* Assertion failure in debug builds when overwriting a sixel image.
1405
1406
1407## 1.4.1
1408
1409### Fixed
1410
1411* Compilation errors in release builds with some combinations of
1412  compilers and compiler flags.
1413
1414
1415## 1.4.0
1416
1417### Added
1418
1419* `Sync` to terminfo. This is a tmux extension that indicates
1420  _"Synchronized Updates"_ are supported.
1421* `--hold` command line option to `footclient`.
1422* Key mapping for `KP_Decimal`.
1423* Terminfo entries for keypad keys: `ka1`, `ka2`, `ka3`, `kb1`, `kb3`,
1424  `kc1`, `kc2`, `kc3`, `kp5`, `kpADD`, `kpCMA`, `kpDIV`, `kpDOT`,
1425  `kpMUL`, `kpSUB` and `kpZRO`.
1426* **blink** option to `footrc`; a boolean that lets you control
1427    whether the cursor should blink or not by default. Note that
1428    applications can override this.
1429* Multi-seat support
1430* Implemented `C0::FF` (form feed)
1431* **pipe-visible** and **pipe-scrollback** key bindings. These let you
1432  pipe either the currently visible text, or the entire scrollback to
1433  external tools (https://codeberg.org/dnkl/foot/issues/29). Example:
1434  `pipe-visible=[sh -c "xurls | bemenu | xargs -r firefox] Control+Print`
1435
1436
1437### Changed
1438
1439* Background transparency to only be used with the default background
1440  color.
1441* Copy-to-clipboard/primary-selection to insert a line break if either
1442  the last cell on the previous line or the first cell on the next
1443  line is empty.
1444* Number of lines to scroll is now always clamped to the number of
1445  lines in the scrolling region..
1446* New terminal windows spawned with `ctrl`+`shift`+`n` are no longer
1447  double forked.
1448* Unicode combining character overflow errors are only logged when
1449  debug logging has been enabled.
1450* OSC 4 (_Set Color_) now updates already rendered cells, excluding
1451  scrollback.
1452* Mouse cursor from `hand2` to `left_ptr` when client is capturing the
1453  mouse.
1454* Sixel images are now removed when the font size is **decreased**.
1455* `DECSCUSR` (_Set Cursor Style_, `CSI Ps SP q`) now uses `Ps=0`
1456  instead of `Ps=2` to reset the style to the user configured default
1457  style. `Ps=2` now always configures a _Steady Block_ cursor.
1458* `Se` terminfo capability from `\E[2 q` to `\E[ q`.
1459* Hollow cursor to be drawn when window has lost _keyboard_ focus
1460  rather than _visual_ focus.
1461
1462
1463### Fixed
1464
1465* Do not stop an ongoing selection when `shift` is released. When the
1466  client application is capturing the mouse, one must hold down
1467  `shift` to start a selection. This selection is now finalized only
1468  when the mouse button is released - not as soon as `shift` is
1469  released.
1470* Selected cells did not appear selected if programmatically modified.
1471* Rare crash when scrolling and the new viewport ended up **exactly**
1472  on the wrap around.
1473* Selection handling when viewport wrapped around.
1474* Restore signal mask in the client process.
1475* Set `IUTF8`.
1476* Selection of double-width characters. It is no longer possible to
1477  select half of a double-width character.
1478* Draw hollow block cursor on top of character.
1479* Set an initial `TIOCSWINSZ`. This ensures clients never read a
1480  `0x0` terminal size (https://codeberg.org/dnkl/foot/issues/20).
1481* Glyphs overflowing into surrounding cells
1482  (https://codeberg.org/dnkl/foot/issues/21).
1483* Crash when last rendered cursor cell had scrolled off screen and
1484  `\E[J3` was executed.
1485* Assert (debug builds) when an `\e]4` OSC escape was not followed by
1486  a `;`.
1487* Window title always being set to "foot" on reset.
1488* Terminfo entry `kb2` (center keypad key); it is now set to `\EOu`
1489  (which is what foot emits) instead of the incorrect value `\EOE`.
1490* Palette re-use in sixel images. Previously, the palette was reset
1491  after each image.
1492* Do not auto-resize a sixel image for which the client has specified
1493  a size. This fixes an issue where an image would incorrectly
1494  overflow into the cell row beneath.
1495* Text printed, or other sixel images drawn, on top of a sixel image
1496  no longer erases the entire image, only the part(s) covered by the
1497  new text or image.
1498* Sixel images being erased when printing text next to them.
1499* Sixel handling when resizing window.
1500* Sixel handling when scrollback wraps around.
1501* Foot now issues much fewer `wl_surface_damage_buffer()` calls
1502  (https://codeberg.org/dnkl/foot/issues/35).
1503* `C0::VT` to be processed as `C0::LF`. Previously, `C0::VT` would
1504  only move the cursor down, but never scroll.
1505* `C0::HT` (_Horizontal Tab_, or `\t`) no longer clears `LCF` (_Last
1506  Column Flag_).
1507* `C0::LF` now always clears `LCF`. Previously, it only cleared it
1508  when the cursor was **not** at the bottom of the scrolling region.
1509* `IND` and `RI` now clears `LCF`.
1510* `DECAWM` now clears `LCF`.
1511* A multi-column character that does not fit on the current line is
1512  now printed on the next line, instead of only printing half the
1513  character.
1514* Font size can no longer be reduced to negative values
1515  (https://codeberg.org/dnkl/foot/issues/38).
1516
1517
1518## 1.3.0
1519
1520### Added
1521
1522* User configurable key- and mouse bindings. See `man 5 foot` and the
1523  example `footrc` (https://codeberg.org/dnkl/foot/issues/1)
1524* **initial-window-mode** option to `footrc`, that lets you control
1525  the initial mode for each newly spawned window: _windowed_,
1526  _maximized_ or _fullscreen_.
1527* **app-id** option to `footrc` and `--app-id` command line option,
1528  that sets the _app-id_ property on the Wayland window.
1529* **title** option to `footrc` and `--title` command line option, that
1530  sets the initial window title.
1531* Right mouse button extends the current selection.
1532* `CSI Ps ; Ps ; Ps t` escape sequences for the following parameters:
1533  `11t`, `13t`, `13;2t`, `14t`, `14;2t`, `15t`, `19t`.
1534* Unicode combining characters.
1535
1536
1537### Changed
1538
1539* Spaces no longer removed from zsh font name completions.
1540* Default key binding for _spawn-terminal_ to ctrl+shift+n.
1541* Renderer is now much faster with interactive scrolling
1542  (https://codeberg.org/dnkl/foot/issues/4)
1543* memfd sealing failures are no longer fatal errors.
1544* Selection to no longer be cleared on resize.
1545* The current monitor's subpixel order (RGB/BGR/V-RGB/V-BGR) is
1546  preferred over FontConfig's `rgba` property. Only if the monitor's
1547  subpixel order is `unknown` is FontConfig's `rgba` property used. If
1548  the subpixel order is `none`, then grayscale antialiasing is
1549  used. The subpixel order is ignored if antialiasing has been
1550  disabled.
1551* The four primary font variants (normal, bold, italic, bold italic)
1552  are now loaded in parallel. This speeds up both the initial startup
1553  time, as well as DPI changes.
1554* Command line parsing no longer tries to parse arguments following
1555  the command-to-execute. This means one can now write `foot sh -c
1556  true` instead of `foot -- sh -c true`.
1557
1558
1559### Removed
1560
1561* Keyboard/pointer handler workarounds for Sway 1.2.
1562
1563
1564### Fixed
1565
1566* Sixel images moved or deleted on window resize.
1567* Cursor sometimes incorrectly restored on exit from alternate screen.
1568* 'Underline' cursor being invisible on underlined text.
1569* Restored cursor position in 'normal' screen when window was resized
1570  while in 'alt' screen.
1571* Hostname in OSC 7 URI not being validated.
1572* OSC 4 with multiple `c;spec` pairs.
1573* Alt+Return to emit "ESC \r".
1574* Trackpad sloooow scrolling to eventually scroll a line.
1575* Memory leak in terminal reset.
1576* Translation of cursor coordinates on resize
1577* Scaling color specifiers in OSC sequences.
1578* `OSC 12 ?` to return the cursor color, not the cursor's text color.
1579* `OSC 12;#000000` to configure the cursor to use inverted
1580  foreground/background colors.
1581* Call `ioctl(TIOCSCTTY)` on the pts fd in the slave process.
1582
1583
1584## 1.2.3
1585
1586### Fixed
1587* Forgot to version bump 1.2.2
1588
1589
1590## 1.2.2
1591
1592### Changed
1593
1594* Changed icon name in `foot.desktop` and `foot-server.desktop` from
1595  _terminal_ to _utilities-terminal_.
1596* `XDG_SESSION_ID` is now included in the server/daemon default socket
1597  path.
1598
1599
1600### Fixed
1601
1602* Window size doubling when moving window between outputs with
1603  different scaling factors (https://codeberg.org/dnkl/foot/issues/3).
1604* Font being too small on monitors with fractional scaling
1605  (https://codeberg.org/dnkl/foot/issues/5).
1606
1607
1608## 1.2.1
1609
1610### Fixed
1611
1612* Building AUR package
1613
1614
1615## 1.2.0
1616
1617### Added
1618
1619* Run-time text resize using ctrl-+, ctrl+- and ctrl+0
1620* Font size adjusts dynamically to outputs' DPI
1621* Reflow text when resizing window
1622* **pad** option to `footrc`
1623* **login-shell** option to `footrc` and `--login-shell` command line
1624  option
1625* Client side decorations (CSDs). This finally makes foot usable on
1626  GNOME.
1627* Sixel graphics support
1628* OSC 12 and 112 escape sequences (set/reset text cursor color)
1629* REP CSI escape sequence
1630* `oc` to terminfo
1631* foot-server.desktop file
1632* Window and cell size reporting escape sequences
1633* `--hold` command line option
1634* `--print-pid=FILE|FD` command line option
1635
1636
1637### Changed
1638
1639* Subpixel antialiasing is only enabled when background is opaque
1640* Meta/alt ESC prefix can now be disabled with `\E[?1036l`. In this
1641  mode, the 8:th bit is set and the result is UTF-8 encoded. This can
1642  also be disabled with `\E[1024l` (in which case the Alt key is
1643  effectively being ignored).
1644* terminfo now uses ST instead of BEL as OSC terminator
1645* Logging to print to stderr, not stdout
1646* Backspace now emits DEL (^?), and ctrl+backspace emits BS (^H)
1647
1648
1649### Removed
1650
1651* '28' from DA response
1652