Skip to content

Releases: valvesky/velocitty

Velocitty 1.3.0

Choose a tag to compare

@github-actions github-actions released this 01 Nov 20:35
b38121f

Velocitty 1.3.0

Velocitty 1.3 redesigns input handling around a mirrored 1 MiB ring buffer and a pre-parser. Under input pressure, it skips cell painting only when later input proves it obsolete, while preserving ordered terminal-state processing. Large control strings use separate stream storage rather than being limited to the input ring.

Performance and output handling

  • Bounded, reusable parser metadata and shared CSI parsing.
  • Direct stream-buffer reads and image-buffer handoff to reduce copying for large transfers.
  • SIMD UTF-8 decoding and bulk text-printing paths.
  • Reduced terminal cells to 8 bytes using shared, interned styles.
  • Style-table compaction and renderer invalidation when style IDs change.

The style-table idea came from Ghostty.

Unicode and text

  • Unicode 18 grapheme-break tables.
  • Extended grapheme-cluster handling with mode 2027 support.
  • Improved combining marks, variation selectors, emoji sequences, and cluster-width changes at line boundaries.
  • Added combining-mark rendering and Hangul-jamo composition.
  • Updated selection and copying to preserve complete grapheme clusters.
  • Preserved clusters through insertion, deletion, erasure, and reflow.
  • Preserved styled trailing spaces and active/saved cursor positions through wide-glyph reflow.

Graphics

  • Anchored kitty and sixel images to scrollback lines.
  • Updated image placement handling for scrolling regions and history expiration.
  • Deferred eligible image decoding until a placement becomes visible.
  • Improved image-transfer ownership, cleanup, and retransmission handling.
  • Added support for image strings larger than the input ring.
  • Preserved anchors, blank-cell placements and the scrolled viewport through resize/reflow.
  • Corrected natural/scaled cursor advancement, pending wrap and sixel double-scrolling.
  • Retained named image data for re-placement after clears and lowercase deletion.
  • Added bounded, decode-independent cache accounting and unplaced-first eviction.
  • Refined visible/point/placement-ID deletion and cancellation of unfinished uploads.
  • Kept anonymous/sixel image IDs distinct from existing named Kitty images, including ID wraparound.
  • Bounded sixel RGB scaling and header counters, and corrected allocation-failure cleanup.

Font loading

  • Resolve the configured primary or system monospace font without hardcoded preferred paths.
  • Load styled and fallback faces on demand, preserve fallback order, deduplicate data and cache failed lookups.
  • Keep valid blank glyphs from triggering unnecessary fallback loads during ASCII warmup.
  • Make rendering benchmarks follow application font selection and parser-only benchmarks font-free.
  • Preserve selected font-collection members in primary loading, lazy fallback identity and rasterization.

Correctness and input

  • Hardened paste handling against escape/control injection; allocation failures no longer fall back to raw input.
  • Fixed composed Unicode input under Kitty's all-keys reporting mode.
  • Fixed no-button mouse-motion reporting and urxvt mouse-button encoding.
  • Propagated resize allocation errors instead of silently publishing inconsistent dimensions.
  • Reaped Linux notification child processes and protected notification arguments with --.
  • Corrected raw C1-byte handling, reset behavior, and soft-wrap clearing during erasure.
  • Preserved existing cells during tabulation and the live cursor content during height-only window shrinking.
  • Retained rectangle-copy source cells during pressure parsing and honored updated extended palette entries.
  • Corrected reverse-video repainting and selection highlights after framebuffer scroll reuse.

Benchmarks and tests

  • Added Ghostty-compatible headless +terminal-stream benchmarking.
  • Added automated Ghostty throughput comparisons with raw samples and generated charts.
  • Changed the chart to grouped horizontal bars with independent, zero-based linear scales.
  • Added startup comparisons for Velocitty, foot, and Monstar.
  • Expanded parsing, graphics, drain, firehose, and rendering benchmark workloads.
  • Added configurable benchmark optimization and a bench-install target.
  • Added differential firehose tests, split-input sweeps, seeded fuzzing, and Unicode/rendering regressions.
  • Removed the obsolete standalone rendering/golden-test harness and older benchmark implementations.

Packaging and documentation

  • Consolidated icons, desktop metadata, and Windows resources under assets/.
  • Updated icon generation to use the canonical SVG.
  • Updated build, packaging, and installer asset paths.
  • Added Linux package Makefile installation/uninstallation with PREFIX and DESTDIR support.
  • Added design pages, benchmark imagery, storage diagrams and subsystem references.
  • Updated README branding, feature descriptions, Linux installation instructions, and the man page.

Downloads

Windows and macOS downloads are unsigned. Windows may show SmartScreen; macOS users can allow the app in System Settings → Privacy & Security after the first launch attempt.

Use SHA256SUMS to verify the downloaded packages.

Velocitty 1.2.1

Choose a tag to compare

@github-actions github-actions released this 28 Oct 14:02

Velocitty 1.2.1 fixes compositor-configured keyboard remapping on Wayland.

  • Special keys now follow the compositor's xkb keymap instead of physical keycodes, fixing options such as Hyprland's kb_options = caps:swapescape.
  • Key repeat eligibility also follows the keymap, including remapped Caps Lock and Escape.
  • Adds a real libxkbcommon regression covering swapped key presses/releases, modified Escape, and repeat.

