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 +17 -0
- package/README.md +142 -0
- package/bin/readshell.js +3 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2308 -0
- package/dist/index.js.map +1 -0
- package/package.json +68 -0
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
|
+
[](https://www.npmjs.com/package/readshell)
|
|
10
|
+
[](https://www.npmjs.com/package/readshell)
|
|
11
|
+
[](https://www.gnu.org/licenses/agpl-3.0)
|
|
12
|
+
[](https://nodejs.org)
|
|
13
|
+
|
|
14
|
+
*A low-friction reading tool for developers who never leave the terminal.*
|
|
15
|
+
|
|
16
|
+

|
|
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
|
+

|
|
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)
|
package/bin/readshell.js
ADDED
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
#!/usr/bin/env node
|