readshell-pro 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,17 @@
1
+ GNU AFFERO GENERAL PUBLIC LICENSE
2
+ Version 3, 19 November 2007
3
+
4
+ Copyright (C) 2026 ReadShell
5
+
6
+ This program is free software: you can redistribute it and/or modify
7
+ it under the terms of the GNU Affero General Public License as published by
8
+ the Free Software Foundation, either version 3 of the License, or
9
+ (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU Affero General Public License for more details.
15
+
16
+ You should have received a copy of the GNU Affero General Public License
17
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
package/README.md ADDED
@@ -0,0 +1,142 @@
1
+ [English](README.md) | [δΈ­ζ–‡](README_zh.md)
2
+
3
+ <div align="center">
4
+
5
+ # ReadShell
6
+
7
+ **Your terminal already has everything. Now it has a bookshelf.**
8
+
9
+ [![npm version](https://img.shields.io/npm/v/readshell.svg)](https://www.npmjs.com/package/readshell)
10
+ [![npm downloads](https://img.shields.io/npm/dm/readshell.svg)](https://www.npmjs.com/package/readshell)
11
+ [![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
12
+ [![Node.js](https://img.shields.io/badge/Node.js-%3E%3D18-green.svg)](https://nodejs.org)
13
+
14
+ *A low-friction reading tool for developers who never leave the terminal.*
15
+
16
+ ![ReadShell Demo](./docs/demo.gif)
17
+
18
+ </div>
19
+
20
+ ---
21
+
22
+ ## The Problem
23
+
24
+ Waiting for a build to finish? Pipeline still running? You have 5 minutes.
25
+
26
+ You open your phone. 40 minutes later, you're still scrolling.
27
+
28
+ ReadShell is built for that gap β€” a reading space that lives inside your workflow, not outside it.
29
+ ```bash
30
+ novel resume
31
+ ```
32
+
33
+ One command. Back to where you were. Back to work when you're ready.
34
+
35
+ ---
36
+
37
+ ## Features
38
+
39
+ **πŸ“– `novel resume` β€” Zero-friction re-entry**
40
+ The most important command. Picks up exactly where you left off, down to the byte.
41
+
42
+ **πŸ₯· Boss Key (`b` / `Esc`) β€” Instant disguise**
43
+ One keypress transforms the reader into a convincing terminal error log. Your secret is safe.
44
+ ![Boss Key Demo](./docs/error.png)
45
+ *Boss Key wipes the scrollback buffer and shows a fake error. Use `novel resume` to instantly jump back when safe.*
46
+
47
+ **⏱ Reading time estimate**
48
+ Calibrated to your actual reading speed. Tells you if you have time for one more chapter.
49
+
50
+ **πŸ”– Bookmarks (`m`)**
51
+ Capture a passage mid-read. Revisit it later from the chapter navigator (`c`).
52
+
53
+ **πŸ“š Batch import**
54
+ `novel import ~/books/` β€” recursively imports an entire folder of `.txt` and `.epub` files.
55
+
56
+ **🌐 i18n**
57
+ Native English and Chinese support.
58
+
59
+ ---
60
+
61
+ ## Quick Start
62
+ ```bash
63
+ npm install -g readshell
64
+ ```
65
+ ```bash
66
+ # Import your books
67
+ novel import ~/books/
68
+
69
+ # Jump back in
70
+ novel resume
71
+
72
+ # Or pick a specific book
73
+ novel open <book-id>
74
+
75
+ # Browse your library
76
+ novel list
77
+ ```
78
+
79
+ ### Reader Controls
80
+
81
+ | Key | Action |
82
+ |---|---|
83
+ | `Space` / `j` / `↓` | Next page / scroll down |
84
+ | `k` / `↑` | Previous page / scroll up |
85
+ | `c` | Chapter list & bookmarks |
86
+ | `Tab` | Toggle chapters / bookmarks |
87
+ | `m` | Add bookmark |
88
+ | `b` / `Esc` | **Boss Key** β€” disguise & save |
89
+ | `q` | Quit & save |
90
+ | `?` | Help |
91
+
92
+ ### Configuration
93
+ ```bash
94
+ novel lang en # Set language (en / zh)
95
+ novel config line-spacing 1 # Line spacing
96
+ novel config reading-mode scroll # scroll or page
97
+ novel update # Update to latest
98
+ ```
99
+
100
+ ---
101
+
102
+ ## Why the terminal?
103
+
104
+ The terminal is already where you live. It's focused, text-only, and distraction-resistant by nature.
105
+
106
+ ReadShell doesn't ask you to context-switch. It sits quietly in your workflow β€” invisible to colleagues, zero install friction, no accounts, no cloud, no noise.
107
+
108
+ Your reading history lives entirely on your local machine in a SQLite file. Nothing leaves your disk.
109
+
110
+ ---
111
+
112
+ ## Tech Stack
113
+
114
+ - **TypeScript** + **Node.js** β‰₯ 18
115
+ - **Ink** β€” React-based TUI framework
116
+ - **SQLite** (`better-sqlite3`) β€” local-first, zero-dependency storage
117
+ - **Vitest** β€” testing
118
+
119
+ ## Project Structure
120
+ ```
121
+ src/
122
+ β”œβ”€β”€ cli/ # Command layer
123
+ β”œβ”€β”€ ui/ # TUI components (Ink)
124
+ β”œβ”€β”€ services/ # Business logic
125
+ β”œβ”€β”€ parsers/ # txt / epub parsers
126
+ β”œβ”€β”€ db/ # SQLite layer
127
+ β”œβ”€β”€ config/ # Config management
128
+ └── utils/
129
+ ```
130
+
131
+ ---
132
+
133
+ ## Contributing
134
+
135
+ Issues, ideas, and PRs are welcome.
136
+ If ReadShell fits into your workflow, a ⭐ helps more people find it.
137
+
138
+ ---
139
+
140
+ ## License
141
+
142
+ [AGPL-3.0](LICENSE)
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ import('../dist/index.js');
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node