Windows and macOS downloads are unsigned. Windows may show SmartScreen; macOS users can allow the app in System Settings → Privacy & Security after the first launch attempt.

Use SHA256SUMS to verify the downloaded packages.

Velocitty 1.2.0

Choose a tag to compare

@github-actions github-actions released this 28 Oct 02:12

Velocitty 1.2.0 adds native Windows and macOS ports through Peak alongside the existing Linux builds.

  • Windows: Win32 window/input/clipboard, ConPTY shells, native fonts, UTF-8 paths, per-monitor DPI, a per-user installer, and a portable ZIP.
  • macOS: AppKit window/input/clipboard, POSIX PTYs, Core Text font discovery, Retina rendering, Command+C/V, and a universal Intel/Apple Silicon app in a DMG.
  • Linux: Wayland/X11 and Omarchy integration remain supported, with GNU (glibc 2.28+) and dynamically linked musl tarballs for x86_64 and aarch64. The musl builds target systems such as Alpine and require that distribution's musl loader and native GUI libraries.
  • Configuration: checked integer parsing, escaped font strings, robust skipping of unrelated TOML settings, and corrected font defaults.
  • Branding: the lightning icon is rendered as block ASCII, with an animated README wordmark made using Omarchy's Rust ttfx.

Windows and macOS downloads are unsigned. Windows may show SmartScreen; macOS users can allow the app in System Settings → Privacy & Security after the first launch attempt.

Kitty graphics file/temporary-file transfers and desktop notifications currently use the Linux implementation. Streamed kitty graphics and sixel remain available on all three platforms.

Use SHA256SUMS to verify the downloaded packages.

1.1.0

Choose a tag to compare

@valvesky valvesky released this 27 Oct 14:57
  • Faster across the board: plain text is written a row at a time, scrolling reuses already-drawn rows, and only changed rows are sent to the compositor (Wayland damage_buffer / partial X11 updates).
  • CJK, emoji and other fallback-font glyphs are much cheaper to draw; the glyph cache is now a real LRU.
  • Images: kitty graphics only repaint the rows they cover, and image scaling is faster.
  • Fixed multi-colour sixel images losing colours.
  • Builds with Zig 0.17.
  • New zig build bench: per-workload PTY → parse → render timings with p50/p95, glyph cache and render benchmarks.

1.0.1

Choose a tag to compare

@valvesky valvesky released this 22 Sep 00:05
  • Typing will bring you back to the prompt if you are looking at scrollback.
  • Got rid of the accent key indicator.

1.0.0

Choose a tag to compare

@valvesky valvesky released this 17 Sep 00:15

Changes

  • Fixed accents (~, ^, ´. `, etc.)
  • Emojis correctly displayed.
  • Bold and italic.
  • Performance improvement due to less emoji cache misses.

0.2.0

Choose a tag to compare

@valvesky valvesky released this 16 Sep 12:00

New Features

C0

  • BEL ignored (no visual bell / XBell)
  • Last-column flag (LCF) wrap / BS
  • HT writing a tab glyph + spaces to the next stop (we only move the cursor)

CSI - SGR / cells

  • Styled underlines drawn (double / curly / dotted / dashed); style is stored, render is single
  • Underline color (SGR 58/59) on cells; pen only
  • Reverse video (DECSCNM 5) applied at draw
  • ED 3 erase scrollback
  • Grapheme clustering (mode 2027)

CSI - modes / reports

  • Mouse reports themselves (modes 1000/1002/1003/1006/1015/1016 are stored only)
  • Focus in/out (CSI I / CSI O) when mode 1004 is on
  • Theme-change reports (2031)
  • Visibility-change reports (2033) after the initial reply
  • In-band resize notifications (2048)
  • IME (737769)
  • Real pixel geometry for window ops 14/15/16 (we fake cols*cell_px)
  • XTSMGRAPHICS (CSI ? Pi ; Pa ; Pv S)

OSC

  • 9 / 99 / 777 notifications
  • 11 background alpha
  • 17 / 19 / 117 / 119 selection colors
  • 22 mouse cursor
  • 52 clipboard
  • 66 kitty text-size
  • 33 shell-integration marks
  • 76 app-id
  • 555 flash removed

DCS

  • Sixel (DCS q)
  • XTGETTCAP (DCS + q)
  • Sixel-related private modes 80 / 1070 / 8452 (flags only)

Platforms

  • aarch64 support
  • MUSL support.

0.1.1

Choose a tag to compare

@valvesky valvesky released this 15 Sep 17:15

Fixes

  • Resize now properly resets scrollback.
  • Lines wrap.
  • Resizing now fills new areas of the screen.
  • SSH to another terminal no longer breaks certain applications due to missing terminfo file.

0.0.1

Choose a tag to compare

@valvesky valvesky released this 13 Sep 01:29
  • Linux
  • Kitty Graphics
  • Bracketed Paste
  • Renders at least neovim, pi and ncmpcpp correctly.
  • Omarchy theme and font change live.
  • ~400MiB/s on every type of input on an intel i7-10610U