Skip to content

Releases: luckgrid/wiki-reader

v0.1.11

Choose a tag to compare

@github-actions github-actions released this 06 Oct 23:03
7532065

First release on crates.io

wiki-reader is now on crates.io. The package is wiki-reader-tui (the name wiki-reader was taken); the installed command is still wiki-reader.

cargo install --locked wiki-reader-tui
# lite build (no images, SVG or Mermaid pictures; smaller and faster to build)
cargo install --locked --no-default-features wiki-reader-tui

If you installed wiki-reader before the rename, run cargo uninstall wiki-reader first (or add --force): cargo will not let a second package overwrite the same command. Tags up to v0.1.10 install under the old package name. The library crates wiki-reader-core, wiki-reader-media and wiki-reader-render are published alongside it.

What changed since v0.1.10

  • Packaging. MSRV 1.92 (checked in CI), a cargo-deny policy and CI job, NOTICE, per-crate licence copies, and THIRD-PARTY-LICENSES in every release tarball. SECURITY.md points at GitHub private vulnerability reporting.
  • Releases. v0.1.* tags are no longer flagged as GitHub prereleases; only tags with a suffix (-rc.1) are. The project is pre-1.0: only the latest release gets fixes.
  • Docs. Table, diagram and image viewer screenshots in the UI spec; all screenshots live in wiki/assets/.
  • Tooling. The orphaned-reader PTY check is now a Rust tool (check-orphan-exit) and gains a case for a reader whose terminal never reads its output. The macOS "state E" report (V23) could not be reproduced and was dropped.
  • Dependencies. signal-hook 0.4, toml 1.x, mermaid-text 0.57, insta and the GitHub actions.

There are no behaviour changes to the reader itself.

Install and upgrade

Download the matching platform tarball and its .sha256, verify the checksum, and replace the binary in the same install location. See Releasing and upgrading.

  • Binaries are unsigned and not notarized.
  • Browser downloads on macOS may be quarantined. If Gatekeeper blocks the extracted binary, run xattr -d com.apple.quarantine path/to/wiki-reader.
  • The Linux binary links the glibc from the ubuntu-latest build runner; older distributions may need cargo install.
  • Upgrades preserve configuration and saved sessions.

v0.1.10

v0.1.10 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 06 Oct 05:33
3759619

Orphaned reader exit (P3-37 / V22)

A reader whose terminal went away could keep running and spin at ~100 % CPU for hours (seen on four processes after their shells exited). v0.1.10 ends that.

  • Session-leader watchdog. If the shell that owns the terminal session is gone, wiki-reader exits within about a second. Root cause, measured on macOS: the spin follows the death of the session leader, while a parent that merely exits (a launcher) leaves the reader idle, so only the leader is watched.
  • Hung-up terminal. A closed PTY master (closed window, dropped SSH) ends the session; a stuck read is force-exited after a short grace.
  • Non-terminal stdio. wiki-reader refuses to start when stdin or stdout is not a terminal.
  • No panic on a dead stderr. Closing the terminal during startup used to abort the process with SIGABRT (a crash report on macOS) because error output panicked; it now exits cleanly.
  • Signals. SIGHUP, SIGTERM and SIGINT are handled before raw mode starts.
  • Escape hatch. WIKI_READER_NO_WATCHDOG=1 turns the session-leader check off (see the configuration guide; with it off an orphaned reader can spin until killed).

A PTY regression check (scripts/check-orphan-exit.py) now runs in check.sh and CI on Ubuntu and macOS: master closed with the slave held, master closed during startup, session leader killed, opt-out keeps running, launcher exits with the leader alive (reader stays idle), and no TTY.

This is an alpha prerelease, like every v0.1.* release. Phase 2 remains on its fixes-only dogfood hold until the adoption verdict around 2026-10-13. The Phase 3 exit decision still waits on dogfooding the installed build; this release does not restart that clock.

Install and upgrade

