Skip to content

Releases: fermat-tech/winless

v1.2.7 — Fix: Down/Up couldn't reach the last line(s) for yank

Choose a tag to compare

@fermat-tech fermat-tech released this 16 Sep 07:27

What's fixed

Follow-up to v1.2.6: Ng/NG yanking the wrong line was fixed there, but
plain single-line scrolling (Down/j, Up/k) had the same underlying
issue. On a file short enough to fit on one screen — or once you reached
the final page of a longer file — the viewport has nothing left to scroll
into, so Down became a no-op and y kept yanking whatever line was
already on screen instead of the one you pressed Down to reach.

Example: on a 2-line file, g (top) then Down then y always yanked
line 1, never line 2.

Fix: a single-line scroll that can't move the viewport now advances the
yank target directly within the already-visible remainder, so g, Down,
y (and repeated Down through a file's final page) reach the correct
line. Down/Up still scroll exactly one line at a time on longer files
— unchanged.

Binaries

File Target
winless_windows_amd64.exe Windows x64 (most PCs)
winless_windows_arm64.exe Windows on ARM (Surface Pro X, Copilot+ PCs)

v1.2.6 — Fix: y yanked the wrong line near a file's end

Choose a tag to compare

@fermat-tech fermat-tech released this 16 Sep 07:06

What's fixed

  • y (yank current line) copied the wrong line whenever the target line fell within the document's final page — including any file shorter than one screen. Ng/NG (jump to line N) and search matches could set the intended target line, but the pager's scroll clamp (which correctly prevents scrolling past the point where content runs out) silently snapped the view back, and y read whatever was left at the top instead of the line you actually navigated to.

    Example: on a 2-line file, 2g then y always yanked line 1, never line 2, because the whole file already fits on screen and the view can never scroll further.

    Fix: the pager now tracks the exact navigation target separately from the (correctly) clamped scroll position, and y yanks that target. Verified with new tests exercising the real key-handling and scroll/search code against tcell'"'"'s own simulation-screen test backend, including the exact short-file case, a long-file final-page case, and a regression guard that ordinary scrolling still yanks the top-of-screen line as before.

Binaries

File Target
winless_windows_amd64.exe Windows x64 (most PCs)
winless_windows_arm64.exe Windows on ARM (Surface Pro X, Copilot+ PCs)

v1.2.5 — Fix: multi-line clipboard copy joined into one line on paste

Choose a tag to compare

@fermat-tech fermat-tech released this 10 Sep 04:32

What's fixed

  • Copying multiple lines with the mouse and pasting elsewhere joined everything into one line. winless was writing bare \n between selected lines to the clipboard, but Windows' CF_UNICODETEXT format is conventionally CRLF-terminated — some paste consumers (confirmed with pasting into a WSL bash prompt) drop or mishandle a lone LF. winless now writes proper CRLF line endings.
  • Occasional "Copy failed: Access is denied." OpenClipboard had no retry, so a transient clipboard holder (Windows' own clipboard history, PowerToys, other clipboard managers) could make a copy fail outright. winless now retries briefly (up to ~200ms) before giving up.

Binaries

File Target
winless_windows_amd64.exe Windows x64 (most PCs)
winless_windows_arm64.exe Windows on ARM (Surface Pro X, Copilot+ PCs)

v1.2.4 — Fix: garbled/uncopyable text from native Windows tools

Choose a tag to compare

@fermat-tech fermat-tech released this 10 Sep 04:16

What's fixed

  • Garbled, letter-spaced text and failed clipboard copy when paging output from native Windows console tools (e.g. wsl --help | winless). Root cause: some Windows tools write raw UTF-16LE to a redirected/piped stdout with no byte-order mark, which winless previously read byte-for-byte as UTF-8 — every character showed with a stray gap, and copying such a line crashed with Copy failed: invalid argument because the embedded NUL bytes are rejected by the clipboard API. winless now sniffs for a UTF-16 BOM and, failing that, a heuristic that detects BOM-less UTF-16 text, and transcodes it to UTF-8 before display.
  • --version now reports the real release tag. Converted from a const to a var so the build stamps the actual version (-X main.version=) instead of silently keeping whatever was hardcoded at commit time.

Binaries

File Target
winless_windows_amd64.exe Windows x64 (most PCs)
winless_windows_arm64.exe Windows on ARM (Surface Pro X, Copilot+ PCs)

v1.2.3 — Fix: -- end-of-options marker

Choose a tag to compare

@fermat-tech fermat-tech released this 02 Aug 09:02

What's fixed

  • -- end-of-options marker — like Linux less, winless -- -w now correctly opens a file literally named -w instead of erroring with unknown flag "-w". All arguments after -- are treated as filenames, regardless of a leading -.

Binaries

File Target
winless_windows_amd64.exe Windows x64 (most PCs)
winless_windows_arm64.exe Windows on ARM (Surface Pro X, Copilot+ PCs)

v1.2.2 — Version flag

Choose a tag to compare

@fermat-tech fermat-tech released this 11 Jul 05:47

What's new

  • -V / --version — like Linux less, prints the version and exits (winless v1.2.2).

Binaries

File Target
winless_windows_amd64.exe Windows x64 (most PCs)
winless_windows_arm64.exe Windows on ARM (Surface Pro X, Copilot+ PCs)

v1.2.1 — Fix unsafe.Pointer vet warnings

Choose a tag to compare

@fermat-tech fermat-tech released this 11 Jul 05:41

What's fixed

  • go vet clean — the two "possible misuse of unsafe.Pointer" warnings in the clipboard code (clipboard_windows.go) are resolved by using unsafe.Add instead of a direct uintptr→unsafe.Pointer conversion, which vet cannot statically verify as safe even though the underlying memory (Win32 global heap) is not GC-managed.
  • Added a clipboard round-trip regression test (write + read back, including Unicode) to guard this code path going forward.

No behavior changes — copy/paste still works exactly as before.

Binaries

File Target
winless_windows_amd64.exe Windows x64 (most PCs)
winless_windows_arm64.exe Windows on ARM (Surface Pro X, Copilot+ PCs)

v1.2.0 — Multi-file navigation, half-page scroll, line/percent jumps, case toggle

Choose a tag to compare

@fermat-tech fermat-tech released this 11 Jul 05:30

What's new

  • Half-page scroll — d / Ctrl+D down, u / Ctrl+U up.
  • Jump to line number — Ng or NG (type a number, then g or G).
  • Jump to percentage — Np or N% (e.g. 50p jumps to the midpoint).
  • Case-insensitive toggle — -i / --ignore-case flag (on by default) and I key to flip at runtime; the status bar shows a (case) tag when case-sensitive.
  • Multi-file navigation — pass multiple files on the command line; move between them with :n (next), :p (previous), :x (first), :d (remove current), :e <file> (open another file).

Binaries

File Target
winless_windows_amd64.exe Windows x64 (most PCs)
winless_windows_arm64.exe Windows on ARM (Surface Pro X, Copilot+ PCs)

v1.1.2 — MIT license; full pkg.go.dev documentation

Choose a tag to compare

@fermat-tech fermat-tech released this 11 Jul 05:04

What's new

  • MIT license added — pkg.go.dev now displays full documentation (previously hidden due to missing license).
  • Expanded documentation — package doc comment covers install, all options, navigation, search, copy, syntax highlighting, follow mode, and the rename-friendly binary name.

Binaries

File Target
winless_windows_amd64.exe Windows x64 (most PCs)
winless_windows_arm64.exe Windows on ARM (Surface Pro X, Copilot+ PCs)

v1.1.1 — Clipboard paste in search; fix long-line crash

Choose a tag to compare

@fermat-tech fermat-tech released this 11 Jul 04:52

What's new

  • Paste into search — while typing a / or ? pattern, paste the clipboard with Ctrl+V, Insert (Shift+Insert), or right-click.
  • Fix: token too long — files with lines longer than 1 MB no longer crash with bufio.Scanner: token too long. Line length is now unlimited.

Binaries

File Target
winless_windows_amd64.exe Windows x64 (most PCs)
winless_windows_arm64.exe Windows on ARM (Surface Pro X, Copilot+ PCs)