@programinglive/dev-workflow-mcp-server 1.3.1 → 1.3.3
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/CHANGELOG.md +14 -0
- package/package.json +1 -1
- package/scripts/build-docs.js +25 -0
- package/web/index.html +178 -67
- package/web/server.js +25 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
### [1.3.3](https://github.com/programinglive/dev-workflow-mcp-server/compare/v1.3.2...v1.3.3) (2025-11-22)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### ✨ Features
|
|
9
|
+
|
|
10
|
+
* **web:** add version display to dashboard ([cb412bf](https://github.com/programinglive/dev-workflow-mcp-server/commit/cb412bf03f015e9549c09d967463790bb3564bc3))
|
|
11
|
+
|
|
12
|
+
### [1.3.2](https://github.com/programinglive/dev-workflow-mcp-server/compare/v1.3.1...v1.3.2) (2025-11-22)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### ✨ Features
|
|
16
|
+
|
|
17
|
+
* **web:** update dashboard with new documentation links ([57c4b9a](https://github.com/programinglive/dev-workflow-mcp-server/commit/57c4b9ab0b13fd3a2a5e4d04a758be20d0de9f04))
|
|
18
|
+
|
|
5
19
|
### [1.3.1](https://github.com/programinglive/dev-workflow-mcp-server/compare/v1.3.0...v1.3.1) (2025-11-22)
|
|
6
20
|
|
|
7
21
|
|
package/package.json
CHANGED
package/scripts/build-docs.js
CHANGED
|
@@ -18,6 +18,31 @@ const docs = [
|
|
|
18
18
|
source: path.join(projectRoot, 'docs', 'web-dashboard.md'),
|
|
19
19
|
output: 'web-dashboard.html',
|
|
20
20
|
},
|
|
21
|
+
{
|
|
22
|
+
key: 'GETTING-STARTED.md',
|
|
23
|
+
source: path.join(projectRoot, 'docs', 'antigravity', 'GETTING-STARTED.md'),
|
|
24
|
+
output: 'GETTING-STARTED.html',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
key: 'EXAMPLES.md',
|
|
28
|
+
source: path.join(projectRoot, 'docs', 'antigravity', 'EXAMPLES.md'),
|
|
29
|
+
output: 'EXAMPLES.html',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
key: 'WORKFLOW-TEMPLATES.md',
|
|
33
|
+
source: path.join(projectRoot, 'docs', 'antigravity', 'WORKFLOW-TEMPLATES.md'),
|
|
34
|
+
output: 'WORKFLOW-TEMPLATES.html',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
key: 'TROUBLESHOOTING.md',
|
|
38
|
+
source: path.join(projectRoot, 'docs', 'antigravity', 'TROUBLESHOOTING.md'),
|
|
39
|
+
output: 'TROUBLESHOOTING.html',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
key: 'RELEASE_NOTES.md',
|
|
43
|
+
source: path.join(projectRoot, 'docs', 'release-notes', 'RELEASE_NOTES.md'),
|
|
44
|
+
output: 'RELEASE_NOTES.html',
|
|
45
|
+
},
|
|
21
46
|
];
|
|
22
47
|
|
|
23
48
|
const distDocDir = path.join(projectRoot, 'dist', 'docs');
|
package/web/index.html
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
<html lang="en">
|
|
3
|
+
|
|
3
4
|
<head>
|
|
4
5
|
<meta charset="UTF-8">
|
|
5
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
@@ -8,6 +9,7 @@
|
|
|
8
9
|
<script src="https://unpkg.com/lucide@latest"></script>
|
|
9
10
|
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
|
|
10
11
|
</head>
|
|
12
|
+
|
|
11
13
|
<body class="bg-slate-50 text-slate-900">
|
|
12
14
|
<div class="min-h-screen flex flex-col">
|
|
13
15
|
<header class="border-b bg-gradient-to-r from-indigo-600 via-indigo-500 to-purple-500 text-white shadow-lg">
|
|
@@ -15,47 +17,69 @@
|
|
|
15
17
|
<div class="flex items-start gap-4">
|
|
16
18
|
<div class="relative">
|
|
17
19
|
<div class="absolute inset-0 rounded-2xl bg-white/20 blur-md"></div>
|
|
18
|
-
<span
|
|
20
|
+
<span
|
|
21
|
+
class="relative inline-flex items-center justify-center h-14 w-14 rounded-2xl bg-white text-indigo-600 text-xl font-semibold shadow-lg">
|
|
19
22
|
DW
|
|
20
23
|
</span>
|
|
21
24
|
</div>
|
|
22
25
|
<div>
|
|
23
26
|
<h1 class="text-3xl font-semibold flex items-center gap-3">
|
|
24
|
-
<span
|
|
27
|
+
<span
|
|
28
|
+
class="inline-flex h-9 w-9 items-center justify-center rounded-full bg-white/20 text-white shadow-sm">
|
|
25
29
|
<i data-lucide="book-open"></i>
|
|
26
30
|
</span>
|
|
27
31
|
Dev Workflow Knowledge Hub
|
|
32
|
+
<span id="appVersion"
|
|
33
|
+
class="text-sm bg-white/20 px-2 py-0.5 rounded-full font-normal opacity-90 hidden"></span>
|
|
28
34
|
</h1>
|
|
29
35
|
<p class="text-sm md:text-base text-indigo-100/90 mt-2 max-w-xl">
|
|
30
|
-
History, commands, and documentation unified into one dashboard so every task follows the disciplined
|
|
36
|
+
History, commands, and documentation unified into one dashboard so every task follows the disciplined
|
|
37
|
+
workflow.
|
|
31
38
|
</p>
|
|
32
39
|
<div class="mt-4 flex flex-wrap gap-3 text-sm">
|
|
33
|
-
<span class="inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1"><i data-lucide="sparkles"
|
|
34
|
-
|
|
35
|
-
<span class="inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1"><i data-lucide="
|
|
40
|
+
<span class="inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1"><i data-lucide="sparkles"
|
|
41
|
+
class="h-4 w-4"></i> Live insights</span>
|
|
42
|
+
<span class="inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1"><i data-lucide="workflow"
|
|
43
|
+
class="h-4 w-4"></i> Workflow guardrails</span>
|
|
44
|
+
<span class="inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1"><i
|
|
45
|
+
data-lucide="book-open-check" class="h-4 w-4"></i> Embedded documentation</span>
|
|
36
46
|
</div>
|
|
37
47
|
</div>
|
|
38
48
|
</div>
|
|
39
49
|
<div class="flex flex-col gap-4 md:items-end">
|
|
40
50
|
<div class="flex items-center gap-3 w-full md:w-auto">
|
|
41
51
|
<div class="relative flex-1 md:flex-initial">
|
|
42
|
-
<i data-lucide="search"
|
|
43
|
-
|
|
52
|
+
<i data-lucide="search"
|
|
53
|
+
class="pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-indigo-300 h-4 w-4"></i>
|
|
54
|
+
<input type="search" placeholder="Search sections" aria-label="Search sections"
|
|
55
|
+
class="w-full pl-9 pr-4 py-2 rounded-full bg-white/20 text-white placeholder:text-indigo-200/80 focus:outline-none focus:ring-2 focus:ring-white/60 focus:bg-white/30"
|
|
56
|
+
oninput="handleSectionSearch(event)" />
|
|
44
57
|
</div>
|
|
45
|
-
<button
|
|
58
|
+
<button
|
|
59
|
+
class="inline-flex items-center gap-2 rounded-full bg-white text-indigo-600 px-4 py-2 text-sm font-semibold shadow-md hover:bg-indigo-50"
|
|
60
|
+
id="refreshDashboardBtn">
|
|
46
61
|
<i data-lucide="refresh-ccw"></i>
|
|
47
62
|
Refresh data
|
|
48
63
|
</button>
|
|
49
64
|
</div>
|
|
50
65
|
<div class="flex flex-wrap gap-2 text-xs text-indigo-100/80 md:justify-end">
|
|
51
|
-
<span class="inline-flex items-center gap-2"><i data-lucide="keyboard"></i> Press ⬇️ to navigate
|
|
66
|
+
<span class="inline-flex items-center gap-2"><i data-lucide="keyboard"></i> Press ⬇️ to navigate
|
|
67
|
+
sections</span>
|
|
52
68
|
<span class="inline-flex items-center gap-2"><i data-lucide="external-link"></i> Docs open inline</span>
|
|
53
69
|
</div>
|
|
54
70
|
<div class="flex flex-wrap gap-3 md:justify-end">
|
|
55
|
-
<button
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
<button
|
|
71
|
+
<button
|
|
72
|
+
class="scroll-link inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1 text-sm font-medium hover:bg-white/25 transition"
|
|
73
|
+
data-scroll-target="#overview"><i data-lucide="compass" class="h-4 w-4"></i> Overview</button>
|
|
74
|
+
<button
|
|
75
|
+
class="scroll-link inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1 text-sm font-medium hover:bg-white/25 transition"
|
|
76
|
+
data-scroll-target="#history"><i data-lucide="clock" class="h-4 w-4"></i> History</button>
|
|
77
|
+
<button
|
|
78
|
+
class="scroll-link inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1 text-sm font-medium hover:bg-white/25 transition"
|
|
79
|
+
data-scroll-target="#commands"><i data-lucide="workflow" class="h-4 w-4"></i> Commands</button>
|
|
80
|
+
<button
|
|
81
|
+
class="scroll-link inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1 text-sm font-medium hover:bg-white/25 transition"
|
|
82
|
+
data-scroll-target="#api"><i data-lucide="code" class="h-4 w-4"></i> API</button>
|
|
59
83
|
</div>
|
|
60
84
|
</div>
|
|
61
85
|
</div>
|
|
@@ -67,20 +91,46 @@
|
|
|
67
91
|
<div>
|
|
68
92
|
<h2 class="text-xs uppercase tracking-wide text-slate-500 mb-2">Documentation</h2>
|
|
69
93
|
<ul class="space-y-1 text-sm" id="sidebarNav">
|
|
70
|
-
<li><a href="#overview" class="block px-3 py-2 rounded hover:bg-indigo-50 text-slate-700">Overview</a
|
|
71
|
-
|
|
72
|
-
<li><a href="#
|
|
73
|
-
|
|
74
|
-
<li><a href="#
|
|
75
|
-
|
|
94
|
+
<li><a href="#overview" class="block px-3 py-2 rounded hover:bg-indigo-50 text-slate-700">Overview</a>
|
|
95
|
+
</li>
|
|
96
|
+
<li><a href="#history" class="block px-3 py-2 rounded hover:bg-indigo-50 text-slate-700">Workflow
|
|
97
|
+
History</a></li>
|
|
98
|
+
<li><a href="#usage" class="block px-3 py-2 rounded hover:bg-indigo-50 text-slate-700">Using Filters</a>
|
|
99
|
+
</li>
|
|
100
|
+
<li><a href="#commands" class="block px-3 py-2 rounded hover:bg-indigo-50 text-slate-700">Commands
|
|
101
|
+
Reference</a></li>
|
|
102
|
+
<li><a href="#api" class="block px-3 py-2 rounded hover:bg-indigo-50 text-slate-700">API Endpoints</a>
|
|
103
|
+
</li>
|
|
104
|
+
<li><a href="#troubleshooting"
|
|
105
|
+
class="block px-3 py-2 rounded hover:bg-indigo-50 text-slate-700">Troubleshooting</a></li>
|
|
76
106
|
</ul>
|
|
77
107
|
</div>
|
|
78
108
|
<div class="border-t pt-4">
|
|
79
109
|
<h2 class="text-xs uppercase tracking-wide text-slate-500 mb-2">Resources</h2>
|
|
80
110
|
<ul class="space-y-1 text-sm">
|
|
81
|
-
<li><a href="https://github.com/programinglive/dev-workflow-mcp-server" target="_blank" rel="noopener"
|
|
82
|
-
|
|
83
|
-
<li><button data-doc="
|
|
111
|
+
<li><a href="https://github.com/programinglive/dev-workflow-mcp-server" target="_blank" rel="noopener"
|
|
112
|
+
class="block px-3 py-2 rounded hover:bg-indigo-50 text-indigo-600">GitHub Repository</a></li>
|
|
113
|
+
<li><button data-doc="README.md"
|
|
114
|
+
class="doc-link block w-full text-left px-3 py-2 rounded hover:bg-indigo-50 text-indigo-600">Project
|
|
115
|
+
README</button></li>
|
|
116
|
+
<li><button data-doc="web-dashboard.md"
|
|
117
|
+
class="doc-link block w-full text-left px-3 py-2 rounded hover:bg-indigo-50 text-indigo-600">Web
|
|
118
|
+
Dashboard Guide</button></li>
|
|
119
|
+
<li><button data-doc="GETTING-STARTED.md"
|
|
120
|
+
class="doc-link block w-full text-left px-3 py-2 rounded hover:bg-indigo-50 text-indigo-600">Getting
|
|
121
|
+
Started</button></li>
|
|
122
|
+
<li><button data-doc="EXAMPLES.md"
|
|
123
|
+
class="doc-link block w-full text-left px-3 py-2 rounded hover:bg-indigo-50 text-indigo-600">Examples</button>
|
|
124
|
+
</li>
|
|
125
|
+
<li><button data-doc="WORKFLOW-TEMPLATES.md"
|
|
126
|
+
class="doc-link block w-full text-left px-3 py-2 rounded hover:bg-indigo-50 text-indigo-600">Workflow
|
|
127
|
+
Templates</button></li>
|
|
128
|
+
<li><button data-doc="TROUBLESHOOTING.md"
|
|
129
|
+
class="doc-link block w-full text-left px-3 py-2 rounded hover:bg-indigo-50 text-indigo-600">Troubleshooting</button>
|
|
130
|
+
</li>
|
|
131
|
+
<li><button data-doc="RELEASE_NOTES.md"
|
|
132
|
+
class="doc-link block w-full text-left px-3 py-2 rounded hover:bg-indigo-50 text-indigo-600">Release
|
|
133
|
+
Notes</button></li>
|
|
84
134
|
</ul>
|
|
85
135
|
</div>
|
|
86
136
|
</nav>
|
|
@@ -94,29 +144,37 @@
|
|
|
94
144
|
<i data-lucide="compass"></i>
|
|
95
145
|
Overview
|
|
96
146
|
</h2>
|
|
97
|
-
<p class="mt-2 text-slate-600">Learn how the Dev Workflow dashboard surfaces workflow history and offers
|
|
147
|
+
<p class="mt-2 text-slate-600">Learn how the Dev Workflow dashboard surfaces workflow history and offers
|
|
148
|
+
inline documentation for every MCP command.</p>
|
|
98
149
|
<div class="mt-4 bg-amber-50 border border-amber-200 text-amber-800 text-sm rounded-lg p-4 flex gap-3">
|
|
99
150
|
<i data-lucide="alert-circle" class="mt-1 shrink-0"></i>
|
|
100
151
|
<p>
|
|
101
|
-
The dashboard is read-only. MCP clients (Windsurf, Claude Desktop, etc.) must launch the server via
|
|
102
|
-
|
|
152
|
+
The dashboard is read-only. MCP clients (Windsurf, Claude Desktop, etc.) must launch the server via
|
|
153
|
+
<code>node index.js</code>
|
|
154
|
+
over stdio on the machine they control. Hosting this site publicly does <strong>not</strong> expose
|
|
155
|
+
the MCP protocol; without SSH or another
|
|
103
156
|
execution path to the server, remote users cannot connect their MCP agents.
|
|
104
157
|
</p>
|
|
105
158
|
</div>
|
|
106
159
|
</div>
|
|
107
160
|
<div class="hidden md:flex items-center gap-2 text-sm text-slate-500">
|
|
108
161
|
<i data-lucide="info"></i>
|
|
109
|
-
<span>Need help? Jump to <a href="#commands" class="text-indigo-600 underline">Commands
|
|
162
|
+
<span>Need help? Jump to <a href="#commands" class="text-indigo-600 underline">Commands
|
|
163
|
+
Reference</a>.</span>
|
|
110
164
|
</div>
|
|
111
165
|
</div>
|
|
112
166
|
<div class="mt-6 grid gap-6 md:grid-cols-2">
|
|
113
167
|
<div class="p-4 bg-indigo-50 rounded-lg border border-indigo-100">
|
|
114
|
-
<h3 class="font-medium text-indigo-900 flex items-center gap-2"><i data-lucide="activity"></i> Live
|
|
115
|
-
|
|
168
|
+
<h3 class="font-medium text-indigo-900 flex items-center gap-2"><i data-lucide="activity"></i> Live
|
|
169
|
+
Insights</h3>
|
|
170
|
+
<p class="text-sm text-indigo-900/80 mt-2">Connects directly to your `.state` history to show progress,
|
|
171
|
+
release cadence, and team activity trends.</p>
|
|
116
172
|
</div>
|
|
117
173
|
<div class="p-4 bg-emerald-50 rounded-lg border border-emerald-100">
|
|
118
|
-
<h3 class="font-medium text-emerald-900 flex items-center gap-2"><i data-lucide="book"></i> Built-in
|
|
119
|
-
|
|
174
|
+
<h3 class="font-medium text-emerald-900 flex items-center gap-2"><i data-lucide="book"></i> Built-in
|
|
175
|
+
Playbook</h3>
|
|
176
|
+
<p class="text-sm text-emerald-900/80 mt-2">Every MCP tool is documented with prerequisites, recommended
|
|
177
|
+
usage, and follow-up actions.</p>
|
|
120
178
|
</div>
|
|
121
179
|
</div>
|
|
122
180
|
</section>
|
|
@@ -128,7 +186,8 @@
|
|
|
128
186
|
<i data-lucide="clock-4"></i>
|
|
129
187
|
Workflow History Explorer
|
|
130
188
|
</h2>
|
|
131
|
-
<p class="text-slate-600 mt-2">Slice and explore your task history. Use the filters below to focus on a
|
|
189
|
+
<p class="text-slate-600 mt-2">Slice and explore your task history. Use the filters below to focus on a
|
|
190
|
+
user, time range, or frequency.</p>
|
|
132
191
|
</div>
|
|
133
192
|
<a href="#api" class="inline-flex items-center gap-2 text-sm text-indigo-600 hover:text-indigo-700">
|
|
134
193
|
<i data-lucide="terminal"></i>
|
|
@@ -145,19 +204,23 @@
|
|
|
145
204
|
<div class="grid gap-4 sm:grid-cols-2 xl:grid-cols-3">
|
|
146
205
|
<label class="flex flex-col gap-1">
|
|
147
206
|
<span class="text-sm font-medium text-slate-600">User ID</span>
|
|
148
|
-
<input id="userId" type="text" placeholder="default"
|
|
207
|
+
<input id="userId" type="text" placeholder="default"
|
|
208
|
+
class="border border-slate-300 rounded px-3 py-2 focus:outline-none focus:ring-2 focus:ring-indigo-500" />
|
|
149
209
|
</label>
|
|
150
210
|
<label class="flex flex-col gap-1">
|
|
151
211
|
<span class="text-sm font-medium text-slate-600">Start date</span>
|
|
152
|
-
<input id="startDate" type="date"
|
|
212
|
+
<input id="startDate" type="date"
|
|
213
|
+
class="border border-slate-300 rounded px-3 py-2 focus:outline-none focus:ring-2 focus:ring-indigo-500" />
|
|
153
214
|
</label>
|
|
154
215
|
<label class="flex flex-col gap-1">
|
|
155
216
|
<span class="text-sm font-medium text-slate-600">End date</span>
|
|
156
|
-
<input id="endDate" type="date"
|
|
217
|
+
<input id="endDate" type="date"
|
|
218
|
+
class="border border-slate-300 rounded px-3 py-2 focus:outline-none focus:ring-2 focus:ring-indigo-500" />
|
|
157
219
|
</label>
|
|
158
220
|
<label class="flex flex-col gap-1">
|
|
159
221
|
<span class="text-sm font-medium text-slate-600">Activity frequency</span>
|
|
160
|
-
<select id="frequency"
|
|
222
|
+
<select id="frequency"
|
|
223
|
+
class="border border-slate-300 rounded px-3 py-2 focus:outline-none focus:ring-2 focus:ring-indigo-500">
|
|
161
224
|
<option value="daily">Daily</option>
|
|
162
225
|
<option value="monthly">Monthly</option>
|
|
163
226
|
<option value="yearly">Yearly</option>
|
|
@@ -165,7 +228,8 @@
|
|
|
165
228
|
</label>
|
|
166
229
|
<label class="flex flex-col gap-1">
|
|
167
230
|
<span class="text-sm font-medium text-slate-600">Page size</span>
|
|
168
|
-
<select id="pageSize"
|
|
231
|
+
<select id="pageSize"
|
|
232
|
+
class="border border-slate-300 rounded px-3 py-2 focus:outline-none focus:ring-2 focus:ring-indigo-500">
|
|
169
233
|
<option value="10">10</option>
|
|
170
234
|
<option value="20" selected>20</option>
|
|
171
235
|
<option value="50">50</option>
|
|
@@ -173,8 +237,10 @@
|
|
|
173
237
|
</label>
|
|
174
238
|
</div>
|
|
175
239
|
<div class="flex flex-wrap gap-3 items-center mt-5">
|
|
176
|
-
<button id="applyFiltersBtn"
|
|
177
|
-
|
|
240
|
+
<button id="applyFiltersBtn"
|
|
241
|
+
class="bg-indigo-600 text-white px-4 py-2 rounded-md hover:bg-indigo-700">Apply filters</button>
|
|
242
|
+
<button id="resetFiltersBtn"
|
|
243
|
+
class="bg-white border border-slate-300 text-slate-700 px-4 py-2 rounded-md hover:bg-slate-100">Reset</button>
|
|
178
244
|
<span class="text-sm text-slate-500">Leave fields empty to view all data for the default user.</span>
|
|
179
245
|
</div>
|
|
180
246
|
</div>
|
|
@@ -205,9 +271,11 @@
|
|
|
205
271
|
</h3>
|
|
206
272
|
<div id="historyContent" class="space-y-3 text-sm"></div>
|
|
207
273
|
<div id="paginationControls" class="flex items-center justify-between mt-6 hidden">
|
|
208
|
-
<button id="prevPageBtn"
|
|
274
|
+
<button id="prevPageBtn"
|
|
275
|
+
class="bg-white border border-slate-300 text-slate-700 px-3 py-1 rounded-md hover:bg-slate-100 disabled:opacity-50 disabled:cursor-not-allowed">Previous</button>
|
|
209
276
|
<span id="pageInfo" class="text-sm text-slate-600"></span>
|
|
210
|
-
<button id="nextPageBtn"
|
|
277
|
+
<button id="nextPageBtn"
|
|
278
|
+
class="bg-white border border-slate-300 text-slate-700 px-3 py-1 rounded-md hover:bg-slate-100 disabled:opacity-50 disabled:cursor-not-allowed">Next</button>
|
|
211
279
|
</div>
|
|
212
280
|
</div>
|
|
213
281
|
</section>
|
|
@@ -221,19 +289,23 @@
|
|
|
221
289
|
<div class="mt-4 grid gap-6 md:grid-cols-2">
|
|
222
290
|
<div>
|
|
223
291
|
<h3 class="font-semibold text-slate-800">1. Filter your scope</h3>
|
|
224
|
-
<p class="text-sm text-slate-600 mt-2">Pick a user ID to analyze individual contributions. Add date ranges
|
|
292
|
+
<p class="text-sm text-slate-600 mt-2">Pick a user ID to analyze individual contributions. Add date ranges
|
|
293
|
+
to focus on a release window, sprint, or quarter.</p>
|
|
225
294
|
</div>
|
|
226
295
|
<div>
|
|
227
296
|
<h3 class="font-semibold text-slate-800">2. Inspect the summary</h3>
|
|
228
|
-
<p class="text-sm text-slate-600 mt-2">Review overall throughput, mix of task types, and recent activity.
|
|
297
|
+
<p class="text-sm text-slate-600 mt-2">Review overall throughput, mix of task types, and recent activity.
|
|
298
|
+
The summary auto-updates whenever you change filters.</p>
|
|
229
299
|
</div>
|
|
230
300
|
<div>
|
|
231
301
|
<h3 class="font-semibold text-slate-800">3. Dive into entries</h3>
|
|
232
|
-
<p class="text-sm text-slate-600 mt-2">Scroll the event log to see commit messages, forced completions,
|
|
302
|
+
<p class="text-sm text-slate-600 mt-2">Scroll the event log to see commit messages, forced completions,
|
|
303
|
+
and dropped tasks. Use pagination to traverse older work.</p>
|
|
233
304
|
</div>
|
|
234
305
|
<div>
|
|
235
306
|
<h3 class="font-semibold text-slate-800">4. Export via API</h3>
|
|
236
|
-
<p class="text-sm text-slate-600 mt-2">Need automation or reporting? Jump to the <a href="#api"
|
|
307
|
+
<p class="text-sm text-slate-600 mt-2">Need automation or reporting? Jump to the <a href="#api"
|
|
308
|
+
class="text-indigo-600 underline">API section</a> and query JSON endpoints directly.</p>
|
|
237
309
|
</div>
|
|
238
310
|
</div>
|
|
239
311
|
</section>
|
|
@@ -245,13 +317,16 @@
|
|
|
245
317
|
<i data-lucide="workflow"></i>
|
|
246
318
|
Commands Reference
|
|
247
319
|
</h2>
|
|
248
|
-
<div
|
|
320
|
+
<div
|
|
321
|
+
class="mt-2 inline-flex items-center gap-2 rounded-full bg-indigo-50 px-3 py-1 text-xs font-semibold text-indigo-600 uppercase tracking-wide">
|
|
249
322
|
<i data-lucide="check-square"></i>
|
|
250
323
|
<span>All Tools · 20 commands</span>
|
|
251
324
|
</div>
|
|
252
|
-
<p class="text-slate-600 mt-3">Explore all <strong>20</strong> MCP tools that keep the workflow honest.
|
|
325
|
+
<p class="text-slate-600 mt-3">Explore all <strong>20</strong> MCP tools that keep the workflow honest.
|
|
326
|
+
Review prerequisites, usage tips, and next steps for each command below.</p>
|
|
253
327
|
</div>
|
|
254
|
-
<button data-doc="README.md" data-doc-heading="🛠️ Available Tools"
|
|
328
|
+
<button data-doc="README.md" data-doc-heading="🛠️ Available Tools"
|
|
329
|
+
class="doc-link inline-flex items-center gap-2 text-sm text-indigo-600 hover:text-indigo-700">
|
|
255
330
|
<i data-lucide="external-link"></i>
|
|
256
331
|
Full README Reference
|
|
257
332
|
</button>
|
|
@@ -266,7 +341,8 @@
|
|
|
266
341
|
<div class="px-5 pb-5 space-y-3 text-sm text-slate-600">
|
|
267
342
|
<p>Begin every effort with a clear description and task type.</p>
|
|
268
343
|
<ul class="list-disc list-inside space-y-1">
|
|
269
|
-
<li><strong>Parameters:</strong> <code>description</code> (string, required), <code>type</code>
|
|
344
|
+
<li><strong>Parameters:</strong> <code>description</code> (string, required), <code>type</code>
|
|
345
|
+
("feature" | "bugfix" | "refactor" | "other", required)</li>
|
|
270
346
|
<li><strong>When to use:</strong> Before writing code or touching files.</li>
|
|
271
347
|
<li><strong>Next step:</strong> Implement your changes then run <code>mark_bug_fixed</code>.</li>
|
|
272
348
|
</ul>
|
|
@@ -326,7 +402,8 @@
|
|
|
326
402
|
<div class="px-5 pb-5 space-y-3 text-sm text-slate-600">
|
|
327
403
|
<p>Capture the outcome of your automated test run.</p>
|
|
328
404
|
<ul class="list-disc list-inside space-y-1">
|
|
329
|
-
<li><strong>Parameters:</strong> <code>passed</code> (boolean, required), <code>testCommand</code>
|
|
405
|
+
<li><strong>Parameters:</strong> <code>passed</code> (boolean, required), <code>testCommand</code>
|
|
406
|
+
(string, required), optional <code>details</code> (string)</li>
|
|
330
407
|
<li><strong>Guidance:</strong> Never proceed if tests fail—return to coding and re-run.</li>
|
|
331
408
|
<li><strong>Next step:</strong> Move to <code>create_documentation</code> when green.</li>
|
|
332
409
|
</ul>
|
|
@@ -341,8 +418,10 @@
|
|
|
341
418
|
<div class="px-5 pb-5 space-y-3 text-sm text-slate-600">
|
|
342
419
|
<p>Record documentation updates before proceeding to verification.</p>
|
|
343
420
|
<ul class="list-disc list-inside space-y-1">
|
|
344
|
-
<li><strong>Parameters:</strong> <code>documentationType</code> (enum), <code>summary</code> (string)
|
|
345
|
-
|
|
421
|
+
<li><strong>Parameters:</strong> <code>documentationType</code> (enum), <code>summary</code> (string)
|
|
422
|
+
</li>
|
|
423
|
+
<li><strong>Tip:</strong> Keep summaries short but action-oriented. Include links to README sections
|
|
424
|
+
or docs PRs.</li>
|
|
346
425
|
</ul>
|
|
347
426
|
</div>
|
|
348
427
|
</details>
|
|
@@ -369,7 +448,8 @@
|
|
|
369
448
|
<div class="px-5 pb-5 space-y-3 text-sm text-slate-600">
|
|
370
449
|
<p>Automatically stage, commit, and push once verification passes.</p>
|
|
371
450
|
<ul class="list-disc list-inside space-y-1">
|
|
372
|
-
<li><strong>Parameters:</strong> <code>commitMessage</code> (string), optional <code>branch</code>
|
|
451
|
+
<li><strong>Parameters:</strong> <code>commitMessage</code> (string), optional <code>branch</code>
|
|
452
|
+
(string)</li>
|
|
373
453
|
<li><strong>Behavior:</strong> Detects clean working trees and reuses the latest commit metadata.</li>
|
|
374
454
|
<li><strong>Reminder:</strong> Any new edits will bounce you back to this step.</li>
|
|
375
455
|
</ul>
|
|
@@ -384,8 +464,11 @@
|
|
|
384
464
|
<div class="px-5 pb-5 space-y-3 text-sm text-slate-600">
|
|
385
465
|
<p>Record release details once the commit is live. Guards ensure the workflow order.</p>
|
|
386
466
|
<ul class="list-disc list-inside space-y-1">
|
|
387
|
-
<li><strong>Parameters:</strong> <code>command</code> (string), optional <code>notes</code>,
|
|
388
|
-
|
|
467
|
+
<li><strong>Parameters:</strong> <code>command</code> (string), optional <code>notes</code>,
|
|
468
|
+
<code>releaseType</code>, <code>preset</code>
|
|
469
|
+
</li>
|
|
470
|
+
<li><strong>Integration:</strong> Wraps <code>release-wrapper.js</code> to prevent accidental version
|
|
471
|
+
bumps.</li>
|
|
389
472
|
</ul>
|
|
390
473
|
</div>
|
|
391
474
|
</details>
|
|
@@ -413,7 +496,8 @@
|
|
|
413
496
|
<div class="px-5 pb-5 space-y-3 text-sm text-slate-600">
|
|
414
497
|
<p>Record an incomplete task as finished with a justification.</p>
|
|
415
498
|
<ul class="list-disc list-inside space-y-1">
|
|
416
|
-
<li><strong>Parameters:</strong> optional <code>commitMessage</code>, optional <code>reason</code>
|
|
499
|
+
<li><strong>Parameters:</strong> optional <code>commitMessage</code>, optional <code>reason</code>
|
|
500
|
+
(string)</li>
|
|
417
501
|
<li><strong>Use sparingly:</strong> Ideal for emergencies where remaining steps cannot be done.</li>
|
|
418
502
|
<li><strong>Next step:</strong> Follow up manually on outstanding work.</li>
|
|
419
503
|
</ul>
|
|
@@ -499,9 +583,15 @@
|
|
|
499
583
|
<div class="px-5 pb-5 space-y-3 text-sm text-slate-600">
|
|
500
584
|
<p>Execute every command in sequence when you already know the answers.</p>
|
|
501
585
|
<ul class="list-disc list-inside space-y-1">
|
|
502
|
-
<li><strong>Parameters (required):</strong> <code>summary</code>, <code>testCommand</code>,
|
|
503
|
-
|
|
504
|
-
|
|
586
|
+
<li><strong>Parameters (required):</strong> <code>summary</code>, <code>testCommand</code>,
|
|
587
|
+
<code>documentationType</code>, <code>documentationSummary</code>, <code>commitMessage</code>,
|
|
588
|
+
<code>releaseCommand</code>
|
|
589
|
+
</li>
|
|
590
|
+
<li><strong>Optional:</strong> <code>testsPassed</code>, <code>testDetails</code>,
|
|
591
|
+
<code>branch</code>, <code>releaseNotes</code>, <code>releaseType</code>, <code>preset</code>
|
|
592
|
+
</li>
|
|
593
|
+
<li><strong>Ideal for:</strong> Scripted flows or demos where you want the guardrails without manual
|
|
594
|
+
calls.</li>
|
|
505
595
|
</ul>
|
|
506
596
|
</div>
|
|
507
597
|
</details>
|
|
@@ -555,7 +645,8 @@
|
|
|
555
645
|
<i data-lucide="code"></i>
|
|
556
646
|
API Endpoints
|
|
557
647
|
</div>
|
|
558
|
-
<p class="text-slate-600">Use these JSON endpoints to integrate task history into automation, dashboards, or
|
|
648
|
+
<p class="text-slate-600">Use these JSON endpoints to integrate task history into automation, dashboards, or
|
|
649
|
+
reports.</p>
|
|
559
650
|
<div class="space-y-4 text-sm text-slate-700">
|
|
560
651
|
<div class="border border-slate-200 rounded-lg p-4">
|
|
561
652
|
<h3 class="font-medium text-slate-800">GET /api/summary</h3>
|
|
@@ -565,12 +656,16 @@
|
|
|
565
656
|
<div class="border border-slate-200 rounded-lg p-4">
|
|
566
657
|
<h3 class="font-medium text-slate-800">GET /api/history</h3>
|
|
567
658
|
<p class="mt-1">Paginated timeline of workflow entries with commit metadata.</p>
|
|
568
|
-
<p class="mt-2 text-xs text-slate-500">Query params: <code>user</code>, <code>page</code>,
|
|
659
|
+
<p class="mt-2 text-xs text-slate-500">Query params: <code>user</code>, <code>page</code>,
|
|
660
|
+
<code>pageSize</code>, <code>startDate</code>, <code>endDate</code>
|
|
661
|
+
</p>
|
|
569
662
|
</div>
|
|
570
663
|
<div class="border border-slate-200 rounded-lg p-4">
|
|
571
664
|
<h3 class="font-medium text-slate-800">GET /api/history-summary</h3>
|
|
572
665
|
<p class="mt-1">Counts per day, month, or year for trend analysis.</p>
|
|
573
|
-
<p class="mt-2 text-xs text-slate-500">Query params: <code>user</code>, <code>frequency</code>,
|
|
666
|
+
<p class="mt-2 text-xs text-slate-500">Query params: <code>user</code>, <code>frequency</code>,
|
|
667
|
+
<code>startDate</code>, <code>endDate</code>
|
|
668
|
+
</p>
|
|
574
669
|
</div>
|
|
575
670
|
</div>
|
|
576
671
|
</section>
|
|
@@ -591,15 +686,19 @@
|
|
|
591
686
|
<tbody class="divide-y divide-slate-100">
|
|
592
687
|
<tr>
|
|
593
688
|
<td class="px-4 py-3">Dashboard shows empty data</td>
|
|
594
|
-
<td class="px-4 py-3">Verify the MCP server has created `.state/users/<user>/workflow-state.json` and
|
|
689
|
+
<td class="px-4 py-3">Verify the MCP server has created `.state/users/<user>/workflow-state.json` and
|
|
690
|
+
that the selected user matches.</td>
|
|
595
691
|
</tr>
|
|
596
692
|
<tr>
|
|
597
693
|
<td class="px-4 py-3">`better-sqlite3` build error on startup</td>
|
|
598
|
-
<td class="px-4 py-3">Install Python 3 and native build tools (Windows) or ensure SQLite headers are
|
|
694
|
+
<td class="px-4 py-3">Install Python 3 and native build tools (Windows) or ensure SQLite headers are
|
|
695
|
+
installed (macOS/Linux).</td>
|
|
599
696
|
</tr>
|
|
600
697
|
<tr>
|
|
601
698
|
<td class="px-4 py-3">Port already in use</td>
|
|
602
|
-
<td class="px-4 py-3">Set <code>DEV_WORKFLOW_WEB_PORT</code> to a free port before running
|
|
699
|
+
<td class="px-4 py-3">Set <code>DEV_WORKFLOW_WEB_PORT</code> to a free port before running
|
|
700
|
+
<code>npm run web</code>.
|
|
701
|
+
</td>
|
|
603
702
|
</tr>
|
|
604
703
|
</tbody>
|
|
605
704
|
</table>
|
|
@@ -618,7 +717,8 @@
|
|
|
618
717
|
<h3 id="docModalTitle" class="text-lg font-semibold text-slate-800">Documentation</h3>
|
|
619
718
|
<p id="docModalSubtitle" class="text-xs text-slate-500 mt-1"></p>
|
|
620
719
|
</div>
|
|
621
|
-
<button id="docModalClose" class="p-2 rounded-md text-slate-500 hover:text-slate-700 hover:bg-slate-100"
|
|
720
|
+
<button id="docModalClose" class="p-2 rounded-md text-slate-500 hover:text-slate-700 hover:bg-slate-100"
|
|
721
|
+
aria-label="Close documentation">
|
|
622
722
|
<i data-lucide="x"></i>
|
|
623
723
|
</button>
|
|
624
724
|
</header>
|
|
@@ -779,6 +879,16 @@
|
|
|
779
879
|
|
|
780
880
|
async function load() {
|
|
781
881
|
const userId = state.userId || "default";
|
|
882
|
+
|
|
883
|
+
// Fetch version
|
|
884
|
+
fetchJson('/api/version').then(({ version }) => {
|
|
885
|
+
const verEl = el('appVersion');
|
|
886
|
+
if (verEl && version) {
|
|
887
|
+
verEl.textContent = `v${version}`;
|
|
888
|
+
verEl.classList.remove('hidden');
|
|
889
|
+
}
|
|
890
|
+
}).catch(() => { }); // Ignore version fetch errors
|
|
891
|
+
|
|
782
892
|
try {
|
|
783
893
|
const historyParams = {
|
|
784
894
|
user: userId,
|
|
@@ -930,4 +1040,5 @@
|
|
|
930
1040
|
load();
|
|
931
1041
|
</script>
|
|
932
1042
|
</body>
|
|
933
|
-
|
|
1043
|
+
|
|
1044
|
+
</html>
|
package/web/server.js
CHANGED
|
@@ -18,6 +18,26 @@ const docSources = {
|
|
|
18
18
|
markdown: join(projectRoot, "docs", "web-dashboard.md"),
|
|
19
19
|
html: join(projectRoot, "dist", "docs", "web-dashboard.html"),
|
|
20
20
|
},
|
|
21
|
+
"GETTING-STARTED.md": {
|
|
22
|
+
markdown: join(projectRoot, "docs", "antigravity", "GETTING-STARTED.md"),
|
|
23
|
+
html: join(projectRoot, "dist", "docs", "GETTING-STARTED.html"),
|
|
24
|
+
},
|
|
25
|
+
"EXAMPLES.md": {
|
|
26
|
+
markdown: join(projectRoot, "docs", "antigravity", "EXAMPLES.md"),
|
|
27
|
+
html: join(projectRoot, "dist", "docs", "EXAMPLES.html"),
|
|
28
|
+
},
|
|
29
|
+
"WORKFLOW-TEMPLATES.md": {
|
|
30
|
+
markdown: join(projectRoot, "docs", "antigravity", "WORKFLOW-TEMPLATES.md"),
|
|
31
|
+
html: join(projectRoot, "dist", "docs", "WORKFLOW-TEMPLATES.html"),
|
|
32
|
+
},
|
|
33
|
+
"TROUBLESHOOTING.md": {
|
|
34
|
+
markdown: join(projectRoot, "docs", "antigravity", "TROUBLESHOOTING.md"),
|
|
35
|
+
html: join(projectRoot, "dist", "docs", "TROUBLESHOOTING.html"),
|
|
36
|
+
},
|
|
37
|
+
"RELEASE_NOTES.md": {
|
|
38
|
+
markdown: join(projectRoot, "docs", "release-notes", "RELEASE_NOTES.md"),
|
|
39
|
+
html: join(projectRoot, "dist", "docs", "RELEASE_NOTES.html"),
|
|
40
|
+
},
|
|
21
41
|
};
|
|
22
42
|
|
|
23
43
|
async function resolveDocContent(docKey) {
|
|
@@ -112,6 +132,11 @@ async function start() {
|
|
|
112
132
|
|
|
113
133
|
res.writeHead(200, { "Content-Type": "application/json" });
|
|
114
134
|
res.end(JSON.stringify({ doc: resolvedKey, content: result.content, format: result.format }));
|
|
135
|
+
} else if (req.method === "GET" && url.pathname === "/api/version") {
|
|
136
|
+
const packageJson = await readFile(join(projectRoot, "package.json"), "utf-8");
|
|
137
|
+
const { version } = JSON.parse(packageJson);
|
|
138
|
+
res.writeHead(200, { "Content-Type": "application/json" });
|
|
139
|
+
res.end(JSON.stringify({ version }));
|
|
115
140
|
} else {
|
|
116
141
|
res.writeHead(404, { "Content-Type": "text/plain" });
|
|
117
142
|
res.end("Not found");
|