summaryrefslogtreecommitdiff
path: root/CHANGELOG.md
AgeCommit message (Collapse)Author
2020-09-22Add changelog entry for FreeType version bumpChristian Duerr
2020-09-06Pass existing CLI parameters to SpawnNewInstanceRohan Poojary
Co-authored-by: Christian Duerr <contact@christianduerr.com>
2020-08-31Disable WinPTY with windows-gnu toolchainMateusz MikuĊ‚a
Co-authored-by: Christian Duerr <contact@christianduerr.com>
2020-08-30Update smithay-clipboard to 0.5.2Kirill Chibisov
Fixes #4139. Fixes #4085.
2020-08-28Add escape to report text area sizeAyose Cazorla
This implements the escapes `CSI 14 t` and `CSI 18 t` which report the text area size in pixels and characters.
2020-08-22Add CLI parameter to override config optionsChristian Duerr
This uses the facilities added in 3c3e6870dedad56b270f5b65ea57d5a6e46b1de6 to allow overriding individual configuration file options dynamically from the CLI using the --options/-o parameter. Fixes #1258.
2020-08-21Add configuration file importsChristian Duerr
This adds the ability for users to have multiple configuration files which all inherit from each other. The order of imports is chronological, branching out to the deepest children first and overriding every field with that of the configuration files that are loaded at a later point in time. Live config reload watches the directories of all configuration files, allowing edits in any of them to update Alacritty immediately. While the imports are live reloaded, a new configuration file watcher will only be spawned once Alacritty is restarted. Since this might cause loops which would be very difficult to detect, a maximum depth is set to limit the recursion possible with nested configuration files. Fixes #779.
2020-08-14Fix selection scrolling with message bar visibleChristian Duerr
This resolves an issue with selection scrolling which would cause the selection to wrap to the top of the screen once the cursor enters the padding below the message bar. Fixes #4120.
2020-08-13Use yellow/red from the config for message bar colorsKirill Chibisov
This commit completes the effort to use config colors for message bar content by picking red/yellow from user's colors.normal.{red,yellow} for error/warning messages instead of fixed colors. It also removes alacritty_terminal::term::color::RED and alacritty_terminal::term::color::YELLOW from the alacritty_terminal API, bumping its version to 0.11.0-dev. Fixes #4116.
2020-08-13Use user's background color for render timer textKirill Chibisov
Using the user's background color in pair with red should provide better contrast.
2020-08-12Add support for double underlinesChristian Duerr
This adds support for double underlines using the colon separated escape sequence `CSI 4 : 2 m`. Alacritty will now also always fallback to the normal underline in case any of the other underlines like the undercurl are specified. The escape sequence `CSI 4 : 0 m` can now be used to clear all underlines. Some terminals support `CSI 21 m` for double underline, but since Alacritty already uses that as cancel bold which is a little more consistent, that behavior has not changed. So the colon separated variant must be used.
2020-08-12Fix handling of wrapline flag in last lineChristian Duerr
This resolves an issue where Alacritty would crash when a wrapline flag was present in the last column of the last line. While it should not be possible to achieve this with normal text flow, it is possible to rotate the content downwards using the `CSI Ps T` escape, causing this bug to occur. This also works around other issues like the vi cursor jumping to the top of the screen when trying to move beyond the last column using the `l` key. In debug mode this even lead to a crash due to the overflow. Fixes #4109.
2020-08-09Fix characters swallowed during searchChristian Duerr
This resolves a bug where characters get swallowed when pressing them after pressing backspace before the backspace key is released.
2020-08-10Add ^C binding to cancel search and leave Vi modeChristian Duerr
Fixes #4089.
2020-08-07Add support for colon separated SGR parametersChristian Duerr
This implements the colon separated form of SGR 38 and 48. Fixes #1485.
2020-08-06Use `tcgetpgrp` to get PID for SpawnNewInstanceChristian Duerr
Fixes #4082.
2020-08-05Reduce InstanceData footprintJoe Wilm
The InstanceData type in the rendering subsystem was previously 17 f32s plus one u8 which occupied a total of 72 bytes per instance. This meant that for every character or background cell drawn, 72 bytes were sent to the GPU. In the case of a 400x100 cell grid, a total of 2.9MB would be sent. This patch reduces InstanceData's size to 36 bytes, a 50% improvement! Using the above example for comparison, a worst case of 1.44MB would be transferred. The motivation for this patch comes from macOS. Once the terminal grid would reach a certain size, performance experienced a sharp and dramatic drop (render times would go from ~3ms to ~16ms). I don't want to speculate too much on the underlying issue, but suffice it to say that this patch alleviates the problem in my testing. While the performance impact was most significant on macOS, with rendering times cut by more than 50% in some cases, this also results in a measurable performance difference on other systems with high density grids. Co-authored-by: Christian Duerr <contact@christianduerr.com>
2020-08-02Fix negative window positionChristian Duerr
This resolves an issue where negative window positions set in the configuration file would not place the Alacritty window in the correct location. Fixes #4061.
2020-08-01Remove 0.5.0 changelog suffixKirill Chibisov
This is only an update to the changelog and does not represent a stable release.
2020-07-31Unify changelog section orderChristian Duerr
This clarifies the order of subsections in the changelog. All entries are now defined in the order `Packaging`, `Removed`, `Added`, `Changed` and `Fixed`. The sections `Security` and `Deprecated` have been removed. Since deprecation should always just be a soft deprecation with clear user warnings, it's not much different from just `Changed`, so that should make it easier to decide where to put things. The `Security` section is often not clear enough since a lot of changes might have some form of security impact depending on interpretation. Since there's unlikely to be any major security advisories from the Alacritty project, that section is not particularly useful. The `Added`, `Changed` and `Fixed` order follows the interest of the user and the impact on them. This puts the most interesting new features front and center while allowing to go for a deep dive to see if specific bugs have been fixed. The `Removed` section was put last since realistically this should not affect users. All options should be gradually deprecated and no major features should just get removed. So most of the time this will just list deprecated features that are now completely removed, which usually means there's no impact for users that updated from the last version.
2020-07-31Fix 0.5.0 changelogChristian Duerr
2020-07-30Remove snap packaging configChristian Duerr
Since Alacritty should not be responsible for packaging and the maintainers of the snap package have not kept it up to date, this removes its configuration file.
2020-07-28Bump minimum supported Rust version to 1.43.0Kirill Chibisov
2020-07-26Invert fixed color cursor if it's close to cell bgChristian Duerr
This should reduce the number of times people with fixed cursor colors run into troubles when existing text is already colored. Using just the background color as a metric instead of both background and foreground color should ensure that the cursor still has a clear shape, since just changing the foreground color for a cursor might be difficult to see. Always inverting the entire cursor instead of keeping the fixed foreground color is important to make sure the contrast isn't messed up. Fixes #4016.
2020-07-23Add secondary DA supportChristian Duerr
This adds support for the secondary DA escape sequence response. Alacritty's version is formatted allowing for up to 99 minor and patch versions, which should be sufficient. The tertiary DA is intentionally not implemented and marked as rejected in the documentation, since a lot of terminals do not support it, or report useless data (XTerm/URxvt/Kitty). Fixes #3100.
2020-07-22Improve selection expansion changelog entryChristian Duerr
2020-07-19Bump version to 0.6.0-devChristian Duerr
2020-07-14Fallback to SHELL instead of passwd if presentMattbazooka
Instead of just always falling back to the shell specified in the passwd file when no config or cli shell was specified, Alacritty will not first look at the `$SHELL` environment variable. If this is unset, it will still read the passwd file. Since macOS is a bit peculiar and does not set the `$SHELL` environment variable by default, it is set manually to the shell used by Alacritty while any existing `$SHELL` variables are ignored. This matches the behavior of iTerm and Terminal.app. Co-authored-by: Christian Duerr <contact@christianduerr.com>
2020-07-14Fix freetype 26.6 format conversioncynecx
This resolves a rounding issue when converting to the 26.6 format used by freetype for character sizes. This rounding behavior is taken from cairo: https://gitlab.freedesktop.org/cairo/cairo/-/blob/master/src/cairo-ft-font.c#L900-903 There are various different implementations of the F26Dot6 conversion online, but the rounding that cairo does seems to be the most common. Since cairo is very commonly used, it should produce good results compared with the rest of Linux text rendering. Fixes #2780. Co-authored-by: Christian Duerr <contact@christianduerr.com> Co-authored-by: Kirill Chibisov <contact@kchibisov.com>
2020-07-11Remove gui dependencies from alacritty_terminalKirill Chibisov
This commit removes font dependency from alacritty_terminal, so it'll simplify the usage of alacritty_terminal as a library, since you won't link to system's libraries anymore. It also moves many alacritty related config options from it. Fixes #3393.
2020-07-11Fix crash when configured font is missingChristian Duerr
Fixes #3942.
2020-07-10Add option to run command on bell Kirill Chibisov
Fixes #1528.
2020-07-10Set default FreeType propertiesKirill Chibisov
In addition it also starts respecting Fontconfig's `autohint` and `hinting` options. Fixes #3534.
2020-07-10Bump urlocator and unicode-widthChristian Duerr
2020-07-10Fail compilation if Fontconfig is not installed on Linux/BSDKirill Chibisov
Statically linking Fontconfig was leading to slow startup and various errors, so forcing the use of system's library.
2020-07-09Add regex scrollback buffer searchChristian Duerr
This adds a new regex search which allows searching the entire scrollback and jumping between matches using the vi mode. All visible matches should be highlighted unless their lines are excessively long. This should help with performance since highlighting is done during render time. Fixes #1017.
2020-07-09Fix cursor reflowChristian Duerr
To make sure that output is consistent even while resizing the window, the cursor will now reflow with the content whenever the window size is changed. Since the saved cursor is more likely to represent a position in the grid rather than a reference to the content below it and handling of resize before jumping back to it is more likely than with the primary cursor, no reflow is performed for the saved cursor The primary cursor is unfortunately always reflowed automatically by shells like zsh, which has always caused problems like duplicating parts of the prompt and stretching it out "infinitely". Since the cursor is now reflowed appropriately the duplication of the shell prompt should be reduced, however it is possible that the shell moves the cursor up one line after it has already been reflowed, which will cause a line of history to be deleted if there is no duplicated prompt line above the reflowed prompt. Since this behavior is identical in VTE and Kitty, no attempt is made to work around it in this patch. Fixes #3584.
2020-07-06Fix saved cursor handlingChristian Duerr
This resolves several problems with handling of the saved cursor when switching between primary and alternate screen. Additionally ref-tests are also added for all common interactions to make sure the behavior does not regress. The behavior is based on XTerm's behavior except for interaction with `reset`. XTerm does not reset the alternate screen's saved cursor on `reset`, but VTE does. Since a `reset` should reset as much as possible, Alacritty copies VTE here instead of XTerm.
2020-07-06Preserve linewrap flag across alt screen switchesChristian Duerr
While neither VTE, URxvt nor Kitty handle this, preserving the linewrap flag across alternate screen switches seems like the correct thing to do. XTerm also does handle this correctly, which indicates that it is a bug and not a feature.
2020-07-04Add auxiliary files to macOS Application bundleAndrew Zhou
Fixes #2653.
2020-07-04Update --help for class option to match manpageJeff Windsor
2020-07-01Fix reflow of empty wrapped cursor lineChristian Duerr
This bug was caused by trying to grow the terminal while the cursor line was wrapped but entirely empty. Resizing the terminal now accounts for the position of the deleted line and moves the cursor up only when the line deleted was above it. The deletion of the line was caused by the shell redrawing itself whenever the cursor is moved. Fixes #3583.
2020-06-29Fix foreground dimming with truecolor textCarlo Abelli
Fixes #3766.
2020-06-26Clear selection on clear line/screen escapesKirill Chibisov
Selection is now cleared if clear line or clear screen escape sequences are clearing content behind it.
2020-06-25Fix scroll down escape pulling lines from historyChristian Duerr
This works around a bug where the optimized version of the `Grid::scroll_down` function would just rotate the entire grid down if the scrolling region starts at the top of the screen, even if there is history available. Since rotations of scrolling regions should not affect the scrollback history, this optimized version is now only called when the max scrollback size is 0, making it impossible for the grid to have any history while it is used. Since the main usecase of this is the alternate screen buffer, which never has any history, the performance should not be affected negatively by this change. Fixes #3582.
2020-06-23Add selection expansionChristian Duerr
This allows for expanding the selection using the right mouse button. The new selection type depends on the number of clicks and applies to both sides of the selection. Fixes #1554.
2020-06-18Add automatic scrolling during selectionChristian Duerr
This adds a new `Scheduler` which allows for staging events to be processed at a later time. If there is a selection active and the mouse is above or below the window, the viewport will now scroll torwards the direction of the mouse. The amount of lines scrolled depends on the distance of the mouse to the boundaries used for selection scrolling. To make it possible to scroll while in fullscreen, the selection scrolling area includes the padding of the window and is at least 5 pixels high in case there is not enough padding present.
2020-06-15Rework default config binding replacementKirill Chibisov
This reworks the criteria necessary for default bindings to be overwritten by custom user bindings. It should provide a better heuristic which accounts for the possibility that notmodes are added which prevent a conflict between the bindings, so the default isn't unnecessarily removed. It is still possible to define a new binding that intersects a default binding without the default getting removed, if the user explicitly specifies a mode that doesn't include the default binding's mode. This is based on the assumption that users explicitly specifying a new mode are trying to make a mode-specific addition and are capable of removing the default when desired. This helps with old modes still being present in user's config files, since a lot of new config options just have the additional ~Vi mode set. Fixes #3476.
2020-06-04Fix font rendering regression on macOSJade Michael Thornton
This fixes a regression introduced in 77f2d6e853f1ad54e6dc844a811b78daeb463e76. Fixes #3809.
2020-06-03Add version 0.4.3 entries to changelogChristian Duerr