Release notes
What changed in each yomi release.
The authoritative, commit-level history lives in CHANGELOG.md and on the releases page. This page summarises each version.
Unreleased
A round on input and output: more ways to feed yomi a page, and more shapes to get one back.
- An EPUB book.
yomi pack --format epub(or a.epuboutput name) builds an EPUB 3 book from a crawl, readable on any e-reader. Each page becomes a well-formed XHTML chapter, in-scope links are rewired to sibling chapters, every referenced image is pulled into the book so it reads with no network, a generated navigation document lists every page, and a drawn-in-code cover stands in front. The book passes EPUBCheck, the official validator, with no errors or warnings, and carries accessibility metadata.--iconsupplies your own cover, and--title,--language, and--datefill the book's metadata. The crawl keeps its SQLite store as a sidecar for the next incremental run, the same as a ZIM build. - More ways in.
yomi read -reads HTML from standard input andyomi read page.htmlreads a local file, so you can convert a page you already have without a fetch.--basesets the URL that relative links resolve against. - More shapes out.
yomi read -f json|jsonlemits the full page record instead of a Markdown document, and-f htmlemits a self-contained HTML article.yomi site --format json|jsonlwrites one dataset file of every crawled page, for feeding a pipeline. - Reach more pages.
yomi site --sitemap(andpack --sitemap) seeds the crawl from the site'ssitemap.xmland anyrobots.txtSitemap:lines, following an index one level, so the crawl reaches pages that are listed but not linked. - Resume a site crawl.
yomi site --resumecontinues an interrupted Markdown crawl. The crawl records each page in a.yomi-state.jsonlsidecar as it goes, so a re-run skips the pages already done, the waypackresumes from its store.
v0.2.1
A pass to make a packed ZIM open nicely in Kiwix.
- A library icon. Every ZIM build now embeds a 48x48 icon, so Kiwix shows a real book tile instead of a blank placeholder. yomi draws a built-in reading icon by default;
--iconwith a PNG uses the site's own logo instead. - Metadata Kiwix reads. The archive now carries a
Counterof the packed pages for the library listing,Creatoris the packed site rather than the tool version, andScrapernames yomi and its version, so the three keys read the way Kiwix expects.
v0.2.0
A new way to keep a whole site: one file instead of a folder.
yomi pack <url>crawls a site and bundles it into one file. The default is a SQLite database with cleanpages,links, andimagestables you can query with SQL;--format zim(or a.zimoutput name) builds a ZIM offline archive you can read in Kiwix, with each page rendered to a self-contained HTML document, internal links rewired to the sibling entries, and a generated contents page.- Resumable, incremental crawls. The crawl is backed by the SQLite store, so a pack resumes where it left off and a later run keeps every page already stored, fetching only what is new.
--refreshre-reads everything;--max-agere-reads only the pages older than a cutoff, so a daily mirror stays current without reading the whole site. A ZIM build keeps its store as a sidecar for the next run. - The format picks itself. A
.db/.sqliteor.zimoutput name selects the format, so-o site.zimjust builds a ZIM. ZIM metadata flags (--title,--description,--language,--date) and--no-compressround out the archive, and pack takes the same scope, limit, worker, and robots flags asyomi site.
v0.1.2
A small pass for the people actually typing the commands.
- Bare hosts read.
yomi read,yomi meta, andyomi linksnow accept a URL with no scheme:yomi read example.com/postdefaults tohttps://, the shorthandyomi sitealready took. Every example in the docs uses it, so now they all run exactly as written. - Friendlier docs. A rewritten README with a terminal demo of the read, save, and metadata loop, and a warmer pass over the homepage and guides.
v0.1.1
A quality pass on the extracted Markdown, a cleaner yomi meta, and docs that match the real output.
- Cleaner article Markdown. A caption that only repeats an image's alt text is dropped, a picture linked to its own full-size file is unwrapped to a plain image, and a stray share or subscribe button left in the body is removed. A bare angle bracket the converter had escaped is restored in prose (so
a -> band<placeholder>read as written), a needless backslash before an underscore or tilde is dropped, and a link with no destination renders as its text alone. Code blocks keep their bytes exactly. yomi metais just metadata. The JSON record no longer carries an emptymarkdownfield. It is the page'surl,title,byline,site_name,excerpt,lang,published,fetched,word_count,reading_time, andrendered, followed bylinksandimagesas arrays of objects.- Docs match the code. The front-matter and
metaexamples now show quoted string values,reading_timeas a whole-minute number, andlinksandimagesas arrays rather than counts.
v0.1.0
The first release. yomi reads a web page, or a whole website, into clean Markdown: fetch the page, render the JavaScript only when the page needs it, extract the main content, and convert what is left to GitHub-Flavored Markdown with a YAML front-matter block.
yomi read <url>turns one page into Markdown, printing to stdout or writing to a file with-o. The default--render autostatic-fetches first and escalates to headless Chrome only when the page looks JavaScript-gated, so most reads never launch a browser. Readability extraction drops the nav, cookie banners, footers, and share rails before conversion.yomi site <url>reads a whole site. The default output is a folder of.mdfiles mirroring the URL paths, with aSUMMARY.mdtable of contents and a sharedmedia/folder;--singleassembles one combined file with a table of contents, per-page sections and anchors, and demoted headings for a single clean outline.yomi meta <url>prints a page's metadata record as JSON, andyomi links <url>lists the outbound links in the article body, with--jsonfor a structured list.yomi serve [dir]previews a folder of Markdown over a local static file server.- Three image policies.
--images remote(the default) leaves image URLs absolute,downloadfetches them next to the output, andinlineembeds them as base64 data URIs, with a--max-image-mbcap. - Polite by default. Honours
robots.txt, scopes to the seed host, and reads pages with four parallel workers. - Packaged everywhere. Archives,
.deb/.rpm/.apk, a multi-arch GHCR image with Chromium bundled, plus Homebrew and Scoop.