codedash-app 5.0.1 → 5.0.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/README.md +74 -32
- package/package.json +1 -1
- package/src/terminals.js +7 -4
package/README.md
CHANGED
|
@@ -1,64 +1,106 @@
|
|
|
1
1
|
# CodeDash
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Dashboard + CLI for Claude Code, Codex, and OpenCode sessions. View, search, resume, convert, and hand off between AI coding agents.
|
|
4
4
|
|
|
5
5
|
[Russian / Русский](docs/README_RU.md) | [Chinese / 中文](docs/README_ZH.md)
|
|
6
6
|
|
|
7
7
|
https://github.com/user-attachments/assets/15c45659-365b-49f8-86a3-9005fa155ca6
|
|
8
8
|
|
|
9
|
-
    
|
|
10
10
|
|
|
11
11
|
## Quick Start
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
|
|
14
|
+
npm i -g codedash-app
|
|
15
|
+
codedash run
|
|
15
16
|
```
|
|
16
17
|
|
|
17
18
|
Opens `http://localhost:3847` in your browser.
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
## Supported Agents
|
|
21
|
+
|
|
22
|
+
| Agent | Sessions | Preview | Search | Convert | Handoff |
|
|
23
|
+
|-------|----------|---------|--------|---------|---------|
|
|
24
|
+
| Claude Code | JSONL | Yes | Yes | Yes | Yes |
|
|
25
|
+
| Codex CLI | JSONL | Yes | Yes | Yes | Yes |
|
|
26
|
+
| OpenCode | SQLite | Yes | Yes | - | Yes |
|
|
25
27
|
|
|
26
28
|
## Features
|
|
27
29
|
|
|
28
|
-
**
|
|
30
|
+
**Browser Dashboard**
|
|
29
31
|
- Grid and List view with project grouping
|
|
30
|
-
- Trigram fuzzy search
|
|
31
|
-
- Filter by tool (Claude/Codex), tags, date range
|
|
32
|
-
- Star/pin
|
|
33
|
-
- Tag sessions: bug, feature, research, infra, deploy, review
|
|
32
|
+
- Trigram fuzzy search + full-text deep search across all messages
|
|
33
|
+
- Filter by tool (Claude/Codex/OpenCode), tags, date range
|
|
34
|
+
- Star/pin sessions, tag with labels (bug, feature, research, infra, deploy, review)
|
|
34
35
|
- Activity heatmap (GitHub-style)
|
|
35
|
-
-
|
|
36
|
+
- Session Replay with timeline slider and play/pause
|
|
37
|
+
- Hover preview (first 6 messages) + expandable cards (10 messages inline)
|
|
38
|
+
- Themes: Dark, Light, System
|
|
39
|
+
|
|
40
|
+
**Live Monitoring**
|
|
41
|
+
- Running sessions view with CPU, Memory, PID, Uptime
|
|
42
|
+
- LIVE/WAITING badges with animated border on active cards
|
|
43
|
+
- Focus Terminal button to switch to active session
|
|
44
|
+
- Polling every 5 seconds
|
|
45
|
+
|
|
46
|
+
**Cost Analytics**
|
|
47
|
+
- Real cost from actual token usage (input, output, cache read/write)
|
|
48
|
+
- Per-model pricing: Opus, Sonnet, Haiku, Codex, GPT-5
|
|
49
|
+
- Daily cost chart, cost by project, most expensive sessions
|
|
50
|
+
|
|
51
|
+
**Cross-Agent**
|
|
52
|
+
- Convert sessions between Claude Code and Codex (native format)
|
|
53
|
+
- Handoff: generate context document to continue in any agent
|
|
54
|
+
- Verbosity levels: minimal (3 msgs), standard (10), verbose (20), full (50)
|
|
55
|
+
|
|
56
|
+
**CLI**
|
|
57
|
+
```bash
|
|
58
|
+
codedash run [port] [--no-browser] # start dashboard
|
|
59
|
+
codedash search <query> # full-text search all sessions
|
|
60
|
+
codedash show <session-id> # session details + cost + messages
|
|
61
|
+
codedash handoff <id> [target] # generate handoff document
|
|
62
|
+
codedash handoff claude codex # quick: latest Claude to Codex
|
|
63
|
+
codedash convert <id> claude|codex # convert session format
|
|
64
|
+
codedash list [limit] # list sessions
|
|
65
|
+
codedash stats # statistics
|
|
66
|
+
codedash export [file.tar.gz] # backup all sessions
|
|
67
|
+
codedash import <file.tar.gz> # restore on new machine
|
|
68
|
+
codedash update # update to latest version
|
|
69
|
+
codedash restart # restart server
|
|
70
|
+
codedash stop # stop server
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Keyboard Shortcuts**: `/` search, `j/k` navigate, `Enter` open, `x` star, `d` delete, `s` select mode, `g` toggle groups, `r` refresh, `Esc` close
|
|
36
74
|
|
|
37
|
-
|
|
38
|
-
- Resume sessions in iTerm2, Terminal.app, Warp, Kitty, Alacritty
|
|
39
|
-
- Auto `cd` into the correct project directory
|
|
40
|
-
- Copy resume command to clipboard
|
|
41
|
-
- Terminal preference saved between sessions
|
|
75
|
+
## How It Works
|
|
42
76
|
|
|
43
|
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
- Related git commits shown per session
|
|
48
|
-
- Auto-update notifications
|
|
77
|
+
Reads session data from:
|
|
78
|
+
- `~/.claude/` — history, projects, session files, PID tracking
|
|
79
|
+
- `~/.codex/` — history, session files
|
|
80
|
+
- `~/.local/share/opencode/opencode.db` — SQLite (via sqlite3 CLI)
|
|
49
81
|
|
|
50
|
-
|
|
82
|
+
Zero dependencies. Everything runs on `localhost`.
|
|
51
83
|
|
|
52
|
-
|
|
84
|
+
## Install Agents
|
|
53
85
|
|
|
54
|
-
|
|
86
|
+
```bash
|
|
87
|
+
# Claude Code
|
|
88
|
+
curl -fsSL https://claude.ai/install.sh | bash
|
|
55
89
|
|
|
56
|
-
|
|
90
|
+
# Codex CLI
|
|
91
|
+
npm i -g @openai/codex
|
|
92
|
+
|
|
93
|
+
# OpenCode
|
|
94
|
+
curl -fsSL https://opencode.ai/install | bash
|
|
95
|
+
|
|
96
|
+
# Kiro CLI
|
|
97
|
+
curl -fsSL https://cli.kiro.dev/install | bash
|
|
98
|
+
```
|
|
57
99
|
|
|
58
100
|
## Requirements
|
|
59
101
|
|
|
60
|
-
- Node.js >=
|
|
61
|
-
-
|
|
102
|
+
- Node.js >= 18
|
|
103
|
+
- At least one AI coding agent installed
|
|
62
104
|
- macOS / Linux / Windows
|
|
63
105
|
|
|
64
106
|
## License
|
package/package.json
CHANGED
package/src/terminals.js
CHANGED
|
@@ -169,7 +169,7 @@ function focusTerminalByPid(pid) {
|
|
|
169
169
|
const ttyOut = execSync(`ps -p ${pid} -o tty= 2>/dev/null`, { encoding: 'utf8' }).trim();
|
|
170
170
|
if (!ttyOut) throw new Error('no tty');
|
|
171
171
|
|
|
172
|
-
// Try iTerm2 first — activate and select
|
|
172
|
+
// Try iTerm2 first — activate and select the right tab/window by tty
|
|
173
173
|
try {
|
|
174
174
|
const script = `
|
|
175
175
|
tell application "iTerm"
|
|
@@ -177,14 +177,17 @@ function focusTerminalByPid(pid) {
|
|
|
177
177
|
repeat with w in windows
|
|
178
178
|
repeat with t in tabs of w
|
|
179
179
|
repeat with s in sessions of t
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
180
|
+
set sessionTTY to tty of s
|
|
181
|
+
if sessionTTY contains "${ttyOut}" or "${ttyOut}" contains sessionTTY then
|
|
182
|
+
select w
|
|
183
|
+
tell w to select t
|
|
184
|
+
return "found"
|
|
183
185
|
end if
|
|
184
186
|
end repeat
|
|
185
187
|
end repeat
|
|
186
188
|
end repeat
|
|
187
189
|
end tell
|
|
190
|
+
return "not found"
|
|
188
191
|
`;
|
|
189
192
|
execSync(`osascript -e '${script.replace(/'/g, "'\\''")}'`, { stdio: 'pipe', timeout: 3000 });
|
|
190
193
|
return true;
|