claude-starter 1.3.5 → 1.4.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/README.md +13 -0
- package/index.js +28 -1
- package/package.json +10 -2
package/README.md
CHANGED
|
@@ -15,6 +15,10 @@
|
|
|
15
15
|
<strong>Claude Code 的主页。</strong>你的所有会话,一目了然。
|
|
16
16
|
</p>
|
|
17
17
|
|
|
18
|
+
<p align="center">
|
|
19
|
+
Built for <strong>AI-native developer workflows</strong>: local-first, searchable, resumable, and fast — so the next session starts faster than the last one ended.
|
|
20
|
+
</p>
|
|
21
|
+
|
|
18
22
|
<p align="center">
|
|
19
23
|
<code>npm install -g claude-starter</code> → <code>claude-starter</code>
|
|
20
24
|
</p>
|
|
@@ -31,6 +35,8 @@
|
|
|
31
35
|
|
|
32
36
|
Claude Code's `/resume` gives you a wall of UUIDs:
|
|
33
37
|
|
|
38
|
+
If you use Claude Code as part of a real development loop, session history stops being archive data and becomes working context. You need to find old agent work by repo, topic, and intent — not by opaque IDs.
|
|
39
|
+
|
|
34
40
|
```
|
|
35
41
|
? Select a conversation
|
|
36
42
|
3ee0f33a-b882-424f-9ba4-260342e4dd5b - 4/3/2026, 10:53:41 AM
|
|
@@ -48,6 +54,8 @@ claude-starter
|
|
|
48
54
|
|
|
49
55
|
Beautiful split-pane UI with Tokyo Night colors. The left panel shows every session with project, time, and topic. The right panel previews the full conversation. Not UUIDs — your **actual words**.
|
|
50
56
|
|
|
57
|
+
`claude-starter` is built for developers treating coding agents as part of a daily workflow: keep everything local, cut resume friction, and make past conversations actually reusable.
|
|
58
|
+
|
|
51
59
|
## 🔍 Search — The Killer Feature
|
|
52
60
|
|
|
53
61
|
Press `/` and start typing. **That's it.** No Enter needed.
|
|
@@ -140,6 +148,11 @@ Reads the JSONL session files from `~/.claude/projects/`, parses metadata and co
|
|
|
140
148
|
- **Node.js** >= 18
|
|
141
149
|
- **Claude Code** ([`claude`](https://docs.anthropic.com/en/docs/claude-code) in PATH)
|
|
142
150
|
|
|
151
|
+
## Related Projects
|
|
152
|
+
|
|
153
|
+
- **[codex-starter](https://github.com/Bojun-Vvibe/codex-starter)** — the Codex counterpart with the same local-first workflow philosophy
|
|
154
|
+
- **[Bojun-Vvibe](https://github.com/Bojun-Vvibe)** — more terminal UX and AI-native workflow experiments
|
|
155
|
+
|
|
143
156
|
## License
|
|
144
157
|
|
|
145
158
|
MIT
|
package/index.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* claude-starter # Launch interactive TUI
|
|
10
10
|
* claude-starter --list # Print sessions as a table (no TUI)
|
|
11
11
|
* claude-starter --list N # Print the latest N sessions
|
|
12
|
+
* claude-starter --exclude "pat" # Exclude sessions matching regex (repeatable)
|
|
12
13
|
* claude-starter --version # Show version
|
|
13
14
|
* claude-starter --update # Update to the latest version
|
|
14
15
|
*
|
|
@@ -35,6 +36,10 @@ const path = require('path');
|
|
|
35
36
|
const { spawn, execSync } = require('child_process');
|
|
36
37
|
const os = require('os');
|
|
37
38
|
|
|
39
|
+
let excludePatterns = [];
|
|
40
|
+
|
|
41
|
+
function setExcludePatterns(patterns) { excludePatterns = patterns; }
|
|
42
|
+
|
|
38
43
|
// ─── CLI Detection ──────────────────────────────────────────────────────────
|
|
39
44
|
// Detect whether `mai-claude` is available (binary, alias, or function).
|
|
40
45
|
// First checks PATH directly, then sources shell config non-interactively
|
|
@@ -417,6 +422,7 @@ function loadAllSessions() {
|
|
|
417
422
|
if (session.firstTs
|
|
418
423
|
&& session.topic !== '(no user messages)'
|
|
419
424
|
&& !/^warmup$/i.test(session.topic.trim())
|
|
425
|
+
&& !excludePatterns.some(re => re.test(session.topic))
|
|
420
426
|
) sessions.push(session);
|
|
421
427
|
} catch (e) { /* skip */ }
|
|
422
428
|
}
|
|
@@ -764,7 +770,9 @@ function createApp() {
|
|
|
764
770
|
c += `\n {#bb9af7-fg}{bold}Conversation{/}\n`;
|
|
765
771
|
c += sep + '\n';
|
|
766
772
|
|
|
767
|
-
const
|
|
773
|
+
const detailHeight = detailPanel.height || screen.height || 24;
|
|
774
|
+
const previewLimit = Math.max(10, Math.floor(Math.max(0, detailHeight - 18) / 3));
|
|
775
|
+
const msgs = (session.userMessages || []).slice(0, previewLimit);
|
|
768
776
|
const assists = (session.assistantSnippets || []);
|
|
769
777
|
|
|
770
778
|
if (msgs.length === 0) {
|
|
@@ -1532,6 +1540,7 @@ if (typeof module !== 'undefined') {
|
|
|
1532
1540
|
getEffectivePermissionMode,
|
|
1533
1541
|
setSessionPermissionMode,
|
|
1534
1542
|
setGlobalPermissionMode,
|
|
1543
|
+
setExcludePatterns,
|
|
1535
1544
|
// Constants
|
|
1536
1545
|
PERMISSION_MODES,
|
|
1537
1546
|
PROJECT_COLORS,
|
|
@@ -1555,6 +1564,20 @@ if (require.main === module) {
|
|
|
1555
1564
|
|
|
1556
1565
|
const args = process.argv.slice(2);
|
|
1557
1566
|
|
|
1567
|
+
for (let i = 0; i < args.length; i++) {
|
|
1568
|
+
if (args[i] === '--exclude' && args[i + 1]) {
|
|
1569
|
+
try { excludePatterns.push(new RegExp(args[i + 1], 'i')); } catch {}
|
|
1570
|
+
i++;
|
|
1571
|
+
}
|
|
1572
|
+
}
|
|
1573
|
+
if (process.env.CLAUDE_STARTER_EXCLUDE) {
|
|
1574
|
+
for (const p of process.env.CLAUDE_STARTER_EXCLUDE.split(',')) {
|
|
1575
|
+
if (p.trim()) {
|
|
1576
|
+
try { excludePatterns.push(new RegExp(p.trim(), 'i')); } catch {}
|
|
1577
|
+
}
|
|
1578
|
+
}
|
|
1579
|
+
}
|
|
1580
|
+
|
|
1558
1581
|
if (args.includes('--version') || args.includes('-v') || args.includes('-V')) {
|
|
1559
1582
|
console.log(`claude-starter v${PKG.version}`);
|
|
1560
1583
|
process.exit(0);
|
|
@@ -1606,10 +1629,14 @@ if (require.main === module) {
|
|
|
1606
1629
|
Usage:
|
|
1607
1630
|
claude-starter Launch interactive TUI
|
|
1608
1631
|
claude-starter --list [N] Print latest N sessions (default: 30)
|
|
1632
|
+
claude-starter --exclude "pat" Exclude sessions matching regex (repeatable)
|
|
1609
1633
|
claude-starter --version Show version
|
|
1610
1634
|
claude-starter --update Update to the latest version
|
|
1611
1635
|
claude-starter --help Show this help
|
|
1612
1636
|
|
|
1637
|
+
Environment Variables:
|
|
1638
|
+
CLAUDE_STARTER_EXCLUDE=pat1,pat2 Comma-separated regex patterns to exclude
|
|
1639
|
+
|
|
1613
1640
|
TUI Keyboard Shortcuts:
|
|
1614
1641
|
↑/↓ Navigate sessions
|
|
1615
1642
|
Enter Start new / resume selected session
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-starter",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.1",
|
|
4
4
|
"description": "A beautiful terminal UI for managing Claude Code sessions — start new or resume past conversations",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
@@ -20,7 +20,11 @@
|
|
|
20
20
|
"terminal",
|
|
21
21
|
"session",
|
|
22
22
|
"resume",
|
|
23
|
-
"ai"
|
|
23
|
+
"ai",
|
|
24
|
+
"ai-native",
|
|
25
|
+
"developer-workflow",
|
|
26
|
+
"local-first",
|
|
27
|
+
"agentic-tooling"
|
|
24
28
|
],
|
|
25
29
|
"author": "Bojun Chai <just_cbj@sina.com>",
|
|
26
30
|
"license": "MIT",
|
|
@@ -28,6 +32,10 @@
|
|
|
28
32
|
"type": "git",
|
|
29
33
|
"url": "https://github.com/Bojun-Vvibe/claude-starter.git"
|
|
30
34
|
},
|
|
35
|
+
"homepage": "https://github.com/Bojun-Vvibe/claude-starter#readme",
|
|
36
|
+
"bugs": {
|
|
37
|
+
"url": "https://github.com/Bojun-Vvibe/claude-starter/issues"
|
|
38
|
+
},
|
|
31
39
|
"engines": {
|
|
32
40
|
"node": ">=18"
|
|
33
41
|
},
|