Skip to content

Releases

0.5.2 (unreleased)

  • Fixes search editor preservation bug on exit from search mode
  • Expose current profile's name through env var CONTOUR_PROFILE (#1637)
  • Add terminal tabs (#90)
  • Add SaveScreenshot and CopyScreenshot action (#210)
  • Protect user from accidentally pasting too large input (#1198)
  • Add binding to exit normal mode with Esc (#1604)
  • Add config option to switch into insert mode after yank (#1604)
  • Add vi-like normal mode Jumps. '', C-O and C-I motions (#1101)
  • Improves window size/resize handling on HiDPI monitor settings (#1628)
  • Improves macOS key handling for Option+Left|Right keys to jump between words in the shell
  • Fixes cropping of underscore character for some fonts (#1603)
  • Fixes DECFRA limits (#1664)
  • Fixes underline styles not being reset on switching to a new style (#1365)

0.5.1 (2024-09-30)

  • Fixes vi-mode motions like viW, yiW, oiW as well as B and W
  • Fixes rendered backend loading from config
  • Fixes mouse wheel scrolling on High-DPI screens feeling too slow
  • Enable support for Unicode version 16.0.0 (#1606)
  • Port to C++20's std::format() (#1598)
  • Drop support for Ubuntu 23.10 and older. In order to have less burdain of maintencne, we only support the latest LTS of Ubuntu, which currently is 24.04 (#1607)

0.5.0 (2024-09-18)

  • macOS package is now Apple Silicon native
  • Add CoreText font fallback implementation for macOS (#1533)
  • Add Ubuntu-24.04 in github actions (#1460)
  • Add 'early_exit_threshold' config option (#1460)
  • Add AppImage package with Qt6 support (#586)
  • Add ability to customize the indicator statusline through configuration (#687)
  • Add generation of config file from internal state (#1282)
  • Add SGRSAVE and SGRRESTORE VT sequences to save and restore SGR state (They intentionally conflict with XTPUSHSGR and XTPOPSGR)
  • Add extended word selection feature (#1023)
  • Add some more missing vi input motions, such as y$, o$, and many others as initiated by y and o (#1441)
  • Add CPM fallback for the dependencies
  • Add static build
  • Add shell integration for bash shell.
  • Add better bell sound (#1378)
  • Add config entry to configure behaviour on exit from search mode
  • Add config entry to configure font fallback (#225)
  • Add handling of different input commands (#629)
  • Add key bindings disabled indicator for status line (#783)
  • Add support for highlighting matches of the currently selected text area (beyond double click)
  • When switching to normal mode screen will stay in same position (#808)
  • Add customizable per-input-mode default text/background coloring for indicator statusline (#1528)
  • Add option PasteSelection to paste text as a shell input (#1549)
  • Add case-insensitive smart search (#1410)
  • Add OpenBSD support
  • Add new CLI command: contour info config to list missing entries from config file (#1125).
  • Add xdg-terminal-exec support (#1570).
  • Add predefined color palettes (monokai, gruvbox-light/dark, solarized-light/dark, papercolor-light/dark, one-light, one-dark) (#1285).
  • Update of contour.desktop file (#1423)
  • Changed configuration entry values for font_locator down to native and mock only (#1538).
  • Do not export the TERM environment variable on Windows OS (when using ConPTY).
  • Fixes line corruption after resize (#883)
  • Fixes resize of trivial line (#916)
  • Fixes copying of wrapped line
  • Fixes deletion of spaces on resize
  • Fixes forwarding of input while in normal mode (#1468)
  • Fixes OSC-8 link id collision (#1499)
  • Fixed overlap of glyphs for long codepoints (#1349)
  • Fixed too verbose info during ssh session login (#1447)
  • Fixes corruption of sixel image on high resolution (#1049)
  • Fixes bad wording of OS/X to macOS (#1462)
  • Fixes key bindings and search prompt collision (#1472)
  • Fixes CSI 8 ; (COLS) ; (ROWS) t to resize the terminal with respect to High-DPI
  • Fixes screen sampling with multiple monitors (#940)
  • Fixes bell sound in spawned window in same process (#1515)
  • Fixes status line crush (#1511)
  • Fixes application window icon on (KDE) Wayland
  • Fixes missing keymapping for numpad (#1325)
  • Improves handling of constant bell sound spawning
  • Fixes yW (yank WORD) not working properly in normal mode (#1448)
  • Fixes key mapping Shift+Tab (#1578)

0.4.3 (2024-02-04)

  • Fixes dead lock bug on mouse selection.

0.4.2 (2024-02-03)

  • Fixes Windows alt/control key modifiers (#1408).
  • Fixes Windows built accidentally not including builtin-SSH support (#1427).
  • Fixes some text run segmentation problems, e.g., not making use of some programming ligatures (#395).
  • Fixes mouse scroll wheel events going into the wrong direction if Alt modifier was pressed at the same time (#394).
  • Fixes scripts/install-deps.sh for openSuSE (Tumbleweed) to install the correct dependencies.
  • Fixes missing dependencies for release .deb packages (#1397).
  • Fixes legacy keyboard input protocol not reporting non-Alt modifier (#1411).
  • Fixes thread safety issue on mouse move event handling (#1444).
  • Digitally sign MacOS release binaries using a valid Apple ID.
  • Add support for authenticating to SSH servers with a private key without a password and without requesting for one - also allow password retry (#1425).
  • Default history limit is now 1000 lines rather than 0 lines.

0.4.1 (2023-12-31)

  • Fixes fast scrolling when using trackpad (#1360)
  • Fixes variable fonts loading
  • Fixes Command modifier for input mappings, such as Command+C or Command+V on on MacOS (#1379).
  • Fixes CSIu encoding of shift modifier produced characters (#1373).
  • Fixes screen destruction on sibling cells when overwriting wide characters, such as Emoji, Kanji, etc.
  • Changes VT sequence DECSCUSR (CSI ? 0 SP q and CSI ? SP q) to reset to user-configured cursor style (#1377).
  • Remove contour-latest terminfo file. Please use contour terminfo instead.
  • Adds Command as modifier to input mappings on MacOS to work along with Meta for convenience reasons (#1379).
  • Adds config option profiles.*.margins to allow customizing the horizontal / vertical margins (#1384).
  • Adds config option for colorscheme default.bright_foreground and default.dimmed_foreground to configure bright and dimmed default foreground text respectively (#1383).

0.4.0 (2023-12-19)

  • Fixes GUI terminating on idle input in some conditions.
  • Fixes search term rendering highlighting for search terms containing whitespaces (#966).
  • Fixes rendering in cases of glyphs with inverted orientation (#1115).
  • Fixes Emoji rendering being too small on macOS (#1215)
  • Fixes config option show_title_bar (#1153)
  • Fixes VT sequence DECSTBM and DECSLRM defaulting parameters (#1164).
  • Fixes VT sequence DECFRA (#1189).
  • Fixes VT sequence DECSCPP and DECCOLM (#1205).
  • Fixes VT sequence DECALN to properly reset margins when statusline is shown
  • Fixes VT sequence ED (CSI J) when statusline is shown.
  • Fixes VT sequence SM ?1003 (Any Event mouse tracking) not reporting mouse move events.
  • Fixes VT sequence XTWINOPS (CSI 22 t and CSI 23 t) to not assert and terminate the terminal but default to missing paramter 0 instead (#1369).
  • Fixes VT sequences CUU/CUD/CUF/CUB to better respect margins (#1201)
  • Fixes printing over 2nd cell of a wide character should delete wide character (#1268)
  • Fixes URI re-encoding of local files in OSC 8 (#1199)
  • Fixes LCD subpixel rendering for overly wide US-ASCII glyphs (#1022)
  • Fixes alive process when GUI is closed
  • Fixes vi mode f action freeze on last line
  • Fixes AltGr handling on Windows (#150)
  • Fixes rarely happening bad access to GPU texture atlas (#1309)
  • Fixes terminal session not being terminated when the process terminated, but the PTY handle was still open (e.g. by other processes).
  • Fixes setting window class (app_id) on Wayland (#1336)
  • Fixes screen margins not being shared across primary and alt screen, as it should be.
  • Do not clear search term when entering search editor again.
  • Clear search term when switch to insert vi mode (#1135)
  • Delete dpi_scale entry in configuration (#1137)
  • Removes the ability to inline colorschemes within a configuration profile. Colorschemes must now always be referenced by their name.
  • Moves the vi-like cursor with the viewport when scrolling up/down.
  • Adds normal mode motion Ctrl+e and Ctrl+y to vertically move the viewport.
  • Adds the ability to chose a color scheme based on the operating systems's dark/light mode setting. This will change live whenever the OS's dark/light mode setting changes as well (#604).
  • Adds VT sequence DECSSCLS (change scroll speed) and properly handle DECSCLM (enable slow scrolling mode) (#1204)
  • Adds VT sequence parameter ?996 to DSR to request a report of current color scheme dark/light mode hint.
  • Adds VT sequence SM ?2031 and RM ?2031 to enable/disable unsolicited DSR for color scheme updates by the user or OS.
  • Adds support the extended CSIu keyboard protocol to better report key modifiers.
  • Adds extended keyboard protocol support (CSI u) to better report key modifiers.
  • Adds support vor horizontal mouse scrolling event reporting sequences.
  • Adds percentage value to Indicator Statusline to indicate scroll offset in scrollback buffer.
  • Adds inheritance of profiles in configuration file based on default profile (#1063).
  • Adds config option profiles.*.bell to adjust BEL behavior (#1348) and fixes (#1162) and (#1163).
  • Adds config option profiles.*.frozen_dec_modes to permanently enable/disable certain DEC modes.
  • Adds config option profiles.*.option_as_meta to allow remapping Option key to Alt on MacOS.
  • Adds config option profiles.*.ssh to allow connecting to an SSH server directly from Contour.
  • Adds capital A and I keys to switch from normal mode back to insert mode, too.
  • Adds size indicator window on resize (#1203).
  • Adds config entry profile.*.size_indicator_on_resize to control size indicator on resize and makes resize indicator small.
  • Adds OpenSelection action, and honor case in the configuration bindings
  • Adds open resource (URL, local file) feature also to vi mode.
  • Adds configurable window alerts on terminal bells.

0.3.12 (2023-05-29)

  • Fixes terminfo tsl to how todays apps are using it (e.g. zsh) to simply set the window title.
  • Fixes selecting a single character not working easily (#1066).
  • Fixes cycling between different selection modes (by speed-clicking) not properly working.
  • Fixes tcsh shell integration not working (#1074).
  • Fixes [count]w ignoring the [count] parameter in modal mode.
  • Fixes statusline being misplaced after resize when being in alt screen (#1091).
  • Fixes hyperlinks with IDs (#1088)
  • Fixes hyperlink highlight when screen has been scrolled (#1084)
  • Fixes cursor shape changes when entering vi-like normal mode or visual mode.
  • Improves mouse selection to be more natural extending into new grid cells.
  • Modal mode: Improves how [m jumps from the current prompt to the next prompt above it.
  • Adds profiles.*.permissions.display_host_writable_statusline to allow the user to intervene in DECSSDT 2 VT sequence to show the host writable statusline.
  • Adds config entry input_method_editor colorscheme key to allow customization of the IME (input method editor) region (#1058).
  • Adds gui.shader log option for the output of shader configuration procedure (#715).
  • Adds config entry profiles.*.status_line.position to change statusline position to be either bottom (default) or top.
  • Adds config entry profiles.*.status_line.sync_to_window_title to synchronize the window title with the host writable statusline (if it was denied to be shown).
  • Linux: Adds support for writing to utmp/wtmp.
  • Extends ViNormalMode to toggle between insert and normal mode rather than just entering normal mode.
  • Modal mode: Adds Return key to also move the cursor down (like vim).
  • Model mode: Adds text object im and am to select the range between two line marks.
  • Model mode: Adds handling of Home and End keys (#1098).

0.3.11 (2023-03-01)

  • Fixes normal mode motion J and K that got accidentally unimplemented and make it also available to visual mode.
  • Fixes use of config bypass_mouse_protocol_modifier that was ignored.
  • Fixes abnormal termination on incomplete foreground/background color-pair specification.
  • Fixes SendChars input acion to actually send the chars as-is to the standard input of the connected application.
  • Fixes mouse selection to only be initiated if actually meant to, i.e. in alt screen mode only if bypass-modifier was pressed (#1017).
  • Fixes mouse selection within scrolloff setting to not cause the viewport to jump anymore (#1019).
  • Fixes rendering sixel image when status line is active (#1050).
  • Adds normal mode motion [[, ]], [], ][ mimmicking exactly what vim does.
  • Adds normal mode motion [m and ]m to jump line marks up/down.
  • Adds normal mode motion mm to toggle the line mark at the current active cursor position.
  • Adds normal mode motion t{char}, T{char}, f{char}, F{char}, ;, , to move cursor in line till before/after or to given {char}.
  • Adds config entry vi_mode_highlight to color palette to highlight current cursor's line when not in insert mode (aka. in Vi-mode).
  • Adds shell integration for fish shell.
  • Adds shell integration for tcsh shell.
  • Improve performance of parsing UTF-8 text on ARM64 platfroms through the use SIMD instructions.
  • Contour can now run on platforms not supporting hardware crypto extension for ARM64 nor AES-NI for x86-64. Hardware acceleration support can be configured to be included at compile time.
  • Fixes scroll up when infinte history limit is set

0.3.10 (2023-01-22)

  • Fixes initial_working_directory setting being ignored (#946).
  • Fixes background image being accidentally inverted (Bug introduced in 0.3.3.204).
  • Fixes crash in some corner cases of too small fonts (#949).
  • Fixes linefeed not inheriting graphics attributes when scrolling up to create a new line (#945).
  • Fixes normal mode's motion [count]| that was off by one.
  • Fixes switching to normal mode sometimes placing the vi cursor wrong.
  • Fixes vi-like normal mode's word motions w, e, and b to better emulate vim's behaviour.
  • Fixes copying text to clipboard stripping TAB-character generated spaces (#982).
  • Fixes BEL's audio feedback not working on some platform by streamlineing the behaviour with a custom bell sound.
  • Adds new config option word_highlight_current and word_highlight_other to better distinguish between double-click initiated word highlights and actual searches / selections.
  • Adds trace mode to single-step through each VT sequence. New actions: TraceEnter, TraceLeave, TraceStep, TraceBreakAtEmptyQueue and new mode flag Trace.
  • Adds implementation for SO and SI control codes.
  • Adds ability to explicitly disable a font feature by prefixing the feature with a -, such as -calt, explicitly enabling via + prefix was added as well.
  • Adds terminal capability hs and es to improve status-line feature detection via terminfo.
  • Adds normal mode motion: B, B, E.
  • Adds support for mouse in normal mode for selection and normal-mode's cursor placement.
  • Changes terminfo entries tsl, fsl and dsl to make use of the host-writable statusline.
  • Improvements to text objects in vi-like normal mode (i), a), i>, a>, i], a], i}, a}).
  • Improvements to vi-like normal mode: yank-motions (yw, y$, etc).
  • Improvements to vi-like normal mode: support nested matching pairs, such as {, ( etc in text objects.
  • Improvements to vi-like normal mode: Add % motion to jump to matching symbol pairs.
  • Improvements to vi-like normal mode: Add M motion to jump to middle screen line (same column).
  • Improvements to vi-like normal mode: Add P to paste the clipboard with newlines stripped.
  • Improvements to vi-like normal mode: Add SP and BS to move left/right.

0.3.9 (2022-12-24)

  • Fixes statusline clock to show the correct local time.
  • Fixes running within OpenGL/ES context.
  • Fixes failing startup due to background_image.path pointing to a non-existing file (#928).
  • Fixes terminfo entries Se, and adds missing entries Rmol, Sync (#936).
  • Fixes rendering glitches (reverting PR #918 until a better solution has been found).
  • Fixes loading TTC (TrueType Collection) font files not honor which face to load within the collection (#939).
  • Adds config entry mouse.hide_while_typing to specify mouse behavior while typing whether hide it or not.
  • Adds config entry indicator_statusline_inactive colorscheme key to colorize the status line differently when the terminal is currently not in focus.

0.3.8 (2022-12-18)

  • Fixes restoring the cursor visibility after leaving alternate screen when application wasn't restoring mode switches in reverse order.
  • Fixes country flags rendering due to misleading grapheme cluster segmentation in corner cases.
  • Fixes mouse reporting in primary screen when viewport has been scrolled into the scrollback area.
  • Fixes VT sequence DECSTR (soft reset) to not move the cursor to home position.
  • Fixes cursor movements for the vi-like cursor (normal mode).
  • Fixes Alt+Backspace on macOS.
  • Fixes default config entry profiles.*.draw_bold_text_with_bright_colors (it was renamed from profiles.*.bold_is_bright). Please rename this in your existing configuration if not done yet.
  • Fixes sometimes rendering two cursors when statusline is shown.
  • Fixes normal mode's page top (S-H)/ page bottom (S-L) cursor movements to respect scroll offset.
  • Fixes VT sequences RIS and action ClearHistoryAndReset when statusline is shown.
  • Fixes cursor going beyond the terminal screnn in vim mode, move right motion (#917).
  • Fixes selection while statusline is shown. (#910)
  • Improves hard-reset (RIS) to restore initial statusline state.
  • Improves $ motion in vi-like normal mode to point to the last non-empty grid cell in the current line instead of the right page margin.
  • Vi Mode search can handle line wrapping and searchText larger than line length (#869) (#870).
  • Adds ability to highlight same words on double click via profile.*.highlight_word_and_matches_on_double_click.
  • Adds color scheme key indicator_statusline.foreground and indicator_statusline.background to customize indicator statusline colors.
  • Adds clock to indicator status line.
  • Adds current viewport position in scrollback buffer to indicator status line.
  • Adds optional parameter strip to PasteClipboard configuration action to allow stripping newlines and normalizing whitespaces.
  • EXPERIMENTAL: Adds VT extension to enable passive mouse tracking via CSI ? 2029 h / CSI ? 2029 l. Passive mouse tracking enables the application to get notified on mouse events while still allowing mouse selection.
  • EXPERIMENTAL: Adds VT extension to enable text selection tracking via CSI ? 2030 h / CSI ? 2030 l.

0.3.7 (2022-11-01)

  • Fixes display of non-insert mode (vi-like) cursor on monochrome lines.
  • Fixes cursor movements on wide characters for the vi-like cursor.
  • Fixes TERM value resolving in Flatpak environment when not escaping the sandbox.

0.3.6 (2022-10-30)

  • Fixes ground-state infinite loop in corner case + refactor and tiny optimization.
  • Fixes assertion in optimized bulk text processing.
  • Fixes rare displacement of characters following a wide character (e.g. Emoji) in some cases.
  • Fixes IME (input method editor) background rendering for wide characters (e.g. Kanji).
  • Fixes escape_sandbox config option that wasn't set to true by default as documented.
  • Improve throughput performance for scroll-up when custom vertical margins are in effect.
  • Improve rendering performance slightly for so called trivial lines.
  • Adds menu entry to Dolphin file manager to open Contour at current working directory.

0.3.5 (2022-10-21)

  • Fixes a problem with oversized glyphs being wrongly cut off (#821).
  • Fixes Sixel handling of non-standard aspect ratio (#827).
  • Fixes Sixel mode, when updating the color palette with a new color, that color must also be used for subsequent paints.
  • Fixes vertical cursor movement for Sixel graphics with only newlines (#822).
  • Fixes Sixel rendering for images with aspect ratios other than 1:1.
  • Fixes Sixel rendering for images that show below but should be rendered above text (#831).
  • Fixes cursor highlight in VI mode
  • Removes images.sixel_cursor_conformance config option.
  • Adds VT sequence DECSCA, DECSEL, DECSED and DECSERA to support protected grid areas during erase operations (#29, #30, #31).
  • Improve Input Method (IME) handling, visualizing preedit-text.
  • Improve throughput performance of arbitrary complex Unicode.
  • Update Unicode data to version 15.0.0 (release). See Announcing The Unicode® Standard, Version 15.0.0.

0.3.4 (2022-09-13)

  • Fixes selection magically deselecting when indicator status line was shown and the top page line was selected.
  • Fixes interpretation of VT sequence DECSDM to disable Sixel auto-scrolling, if enabled.
  • Fixes visibility of the cursor in some situation when blending too much into the background color.
  • Fixes dim/faint coloring to not affect background and default text coloring when feint SGR attribute is set (#786).
  • Fixes SGR 9 (crossed out) and 53 (overline) to both look like underline.
  • Fixes size of drawn sixel image if no size is given beforehand (#809).
  • Fixes glyph rendering for some unexpectly oversized glyphs (#423).
  • Adds line#24 to terminfo file for backwards compatibility.
  • Adds configuration key live_config to determine whether or not to reload running terminal instances on every config file change.
  • Adds DEC-mode 2027 for enabling/discovering Unicode support as per draft specification (Terminal Unicode Core).
  • Adds CreateDebugDump action to dump terminal state for debugging purposes.
  • [Flatpak] Adds configuration key profiles.*.escape_sandbox to decide whether or not to escape the sandbox.
  • [Packaging] Adding AppImage files to Github release page and CI artifacts and bump Ubuntu packages using Ubuntu 22.04 LTS
  • [Linux] Changes context menu icon for "Run in Contour" action to be the Contour logo.
  • Improve startup-time by not pre-rasterizing all printable US-ASCII codepoints at once.

0.3.3.204 (2022-08-30)

  • Fixes a screen buffer manipulation bug that may happen on non-stylyzed but interactive command prompts (#787).
  • Fixes viewport misalignment when in scrollback area white new lines are being added to the main page area.
  • Fixes logging file toggle.
  • Adds VT sequence CSI 5m (blink) and CSI 6m (rapid blink).
  • Adds vim-like scrolloff feature to normal mode cursor movements to ensure a line padding when scrolling up/down.
  • Adds vim-like incremental search functionality with realtime highlighting and cycling through the matches.
  • Adds ability to initiate search via configuration action SearchReverse in input mappings.
  • Adds ability to cancel highlighted search terms via configuration action NoSearchHighlight in input mappings.
  • Adds input mapping mode Search to conditionally enable input mapping when a search term is present.
  • Adds support for HSL colorspace in Sixel images.
  • Adds configuration key colorscheme.*.search_highlight for coloring search matches.
  • Adds configuration key colorscheme.*.search_highlight_focused for coloring the active search match, containing the cursor.
  • Adds alpha value to colorscheme.*.vi_mode_highlight color configuration.
  • Adds VT sequence for ANSI mode NLM (NewLine Mode).
  • Always show indicator status line when ANSI mode KAM is enabled (which can be toggled via action ToggleInputProtection).
  • Always show indicator status line when in non-insert mode.
  • [Linux] Changes the .desktop file name and icon file name to conform to the flatpak recommendations.
  • [Linux] Provide an AppStream XML file.
  • [Linux] Drop KDE/KWin dependency on the binary by implementing enabling blur-behind background manually.
  • [Linux] Adds support for blur-behind window on GNOME shell.
  • [Flatpak] Also pass stdout-fastpipe (3) to shell.
  • [Flatpak] Do not set controlling terminal in order to allow TTY abilities like Ctrl+C. This seems to be a known bug in flatpak.
  • [Flatpak] Exposes TERMINFO environment variable pointing to a valid path containing the contour terminfo file.
  • Changes behavior of PTY (and shell process) creation until only when a PTY is required by the terminal emulator during instanciation, possibly avoiding problems with xdotool running too early.
  • Internal: Y-axis inverted to match GUI coordinate systems where (0, 0) is top left rather than bottom left.

0.3.2.202 (2022-07-07)

  • Fixes writing to a non-empty line sometimes destroying the contents of that line (#702).
  • Fixes underline decoration for wide character cells.
  • Fixes SGR 8 (Conceal/Hidden) attribute doesn't work as expected (#699).
  • Fixes Synchronized Updates (SM/RM ? 2026) sometimes lagging behind in rendering.
  • Fixes SGR and text breakage when altering charsets via ESC ( 0 VT sequence (#661).
  • Fixes SEGV when closing the terminal via GUI close button.
  • Fixes scrolling in alt-screen.
  • Fixes VT sequence for setting indexed color from palette.
  • Fixes some config false positives error messages.
  • Fixes command line arguments parser handling of -- for switching to verbatim mode (#670).
  • Fixes rendering of U+E0B2  in pixel-perfect box drawing mode (#707).
  • Fixes rendering of cursor sometimes being almost invisible when foreground and background colors are similar/equal (#691).
  • Fixes line based selection sometimes not selecting the full line when wrapped over multiple lines.
  • Fixes warning message on terminal's console output when enabling blurred background images.
  • Fixes Win32 command output: Attaches to parent console if present, so typing contour help in a terminal actually shows something.
  • Changes XTSMGRAPHICS to match implementation of xterm exactly when querying sixel image limits, to be capped at terminal viewport dimensions (#656).
  • Changes CLI syntax for contour parser-table to contour generate parser-table.
  • Implements UTF-8 encoded mouse transport (CSI ? 1005 h)
  • Modal mode: Improved vi-like input modes.
  • Modal mode: Fixed the text cursor not being visible during selection.
  • Modal mode: Don't leak but actually support cursor keys up/down/left/right/page-up/page-down.
  • Modal mode: Added vip, vap (and yip / yap) motions.
  • Modal mode: Adds ^ motion.
  • Modal mode: When being in normal mode, pressing a also puts you back to insert mode.
  • Modal mode: Properly show cursor if it was hidden in insert mode and restore visibility & shape when going back to insert mode.
  • Modal mode: Shift+K and Shift+J don't just move the cursor up/down but also move the terminal's viewport respectively (inspired by tmux).
  • Modal mode: Shift+H and Shift+L to move cursor to the current viewport's page top/bottom (inspired by tmux).
  • Modal mode: and more...
  • Adds new config option profile.*.vi_mode_highlight_timeout and colorscheme.*.vi_mode_highlight and adds cell highlighting on yank (#669).
  • Adds support for running on ARMv8 platform with crypto extensions (#611).
  • Adds back support OpenGL ES (3.1).
  • Adds E3 capability, so clear now defaults to clearing screen and scrollback (#693).
  • Adds specialized PTY implementation for Linux operating system utilizing OS-specific kernel APIs.
  • Adds basic support for Indicator status line and their VT sequences DECSASD and DECSSDT, and DECRQSS has been adapted (#687).
  • Adds configuration option profiles.*.status_line.display to be either none or indicator to reflect the initial state of the status line (more customizability of the Indicator status-line will come in future releases).
  • Adds new action ToggleInputProtection to protect terminal application against accidental input (#697).
  • Adds configuration options logging.enabled as well as logging.file.
  • Adds VT sequences XTPUSHCOLORS, XTPOPCOLORS, XTREPORTCOLORS (#714).
  • Adds CLI syntax contour info vt to print list of supported VT sequences (#730).
  • Adds VT sequence DECPS (#237).
  • Adds new config option colorscheme.selection.foreground_alpha and colorscheme.selection.background_alpha to enable somewhat more eye-candy visual looks on text selection.
  • Extends config option colorscheme.selection.foreground and colorscheme.selection.background to also accept CellForeground and CellBackground as value.

0.3.1.200 (2022-05-01)

  • Adds Vi-like input modes for improved selection and copy'n'paste experience.
  • Adds contour executable to search path for spawned shell process on macOS and Windows.
  • Adds customizability to dim colors (#664).
  • Adds the profile configuration option: draw_bold_text_with_bright_colors.
  • Fixes CSI K accidentally removing line flags, e.g. line marks (#658).
  • Fixes wrong-spacing rendering bug on some lines.
  • Fixes assertion on font resize when a (Sixel) image is currently being rendered (#642).
  • Fixes assertion on too quick shell terminations (#647).
  • Fixes fallback shell execution on UNIX-like systems when the reuqested shell cannot be spawned (#647).
  • Fixes selection being wrongly rendered when viewport is scrolled (#641).
  • Fixes full-line selection not properly injecting linefeeds between the lines.
  • Changes behaviour of full-line selection to include a trailing linefeed for the last line (#641).
  • Changes behaviour of bold text to by rendered using normal colors by default (was forced to bright before, and is now configurable via draw_bold_text_with_bright_colors).

0.3.0.198 (2022-04-18)

TLDR; Many thanks to all for the great support and feedback. This release marks a huge milestone for me especially with regards to VT backend performance(!), improved rendering architecture, and a more complete list of pixel perfect box drawings.

  • Fixes installation from .deb (missing terminfo dependency)
  • Fixes PTY write race condition.
  • Fixes VT sequence DECFI.
  • Fixes VT sequence ICH (#559).
  • Fixes VT sequence OSC 4's response.
  • Fixes VT sequence OESC 4 to also support setting color via #RRGGBB.
  • Fixes VT sequence extension: capture buffer (#493).
  • Fixes DECRC with respect to DECSTBM enabled and DECOM being inverted interpreted.
  • Fixes XTGETTCAP (#582).
  • Fixes SU in combination with DECLRM (#593).
  • Fixes an assertion in text renderer.
  • Fixes wrongly advertising DEC locator mode (it is not supported).
  • Improved VT backend performance (#342).
  • Improved text selection behaviour.
  • Improved detection of runtime DPI changes for KDE (Plasma) desktop environment.
  • Improves Window manipulation VT sequence for saving/restoring window title (CSI 22 ; Ps t, CSI 23 ; Ps t)
  • Adds pixel-perfect box-drawing for U+EE00 .. U+EE05 for progress bar glyphs as first introduced by Fira Code (#521).
  • Adds pixel-perfect box-drawing for U+E0B0, U+E0B2, U+E0BA (Triangle Powerline glyphs).
  • Adds preliminary implementation of DA3 VT sequence.
  • Adds new configuration option mouse_block_selection_modifier.
  • Adds new configuration option profiles.*.copy_last_mark_range_offset (default 0) to adjust where to start looking upwards for the CopyPreviousMarkRange action. This is useful for multi-line prompts.
  • Adds new configuration option platform_plugin.
  • Adds new configuration option renderer.backend for explicitly setting renderer to one of: OpenGL, software, default.
  • Adds new configuration option renderer.tile_hashtable_slots to configure texture atlas hashtable capacity.
  • Adds new configuration option renderer.tile_cache_count to configure texture atlas cache capacity.
  • Adds new configuration option renderer.tile_direct_mapping to enable/disalbe texture atlas direct mapping.
  • Adds new colorscheme setting background_image.path and background_image.opacity to optionally render a terminal background image.
  • Adds stdout-fastpipe support on new shell file descriptor 3 and exposing availability via environment variable STDOUT_FASTPIPE (with value 3). When writing to this file descriptor rather than to stdout (file descriptor 1), the full performance of Contour can be explored.
  • Adds new configuration option pty_buffer_size for tweaking the new size in bytes for the PTY buffer objects.
  • Adds mock font locator (mostly interesting for advanced use for CI testing).
  • Adds VT sequence SM ? 8452 h / RM ? 8452 l for enabling/disabling sixel cursor placement conformance (xterm extension).
  • Adds SGR-Pixels support, VT sequence SM ? 1016 h / RM ? 1016 l (#574).
  • Adds VT sequence DECCARA, Change Attributes in Rectangular Area, with the extension that it applies to all SGR attributes. (#15).

0.2.3.183 (2022-01-09)

Important: It is recommended to also use the latest contour termcap file if you are already using one from a previous release.

  • Fixes Sixel image rendering when scrolling is needed and ANSI cursor is not on left margin.
  • Fixes Qt-related CLI options that that were largely ignored.
  • Fixes crash caused by VT sequence PM and SOS (#513).
  • Fixes parsing VT sequence RGB color parsing for cell decoratioins (e.g. underline).
  • Fixes double-underline to not look like a very thick line on small font sizes.
  • Applies antialiasing to curly underline.
  • Changes contour exit code to reflect the shell's exit code of the last closed window.
  • Improves text cursor rendering and extends cursor configuration accordingly (#526).
  • Improves visual appearance of dotted underline SGR.
  • Adds CLI option terminal early-exit-threshold SECS (defaulting to 6) to only report and wait if the process did exit below this threshold seconds.
  • Adds CLI option terminal dump-state-at-exit to auto-dump internal state at exit.
  • Adds support for CoreText for matching font descriptions and font fallback (#479).
  • Adds support for font feature settings. This is currently only implemented for openshaper, not yet for dwrite (#520).
  • Adds pixel-perfect box-drawing for U+E0B4, U+E0B6, U+E0BC, U+E0BE (some Powerline extended codepoints).

0.2.2.175 (2021-11-19)

  • Fixes input mapping containing Control modifier.
  • Fixes input mapping mode Select being ignored.
  • Fixes Modifier+Enter input mapping not being catched.
  • Fixes slant detection for DirectWrite.
  • Changes DECCOLM to only switch back to 80 when it was 132 before.
  • Adds new config option spawn_new_process to define new terminal window behavior.
  • Adds action CancelSelection to allow actively canceling selection via input mappings.
  • Adds key bindings to default configuration to allow simply pressing Ctrl+C/Ctrl+V (without Shift modifier) when an active selection is present.
  • Adds process current working directory on macOS.
  • Adds contour license CLI command to show project license but also an overview of all dependencies.
  • Adds a proper CLI to bench-headless. Building the headless benchmark tool is not shipped by default.

0.2.1.174 (2021-11-14)

  • Reverts change from 0.2.0: "Changes behaviour when receiving U+FE0E (VS15) to not enforce the width of 1 but leave it as is (usually 2). This seems to match what the web browser is doing, too."
  • Adds support for loading terminal color schemes from an exernal file, such as ~/.config/contour/colorschemes/onedark.yml for the scheme onedark (file file format is simply a sub-tree of how colors can be specified inline).
  • Adds some more tmux-extension entries to the terminfo database that are supported by contour (Ss, Se, Cs, Smol, Smulx, Setulc).
  • Adds Sync capability entry to terminfo file.
  • Adds many more pixel-perfect graphical characters: 23A1..23A6, 2580..2590, 2594..259F, 1FB00..1FB3B, 1FB3C..1FBAF, 1FBF0..1FBF9.
  • Adds support for building with embedded FreeType and HarfBuzz (experimental, disabled by default).
  • Adds a shell early-exit-guard to not instantly close the terminal window but print a message instead and wait for any key press in order to close.
  • Adds missing config option read_buffer_size to default contour.yml.
  • Adds new config option reflow_on_resize to mandate whether or not text reflow is enabled on primary screen. If this option is false, it cannot be enabled programmatically either.
  • Adds new config option on_mouse_select to decide what action to pick when text has been selected (copy to clipboard or copy to selection-clipboard, or do nothing)
  • Unicode data updated to version 14.0 (release). See Announcing The Unicode® Standard, Version 14.0.
  • Do not force OpenGL ES on Linux anymore.
  • Changes default (Sixel) image size limits to the primary screen's pixel dimensions (#408).
  • Changes font locator engine default on Windows to DirectWrite (#452).
  • Changes tcap-query feature from experimental to always enabled (not configurable anymore).
  • Automatically detect if contour or contour-latest terminfo entries are present use that as default.
  • Fixes VT sequences that cause a cursor restore to sometimes crash.
  • Fixes terminfo installation path on macOS and tries to auto-set TERMINFO_DIRS to it on startup (#443).
  • Fixes terminfo entry pairs.
  • Fixes SGR 24 to remove any kind of underline (#451).
  • Fixes font fallback for open_shaper where in rare cases the text was not rendered at all.
  • Fixes CPU load going up on mouse move inside terminal window (#407).
  • Fixes terminfo entries accidentally double-escaping \E to \\E (#399).
  • Fixes RGB color parsing via ':2::Pr:Pg:Pb' syntax and also adapt setrgbf & setrgbb accordingly.
  • Fixes SEGV with overflowing (Sixel) images (#409).
  • Fixes XTSMGRAPHICS for invalid SetValue actions and setting Sixel image size limits (#422).
  • Fixes internal pixel width/height tracking in VT screen, which did affect sizes of rendered Sixel images (#408).
  • Fixes configuring a custom shell on macOS (#425).
  • Fixes off-by-one bug in builtin box drawing (#424).
  • Fixes assertion in text renderer with regards to colored glyphs.
  • Fixes Sixel background select to support transparency (#450).
  • Fixes session resuming on KDE desktop envionment which is respawing all Contour instances upon re-login but failed due to invalid command line parameters (#461).
  • Fixes Meta+Key keyboard inputs being ignored.
  • Changes DECSDM such that it works like a real VT340; also xterm, as of version 369, changed that recently (#287).
  • Adds context menu support for KDE.

0.2.0.173 (2021-08-17)

  • Improved performance (optimized render loop, optimized grapheme cluster segmentation algorithm)
  • Improves selection to better automatically deselect on selected area corruption.
  • Fixes ioctl(..., TIOCGWINSZ, ...) pixel values that were only set during resize but not initially.
  • Fixes mouse in VIM+Vimspector to also change the document position when moving the mouse.
  • Fixes SGR decorations to use designated underline thickness and underline position.
  • Fixes font glyph render in some corner cases where the rendered glyph did result in rectangle garbage on the screen.
  • Fixes copying the selection containing trailing whitespaces.
  • Fixes hard-reset with regards to default tab width.
  • Fixes VT sequence DECRQPSR for DECTABSR.
  • Fixes keyboard keys for F1..F4 when pressed with and without modifiers.
  • Fixes OSC 8 hyperlink rendering when scrolled.
  • Fixes SGR 1 (bold) wrongly applied on indexed background colors.
  • Fixes text shaping sometimes showing missing glyphs instead of the actual glyphs (by changing the last-resort font fallback mechanism to chape each cluster individually with its own font fallback).
  • Preserve active profile when reloading config, and forces redraw after config reload.
  • Changes config entry profile.*.font_size to profile.*.font.size.
  • Changes config entries scrollbar.* to profile.*.scrollbar.*.
  • Changes behavior of live configuration reload, which is not default anymore and must be explicitly enabled via CLI parameter --live-config.
  • Changes behaviour when receiving U+FE0E (VS15) to not enforce the width of 1 but leave it as is (usually 2). This seems to match what the web browser is doing, too.
  • Changes the CLI command line interface syntax.
  • Removes tab_width configuration. Tab width cannot be configured anymore but remaints by default at 8.
  • Adds basic automatically created archive for Arch Linux to the CI build artifacts page and release page.
  • Adds support for bypassing the mouse protocol via Shift-click (configurable via bypass_mouse_protocol_modifier)
  • Adds improved debug logging. via CLI flag -d (--enable-debug) to accept a comma seperated list of tags to enable logging for. Appending a * at the end of a debug tag will enable all debug tags that match prefix its prefix. The list of available debuglog tags can be found via CLI flag -D (--list-debug-tags).
  • Adds support for different font render modes: lcd, light, gray, monochrome in profiles.NAME.font.render_mode (default: lcd).
  • Adds support for different text render engines: OpenShaper, DirectWrite and CoreText for upcoming native platform support on Windows (and later macOS).
  • Adds support for different font location engines: fontconfig (others will follow).
  • Adds experimental text reflow.
  • Adds OpenFileManager action to configuration.
  • Adds terminal identification environment variables TERMINAL_NAME, TERMINAL_VERSION_TRIPLE and TERMINAL_VERSION_STRING.
  • Adds config option mode to input modifiers for additionally filtering based on modes (alt screen, app cursor/keypad, text selection modes, ...).
  • Adds config option profile.*.terminal_id: STR to set the terminal identification to one of VT100, VT220, VT340, etc.
  • Adds config option profile.*.maximized: BOOL to indicate maximized state during profile activation.
  • Adds config option profile.*.fullscreen: BOOL to indicate fullscreen state during profile activation.
  • Adds config option profile.*.font.strict_spacing: BOOL to indicate that only monospace fonts may be used.
  • Adds config option profile.*.font.TYPE.weight: WEIGHT and profile.*.fonts.TYPE.slant: SLANT options (optional) along with profile.*.fonts.TYPE.family: STRING.
  • Adds config option profile.*.font.TYPE.weight: WEIGHT and profile.*.fonts.TYPE.slant: SLANT options (optional) along with profile.*.fonts.TYPE.family: STRING.
  • Adds config option profile.*.font.dpi_scale: FLOAT to apply some additional DPI scaling on fonts.
  • Adds config option profile.*.font.builtin_box_drawing: BOOL to use pixel-perfect builtin box drawing instead of font provided box drawing characters.
  • Adds config option profile.*.refresh_rate: FLOAT to configure how often the terminal screen will be rendered at most when currently under heavy screen changes. A value of "auto" will use the currently connected monitor's refresh rate.
  • Adds configuration's action ToggleAllKeyMaps to enable/disable intercepting and interpreting keybinds. The one that did toggle it will not be disabled.
  • Adds configuration's action ClearHistoryAndReset to clear the history, and resetting the terminal.
  • Adds VT sequence for enabling/disabling debug logging. CSI ? 46 h and CSI ? 46 l and CLI option -d.
  • Adds VT sequence for querying/setting current font OSC 50 ; ? ST and OSC 50 ; Font ST (and OSC 60 Ps Ps Ps Ps Ps ST for a more fine grained font query/setting control).
  • Adds VT sequence CSI 18 t and CSI 19 t for getting screen character size. Responds with CSI 8 ; $columns ; $rows t and CSI 9 ; $columns ; $rows t respectively.
  • Adds VT sequence to capture the current screen buffer CSI > LineMode ; StartLine ; LineCount t giving the respone back on stdin via OSC 314 ; $screen_buffer ST, and feature detection via DA1 number 314.
  • Adds VT sequence DECSNLS for setting number of lines to display.
  • Adds VT sequence CSI Ps b (REP) for repeating the last graphical character Ps times.
  • Adds VT sequence OSC 4 ; INDEX ; COLOR ST for setting or querying color palette (if COLOR is ? instead of a color spec).
  • Adds VT sequence OSC 104 ; INDEX ST for resetting color palette entry or complete palette (if no (index is given).
  • Adds VT sequence DECCRA to copy a rectangular area.
  • Adds VT sequence DECERA to erase a rectangular area.
  • Adds VT sequence DECFRA to fill a rectangular area.
  • Adds VT sequence CSI > q (XTVERSION) to query terminal identification (name and version). Response comes as DCS >| Contour ContourVersion ST.
  • Adds VT sequence DECRQM to request ANSI/DEC modes states (set / unset / not recognized).
  • Adds new CLI command: contour capture ... to capture the screen buffer.
  • Adds new CLI command: contour set profile to NAME to change the profile on the fly.
  • Adds new CLI command: contour generate terminfo output OUTPUT_FILE to create a Contour terminfo file.
  • Adds new CLI command: contour generate config output OUTPUT_FILE to create a new default config.
  • Adds new CLI command: contour generate integration shell SHELL output OUTPUT_FILE to create the shell integreation file for the given shell (only zsh supported for now). Also adds a pre-generated shell integration file for Linux (and macOS) to /usr/share/contour/shell-integration.zsh.
  • Unicode data updated to version 14.0 beta.
  • Adds support for building with Qt 6 (disabled by default).
  • Adds support for building with mimalloc (experimental, disabled by default).

0.1.1 (2020-12-31)

  • Fixes race condition when displaying image animations (e.g. gifs via sixel).
  • Fixes NewTerminal action to also inherit the active configuration file.
  • Fixes restoring cursor position in RM ?1049.
  • Fixes DECSTR resetting saved-cursor state and active cursor-position.
  • Fixes selecting text not being pushed into the selection-clipboard.
  • Adds VT sequence OSC 7 (set current working directory).
  • Adds VT sequence DCS $ p $Name ST to change config profile name to $Name.

0.1.0 (2020-12-24)

  • Available on all 3 major platforms, Linux, macOS, Windows.
  • Emoji support (-: 🌈 💝 😛 👪 :-)
  • Font ligatures support (such as in Fira Code).
  • Bold and italic fonts
  • GPU-accelerated rendering.
  • Vertical Line Markers (quickly jump to markers in your history!)
  • Blurred behind transparent background when using Windows 10 or KDE window manager on Linux.
  • Runtime configuration reload
  • 256-color and Truecolor support
  • Key binding customization
  • Color Schemes
  • Profiles (grouped customization of: color scheme, login shell, and related behaviours)
  • Clickable hyperlinks via OSC 8
  • Sixel inline images