Download Latest Version squiggly-catapult-v1.1.zip (10.8 kB) Google Add to Preferred Sources
Home / epub-reader
Name Modified Size InfoDownloads / Week
Parent folder
epub-reader.html 2026-09-14 15.5 kB
minEpubReader.md 2026-09-14 2.3 kB
README.md 2026-09-14 3.0 kB
the_ashworth_chronicle_treatise.epub 2026-09-14 117.9 kB
Totals: 4 Items   138.7 kB 5

Minimal Epub Reader

Ultra-minimal browser reader. Load a local .epub, read it, close it, resume later.

The recipe is the source of truth. epub-reader.html is a rendering.

What it is

A single HTML file that:

  • Opens a local DRM-free .epub (file picker or drag-and-drop)
  • Shows one chapter at a time
  • Offers TOC jump, next/prev, keyboard arrows
  • Remembers chapter and scroll position
  • Shows chapter count and percent through the book
  • Lets you change theme (light / sepia / dark) and type size

No library. No sync. No store. Paperback energy.

Run it

  1. Download epub-reader.html.
  2. Open it in a browser. A local file works.
  3. Load an .epub, or use the sample treatise in this folder.

CDN scripts: JSZip and epub.js. Needs a network connection the first time those load.

DRM-protected books will not open. That is expected.

Build from the recipe

This is a Generative Recipe, not a codebase.

  1. Copy minEpubReader.md.
  2. Paste it into an AI.
  3. Say something like:

Build this from the recipe. Follow intent, vibe, constraints, and must-nots. Ask before you add extras. Give me a single HTML file.

  1. Open what you get. Note what felt wrong in the reading, not the file tree.
  2. Tighten the recipe. Build again.

epub-reader.html is one pass, not the spec.

Recipe already decided

From minEpubReader.md:

  1. Intent — browser reader for local epubs; chapters, position, progress; nothing more
  2. Vibe — ultra-minimal, like a paperback
  3. Mechanics — load, parse, one chapter at a time, resume, TOC, next/prev, progress
  4. Input — file picker, drag-and-drop, TOC clicks, arrows, progress-bar seek
  5. Feedback — chapter title, progress bar, auto-save position, loaded-state indicator
  6. Look — serif reading type, day/night (and sepia), adjustable size, no sound
  7. Free to interpret — font, theme, column width
  8. Output — one HTML file; epub.js or JSZip + XML
  9. Constraints — File API only, no DRM, chapter-at-a-time, IndexedDB for position, localStorage for prefs

Iteration notes in the recipe

  • Pass 1: load and display chapters, next/prev
  • Pass 2: remember position, TOC, progress
  • Pass 3: font size, theme, keyboard shortcuts

The published HTML is past pass 3. If a new rendering drifts (library shelves, accounts, audio, cloud), the recipe is the correction, not a patch on the HTML.

License

MIT for the recipe and project materials unless a file says otherwise.

Generated artifacts belong to the person who generated them.

Source: README.md, updated 2026-09-14