Repository navigation
Releases: valvesky/velocitty
Release list
Velocitty 1.3.0
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-streambenchmarking. - 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-installtarget. - 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
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
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
- 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
1.0.0
0.2.0
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.