Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,39 @@
# Changelog

## 0.9.0 — 2026-10-01

### Added
- **More platforms.** Static musl builds for x86_64, ARM64 and ARMv7 — Alpine, Debian 11, Ubuntu 20.04, RHEL 8, NixOS, containers and 32-bit Raspberry Pi — and a native Windows ARM64 build. The Windows binaries no longer need the Visual C++ runtime. (#19)
- **Smarter installers.** `install.sh` picks the right binary for your libc and CPU, supports `INK_VERSION` pinning, works with `wget`, and no longer depends on the rate-limited GitHub API. New `install.ps1` for Windows. (#19)
- **Man page and shell completions** ship in the `.deb`/`.rpm` and in new `.tar.gz`/`.zip` release archives. Release assets carry a build-provenance attestation (`gh attestation verify`). (#19)
- **`--color auto|always|never`.** Piped `--plain` output is clean text by default, `ink file.md | cat` prints the document instead of failing, and `ink -` reads stdin. Previews that want colour in a pipe (fzf, `less -R`) pass `--color=always`. (#17)
- **Anchor links.** `#heading` and `file.md#heading` jump to the heading, as do `[[page#section]]` and `[[#section]]` wikilinks, and every followed link goes into back/forward history with its scroll position. A link that cannot be followed now says so. (#16, #21)
- **Light/dark auto-detection** by asking the terminal for its background colour, so light-profile terminals get a light theme without configuration. (#20)
- **`--ascii` mode and a 16-colour tier** for the Linux console, legacy console fonts and screen readers; both switch on automatically where needed. With `--color=never` or `NO_COLOR` the reader uses no colour at all. (#20)
- **`--no-mouse`** leaves the mouse to the terminal for one session, and the file browser now honours `mouse_capture`. (#20)
- **`ink doctor` reports the whole environment** — colour, theme, clipboard, input, config and multiplexer facts, with home paths and session values redacted. (#20)

### Fixed
- **Every key acted twice on Windows.** Key-release events are now ignored. (#16)
- **Hard line breaks glued words together** (`hard⏎break` rendered as `hardbreak`); they now start a new line, in tables too. (#18)
- **HTML blocks no longer lose text or print raw tags.** Headings, links, images, `<details>`, `<kbd>`, `<br>` and entities render; comments are dropped. A GitHub-style centered README header now reads as a title. (#18)
- **Wikilinks inside code are left untouched**, and targets with spaces or parentheses work. (#18)
- **The terminal is restored after SIGTERM, SIGHUP and SIGINT** instead of being left in raw mode. (#16)
- **The file browser no longer hangs on symlink loops.** (#16)
- **Config and flag errors are reported.** A bad line in `config.toml` prints a warning and the rest still applies; invalid `--width`, `--spacing` and `--image-protocol` values are errors. (#17)
- **Copying non-ASCII text works on Windows and WSL**; Termux and GNU screen clipboards are supported. (#20)
- **No startup stall** in Apple Terminal or on the Linux console, where the image-protocol probe is now skipped. (#20)

### Security
- **Deeply nested documents can no longer crash ink** with a stack overflow; a 20 KB file used to. (#18)
- **Image decode limits** stop decompression bombs: a document with six hostile inline images went from 2.2 GB of memory to 34 MB. Tall screenshots and large photos still decode. (#17, #21)
- **`ink outline` and `ink diff` no longer pass escape sequences** from the document to the terminal. (#17)

### Changed
- `NO_COLOR` now also drops bold and underline in `--plain`.
- The unused C regex dependency (oniguruma) is gone; syntax highlighting runs on the pure-Rust engine.
- The minimum supported Rust version is declared as 1.90.

## 0.8.0 — 2026-10-01

### Added
Expand Down
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "ink-md"
version = "0.8.0"
version = "0.9.0"
edition = "2021"
# Highest rust-version declared by any resolved dependency (quantette, via
# ratatui-image). CI's msrv job builds with exactly this toolchain.
Expand Down Expand Up @@ -119,7 +119,7 @@ pkg-url = "{ repo }/releases/download/v{ version }/ink-macos-arm64"
[package.metadata.binstall.overrides.x86_64-pc-windows-msvc]
pkg-url = "{ repo }/releases/download/v{ version }/ink-windows-amd64.exe"

# Static musl builds and Windows ARM64 (first published after v0.8.0).
# Static musl builds and Windows ARM64 (first published in v0.9.0).
[package.metadata.binstall.overrides.x86_64-unknown-linux-musl]
pkg-url = "{ repo }/releases/download/v{ version }/ink-linux-amd64-musl"

Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ curl -fsSL https://raw.githubusercontent.com/borghei/ink/main/install.sh | sh
The installer picks the right binary for your OS, CPU and libc (static musl build on Alpine, Raspberry Pi and older-glibc systems), checks it against `SHA256SUMS` and installs to `/usr/local/bin` (using `sudo` only if it has to). Pin a version with `INK_VERSION=v0.8.0` or change the target with `INK_INSTALL_DIR="$HOME/.local/bin"`:

```bash
curl -fsSL https://raw.githubusercontent.com/borghei/ink/main/install.sh | INK_VERSION=v0.8.0 INK_INSTALL_DIR="$HOME/.local/bin" sh
curl -fsSL https://raw.githubusercontent.com/borghei/ink/main/install.sh | INK_VERSION=v0.9.0 INK_INSTALL_DIR="$HOME/.local/bin" sh
```

### Quick install (Windows PowerShell)
Expand All @@ -38,7 +38,7 @@ curl -fsSL https://raw.githubusercontent.com/borghei/ink/main/install.sh | INK_V
irm https://raw.githubusercontent.com/borghei/ink/main/install.ps1 | iex
```

Installs `ink.exe` (x64 or ARM64) to `%LOCALAPPDATA%\Programs\ink` and adds it to your user `PATH`. Set `$env:INK_VERSION = "v0.8.0"` first to pin a version.
Installs `ink.exe` (x64 or ARM64) to `%LOCALAPPDATA%\Programs\ink` and adds it to your user `PATH`. Set `$env:INK_VERSION = "v0.9.0"` first to pin a version.

### Homebrew (macOS / Linux)

Expand Down Expand Up @@ -107,7 +107,7 @@ The glibc builds need glibc 2.35 or newer; older and musl-based systems use the
gh attestation verify ink-linux-amd64 --repo borghei/ink
```

The static musl builds and Windows ARM64 binaries are new after v0.8.0; earlier releases only have the glibc, macOS and Windows x64 binaries.
The static musl builds and Windows ARM64 binaries are new in v0.9.0; earlier releases only have the glibc, macOS and Windows x64 binaries.

### From source

Expand Down
2 changes: 1 addition & 1 deletion docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -351,7 +351,7 @@ <h3>Presentation mode</h3>
</div>
<div class="feature">
<h3>Works as a pager</h3>
<p><code>ink --plain</code> pages long docs through <code>$PAGER</code>, like <code>bat</code>.</p>
<p><code>ink --plain</code> pages long docs through <code>$PAGER</code>, like <code>bat</code>, and writes clean text when piped.</p>
</div>
<div class="feature">
<h3>Safe with untrusted files</h3>
Expand Down
6 changes: 4 additions & 2 deletions docs/llms-full.txt
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,9 @@ ink is a feature-rich terminal markdown reader built in Rust. It renders markdow

### Themes
- 8 built-in themes: dark, light, dracula, catppuccin, nord, tokyo-night, gruvbox, solarized
- Auto-detection of terminal background (dark/light)
- Auto-detection of terminal background (dark/light) by querying the terminal (OSC 11), falling back to COLORFGBG
- 24-bit, 256-colour and 16-colour output chosen from the terminal; --ascii (or [behavior] ascii = true) draws borders, bullets and markers in plain ASCII, automatic on the Linux console and non-UTF-8 locales
- --no-mouse leaves the mouse to the terminal for one session
- Live theme preview with T key; the chosen theme is saved to config
- ink --list-themes lists all available themes (built-in + custom)
- 30+ customizable color properties per theme
Expand Down Expand Up @@ -108,7 +110,7 @@ ink is a feature-rich terminal markdown reader built in Rust. It renders markdow
- Ctrl+d/Ctrl+u: half-page down/up
- n/N: next/previous heading (cycles search matches after a search)
- /: search
- f: link-hint mode (open/follow links by letter; the overlay lists each link's text next to its URL; Y inside the overlay copies the URL instead)
- f: link-hint mode (open/follow links by letter; the overlay lists each link's text next to its URL; Y inside the overlay copies the URL instead); #heading and file.md#heading links jump to the heading, and [ goes back
- v/V: select text character-wise / line-wise (motions hjkl, arrows, w/b, 0/$, g/G, Ctrl+d/Ctrl+u; y copies, Esc cancels)
- Mouse: drag selects and copies on release; double-click selects a word, triple-click a line
- c: label the code blocks on screen and copy one's raw source by letter
Expand Down
2 changes: 1 addition & 1 deletion docs/llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ ink is a command-line tool that renders markdown files in the terminal with rich
curl -fsSL https://raw.githubusercontent.com/borghei/ink/main/install.sh | sh # macOS / Linux (picks glibc or static musl build)
irm https://raw.githubusercontent.com/borghei/ink/main/install.ps1 | iex # Windows PowerShell (x64 / ARM64)
cargo install ink-md # from source (Rust 1.90+)
INK_VERSION=v0.8.0 sh install.sh # pin a version
INK_VERSION=v0.9.0 sh install.sh # pin a version

Prebuilt: Linux amd64/arm64 (glibc 2.35+), static musl Linux amd64/arm64/armv7 (any distro), macOS amd64/arm64, Windows amd64/arm64; .deb/.rpm and tar.gz/zip archives include the man page and completions. Verify with SHA256SUMS or `gh attestation verify <file> --repo borghei/ink`.

Expand Down
4 changes: 2 additions & 2 deletions install.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# irm https://raw.githubusercontent.com/borghei/ink/main/install.ps1 | iex
#
# Environment:
# $env:INK_VERSION = "v0.8.0" install a specific release (default: latest)
# $env:INK_VERSION = "v0.9.0" install a specific release (default: latest)
# $env:INK_INSTALL_DIR = "C:\tools" install somewhere else
# (default: %LOCALAPPDATA%\Programs\ink)
#
Expand Down Expand Up @@ -86,7 +86,7 @@

$asset = "ink-windows-$arch.exe"
if (-not $sums.ContainsKey($asset) -and $arch -eq 'arm64') {
# Releases up to v0.8.0 have no native ARM64 build; Windows on ARM
# Releases before v0.9.0 have no native ARM64 build; Windows on ARM
# runs the x64 one under emulation.
Write-Host "Release $label has no native ARM64 build; installing the x64 build (runs under emulation)."
$asset = 'ink-windows-amd64.exe'
Expand Down
6 changes: 3 additions & 3 deletions install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# curl -fsSL https://raw.githubusercontent.com/borghei/ink/main/install.sh | sh
#
# Environment:
# INK_VERSION=v0.8.0 install a specific release (default: latest)
# INK_VERSION=v0.9.0 install a specific release (default: latest)
# INK_INSTALL_DIR="$HOME/.local/bin" install somewhere else (default: /usr/local/bin)
#
# Options:
Expand Down Expand Up @@ -277,10 +277,10 @@ main() {
case "$asset" in
*-musl)
if [ -n "${INK_VERSION:-}" ]; then
err "Static musl builds first shipped in the release after v0.8.0; $version predates them."
err "Static musl builds first shipped in v0.9.0; $version predates them."
err "Unset INK_VERSION (or pick a newer one) to get it."
else
err "Static musl builds first ship in the release after v0.8.0, which is not out yet."
err "Static musl builds first shipped in v0.9.0; the latest release has none."
fi
;;
esac
Expand Down
Loading