Download the matching platform tarball and its .sha256, verify the checksum, and replace the binary in the same install location. See Releasing and upgrading. The lite build is still cargo install --locked --no-default-features --git https://github.com/luckgrid/wiki-reader --tag v0.1.10 wiki-reader.

  • Binaries are unsigned and not notarized.
  • Browser downloads on macOS may be quarantined. If Gatekeeper blocks the extracted binary, run xattr -d com.apple.quarantine path/to/wiki-reader.
  • The Linux binary links the glibc from the ubuntu-latest build runner; older distributions may need a source build or cargo install.
  • Upgrades preserve configuration and saved sessions.

v0.1.9

v0.1.9 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 06 Oct 02:13
1a8ec6f

Linear wrap for long tokens (P3-34 / V4)

Opening a page with a multi-megabyte unbreakable token (or a large inline data URI) used to stall for tens of seconds because wrap cut the remainder with a full width() and copy on every step. Wrap helpers and diagram fallback now scan once with byte offsets.

Harness (release, fingerprint 58fa6358b41688b2)

  • Open 1 MB token: 26.3 s → ~8 ms
  • 400 KB width relayout: 8.7 s → ~6 ms

Regression coverage: 200 KB wall-clock test, differential wrap helpers (including VS16 / ZWJ edges).

This is an alpha prerelease, like every v0.1.* release. Phase 2 remains on its fixes-only dogfood hold until the adoption verdict around 2026-10-13. The Phase 3 exit decision still waits on dogfooding the installed build; this release does not restart that clock.

Not in this release: V22 orphan ~100 %CPU spin (filed under P3-36 for v0.1.10+).

Install and upgrade

Download the matching platform tarball and its .sha256, verify the checksum, and replace the binary in the same install location. See Releasing and upgrading. The lite build is still cargo install --locked --no-default-features --git https://github.com/luckgrid/wiki-reader --tag v0.1.9 wiki-reader.

  • Binaries are unsigned and not notarized.
  • Browser downloads on macOS may be quarantined. If Gatekeeper blocks the extracted binary, run xattr -d com.apple.quarantine path/to/wiki-reader.
  • The Linux binary links the glibc from the ubuntu-latest build runner; older distributions may need a source build or cargo install.

v0.1.8

v0.1.8 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 05 Oct 23:51
cb36cec

Table viewer expand (P3-30)

Dogfood of the table viewer found blank columns when text did not fit, no way to read a full cell, and no row separators around expansion. This release expands the focused row so cells wrap in their columns, clips a partial next column instead of leaving blank space, draws rules only around the expansion, and maps tab/newline in cells to spaces for display and copy.

Follow-ups before the tag

  • One rule under the header at open (no double rule).
  • Horizontal scroll keeps the cursor column whole, not clipped to a few cells.
  • Expand-height sizing is cached so the modal does not re-wrap every cell every frame.

This is an alpha prerelease, like every v0.1.* release. Phase 2 remains on its fixes-only dogfood hold until the adoption verdict around 2026-10-13. The Phase 3 exit decision still waits on dogfooding the installed build; this release does not restart that clock.

Install and upgrade

Download the matching platform tarball and its .sha256, verify the checksum, and replace the binary in the same install location. See Releasing and upgrading. The lite build is still cargo install --locked --no-default-features --git https://github.com/luckgrid/wiki-reader --tag v0.1.8 wiki-reader.

  • Binaries are unsigned and not notarized.
  • Browser downloads on macOS may be quarantined. If Gatekeeper blocks the extracted binary, run xattr -d com.apple.quarantine path/to/wiki-reader.
  • The Linux binary links the glibc from the ubuntu-latest build runner; older distributions may need a source build or cargo install.

v0.1.7

v0.1.7 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 05 Oct 21:01
5e3aa36

Audit fixes: robustness

A code audit of v0.1.5 produced a register of findings (audit-v0.1.5.md). v0.1.6 covered crashes and performance; this release covers robustness (P3-29). Staged leftovers (supply chain, remaining media items, and other recorded findings) stay for later releases.

