# dsh-book **Repository Path**: kristar/dsh-book ## Basic Information - **Project Name**: dsh-book - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-30 - **Last Updated**: 2026-09-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # dsh-book An EPUB reader plugin for the DeepSeek Harness Web GUI, plus an agent-activity simulator for the middle of the app. ``` packages/dsh-plugin-ebook-reader/ src/ the plugin's sources (plain JavaScript, no toolchain) build.mjs concatenates src/ into client.js install.mjs install / uninstall / status against a DSH profile test/smoke.mjs end-to-end jsdom test (68 checks) client.js generated — do not edit README.md features, architecture and design notes ``` ## Install The plugin is published as [`@krischoichoi/dsh-plugin-ebook-reader`](https://www.npmjs.com/package/@krischoichoi/dsh-plugin-ebook-reader): ```sh dsh plugin add @krischoichoi/dsh-plugin-ebook-reader ``` ## Quick start from a checkout ```sh cd packages/dsh-plugin-ebook-reader node build.mjs && node install.mjs ``` A running `dsh` picks the change up live. Then, in the Web GUI: - point at the small book button just above the chat box — the reader slides out on the right *and* the middle of the chat column starts showing a simulated conversation; move the pointer away and both vanish immediately; - press `←` / `→` to turn pages (they work while the pointer is on the revealed surface, even if the composer still holds focus), or use the mouse alone: left-click the book button for the next page and right-click it for the previous one; use the second header button for font size, line spacing, panel width and the reflow switch; reopening resumes the page you were on; - drag an `.epub` onto the reader, or click `⇪` beside the book button, to open a book. The reader keeps the EPUB's own stylesheet — scoped, and reduced to what is safe on a panel rather than a printed page, so the book's typography survives while the text reflows to the reader's width; text a conversion hard-wrapped at a fixed column is rejoined. The settings popover's **Layout** choice picks between *Reflow* (default), *As written* (the book exactly as its own CSS says) and *Reader* (ignore the book's CSS — for a book that lays itself out badly). Both halves are laid out inside the chat column, sharing its background, message column and row rhythm, and side by side so neither covers the other. The simulated rows are copied measurement-for-measurement from the app's own message, reasoning and tool rows — see the table in the package README. Everything the plugin draws takes its colours from the app's theme tokens, so it follows light/dark and the accent colour with no plugin-side theme state. See [the package README](packages/dsh-plugin-ebook-reader/README.md) for the architecture, the design notes on why the hover region is shaped the way it is, and the development workflow.