codedash-app 1.0.0
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 +21 -0
- package/README.md +62 -0
- package/bin/cli.js +93 -0
- package/package.json +36 -0
- package/src/data.js +284 -0
- package/src/frontend/app.js +1048 -0
- package/src/frontend/index.html +113 -0
- package/src/frontend/styles.css +1385 -0
- package/src/html.js +26 -0
- package/src/server.js +142 -0
- package/src/terminals.js +160 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>codedash</title>
|
|
7
|
+
<style>{{STYLES}}</style>
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
|
|
11
|
+
<div class="sidebar">
|
|
12
|
+
<div class="sidebar-brand">
|
|
13
|
+
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2L2 7l10 5 10-5-10-5z"/><path d="M2 17l10 5 10-5"/><path d="M2 12l10 5 10-5"/></svg>
|
|
14
|
+
codedash
|
|
15
|
+
</div>
|
|
16
|
+
<div class="sidebar-item active" data-view="sessions">
|
|
17
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="7" height="7" rx="1"/><rect x="14" y="3" width="7" height="7" rx="1"/><rect x="3" y="14" width="7" height="7" rx="1"/><rect x="14" y="14" width="7" height="7" rx="1"/></svg>
|
|
18
|
+
All Sessions
|
|
19
|
+
</div>
|
|
20
|
+
<div class="sidebar-item" data-view="projects">
|
|
21
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h5l2 3h9a2 2 0 012 2z"/></svg>
|
|
22
|
+
Projects
|
|
23
|
+
</div>
|
|
24
|
+
<div class="sidebar-item" data-view="timeline">
|
|
25
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg>
|
|
26
|
+
Timeline
|
|
27
|
+
</div>
|
|
28
|
+
<div class="sidebar-item" data-view="activity">
|
|
29
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2"/><rect x="7" y="7" width="3" height="3"/><rect x="14" y="7" width="3" height="3"/><rect x="7" y="14" width="3" height="3"/><rect x="14" y="14" width="3" height="3"/></svg>
|
|
30
|
+
Activity
|
|
31
|
+
</div>
|
|
32
|
+
<div class="sidebar-item" data-view="starred">
|
|
33
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/></svg>
|
|
34
|
+
Starred
|
|
35
|
+
</div>
|
|
36
|
+
<div class="sidebar-divider"></div>
|
|
37
|
+
<div class="sidebar-section">Tools</div>
|
|
38
|
+
<div class="sidebar-item" data-view="claude-only">
|
|
39
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/></svg>
|
|
40
|
+
Claude Code
|
|
41
|
+
</div>
|
|
42
|
+
<div class="sidebar-item" data-view="codex-only">
|
|
43
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></svg>
|
|
44
|
+
Codex
|
|
45
|
+
</div>
|
|
46
|
+
<div class="sidebar-settings">
|
|
47
|
+
<label>Terminal</label>
|
|
48
|
+
<select id="terminalSelect" onchange="saveTerminalPref(this.value)">
|
|
49
|
+
<option value="">Loading...</option>
|
|
50
|
+
</select>
|
|
51
|
+
<label>Theme</label>
|
|
52
|
+
<select id="themeSelect" onchange="saveThemePref(this.value)">
|
|
53
|
+
<option value="dark">Dark</option>
|
|
54
|
+
<option value="light">Light</option>
|
|
55
|
+
<option value="system">System</option>
|
|
56
|
+
</select>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
<div class="main">
|
|
61
|
+
<div class="toolbar">
|
|
62
|
+
<input type="text" class="search-box" placeholder="Search sessions, projects... (press /)" oninput="onSearch(this.value)">
|
|
63
|
+
<select id="tagFilter" class="toolbar-btn" onchange="onTagFilter(this.value)">
|
|
64
|
+
<option value="">All Tags</option>
|
|
65
|
+
<option value="bug">bug</option>
|
|
66
|
+
<option value="feature">feature</option>
|
|
67
|
+
<option value="research">research</option>
|
|
68
|
+
<option value="infra">infra</option>
|
|
69
|
+
<option value="deploy">deploy</option>
|
|
70
|
+
<option value="review">review</option>
|
|
71
|
+
</select>
|
|
72
|
+
<input type="date" class="date-input" id="dateFrom" onchange="onDateFilter()" title="From date">
|
|
73
|
+
<input type="date" class="date-input" id="dateTo" onchange="onDateFilter()" title="To date">
|
|
74
|
+
<button class="toolbar-btn" onclick="toggleGroup()" id="groupBtn">Group</button>
|
|
75
|
+
<button class="toolbar-btn" onclick="toggleSelectMode()" id="selectBtn">Select</button>
|
|
76
|
+
<button class="toolbar-btn" onclick="refreshData()">Refresh</button>
|
|
77
|
+
<span class="stats" id="stats"></span>
|
|
78
|
+
</div>
|
|
79
|
+
<div class="content" id="content"></div>
|
|
80
|
+
</div>
|
|
81
|
+
|
|
82
|
+
<div class="overlay" id="overlay" onclick="closeDetail()"></div>
|
|
83
|
+
<div class="detail-panel" id="detailPanel">
|
|
84
|
+
<div class="detail-header">
|
|
85
|
+
<strong id="detailTitle">Session Detail</strong>
|
|
86
|
+
<button class="detail-close" onclick="closeDetail()">×</button>
|
|
87
|
+
</div>
|
|
88
|
+
<div class="detail-body" id="detailBody"></div>
|
|
89
|
+
</div>
|
|
90
|
+
|
|
91
|
+
<div class="confirm-overlay" id="confirmOverlay">
|
|
92
|
+
<div class="confirm-box">
|
|
93
|
+
<h3 id="confirmTitle">Delete Session?</h3>
|
|
94
|
+
<p id="confirmText">This will permanently delete the session file and remove it from history.</p>
|
|
95
|
+
<div class="confirm-id" id="confirmId"></div>
|
|
96
|
+
<div class="confirm-btns">
|
|
97
|
+
<button class="btn-cancel" onclick="closeConfirm()">Cancel</button>
|
|
98
|
+
<button class="btn-delete" id="confirmAction" onclick="confirmDelete()">Delete</button>
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
</div>
|
|
102
|
+
|
|
103
|
+
<div class="bulk-bar" id="bulkBar" style="display:none">
|
|
104
|
+
<span id="bulkCount">0 selected</span>
|
|
105
|
+
<button class="launch-btn btn-delete" onclick="bulkDelete()">Delete Selected</button>
|
|
106
|
+
<button class="launch-btn btn-secondary" onclick="clearSelection()">Cancel</button>
|
|
107
|
+
</div>
|
|
108
|
+
|
|
109
|
+
<div class="toast" id="toast"></div>
|
|
110
|
+
|
|
111
|
+
<script>{{SCRIPT}}</script>
|
|
112
|
+
</body>
|
|
113
|
+
</html>
|