Robustness (P3-29)

  • Config save is atomic and symlink-safe: Options writes rename into place, follow a symlinked config to its target, copy permissions, and sync_all before replace. Inline TOML tables remain a known limit.
  • Discovery survives bad directories and huge trees: an unreadable directory is skipped with a diagnostic instead of aborting the walk; page files are capped by size, and listing stops at 50,000 pages (which pages survive above that cap follows filesystem walk order).
  • YAML frontmatter amplification is bounded: frontmatter size and alias-marker starts are capped so a hostile document cannot blow up parse time or memory.
  • Copied text matches what you see: control characters and bidi formatting controls are sanitised in rendered spans, code copy, and the table viewer.
  • Large bitmaps stay within a 2× pixel-byte budget: the image viewer keeps one RGBA natural buffer (into_rgba8) and rejects zooms that would exceed the budget.

This is an alpha prerelease, like every v0.1.* release. Phase 2 remains on its fixes-only dogfood hold until the adoption verdict around 2026-10-13. The Phase 3 exit decision still waits on dogfooding the installed build; this release does not restart that clock.

Install and upgrade

Download the matching platform tarball and its .sha256, verify the checksum, and replace the binary in the same install location. See Releasing and upgrading. The lite build is still cargo install --locked --no-default-features --git https://github.com/luckgrid/wiki-reader --tag v0.1.7 wiki-reader.

  • Binaries are unsigned and not notarized.
  • Browser downloads on macOS may be quarantined. If Gatekeeper blocks the extracted binary, run xattr -d com.apple.quarantine path/to/wiki-reader.
  • The Linux binary links the glibc from the ubuntu-latest build runner; older distributions may need a source build or cargo install.
  • Upgrades preserve configuration and saved sessions.

v0.1.6

v0.1.6 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 04 Oct 22:45
17e9007

Audit fixes: crashes, terminal safety and performance

A code audit of v0.1.5 produced a register of findings (audit-v0.1.5.md). This release fixes the crashers and the biggest performance problems; the rest is recorded and scheduled.

Crashes and terminal safety (P3-27)

  • Search no longer panics on some Unicode: a page titled "İstanbul" (or text with the Kelvin sign) crashed the search overlay as soon as you typed a match. Matching now maps back to the original text, in the overlay, the snippets and content search.
  • Help → "Open in editor" now suspends the terminal first, as the e key does, instead of running $EDITOR on top of the live screen.
  • Worker panics no longer wreck the screen: a crash in an image, diagram, highlight or reindex worker becomes an error in the UI (or a message after exit) instead of tearing down raw mode. A dead worker no longer leaves the viewer on "rendering…" with a busy redraw.
  • [keys] overrides apply in the reader only: quit = "q" no longer quits while you type in search, Help or Options, and non-ASCII overrides work.
  • Zoom keys work again after a zoom-time failure. A failed session save backs off, reports once, cleans its temp file, and the session is flushed even if the terminal closes. A non-finite nav_order is ignored.

Performance (P3-28)

  • Pages with many repeated headings no longer slow to a crawl (the duplicate-slug work was quadratic; 4,000 identical headings took seconds).
  • Search-as-you-type refreshes once per burst of keys (a paste used to search per character), content search stops at 500 matches ("500+" in the footer), and the Raw view's highlighting uses one worker that drops superseded pages instead of a thread per page.
  • Previous/next page lookups are constant time, so large collections draw faster. The code and table viewers measure once per frame; table sort keys are computed once, and filtering no longer allocates.
  • A page that cannot be read shows the "page removed" state instead of the previous page, and a rebuild that changes nothing no longer reloads the page.

This is an alpha prerelease, like every v0.1.* release. Phase 2 remains on its fixes-only dogfood hold until the adoption verdict around 2026-10-13.

Install and upgrade

Download the matching platform tarball and its .sha256, verify the checksum, and replace the binary in the same install location. See Releasing and upgrading. The lite build is still cargo install --locked --no-default-features --git https://github.com/luckgrid/wiki-reader --tag v0.1.6 wiki-reader.

  • Binaries are unsigned and not notarized.
  • Browser downloads on macOS may be quarantined. If Gatekeeper blocks the extracted binary, run xattr -d com.apple.quarantine path/to/wiki-reader.
  • The Linux binary links the glibc from the ubuntu-latest build runner; older distributions may need a source build or cargo install.
  • Upgrades preserve configuration and saved sessions.

