Skip to content

Releases: m4bwav/readwright

readwright 0.2.0

Choose a tag to compare

@m4bwav m4bwav released this 29 Sep 23:35

C-20260929-7 · 2026-09-29 · Release 0.2.0; no MCP server and no launcher on PATH

  • because: user request (kickoff plan item 4), T-20260929-3, T-20260929-4
  • files: ../../.claude-plugin/plugin.json, ../../plugin.json, scripts/rw.py (VERSION), SKILL.md (metadata), evergreen.json, ../../README.md, ../../ai-docs/decisions
  • Version 0.2.0 across the five places AGENTS.md lists. Decided against an MCP server and a bin/ launcher: the CLI already runs in every agent with a shell, an MCP server adds tool definitions to every session, and Cowork refuses plugins with a top-level bin/ (decision entry of 2026-09-29).

C-20260929-6 · 2026-09-29 · read prints at most 25,000 characters by default

  • because: L-009, T-20260929-4
  • files: scripts/rw.py (DEFAULT_MAX_CHARS), SKILL.md (Step 1, Step 3, Step 5), ../../README.md
  • Claude Code shows 30,000 characters of a command's output and saves the rest to a file, so the old 40,000 default sent long reads to a file the agent then had to open. SKILL.md says to read long chapters one call each, or write them with --out and open that.

C-20260929-5 · 2026-09-29 · Title matching, the next section, and a leaner toc

  • because: L-001, L-006, T-20260929-4 (toc cost), kickoff plan item 4
  • files: scripts/rw.py (select, cmd_read, toc_lines, main), SKILL.md (Step 2, Step 3), ../../tests/test_rw.py (TestRealWorldShapes), ../../README.md
  • read --title adds the following section when the match is under 300 words and says so; --with-next does it for any selection. A title with no match is tried again with spaces ignored (CHAPTERXXVII, WEST GATE). toc prints ids only with --ids: on Moby-Dick they were over half of the toc's 3,829 tokens (1,782 without).

C-20260929-4 · 2026-09-29 · Every external-tool route run on real files, and what broke fixed

  • because: L-003, L-004, L-005, L-006, L-007, L-008, R-20260929-7, R-20260929-8, R-20260929-9, T-20260929-3
  • files: scripts/rw.py (find_tool, tool_dirs, windows_path_dirs, tools, run, tool_error, load_epub, heading_line, GUTENBERG_RE, HEAD_RE, refine, load_text, xlsx_date_styles, excel_date, load_xlsx, parse_outline, load_via, load_via_calibre, detect), references/formats.md, ../../tests/test_rw.py (TestToolDiscovery, TestRoutes, make_novel, make_outlined_pdf), ../../tests/real_files.py, ../../tests/measure_tokens.py, ../../evals/action-2, evals/evals.json, ../../.github/workflows/tests.yml
  • Tools are found in their install folders and the registry PATH; RW_HIDE_TOOLS and RW_PATH_ONLY control the search. EPUB text split across files stays in its chapter; bracketed and glued CHAPTER lines and Gutenberg's START and END lines are headings; long or untitled sections split at CHAPTER lines; Markdown with no headings uses CHAPTER lines; the mutool outline keeps its nesting; KFX is detected by CONT and its version on any extension; XLSX dates print as dates; tool errors show the exception line; pandoc and markitdown write UTF-8 files and a passthrough is reported. New: route tests that convert invented fixtures with each installed tool, a real-file sweep, a token measurement, the full-size eval case action-2 and a CI job that installs the tools on Linux.

readwright 0.1.0

Choose a tag to compare

@m4bwav m4bwav released this 29 Sep 18:54

First release. An agent skill and a standard-library Python CLI (rw.py) that reads ebooks and documents a section at a time: info, toc, read (by section or title, capped), grep (with section and paragraph numbers) and dump to a file.

Built in: EPUB 2 and 3, FB2, DOCX, ODT/ODS/ODP, PPTX, XLSX, HTML, text, Markdown, RST, RTF, CSV/TSV, JSON, EML and zips of them. Through external tools when installed: PDF (poppler or MuPDF), MOBI/AZW3 and other ebook formats (calibre), legacy Office (LibreOffice or antiword), and --via pandoc|markitdown. DRM is reported, never removed.

Tests pass on Linux, macOS and Windows with Python 3.10 and 3.14. The calibre, LibreOffice, mutool and pandoc routes are written but not yet tested against the real tools.