chat-logbook 0.2.0 → 0.2.1
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 +12 -17
- package/README.md +78 -28
- package/package.json +2 -2
package/LICENSE
CHANGED
|
@@ -1,21 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
Copyright (C) 2026 Eva Wu
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This program is free software: you can redistribute it and/or modify
|
|
4
|
+
it under the terms of the GNU Affero General Public License as published by
|
|
5
|
+
the Free Software Foundation, version 3 of the License.
|
|
4
6
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
7
|
+
This program is distributed in the hope that it will be useful,
|
|
8
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
9
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
10
|
+
GNU Affero General Public License for more details.
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
You should have received a copy of the GNU Affero General Public License
|
|
13
|
+
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
15
|
+
The full text of the GNU Affero General Public License version 3
|
|
16
|
+
can be found at: https://www.gnu.org/licenses/agpl-3.0.txt
|
package/README.md
CHANGED
|
@@ -1,28 +1,37 @@
|
|
|
1
1
|
# chat-logbook
|
|
2
2
|
|
|
3
|
-
A local-first conversation
|
|
3
|
+
A local-first conversation browser for Claude Code.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
> **Status:** Early release (v0.2.1). Core browsing and rendering work well.
|
|
6
|
+
> Search, filtering, tagging, and annotations are on the roadmap but not yet
|
|
7
|
+
> implemented. See [Roadmap](#roadmap) for what's planned.
|
|
6
8
|
|
|
7
|
-
##
|
|
9
|
+
## About
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
- **
|
|
17
|
-
- **
|
|
11
|
+
Claude Code stores every conversation as JSONL files in `~/.claude/`, but
|
|
12
|
+
provides no UI to browse or revisit them. chat-logbook fills that gap — it
|
|
13
|
+
reads those files and presents them in a browser, so you can review past
|
|
14
|
+
sessions without digging through raw JSON.
|
|
15
|
+
|
|
16
|
+
Design principles:
|
|
17
|
+
|
|
18
|
+
- **Read-only access to `~/.claude/`** — never modify original conversation files.
|
|
19
|
+
- **Local-only** — no data leaves your machine.
|
|
20
|
+
- **Zero configuration** — install and run, nothing else required.
|
|
21
|
+
|
|
22
|
+
The full problem statement, user stories, and implementation decisions live in
|
|
23
|
+
the PRD: [issue #1](https://github.com/evaaaaawu/chat-logbook/issues/1).
|
|
18
24
|
|
|
19
|
-
##
|
|
25
|
+
## What works today
|
|
20
26
|
|
|
21
|
-
|
|
27
|
+
- **Three-column layout** — Resizable panels for filters, session list, and conversation content
|
|
28
|
+
- **Rich conversation rendering** — Markdown, syntax-highlighted code blocks, collapsible tool calls with one-line summaries, and collapsible thinking blocks
|
|
29
|
+
- **Virtual scrolling** — Handles long conversations smoothly with virtualized rendering
|
|
30
|
+
- **Solarized Dark theme** — Easy on the eyes, consistent with Claude Code's terminal aesthetic
|
|
22
31
|
|
|
23
|
-
|
|
32
|
+
## Quick start
|
|
24
33
|
|
|
25
|
-
|
|
34
|
+
Requirements: Node.js 20+.
|
|
26
35
|
|
|
27
36
|
Install globally for a shorter command:
|
|
28
37
|
|
|
@@ -56,19 +65,53 @@ By default, chat-logbook runs on port 3100. Use `PORT=8080 chat-log` to specify
|
|
|
56
65
|
**Updating to the latest version**
|
|
57
66
|
Run `npm install -g chat-logbook@latest` to update. If you use npx, the `@latest` tag ensures you always run the newest version.
|
|
58
67
|
|
|
59
|
-
##
|
|
68
|
+
## Architecture
|
|
60
69
|
|
|
61
|
-
|
|
70
|
+
Monorepo with two workspaces, published as a single npm package:
|
|
62
71
|
|
|
63
|
-
|
|
72
|
+
| Directory | Role | Stack |
|
|
73
|
+
| --------- | ------------------------------------------------------------------------- | --------------------------------------- |
|
|
74
|
+
| `api/` | Backend — reads `~/.claude/` JSONL files, serves session and message data | Hono + @hono/node-server |
|
|
75
|
+
| `web/` | Frontend — three-column SPA with conversation rendering | React + Vite + Tailwind CSS + shadcn/ui |
|
|
64
76
|
|
|
65
|
-
|
|
77
|
+
In production, Hono serves both the API endpoints and the static frontend
|
|
78
|
+
assets from a single Node.js process. During development, Vite proxies `/api`
|
|
79
|
+
requests to the Hono dev server.
|
|
66
80
|
|
|
67
|
-
|
|
81
|
+
### How it reads conversations
|
|
82
|
+
|
|
83
|
+
chat-logbook reads conversation data directly from the JSONL files that Claude
|
|
84
|
+
Code stores in `~/.claude/`. It **never modifies** these files — your original
|
|
85
|
+
conversation data is always left untouched.
|
|
86
|
+
|
|
87
|
+
Only conversations that are written to `~/.claude/` are visible. Ephemeral
|
|
88
|
+
interactions that Claude Code does not persist (such as `/btw` side questions)
|
|
89
|
+
cannot be displayed.
|
|
68
90
|
|
|
69
|
-
|
|
91
|
+
## Development
|
|
70
92
|
|
|
71
|
-
|
|
93
|
+
Requirements: Node.js 20+ and pnpm 10+.
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
git clone https://github.com/evaaaaawu/chat-logbook.git
|
|
97
|
+
cd chat-logbook
|
|
98
|
+
pnpm install
|
|
99
|
+
pnpm dev
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Scripts
|
|
103
|
+
|
|
104
|
+
| Command | What it does |
|
|
105
|
+
| ---------------- | --------------------------------------------------- |
|
|
106
|
+
| `pnpm dev` | Start dev servers for both workspaces (Vite + Hono) |
|
|
107
|
+
| `pnpm build` | Build frontend and backend for production |
|
|
108
|
+
| `pnpm test` | Run all tests (Vitest) |
|
|
109
|
+
| `pnpm typecheck` | Type-check all workspaces |
|
|
110
|
+
|
|
111
|
+
A Husky `pre-commit` hook runs Prettier on staged files, type-checks, and runs
|
|
112
|
+
the test suite on every commit.
|
|
113
|
+
|
|
114
|
+
## FAQ
|
|
72
115
|
|
|
73
116
|
### Does chat-logbook work with Claude Code on the web?
|
|
74
117
|
|
|
@@ -76,17 +119,24 @@ No. chat-logbook reads from local `~/.claude/` files, which are only created by
|
|
|
76
119
|
|
|
77
120
|
### Why can't I see my `/btw` conversations?
|
|
78
121
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
This is by design: `/btw` is intended for quick, throwaway questions. If you want a conversation to be preserved and visible in chat-logbook, use a regular message instead of `/btw`.
|
|
122
|
+
`/btw` is designed to be ephemeral — questions and answers appear in a temporary overlay and are never written to conversation history files. If you want a conversation to be preserved and visible in chat-logbook, use a regular message instead of `/btw`.
|
|
82
123
|
|
|
83
124
|
## Roadmap
|
|
84
125
|
|
|
126
|
+
- **Full-text search** — Find conversations by keywords across all projects
|
|
127
|
+
- **Project filtering** — Focus on conversations within a specific project
|
|
128
|
+
- **Real-time streaming** — Watch active conversations update live via SSE
|
|
129
|
+
- **Keyboard shortcuts** — `↑↓` to switch sessions, `/` to search, `Esc` to go back
|
|
130
|
+
- **Soft delete & restore** — Hide sessions you don't need; restore them anytime
|
|
85
131
|
- **Title editing** — Customize session titles for easier identification
|
|
86
|
-
- **Tag system** — Add color-coded tags to sessions, filter by multiple tags
|
|
132
|
+
- **Tag system** — Add color-coded tags to sessions, filter by multiple tags
|
|
87
133
|
- **Annotations** — Add notes next to any message in a conversation
|
|
88
134
|
- **Highlights** — Mark important text within conversations
|
|
89
135
|
|
|
90
136
|
## License
|
|
91
137
|
|
|
92
|
-
[
|
|
138
|
+
This project is licensed under the [GNU Affero General Public License v3.0](LICENSE) (AGPL-3.0-only).
|
|
139
|
+
|
|
140
|
+
You are free to use, modify, and distribute this software under the terms of the AGPL-3.0. If you modify the program and make it available over a network, you must release your modified source code under the same license.
|
|
141
|
+
|
|
142
|
+
For commercial licensing inquiries, please contact the author.
|
package/package.json
CHANGED