v0.1.5

v0.1.5 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 04 Oct 21:03
cdbaac4

Lite build, richer viewers, a code viewer and one status vocabulary

  • Lite build (P3-19): cargo install --locked --no-default-features --git https://github.com/luckgrid/wiki-reader --tag v0.1.5 wiki-reader builds without the image stack (image, resvg, mermaid-rs-renderer, ratatui-image). The binary is about 8.4 MiB instead of 16.6 MiB and a clean release build takes about 20 s instead of 51 s on the same machine. Diagrams stay on the text tier, diagrams = "image" falls back to text with a reason, and the Images options group is hidden. There is no -lite download: it is a cargo feature only (ADR-0023).
  • Viewers (P3-20, P3-21, P3-22): table and picture windows size to their content, capped at the old size. a toggles fit / actual size, and an opened picture is larger than its inline slot. Tab / Shift+Tab step through every image and diagram of the page, and v cycles image / text / source for the open diagram. Table cells keep their bold header, borders and link colour; columns use their natural width and scroll sideways, the last column fills the window, and a rule sits under the header.
  • Code viewer (P3-24): long lines in fenced code are cut with … instead of wrapping. Enter anywhere in a fence (or its label) opens the full code in a window you can scroll in both directions; y copies everything. Shift+wheel pans horizontally in the viewers.
  • Toolbar icons (P3-25): the header ◫ ✕ and footer ? ⚙ are three-cell buttons with the same size and gap. The breadcrumb and footer text lose two columns.
  • Status values (P3-26): frontmatter status has eight documented values (draft, proposed, accepted, active, done, deferred, superseded, historical), coloured consistently in the status bar; link-check rejects anything else in wiki/. Other vocabularies in your own collections still display, in the plain text colour.
  • Fix: a diagram that fails to render no longer opens a full-screen window.
  • Docs: new screenshots, including the options window (UI spec).

This is an alpha prerelease, like every v0.1.* release. Phase 2 remains on its fixes-only dogfood hold until the adoption verdict around 2026-10-13. The two-week clock does not restart.

Install and upgrade

Download the matching platform tarball and its .sha256, verify the checksum, and replace the binary in the same install location. See Releasing and upgrading.

  • Binaries are unsigned and not notarized.
  • Browser downloads on macOS may be quarantined. If Gatekeeper blocks the extracted binary, run xattr -d com.apple.quarantine path/to/wiki-reader.
  • The Linux binary links the glibc from the ubuntu-latest build runner; older distributions may need a source build or cargo install.
  • Upgrades preserve configuration and saved sessions.

v0.1.4

v0.1.4 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 04 Oct 03:24
5646e05

herdr integration and a diagram fix

  • herdr plugin (P3-09): integrations/herdr/ is a herdr plugin. Its default action, wiki-reader.open, opens the reader in a new ordinary split pane in the focused pane's directory, where images and diagrams work, and quitting closes the pane. Overlay and popup actions are also provided, but they are text-only on herdr 0.9.x: herdr starts plugin panes without cell metrics, so the reader cannot size pictures there, and says so ("herdr plugin panes report no cell size, open the reader in a normal pane"). It never guesses a cell size. Setup is in the plugin README; needs herdr 0.9.0+ and wiki-reader on PATH.
  • Page in herdr's sidebar (P3-10): inside a herdr pane with its own pane id, the reader publishes the page you are reading (title and a page token) as display-only pane metadata. It is on by default; set [herdr] publish = false to turn it off. It is debounced, renewed while the reader runs, cleared on exit, never reports agent state, and a missing herdr never affects reading. Plugin popups have no pane of their own and never publish. See ADR-0022.
  • Diagram fix (P2-60): diagrams switched under the options window (for example a theme change) no longer stay blank until you leave the page or scroll. A Kitty picture's one-time upload could be lost when a popup covered its first cell; the reader now waits until that cell is visible.
  • An explicit diagrams = "image" that falls back to text now shows its reason in the diagram's header.

