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.
Files changed (3) hide show
  1. package/LICENSE +12 -17
  2. package/README.md +78 -28
  3. package/package.json +2 -2
package/LICENSE CHANGED
@@ -1,21 +1,16 @@
1
- MIT License
1
+ Copyright (C) 2026 Eva Wu
2
2
 
3
- Copyright (c) 2026 Eva Wu
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
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
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
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
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
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
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 manager for Claude Code.
3
+ A local-first conversation browser for Claude Code.
4
4
 
5
- Browse, tag, annotate, and organize your Claude Code conversation history — all from your browser.
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
- ## Features
9
+ ## About
8
10
 
9
- - **Conversation browser** Three-column interface (filters | session list | conversation content) for navigating all your Claude Code sessions
10
- - **Full-text search** Find conversations by keywords across all projects
11
- - **Project filtering** Focus on conversations within a specific project, or view everything at once
12
- - **Real-time streaming** Watch active Claude Code conversations update live in your browser via SSE
13
- - **Collapsible tool calls** — Tool calls are collapsed by default with a one-line summary (e.g., "Read: src/index.ts")
14
- - **Collapsible thinking blocks** — Thinking blocks are collapsed by default, expandable when you want to inspect Claude's reasoning
15
- - **Soft delete & restore** — Hide sessions you don't need; restore them anytime
16
- - **Keyboard shortcuts** — `↑↓` to switch sessions, `/` to search, `Esc` to go back
17
- - **Dark theme** — Easy on the eyes, consistent with Claude Code's terminal aesthetic
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
- ## Quick Start
25
+ ## What works today
20
26
 
21
- ### Prerequisites
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
- - Node.js >= 20
32
+ ## Quick start
24
33
 
25
- ### Usage
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
- ## How It Works
68
+ ## Architecture
60
69
 
61
- chat-logbook reads conversation data directly from the JSONL files that Claude Code stores in `~/.claude/`. It **never modifies** these files — your original conversation data is always left untouched.
70
+ Monorepo with two workspaces, published as a single npm package:
62
71
 
63
- User-created data (custom titles, tags, annotations, highlights) is stored in a separate SQLite database at `~/.chat-logbook/data.db`, using the session ID as the link between the two data sources.
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
- Because chat-logbook relies on what Claude Code persists to disk, **only conversations that are written to `~/.claude/` are visible**. Ephemeral interactions that Claude Code does not persist (such as `/btw` side questions) are not captured by Claude Code's storage and therefore cannot be displayed.
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
- ## FAQ
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
- ### Is my data safe?
91
+ ## Development
70
92
 
71
- Yes. chat-logbook is fully local — no data ever leaves your machine. It only **reads** from `~/.claude/` and never modifies your original conversation files. The SQLite database it creates for your tags, annotations, and other metadata is stored separately at `~/.chat-logbook/`.
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
- The `/btw` feature in Claude Code is designed to be ephemeral — questions and answers appear in a temporary overlay and are never written to conversation history files. Since chat-logbook reads from these files, `/btw` exchanges are not available.
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 (AND logic)
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
- [MIT](LICENSE)
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
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "chat-logbook",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "A local-first conversation manager for Claude Code",
5
- "license": "MIT",
5
+ "license": "AGPL-3.0-only",
6
6
  "type": "module",
7
7
  "engines": {
8
8
  "node": ">=20"