changelog
The recent releases of tte. Releases use semantic versions with a separate dated build. Older entries retain their original dated version labels.
v0.2.4 Build 20261110A · 2026-11-10
Added
- CSV/TSV cells can be edited directly in Smart View with Enter or
Edit → Edit cell…. Enter applies, Escape cancels, and Tab applies and moves to the next cell. Multiline values, clipboard input, undo/redo, and normal saving are supported; edits preserve other fields' quoting and spacing. Ctrl+KorEdit → Sort linessorts selected lines alphabetically, ignoring case by default.Edit → Case-sensitive sortsaves the preferred comparison mode. Sorting keeps the block selected, preserves equal-key order, and can be undone in one step.- XLSX worksheets can be exported through
File → Export sheet as CSV…orExport sheet as TSV…. The selected sheet's displayed values open in an editable copy, preserving blank cells and interior rows without changing the workbook or overwriting existing files. Formulas use their cached results. - Table-view columns can be resized by dragging their header borders or using
-/+on the selected column;0restores automatic width. The View menu includes the same controls. CSV, TSV, and XLSX keep separate widths for each open tab and worksheet, with long cell values clipped to fit. - The explorer's bottom counts show
(h:3 show)when dotfiles are hidden and(h:3 hide)when shown, keeping the dotfile and dot-folder count visible in both states. Click the underlined label to toggle their visibility.
Changed
Ctrl+DandView → Toggle Smart Viewselect rendered Markdown, CSV/TSV/XLSX tables, or ASCII images for the active tab. Toggling returns to source for text formats and Hex for XLSX/images.Ctrl+Know sorts selected lines.- Image opening defaults now live under
Preferences… → Images open: ASCII/binary. Per-tab image view choices survive session restore and leave other tabs unchanged. - ASCII image preview is now a regular Smart View feature. Existing experimental image settings migrate to the
openImagePreviewpreference.
Fixed
- Files larger than 3 MiB (3,145,728 bytes) open without soft wrapping, avoiding full-document wrap layout during editing, scrolling, and find navigation. Files at or below the cutoff keep following the saved wrap preference.
- Large files retain a per-tab
Ctrl+Ltoggle and remember that choice in the workspace session. Existing sessions without a per-tab choice use the new default, and opening or toggling a large file leaves other tabs' defaults unchanged. The View menu, mouse navigation, and search use the tab's wrap mode. - Large JSON files open as editable, unwrapped source, skipping automatic pretty printing until the user enables it with
Ctrl+L. - Replacing buffer text preserves unrelated carriage-return bytes, including when a hex or cell edit removes a binary marker.
v0.2.3 Build 20261023A · 2026-10-23
Security
- The release toolchain moves to Go 1.26.10, which rejects compromised intermediate certificates in
crypto/x509(GO-2026-6809).
Fixed
- Terminal updates repaint only changed cells, reducing flicker on older machines and slow connections. Cursor movement no longer clears or redraws the screen, unchanged frames produce no output, and menus and dialogs are composed before writing to the terminal.
- Incomplete key sequences and bracketed-paste chunks wait for a complete input event before requesting another frame. Resizing and failed terminal writes still trigger a full repaint.
- The shell installer's release validation works with older mawk versions, including Debian 12's default awk.
Changed
- The macOS/Linux installer keeps the short
curl ... | shcommand, clearly separates current-terminal PATH instructions from future-terminal setup, and offers to open TTE immediately after an interactive installation. Unattended installs keep running without prompts or launching the editor.
v0.2.2 Build 20261020A · 2026-10-20
Security
- Document and spreadsheet preview workers reject inputs over 128 MiB, retain at most 16 MiB of output and 4 KiB of diagnostics, and fail instead of returning a truncated preview. Input framing no longer makes a second full-size copy, and preview workers receive none of the editor's environment.
- The spreadsheet preview dependency moves to an upstream commit that fixes four reachable denial-of-service flaws in malformed or hostile workbooks:
GO-2026-6684,GO-2026-6685,GO-2026-6688, andGO-2026-6689. - Document export uses exclusive file creation, so a file or symlink created while the export prompt is open cannot be overwritten.
Changed
- The release toolchain moves to Go 1.26.9 with updated Go dependencies.
- The terminal application and conversion worker are split into focused source files without changing the editing workflow.
Fixed
- PDF files keep their original bytes even when they contain no NUL byte near the header, preventing newline normalization from corrupting PDF offsets and streams before preview conversion.
v0.2.1 Build 20261008A · 2026-10-08
Fixed
- Markdown preview's table of contents highlights the clicked heading correctly near the end of a document, including documents that fit in the viewport. The active entry follows the visible cursor and falls back to the viewport's top section when the cursor is off screen.
v0.2.0 Build 20261001A · 2026-10-01
Added
- Native read-only
.xlsxpreviews with worksheet navigation, Excel cell addresses, formatted values, and cell copying. Use Tab/Shift+Tab or the View menu to change sheets, and Spreadsheet/Hex to switch views. Formulas show saved results without recalculation; viewing leaves the workbook unchanged.
Changed
- Shared table parsing and rendering, spreadsheet navigation, workbook loading, and archive validation are separated into focused modules, with regression coverage for existing behavior.
Fixed
- XLSX previews ignore trailing formatting-only rows and cells when checking size limits, so workbooks with many sparsely populated sheets open correctly while preserving gaps between actual values.
- Explorer name sorting compares numbers by value:
1-AA,9-bb,13-vv,99-fdfa,123-asd. This also handles numbers inside names, leading zeros, and very long numbers. - Name order remains case-insensitive, with directories first and underscores before digits. The same name comparison breaks ties within extension groups and between equal modification times; original spelling breaks otherwise equal ties.