This is an alpha prerelease, like every v0.1.* release. Phase 2 remains on its fixes-only dogfood hold until the adoption verdict around 2026-10-13. The two-week clock does not restart.

Install and upgrade

Download the matching platform tarball and its .sha256, verify the checksum, and replace the binary in the same install location. See Releasing and upgrading.

  • Binaries are unsigned and not notarized.
  • Browser downloads on macOS may be quarantined. If Gatekeeper blocks the extracted binary, run xattr -d com.apple.quarantine path/to/wiki-reader.
  • The Linux binary links the glibc from the ubuntu-latest build runner; older distributions may need a source build or cargo install.
  • Upgrades preserve configuration and saved sessions.

v0.1.3

v0.1.3 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 03 Oct 23:14
25ed92a

Batch A chrome pass and a narrow-terminal fix

  • P3-17 bordered bars: the View's tab bar and prev/next bar are now fully bordered three-row boxes with │ dividers, and the side-nav search is a matching bordered bar that lines up with the tab bar. All lines are thin and use their pane's own border colour (peach when focused, gray otherwise). Selected tabs and footer links are bold in the focus colour instead of teal. Tab labels show the real filename including .md. Bars are dropped whole on very short terminals.
  • P3-18 footer buttons: Help (?) and Options (⚙) are buttons at the right of the full-width footer below both panes; the header keeps ◫ and ✕.
  • P3-16 nav labels: nav.labels is title or filename. filename shows the real file names, including extensions, in the side nav only; breadcrumbs and prev/next links stay title-based. An existing title+filename value maps to title with one diagnostic per config load.
  • P2-59 narrow terminals: the side-nav overlay is opaque (no article text bleeding through), long breadcrumbs no longer hide the header buttons, and a click outside the overlay only dismisses it.
  • Removes the unused search_box, tab_active and tab_inactive theme tokens. The README screenshots still show the previous chrome and are refreshed in P3-23.

This is an alpha prerelease, like every v0.1.* release. Phase 2 remains on its fixes-only dogfood hold until the adoption verdict around 2026-10-13. The two-week clock does not restart.

Install and upgrade

Download the matching platform tarball and its .sha256, verify the checksum, and replace the binary in the same install location. See Releasing and upgrading.

  • Binaries are unsigned and not notarized.
  • Browser downloads on macOS may be quarantined. If Gatekeeper blocks the extracted binary, run xattr -d com.apple.quarantine path/to/wiki-reader.
  • The Linux binary links the glibc from the ubuntu-latest build runner; older distributions may need a source build or cargo install.
  • Upgrades preserve configuration and saved sessions.

v0.1.2

v0.1.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 03 Oct 09:04
13a1d2d

Phase 2 dogfood fix

  • P2-56: Mermaid diagrams repaint after options theme switches, including quick switches away and back. Preserve the palette-keyed natural-size cache rather than clearing completed measurements while their queue keys still say measuring. Regression coverage checks Sequence, Pie and Git graph repaint without scrolling or switching pages. Operator QA passed on merged main in standalone Ghostty and Herdr.
  • File the dogfood history, benchmarks and roadmap follow-ups in dedicated, linked pages; restore historical QA detail, reconcile local dates and navigation order, and retain measurement provenance.

This is an alpha prerelease, like every v0.1.* release. Phase 2 remains on its fixes-only dogfood hold until the adoption verdict around 2026-10-13. The two-week clock does not restart.

Install and upgrade

Download the matching platform tarball and its .sha256, verify the checksum, and replace the binary in the same install location. See Releasing and upgrading.

  • Binaries are unsigned and not notarized.
  • Browser downloads on macOS may be quarantined. If Gatekeeper blocks the extracted binary, run xattr -d com.apple.quarantine path/to/wiki-reader.
  • The Linux binary links the glibc from the ubuntu-latest build runner; older distributions may need a source build or cargo install.
  • Upgrades preserve configuration and saved sessions.