v0.3.0 — Phase 3: Polish (bookmarks, sessions, wishlist, inline images)
Phase 3 — Polish
The biggest single phase. Adds bookmarks, reading-session tracking, wishlist (phantom books), and inline image rendering.
What's in
- Bookmarks — `m` to add, `'` to list and jump. JSON store for library-less reading; SQLite store for the library path.
- Reading sessions — `sessions` schema + repo + service; reader session lifecycle; orphan-close on dirty exit; `Time` column in library; `stats` CLI subcommand.
- Wishlist / phantom books — add a book to the library before you have the EPUB; `A` opens the wishlist modal; phantom rows show a glyph; `attach_epub` promotes a phantom to a real book. Adds migration `0002` for the phantom schema.
- Inline images — extract images at parse time as `ImageResource` on `Book`; `render_chapter_blocks` emits text + image blocks; `ChapterView` mounts text + image widgets per block (inline kitty / sixel where the terminal supports it, `[image: alt]` fallback otherwise).
- ADR-0004 records the Phase 3 data model.
Numbers
14 commits, +1,717 / −45 lines. New tests for bookmarks (library + JSON store roundtrips), phantom add/attach/list paths, and session repo paths.
Anchor commit: `41e537c`