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
22 changes: 22 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,27 @@
# Changelog

## 0.10.0 — 2026-10-01

### Added
- **Mermaid diagrams are laid out, not listed.** Flowcharts used to print as a list of edges; they now draw each node once as a box, with routed edges, arrowheads, edge labels, node shapes and subgraph frames, in every direction (TD, BT, LR, RL). State, class and ER diagrams, which printed as raw source, use the same layout. Gantt charts get a scaled time axis, mindmaps draw as a tree, and unsupported diagram types show their source in a titled box. (#26)
- **Interactive table of contents.** `o` moves focus into the sidebar: move with `j`/`k`, jump with Enter, fold subtrees with `h`/`l`, filter headings with `/`. A click on a row jumps to it. (#24)
- **Clickable links.** With mouse capture on, clicking a link follows it; dragging still selects. (#24)
- **Open in your editor.** `e` opens the current file in `$VISUAL`/`$EDITOR` at the section you are reading and reloads it when the editor exits. On Windows, editors installed as `.cmd` shims (VS Code, Cursor) are found. (#24, #27)
- **Math renders as Unicode.** `$…$`, `$$…$$` and ```` ```math ```` blocks show Greek letters, operators, fractions, roots, sub/superscripts, matrices and `cases` instead of raw LaTeX. Prices like "$5 and $10" are left alone. (#25)
- **Table column alignment.** `:--`, `--:` and `:-:` are honoured. (#25)
- **More markdown.** Definition lists, callouts with custom titles (`> [!NOTE] Title`, including Obsidian types), and `<sub>`/`<sup>` as real sub/superscripts for short plain text (`H<sub>2</sub>O` → H₂O). (#25, #27)
- **Frontmatter box.** With `--frontmatter`, YAML, TOML and JSON frontmatter render as a key/value box instead of being parsed as markdown. A leading JSON object is only treated as frontmatter in that mode and when markdown follows it; otherwise it is shown as written. (#25, #27)
- **`--line-range START:END`** renders only those source lines in `--plain`, `bat`-style, keeping code fences intact when a range cuts through one. (#25, #27)

### Changed
- Enter follows the first followable link anywhere on screen, web and mail links included; it used to look only at the top few lines and only at local links. (#24)
- A paragraph followed by a line starting `: ` is now a definition list, and ```` ```math ```` blocks render as math rather than a code box. (#25)
- The table of contents highlights the heading `n`/`N` jumped to and scrolls to keep it visible. (#24)

### Fixed
- **A hung-up terminal no longer leaves ink spinning at 100% CPU.** Closing an SSH session or killing tmux left the process running forever; it now exits. (#24)
- crates.io and the Homebrew tap are published by the release workflow again, through crates.io Trusted Publishing and a tap-scoped deploy key, instead of by hand. (#23)

## 0.9.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.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "ink-md"
version = "0.9.0"
version = "0.10.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
4 changes: 2 additions & 2 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.9.0 INK_INSTALL_DIR="$HOME/.local/bin" sh
curl -fsSL https://raw.githubusercontent.com/borghei/ink/main/install.sh | INK_VERSION=v0.10.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.9.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.10.0"` first to pin a version.

### Homebrew (macOS / Linux)

Expand Down
6 changes: 3 additions & 3 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ <h3>Inline images</h3>
</div>
<div class="feature">
<h3>Mermaid diagrams</h3>
<p>Flowcharts, sequence diagrams, pie charts, and Gantt charts as ASCII art.</p>
<p>Flowcharts, state, class and ER diagrams laid out as boxes and arrows, plus sequence, pie, Gantt and mindmaps.</p>
</div>
<div class="feature">
<h3>8 themes</h3>
Expand All @@ -323,15 +323,15 @@ <h3>Search</h3>
</div>
<div class="feature">
<h3>Table of contents</h3>
<p>Sidebar showing every heading. Tracks your scroll position.</p>
<p>Sidebar showing every heading. Press <code>o</code> to move through it, filter, fold, and jump.</p>
</div>
<div class="feature">
<h3>Select &amp; copy</h3>
<p><code>v</code>/<code>V</code> or a mouse drag selects text, <code>y</code> copies it. <code>c</code> copies a code block's raw source, <code>Y</code> the current section.</p>
</div>
<div class="feature">
<h3>Open links by keyboard</h3>
<p>Press <code>f</code> to label links, each listed with its text and URL, then a letter to open or follow them.</p>
<p>Press <code>f</code> to label links, each listed with its text and URL, then a letter to open or follow them. Or just click one.</p>
</div>
<div class="feature">
<h3>Math &amp; emoji</h3>
Expand Down
4 changes: 2 additions & 2 deletions docs/llms-full.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ ink is a feature-rich terminal markdown reader built in Rust. It renders markdow
- Respects --no-images flag

### Mermaid Diagrams
- Renders mermaid code blocks as ASCII art
- Supports flowcharts/graphs, sequence diagrams, pie charts, Gantt charts
- Renders mermaid code blocks as text art; flowcharts, state, class and ER diagrams use a layered layout (each node drawn once, routed edges, TD/BT/LR/RL); unsupported diagram types show their source in a titled box
- Supports flowcharts/graphs, state, class and ER diagrams, sequence diagrams, pie charts, Gantt charts, mindmaps
- Unknown diagram types get fallback rendering

### Admonitions
Expand Down
4 changes: 2 additions & 2 deletions docs/llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ ink is a command-line tool that renders markdown files in the terminal with rich

- Renders markdown with syntax highlighting, tables (with column alignment), blockquotes, lists, task lists, footnotes, definition lists, HTML superscript (<sup>) and subscript (<sub>), and horizontal rules
- Displays inline images using terminal graphics protocols (Kitty, iTerm2, Sixel) where supported, falling back to Unicode half-block characters (any true-color terminal); --image-protocol selects the renderer
- Renders mermaid diagrams (flowcharts, sequence diagrams, pie charts, Gantt charts) as ASCII art
- Renders mermaid diagrams as text art: flowcharts (laid out with boxes and routed edges, all directions), state, class and ER diagrams, sequence diagrams, pie charts, Gantt charts and mindmaps
- Supports GitHub-style admonitions (NOTE, TIP, IMPORTANT, WARNING, CAUTION) with custom titles, and Obsidian callouts
- YAML and TOML frontmatter: hidden by default, shown as a key/value box with --frontmatter (JSON frontmatter is never hidden; with --frontmatter it gets the box when markdown follows it)
- Supports wikilink syntax: [[page]] and [[page|display text]]
Expand Down Expand Up @@ -39,7 +39,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.9.0 sh install.sh # pin a version
INK_VERSION=v0.10.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
2 changes: 1 addition & 1 deletion 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.9.0" install a specific release (default: latest)
# $env:INK_VERSION = "v0.10.0" install a specific release (default: latest)
# $env:INK_INSTALL_DIR = "C:\tools" install somewhere else
# (default: %LOCALAPPDATA%\Programs\ink)
#
Expand Down
2 changes: 1 addition & 1 deletion 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.9.0 install a specific release (default: latest)
# INK_VERSION=v0.10.0 install a specific release (default: latest)
# INK_INSTALL_DIR="$HOME/.local/bin" install somewhere else (default: /usr/local/bin)
#
# Options:
Expand Down
Loading