Skip to content

Releases: contour-terminal/contour

Contour 0.6.3.8249

09 Apr 09:25
3aef6f7

Choose a tag to compare

Dear package maintainerss

We've bumped the libunicode dependency to version 0.9.0: https://github.com/contour-terminal/libunicode/releases/tag/v0.9.0

Dear macOS users

I find it incredibly hard to package for macOS these days. The project perfectly compiles and runs self built on macOS, but packages build automatically won't. I am still looking into solving this issue. However, if you are one of those guys wanting to help us getting Contour back on track for macOS, we very much welcome contributions, specifically for macOS and the project in general.

Now let's continue with the regular release notes list:

Release Notes

  • Adds hint mode for keyboard-driven selection of URLs, file paths, git hashes, and IP addresses with configurable actions (Copy, Open, Paste, Select), activatable via key binding or Vi normal mode (gh/gH)
  • Adds auto-scroll when dragging selection past window edges, and Shift+Click to extend existing selections (#1911)
  • Adds pixel-based smooth scrolling via smooth_scrolling profile setting, supporting trackpad pixel deltas, mouse wheel, and keyboard scroll actions
  • Adds natural momentum scrolling for touchpad gestures with configurable falloff via momentum_scrolling profile setting
  • Adds kitty's unscroll extension (CSI n + T) to restore scrolled-off content from scrollback history
  • Adds snap-to-grid window resizing via WM size-increment hints (X11/macOS) and client-side snapping (Wayland, where xdg-shell has no size-increment hint)
  • Adds environment variable expansion (${VAR_NAME} syntax) in configuration file paths for cross-platform config reuse (#1278)
  • Adds configurable font fallback limit (max_fallback_count) with on-demand loading and persistent locate cache for faster font resolution
  • Adds animated cursor movement between grid cells with ease-out interpolation via cursor_motion_animation_duration profile setting
  • Adds configurable crossfade transition between primary and alternate screens via screen_transition and screen_transition_duration profile settings
  • Replaces abrupt cell blink toggle with configurable smooth pulse animation via blink_style profile setting (classic/smooth/linger)
  • Adds configurable text outline rendering to improve glyph readability on transparent or low-opacity backgrounds (#1895)
  • Adds pixel-perfect builtin rendering for mathematical bracket and symbol characters (U+239B–U+23B3), including parenthesis pieces, curly bracket pieces, integral extensions, horizontal line extension, bracket sections, and summation symbols
  • Adds pixel-perfect builtin rendering for shade characters (U+2591–U+2593): light shade, medium shade, and dark shade
  • Adds Kitty OSC 99 desktop notification protocol with D-Bus backend on Linux, supporting structured metadata, chunked payloads, base64 encoding, urgency levels, display occasion filtering, bidirectional close/activation events, and query/alive responses
  • Adds DEC VT420 multi-page support with 16 pages, navigable via NP (CSI Pn U), PP (CSI Pn V), PPA (CSI Pn SP P), PPR (CSI Pn SP Q), and PPB (CSI Pn SP R) sequences
  • Adds DECPCCM (DEC mode 64) page cursor coupling mode to control whether the displayed page follows the cursor page
  • Adds DECRQDE (CSI " v) display extent report for querying page dimensions and current page number
  • Adds cross-page DECCRA (Copy Rectangular Area) support for copying cell content and attributes between pages
  • Adds complete DECCIR (Cursor Information Report) response including character set designations, GL/GR mappings, and wrap-pending state (#97)
  • Adds DECNKM (DEC mode 66, VT320) to toggle numeric keypad between application and numeric mode via CSI ? 66 h / CSI ? 66 l
  • Adds DECARM (DEC mode 8, VT100) to enable/disable keyboard auto-repeat via CSI ? 8 h / CSI ? 8 l
  • Adds DECBKM (DEC mode 67, VT340) to toggle Backspace key between BS (0x08) and DEL (0x7F) via CSI ? 67 h / CSI ? 67 l
  • Fixes crash when rendering oversized non-RGBA glyphs (e.g. Nerd Font icons in JetBrainsMono) by extending glyph scaling to all bitmap formats (#1893)
  • Fixes keyboard input being swallowed in programs like less and bat due to empty-string terminfo capabilities (#1861)
  • Fixes ESC key not being sent to the application when CancelSelection input mapping has no mode restriction (#1839)
  • Fixes F3 key not reaching PTY applications when a keybinding matches but its action does not execute, by falling through to the terminal instead of silently consuming the key event
  • Fixes F3/Shift+F3 search navigation keybindings firing in any mode instead of only when Search mode is active
  • Fixes numpad keys not producing digits when NumLock is ON, especially on Wayland where native modifier detection is unreliable (#1901)
  • Fixes modifier-only key presses (Shift, Ctrl, Alt, etc.) incorrectly scrolling the viewport to the bottom when Kitty keyboard protocol ReportAllKeysAsEscapeCodes is enabled
  • Fixes Home/End key encoding in Kitty keyboard protocol (extended keyboard input generator)
  • Fixes Kitty keyboard protocol: F1-F4 CSI u key codes, legacy F1-F4 modifier encoding, CSI u gating for ReportEventTypes and ReportAllKeys flags, lock modifier handling, and Press event type suppression
  • Fixes Kitty keyboard protocol: proper CapsLock/NumLock modifier reporting, correct modifier encoding per spec, and Unicode case folding for non-ASCII characters
  • Fixes tab characters (HT) intermittently lost in terminal output due to bulk text parser skipping trailing C0 controls and tab cursor movement not filling intermediate cells with spaces (#1876)
  • Fixes text rendering artifacts and corruption when rapidly outputting content
  • Fixes garbled or missing characters when displaying Unicode text
  • Fixes REP (repeat character) VT sequence being silently discarded when preceded by text processed via the parser's bulk text fast path, causing visual gaps in ncurses applications like htop
  • Fixes glyph scaling and vertical centering of colored emoji
  • Fixes Sixel images not rendering on non-first tabs
  • Fixes selective erase (DECSED/DECSEL) incorrectly erasing the cursor line instead of the target line when erasing lines without protected characters (#28)
  • Fixes Insert Replace Mode (IRM, CSI 4 h) not shifting text right on character insertion (#1877)
  • Fixes DECXCPR (Extended Cursor Position Report) to report the correct page number instead of hardcoded page 1
  • Fixes terminal shrinking/growing on tab switch when status line is displayed
  • Fixes WINDOWMANIP cell-based resize (CSI 8;rows;cols t) gaining columns at non-integer content scale
  • Fixes initial terminal window size being wrong at fractional DPR (e.g. 127Γ—29 instead of configured 130Γ—30 at 150% scaling on Wayland, #1858)
  • Fixes initial font sizing at fractional DPR on Wayland by preferring screen DPR over window DPR
  • Fixes ~2s startup delay caused by synchronous Qt multimedia driver probing by deferring audio initialization to a background thread
  • Fixes build failure on Alpine Linux (musl libc) due to missing close_range() function (#1879)
  • Fixes third-party dependency files (headers, libraries) leaking into install tree (#1788)
  • Fixes size of the window when using tiling WM (#1908)
  • Fixes missing kitty keyboard protocol release events (#1924)
  • Fixes terminfo colors capability (32767 β†’ 256) so Midnight Commander and other S-Lang applications correctly detect 256-color support

Contour 0.6.2.8008

07 Jan 20:54
c49df63

Choose a tag to compare

A note on macOS:

Dear macOS users, we sadly were not able to package a self-contained installer for Contour such that you could simply download and install it without any problems. Contour perfectly builds and runs on macOS (any architecture) when built. We want to revive providing .dmg downloads as soon as possible.

Help wanted: If you know how to properly package a self contained C++ application on macOS, please contact us. :-)

Major Changes

  • Security: Fixed Out-of-Bounds Write in SequenceParameterBuilder (CWE-787)
  • Security: Fixed SSH Trust-On-First-Use (TOFU) vulnerability (CWE-295) with interactive host key verification
  • Security: Fixed potential Integer Overflow in parameter parsing (CWE-190)
  • Security: Fixed sensitive data exposure in debug logs (CWE-532)
  • Fixes insert mode / default status line colorscheme loading (#1737)
  • Fixes CancelSelection default binding with escape (#1710)
  • Fixes CreateTab to sometimes spawn more than one tab (#1695)
  • Fixes crash using Chinese IME (#1707)
  • Fixes NumLock key handling (#1713)
  • Fixes handling of multiple windows and tabs (#1725)
  • Fixes crash on scaling down some symbols during font size change
  • Fixes mouse scrolling speed being too slow
  • Fixes crash in vi normal mode when using y0 (#1801)
  • Fixes empty history jump (#1781)
  • Fixes double line box drawing characters
  • Fixes DECRQM (DEC Request Mode) response (#1797)
  • Fixes Precondition failure when rendering vertically overflowing glyphs (#1805)
  • Fixes fish-shell keyboard input protocol behavior; acting as if it would be broken on e.g. control keys (weird handling of CSIu input protocol)
  • Fixes ssh.known_hosts configuration loading incorrectly mapping to ssh.public_key_file
  • Fixes option_as_alt configuration option not working (#1812)
  • Fixes assertion when displaying Sixel images
  • Fixes Sixel image scaling to respect the grid cell size (including font resize related glitches)
  • Fixes Blur support on Windows 11
  • Fixes Sixel image regression
  • Enables customizing predefined color palette (#1763)
  • Enables Sixel support on Windows
  • Ensure inserting new tabs happens right next to the currently active tab (#1695)
  • Allow glyphs to underflow if they are not bigger than the cell size (#1603)
  • Adds contour.exe to system search path on Windows during installation
  • Adds MoveTabToLeft and MoveTabToRight actions to move tabs around (#1695)
  • Adds MoveTabTo action to move tabs to a specific position (#1695)
  • Adds handling of control codes for Ctrl+5|6|7|8 (#1701)
  • Adds CenterCursor (zz) vi motion
  • Adds ability to name tabs (#1690)
  • Adds dynamic loading of conpty.dll to allow mouse mode on Windows 10
  • Adds git graph drawing glyphs
  • Adds new arc style for box drawing characters
  • Adds multiple rendering options for braille characters
  • Adds configuration action ToggleInputMethodHandling to allow toggling IME (Input Method Editor) handling (#1813)
  • Adds configuration option input_method_editor to profile settings to opt-out of IME (Input Method Editor) support (#1817)
  • Adds background blur support for KDE Plasma on Wayland (for Qt 6.5.0 and newer)
  • Adds VT sequences for double width / double height lines, DECDHL, DECDWL, DECSWL (#137)
  • Adds VT sequence extension OSC 133 shell integration (#793)
  • Adds support for rendering COLRv1 fonts (e.g. new Google Noto Color Emoji)
  • Drop Qt5 support

Contour 0.6.1.7494

31 Dec 16:28
116f1d1

Choose a tag to compare

  • Do not abort when failing to create XDG_STATE_HOME/contour/crash directory
  • Fixes tab switch crash after resize
  • Fixes tab shrinking after tab creation/switches when a non-zero horizontal window margin is configured
  • Fixes startup crash when window is not yet fully initialized
  • Fixes backtab (Shift+Tab) handling (#1685)
  • Fixes various spelling typos across the codebase (#1688)
  • Improve tab close handling to better select previously focused tab
  • Add action SwitchToPreviousTab to switch to the previously focused tab

Contour 0.6.0.7452

26 Dec 14:52
96a01b6

Choose a tag to compare

  • Add terminal tabs (#90)
  • Add SaveScreenshot and CopyScreenshot action (#210)
  • 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)
  • Expose current profile's name through env var CONTOUR_PROFILE (#1637)
  • Protect user from accidentally pasting too large input (#1198)
  • 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 search editor preservation bug on exit from search mode
  • 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)

Contour 0.5.1.7247

01 Oct 05:35
a7516ca

Choose a tag to compare

IMPORTANT: This is a cleanup/bugfix release. The biggest changes are in 0.5.0. We sadly had to drop Ubuntu 20.04 and 22.04 packages, due to too out-dated compiler toolchain. We want to focus on actually building the product and making it better than getting stuck in package maintenance.

TO THE PACKAGE MAINTAINERS: This release requires latest release of libunicode, which has updated Unicode 16.0.0 support. It will not build with older Unicode standards. libunicode fetches the UCD files during configure step automatically. If you happen to want to let it fetch the system's UCD files, make sure that these are from Unicode 16.0.0 or above.

  • Fixes vi-mode motions like viW, yiW, oiW as well as B and W
  • Fixes rendered backend loading from config
  • 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)

Contour 0.5.0.7168

18 Sep 08:35
5aec756

Choose a tag to compare

  • 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)

Contour 0.4.3.6442 (hotfix release)

04 Feb 20:05
7c60920

Choose a tag to compare

  • Fixes dead lock bug on mouse selection.

This is a hotfix release!

Contour 0.4.2.6429

03 Feb 16:57
f8a3229

Choose a tag to compare

IMPORTANT

Please download Contour 0.4.3 instead.
We've made that hotfix release because this release here sadly contains a deadlock on mouse selection.
We apologize.

Changelog

  • 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 (#1424).

New Contributors

Full Changelog: v0.4.1.6292...v0.4.2.6429

Contour 0.4.1.6292

31 Dec 23:48
835d52f

Choose a tag to compare

  • 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).

Contour 0.4.0.6245

19 Dec 21:16
f683571

Choose a tag to compare

  • 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 OS/X (#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.