Releases
v0.1.0
Compare
Sorry, something went wrong.
No results found
0.1.0 (2026-08-09)
Features
annotations: colour highlights with H, line wash, and overlay tab (6017070 )
annotations: store layer for colour highlights (04549db )
app: command palette + fuzzy matcher (Phase 4) (a3636b5 )
bookmarks: named bookmarks + folders (65ea7b7 )
bookmarks: pure bookmarks, gutter ribbon, modern overlay (84eb15e )
dedup: content-fingerprint deep scan (SimHash), drop cover+title (3148685 )
dedup: drop READ column and per-group title from the resolver table (97992aa )
dedup: fingerprint the title page / front matter, not the middle (db4bd81 )
dedup: identify books by title read from the page, not metadata (c71ddd6 )
dedup: match books by their table of contents (a81fea4 )
dedup: multi-key union-find detection + "keep both" dismissals (7cff332 )
dedup: per-author metadata match + content scan skips metadata-grouped (6afb3dc )
dedup: rename keep→ignore; add ignored-groups manager (8d423f7 )
dedup: resolver full-screen, format/converted prefs, path column (b835b3e )
dedup: resolver preview + reveal, tabular layout; drop Enter-delete (1ffc897 )
dedup: scan every book — union all tiers instead of fallback (2aba5dd )
dedup: thorough cover-hash duplicate scan (R in Duplicates view) (e2dc535 )
epub: EPUB3 navigation document — TOC + bodymatter start (Parsing Phase B) (3645751 )
eqn: degrade unmappable MathML nodes instead of sinking the equation (#7 ) (97d3679 )
eqn: recover math from data-mathml, JATS tex-math, and aria-describedby (#9 ) (6470efc )
format: display-math detection → Block::Math (83366e6 )
format: footnote/cross-ref anchors + footnote definitions (75365c0 )
format: MathML rendering (+ quieter inline image placeholder) (619118c )
format: parse <table> into Block::Table (a16b8cf )
format: parse admonitions into Block::Callout (ab1abdc )
format: PDF v2 — page-as-image backend (pdfium-render) (93f4b34 )
formats: recognize PDF/MOBI/AZW3 — index by filename, dispatch on open (42a0d7b )
html: attach a trailing 'Figure N.' paragraph as the image caption (226b295 )
image-viewer: open on current figure, copy, editable save path (6e87935 )
images: auto-boost low-res equations + live "Equation size %" knob (007c11f )
images: normalize figure sizing + Lanczos3 quality; text-proportional equation strips (002a502 )
images: size figures consistently from authored width (418302e )
layout: justify, soft-hyphen breaks, converter-spacing tidy (010848f )
library: Cover Wall view — immersive, chrome-minimal cover grid (433f7f5 )
library: cross-format duplicate detection (Phase 3) (34a56e1 )
library: direction-aware cover prefetch + vim page navigation (86bd181 )
library: duplicate resolution (keep one, delete the rest) (91c0fb2 )
library: duplicate-resolution overlay (checkboxes + smart auto-select) (2e7b1a2 )
library: export book list to CSV/JSON/Markdown (Phase 4) (2c414ec )
library: free-form per-book tags (43ec769 )
library: in-app Sources tab to manage library folders + folder CLI args (32a83a5 )
library: metadata diff + selective apply (6f0535a )
library: PDFs/EPUBs sidebar views + clearer Collections divider (9f34583 )
library: per-book rating (Phase 3) (95de61f )
library: reading-status enum + per-column show/hide + sort rework (91ac062 )
library: right-aligned book counts per sidebar group (142281d )
library: single cover grid — rounded covers, details caption, no badge (aa02613 )
library: smart filter query DSL (Phase 3) (693bba8 )
library: statistics overlay (Phase 4) (703f9f7 )
library: stretch covers to fill the cell (grid + wall) + wall badge (2a23722 )
library: trash-delete, orphan sweep, frequency tab order, stable tabs (22e3d12 )
lookup: Year + ISBN seed fields; ISBN-only exact lookup (27c5071 )
math: "Math size %" setting for graphical equation size (c5a3007 )
math: delryn-math crate — LaTeX → cached PNG (RaTeX) (4e05bbb )
math: render display equations as themed images (graphical math) (3cf3bcf )
math: retain the LaTeX source on Block::Math (beefdda )
math: super-script unambiguous exponents in text equations (cce72a4 )
math: universal, encoding-agnostic math rendering (#5 ) (328c867 )
media: image rendering modes — smart lightness-invert (c9c83cc )
mobi: detect converted (calibre etc.) files during scan (1915647 )
mobi: HUFF/CDIC decompression (type 17480) (#9 ) (92b9887 )
mobi: KF8/AZW3 sections, NCX table of contents, and inline images (#13 ) (2a8cca1 )
mobi: MOBI/AZW3 reader — PalmDB + PalmDOC decompress → shared HTML pipeline (a04da61 )
model: rich Block model for technical content (8c43c72 )
mouse: clickable library sidebar, detail pane, and annotations tabs (e2616bc )
mouse: make every modal overlay mouse-drivable via one shared mechanism (4ebba0d )
notes: line-anchored notes with commentary, pen gutter icon, searchable overlay (45c8d24 )
overlay: standardize all overlay windows — one compact size, f to enlarge, scrollable (52e21d4 )
pdf: constant margin crop for consistent page width (7e04933 )
pdf: margin trim + full-bleed spread + sharper raster (6f5aecb )
pdf: theme full pages to the active theme (Auto/Invert/Faithful) (474c251 )
pdf: viewport-matched crisp re-raster (size-keyed page cache) (a5d4a45 )
reader: break wide display equations into stacked lines (#10 ) (49b551a )
reader: code folding and the F/I number-badge pick-mode (#20 ) (40f8664 )
reader: code-block navigation (next/prev + position) (608da2c )
reader: continuous PDF default to fit-page + side padding (38cbdbc )
reader: continuous PDF zoom/centre/pan + two-page stacking (a4c3cde )
reader: continuous scroll across chapters (reflow) (3ba2df0 )
reader: continuous scroll for paged (PDF) documents (5e06426 )
reader: cover-page offset for two-page PDF mode (8ce13b3 )
reader: Ctrl-d/Ctrl-u half-page caret navigation in cursor mode (d20a3b3 )
reader: direct-Kitty PDF page rendering (icat model, no flash) (fd809a3 )
reader: DPI-independent, consistent equation & image sizing (#22 ) (3855961 )
reader: draw following sections' figures in continuous scroll (79b24c9 )
reader: follow cross-references & citations (complete link cursor) (c918e4b )
reader: full-featured image viewer (11236ae )
reader: fullscreen code viewer, theme-aware highlighting, and shared list nav (#19 ) (a1b9853 )
reader: link cursor — follow footnote refs / links (Phase 2) (4d7f86a )
reader: manga (RTL) two-page continuous scroll (6f2622f )
reader: manga / right-to-left reading direction for paged spreads (894c0a1 )
reader: page mode — paginated reading (Phase 2) (a899a79 )
reader: PDF navigation polish — scroll-spy, page indicator, jumps (d010632 )
reader: Phase 7.2 — preserve reading position across re-wraps (f7e462c )
reader: Phase 7.3 — PDF zoom & pan (fit modes + manual zoom) (f726f87 )
reader: reading-mode presets (Study/Research/Presentation) (52fdf32 )
reader: rewrite PDF page rendering on the termpdf.py model (23c621b )
reader: text-relative graphical math with book-wide size unification (#3 ) (ee61523 )
reader: toggleable table wrap + zebra-striped rows (98d2dd5 )
reader: translate looked-up words in the K panel (ee085ba )
reader: two-page reflow flows across chapters (fills both columns) (8edc00c )
reader: two-page spread for PDF (facing pages) (ba0736f )
reader: typeset more equations and refine equation/caption layout (#6 ) (3a62c10 )
reader: unified jump-by-type navigation (Phase 2) (0dca14e )
reader: unify edge padding across modes; drop Fill; configurable two-page gap (8739d14 )
reader: vim-style visual text selection (9a1c2bb )
reader: word lookup (K) — dictionary + Wikipedia popup (70fa5ee )
render: definition lists (dt/dd) — no more run-on glossaries (89575c5 )
render: depth for heading-based ToCs (e.g. Packt) (fd75da4 )
render: wrap table cells by default + shared wrap_text primitive (4919c70 )
settings: expose PDF margin trim toggle (Settings → Content → PDF) (b46c48c )
settings: group options into scrollable tabs (67aed99 )
status: [status] config block — per-zone segment order, separator, clock (595bce6 )
status: unified segment-based status bar (1942b71 )
theme: code-block surface panel + themed callout glyphs (5a71447 )
theme: drop illegible user themes at load (contrast gate) (d79892e )
theme: semantic Role system (style/color resolution) (a2ac5c0 )
theme: user-configurable themes via a runtime registry (048945d )
ui: add shared TextInput widget (char-cursor single-line editor) (a999317 )
ui: describe and search settings, and move prompts into modals (#15 ) (54dd9bc )
ui: responsive panes everywhere (reader, library, image viewer) (31ed930 )
view: round the remaining selection highlights (8da7c1f )
view: rounded selection highlights everywhere (3eca535 )
Bug Fixes
bookmarks: gutter gap, flag icon, guaranteed margin (9ed9b4b )
dedup: allow D/R from the sidebar in the Duplicates view (2646c00 )
dedup: drop high-frequency TOC labels (publisher boilerplate) (8ebc07e )
dedup: gate cover-scan links on title agreement; add dev docs (76330f0 )
dedup: keep the directory, trim the long filename in the path column (b656804 )
dedup: make the resolver footer fit so "open location" is visible (c686592 )
dedup: require the TOCs to genuinely coincide (overlap 0.6→0.85) (52f93dd )
epub: honor CSS display:block so citation lines don't run together (#18 ) (9b81af4 )
epub: render SVG-wrapped covers (<svg><image xlink:href>) (79edea3 )
eqn: disambiguate and space the Unicode math floor (#8 ) (5052d0a )
format: bound recursion depth in MathML, EPUB nav, and PDF outline (ccb7ad2 )
html: bound DOM-walk recursion depth to prevent stack-overflow DoS (bc0b40e )
html: honour XHTML self-closing tags + detect <br>-delimited code (0f2d5f3 )
image-viewer: chapter label, faithful colours, jump to figure; responsive panes (8b1d67b )
image-viewer: exclude equation images; scale + center the figure (ff41048 )
images: caption-based figure/equation classification + live sizing refresh (b99b928 )
images: figures blank after jumping from the image viewer (3486588 )
images: free the image viewer's terminal images to stop the leak (54ffbc3 )
images: invert transparent colour charts so dark axes stay visible (a9ea823 )
images: keep inline figures visible while scrolling; protect them from eviction (8818b2f )
images: make Kitty image-id namespaces disjoint (a1be6ca )
images: stop neighbour prefetch from evicting the current section's figures (4454e68 )
input: search prompt captures keys before global shortcuts (55e20ec )
invert light screenshots + render UI icons as glyphs (fa12968 )
layout: align table columns (collapse cell newlines) + fair widths (e9ca724 )
layout: centre figure captions under the image (cee7ae1 )
layout: join adjacent spans without inserting spaces (01b339d )
layout: measure display width in cells, not chars (CJK/wide/combining) (27c4df5 )
library: bound cover cache (no blank wall) + coverless placeholder (60b164d )
library: bound cover-wall thumbnails on a uniform panel (not crop) (88d2549 )
library: cumulative column fit so hiding others reveals a wide column (eef9000 )
library: fill cover-wall cells (crop) so thumbnails are uniform (0a9f225 )
library: full mouse support + visible multi-selection (2892a52 )
library: render PDF covers (first page) so they show in grid/wall (211dd2d )
library: responsive book list columns + grid cover sizing (5ce3cb2 )
library: scroll-into-view + per-pane wheel (ba6fbba )
library: sidebar wheel steps one section per notch (d5339ac )
math: draw an underlined vector as a rule, not a subscript (#19 ) (40202b6 )
math: render display-math as the equation image, not approximated text (d0df511 )
math: robust super/subscripts + MathML→Unicode directly (47862be )
math: use the publisher raster for MathML-only equations (#4 ) (37ff606 )
media: equation legibility + precise overlay/image occlusion (d7a1a34 )
media: key equation detection on transparency, not sparsity (7391359 )
media: make image invert adapt to the theme's page colour (18dff59 )
media: real rainbow cause — theme_invert used HSL saturation near white (d89beba )
media: recolour math/line-art images to the theme (no more black-on-black) (7a8f21e )
media: snap near-white halo to paper in invert (kill JPEG speckle) (d175d76 )
mobi: robustness fixes from the comprehensive audit (eca86b9 )
parse: drop hard-coded ordinals in ordered lists (no double numbers) (228b1fc )
parser: also merge caption for <div class="imagewrap"> figure wrappers (044db70 )
parser: merge figure caption into the image so it centres beneath it (5500992 )
pdf: half the edge margin, not zero (02d4fd6 )
pdf: keep a small gutter between spread pages (like EPUB) (a95245f )
pdf: re-transmit pages when the theme/image mode changes (6c1d183 )
pdf: render PDF pages correctly on iTerm2 (#17 ) (8e391b3 )
pdf: x halves the page's own margin (not tight crop / not EPUB edge) (7e75962 )
reader: anchor reserves the stable estimate too (consistent with following) (1802a93 )
reader: badge only figures the image viewer can open (#13 ) (4e883a6 )
reader: clip inline images across continuous boundaries instead of vanishing (#21 ) (c2d70d9 )
reader: correct page swap + direction-aware prefetch (PDF) (19c3b64 )
reader: default PDF transmit back to inline (Ghostty blanked on t=t) (94d5fbc )
reader: don't crash crossing a section boundary upward (#12 ) (94e4f46 )
reader: don't paint inline images over an open overlay (017b80e )
reader: drain the section loader during rendering (facing page) (2660256 )
reader: draw the facing page in a PDF two-page spread (7b69943 )
reader: equation sizing + two-page image eviction (20c550f )
reader: footnote-section nesting, quote color, open links in browser (d49ee1d )
reader: heading-aware TOC navigation, status bar, and format label (#14 ) (5cc3524 )
reader: link cursor treats a whole multi-word link as one stop (d49381d )
reader: page-flip navigation for PDF (kill the scroll-blank flash) (2df4e4a )
reader: presets no longer change the page layout (ae81000 )
reader: re-wrap when a built image's true height differs from the estimate (96ad1c8 )
reader: render lone figure images as block figures, not inline thumbnails (#11 ) (fcc039f )
reader: repaint cleanly when a chrome toggle resizes the text area (#14 ) (b9d3f47 )
reader: size following continuous sections on demand (no lag/stale wrap) (7aab199 )
reader: stable up-front image reservation — no re-wrap, no scroll jump (22c4013 )
reader: stop delryn burning CPU and holding a book's memory after close (#18 ) (afda302 )
reader: strip regenerated markers + file-aware cross-ref jumps (f575be8 )
reader: throttle PDF flips to the display so holding j/k can't skip (66d6adc )
reader: TOC click moves the highlight on the first click (478a88b )
reader: two-page PDF spread flips a whole leaf (no overlap) (2e2fb9f )
reader: two-stage cursor mode + fix two-page annotation anchoring (74f576d )
reader: unique placement id per PDF page (left page was blank) (1a6ebe1 )
render: no link underline + compact ToC / definition lists (515d37a )
render: one-line footnotes + indent/clean printed ToC (76d7197 )
theme: detect the real terminal background for the 'terminal' theme (e2a6368 )
theme: legible muted for the terminal theme (8e458b4 )
theme: make the terminal theme adaptive and rename it to "auto" (302e53c )
theme: never let a book override the global theme (de1ca82 )
Performance Improvements
epub: hoist content-metadata regexes to LazyLock statics (2370e3a )
library: run folder scans off the UI thread (6aabfca )
math: sort the LaTeX symbol table once (LazyLock) (ec5d9a4 )
reader: async PDF page loads so fast j/k scrolls smoothly (137c2bb )
reader: faster + correct direct-Kitty PDF rendering (3248626 )
reader: keep spread pages warm + visible during scroll (2d8fd21 )
reader: make the PDF spread's facing page first-class (no lag/flicker) (c445d6f )
reader: pre-upload look-ahead PDF pages (kill the scroll flash) (3085270 )
reader: temp-file PDF transmit, now with the name Ghostty requires (e139620 )
reader: transmit pages to the terminal ahead of display (5738b05 )
reader: transmit PDF pages via temp file, not 2.5MB of base64 (fe44c3a )
reader: transmit-once page deck — fast continuous scroll (fb0d26f )
You can’t perform that action at this time.