@jakkrichm/create-nexus-devflow 2.0.27 → 2.1.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.
Files changed (52) hide show
  1. package/README.md +29 -7
  2. package/dist/bin/create-nexus-devflow.d.ts +5 -1
  3. package/dist/bin/create-nexus-devflow.js +219 -0
  4. package/dist/bin/create-nexus-devflow.js.map +1 -1
  5. package/dist/lib/branch-context.d.ts +39 -0
  6. package/dist/lib/branch-context.js +196 -0
  7. package/dist/lib/branch-context.js.map +1 -0
  8. package/dist/lib/code-graph.d.ts +30 -0
  9. package/dist/lib/code-graph.js +209 -0
  10. package/dist/lib/code-graph.js.map +1 -0
  11. package/dist/lib/context-slicer.d.ts +31 -0
  12. package/dist/lib/context-slicer.js +234 -0
  13. package/dist/lib/context-slicer.js.map +1 -0
  14. package/dist/lib/current-work.js +4 -2
  15. package/dist/lib/current-work.js.map +1 -1
  16. package/dist/lib/dashboard-page.d.ts +1 -1
  17. package/dist/lib/dashboard-page.js +140 -56
  18. package/dist/lib/dashboard-page.js.map +1 -1
  19. package/dist/lib/dashboard-snapshot.d.ts +13 -0
  20. package/dist/lib/dashboard-snapshot.js +24 -6
  21. package/dist/lib/dashboard-snapshot.js.map +1 -1
  22. package/dist/lib/dashboard.js +38 -0
  23. package/dist/lib/dashboard.js.map +1 -1
  24. package/dist/lib/drift-reconciler.d.ts +38 -0
  25. package/dist/lib/drift-reconciler.js +155 -0
  26. package/dist/lib/drift-reconciler.js.map +1 -0
  27. package/dist/lib/gatekeeper.d.ts +1 -0
  28. package/dist/lib/gatekeeper.js +30 -1
  29. package/dist/lib/gatekeeper.js.map +1 -1
  30. package/dist/lib/git-hooks.js +41 -16
  31. package/dist/lib/git-hooks.js.map +1 -1
  32. package/dist/lib/ide-extension.d.ts +38 -0
  33. package/dist/lib/ide-extension.js +61 -0
  34. package/dist/lib/ide-extension.js.map +1 -0
  35. package/dist/lib/mcp.d.ts +36 -0
  36. package/dist/lib/mcp.js +653 -0
  37. package/dist/lib/mcp.js.map +1 -0
  38. package/dist/lib/status.d.ts +1 -1
  39. package/dist/lib/status.js +4 -4
  40. package/dist/lib/status.js.map +1 -1
  41. package/dist/lib/swarm-orchestrator.d.ts +31 -0
  42. package/dist/lib/swarm-orchestrator.js +134 -0
  43. package/dist/lib/swarm-orchestrator.js.map +1 -0
  44. package/dist/lib/webview-studio.d.ts +8 -0
  45. package/dist/lib/webview-studio.js +463 -0
  46. package/dist/lib/webview-studio.js.map +1 -0
  47. package/dist/lib/workflow-state.js +24 -8
  48. package/dist/lib/workflow-state.js.map +1 -1
  49. package/package.json +1 -1
  50. package/template/devflow/build-plan.md +42 -20
  51. package/template/devflow/project-plan.md +70 -18
  52. package/template/devflow/reference/studio.html +504 -0
@@ -1,27 +1,79 @@
1
1
  # 🗺️ Project Plan (User-Owned Architectural Vision)
2
2
 
3
3
  > **Document Type**: Project Plan (User-Owned)
4
- > **Purpose**: Single source of truth for high-level product vision, architecture, constraints, and non-goals. Distilled into `devflow/context/project-overview.md` by `/overview`.
4
+ > **Purpose**: แหล่งความจริงหลัก (Single Source of Truth) สำหรับวิสัยทัศน์ผลิตภัณฑ์ สถาปัตยกรรมระบบ มาตรการความปลอดภัย กฎเกณฑ์การส่งมอบ และแผนงานพัฒนาต่อยอด ถูกนำไปประมวลผลเป็น `devflow/context/project-overview.md` ผ่านคำสั่ง `/overview`
5
5
 
6
6
  ---
7
7
 
8
8
  ## 1. Product Vision & Problem Statement
9
- - **What this is**: A description of the project and the core problem it solves.
10
- - **Target Audience**: Who will use this system and why.
11
- - **Core Value Proposition**: Key differentiator and value delivered.
9
+
10
+ - **What this is**: **Nexus-DevFlow** คือระบบ **Agentic Workflow Layer & Pair Programming Operating System** ที่เชื่อมต่อระหว่างนักพัฒนา (Human Developer) และปัญญาประดิษฐ์ (AI Coding Agents เช่น Google Antigravity, Claude Code, OpenAI Codex, Cursor, GitHub Copilot) เพื่อยกระดับการพัฒนาซอฟต์แวร์สู่มาตรฐานระดับวิศวกรรมสากล
11
+ - **Target Audience**:
12
+ - นักพัฒนาเดี่ยว (Solo Developers) ที่ต้องการความเร็วสูงแต่ยังคงมีระเบียบวินัยและหลักฐานการทดสอบที่ชัดเจน
13
+ - ทีมพัฒนาและองค์กร (Engineering Teams & Tech Leads) ที่ต้องการมาตรฐานการส่งมอบโค้ดที่ตรวจสอบได้ (Traceable), ตรวจสอบย้อนหลังได้ (Auditable) และไม่มีปัญหาโค้ดตีกัน (Zero Merge Conflict)
14
+ - **Core Value Proposition**:
15
+ - **The 3-Pillars Model**: จัดระเบียบบริบทเป็น 3 เสาหลักอย่างชัดเจน — *🔮 Future (Inbox `ideas.md`)* ➔ *⚡ Present (Living Context `devflow/context/`)* ➔ *📦 Past (Categorized History `devflow/history/`)*
16
+ - **Dual-Track Delivery Model**: เลือกความเร็วให้เหมาะกับขนาดงาน — *Fast-Track (4 ขั้นตอน)* สำหรับ 85% ของงานประจำวัน และ *Deep-Track (8 ขั้นตอน)* สำหรับ 15% ของงานสถาปัตยกรรม
17
+ - **Hard Quality Gates**: ระบบปฏิเสธการปล่อยงานเมื่อไม่ผ่านเกณฑ์การทดสอบ หรือมีข้อบกพร่องความปลอดภัยค้างอยู่
18
+
19
+ ---
12
20
 
13
21
  ## 2. Architecture & Tech Stack
14
- - **Runtime / Framework**: Primary language, framework, and runtime (e.g. Node.js, Next.js, FastAPI, Go).
15
- - **Storage / Database**: Data persistence layers, caching, and state storage.
16
- - **Key Modules / Services**: High-level module breakdown and directory responsibilities.
17
- - **Integration Points**: External APIs, MCP servers, or third-party services.
18
-
19
- ## 3. Constraints & Non-Goals
20
- - **Non-Goals**: What this project explicitly will NOT do in the current scope.
21
- - **Technical Constraints**: Performance targets, security standards, offline requirements, or backward compatibility rules.
22
- - **Delivery Rules**: Dual-Track workflow discipline (Fast-Track for standard features, Deep-Track for epics).
23
-
24
- ## 4. Key Milestones & Roadmap
25
- - **Milestone 1**: Core Foundation & MVP
26
- - **Milestone 2**: Feature Expansion & Integrations
27
- - **Milestone 3**: Enterprise Hardening & Release Polish
22
+
23
+ - **Runtime & Language**: Node.js (>=18.17.0), TypeScript (Strict ESM-First `"type": "module"`)
24
+ - **Persistence & State**:
25
+ - Markdown-First Architecture พร้อม Type-Safe Schema Validation (Zod)
26
+ - Git-Backed History Archive (`devflow/history/features/`, `devflow/history/fixes/`, `devflow/history/rollbacks/`, `HISTORY.md`)
27
+ - Local State Management & Backup Snapshots (`.nexus/`)
28
+ - **Key Modules & Subsystems**:
29
+ - **Distribution CLI & Package**: `packages/create-nexus-devflow` (Scaffolding, Doctor, Status, Update, Gatekeeper)
30
+ - **Interactive Web Dashboard**: Embedded Local Webview Dashboard (`/dashboard`) พร้อม Dual-Track Visualizer และ Real-time Snapshot
31
+ - **Gatekeeper Engine**: ระบบตรวจสอบคุณภาพโค้ดและ Finding Blockers (`nexus-devflow check-gate`)
32
+ - **Model Context Protocol (MCP) Server**: JSON-RPC Hub สำหรับเชื่อมต่อ AI Agents แบบ Type-Safe
33
+ - **Dynamic Context Slicer**: ระบบจัดสรรและตัดตอนบริบทแบบ Just-In-Time (JIT) เพื่อประหยัด Token
34
+ - **Integration Points & AI Adapters**:
35
+ - Google Antigravity & OpenAI Codex (`.agents/skills/`)
36
+ - Claude Code (`.claude/skills/`)
37
+ - Model Context Protocol (`@modelcontextprotocol/sdk`)
38
+
39
+ ---
40
+
41
+ ## 3. Constraints, Defensive Guardrails & Non-Goals
42
+
43
+ - **5 เสาหลักมาตรการป้องกันความเสี่ยง (Hard Defensive Guardrails)**:
44
+ 1. *Hard Quality Gates & Git Hooks*: บล็อกการ Commit ทันทีหาก Spec ไม่ครบ หรือมี `P0/P1 Finding` ค้างอยู่ในสถานะ `open`
45
+ 2. *Model Context Protocol (MCP)*: บังคับใช้ Typed Function Calling เพื่อป้องกันความเสียหายจากการ Parse ข้อความ Markdown
46
+ 3. *Branch-Scoped Context Isolation*: แยกโฟลเดอร์ State ตาม Git Branch ใน `.nexus/branches/<name>/` ป้องกัน Merge Conflict เมื่อทำงานเป็นทีม
47
+ 4. *Dynamic Context Slicing*: ส่งเฉพาะบริบทที่จำเป็นต่อ Stage นั้นๆ เข้าสู่ AI ลด Token Bloat 60–70%
48
+ 5. *State Drift Reconciler*: ตรวจจับความไม่สอดคล้องระหว่าง Git Diffs กับ Spec Tasks และเสนอทางเลือก Auto-Sync ทันที
49
+ - **Non-Goals**:
50
+ - ไม่ใช่ Proprietary IDE หรือ Closed Cloud SaaS — DevFlow เป็น Transparent Git-Native Layer ที่ฝังตัวในโปรเจกต์ใดก็ได้
51
+ - ไม่ใช่ Auto-GPT ที่ปล่อยให้ AI เขียนโค้ดตามใจโดยไม่มี Human-in-the-Loop Review Gates
52
+ - **Delivery Rules**:
53
+ - เคร่งครัดใน TDD Mandate: โค้ดที่เพิ่มหรือแก้ไขต้องมี Automated Unit Tests เสมอ
54
+ - ห้ามข้ามขั้นตอน Verification: ต้องมีหลักฐานเชิงประจักษ์ (Empirical Proof) ใน `/check` ก่อนอนุมัติ `/complete`
55
+
56
+ ---
57
+
58
+ ## 4. Key Milestones & Evolution Roadmap
59
+
60
+ - **🚀 Milestone 1: Hard Quality Gates & Pre-commit Enforcement**
61
+ - ติดตั้ง `check-gate` เข้าสู่ Git Pre-commit Hooks และ CI Pipeline
62
+ - บล็อกการส่งมอบเมื่อมี Unchecked Tasks หรือ P0/P1 Blockers
63
+ - **⚡ Milestone 2: DevFlow MCP Server Hub & Type-Safe Schemas (`IDEA-004`)**
64
+ - พัฒนา MCP Server ผ่าน JSON-RPC สำหรับ Antigravity, Claude, Codex, Cursor
65
+ - ใช้ Zod Schema ควบคุมการอัปเดต Task, Findings, และ Stage State 100% Type-safe
66
+ - **🌿 Milestone 3: Branch-Scoped Context Isolation & Dynamic Router**
67
+ - รองรับการเก็บ State แยกตาม Git Branch ป้องกัน Merge Conflict ในทีม
68
+ - ระบบ Auto-Cleanup ลบ Branch State หลังจบ `/complete` และย้ายเข้าสู่ History
69
+ - **✂️ Milestone 4: JIT Context Slicing & Token Budgeting Engine**
70
+ - ปรับระบบส่ง Context ให้ AI ตาม Stage แบบไดนามิก ประหยัด Token 70%
71
+ - ควบคุมขนาด `project-overview.md` ไม่ให้เกินงบประมาณ Token
72
+ - **🔄 Milestone 5: Git Diff Reconciler & Self-Healing State**
73
+ - ตรวจจับความคลาดเคลื่อนระหว่างการแก้โค้ดของมนุษย์กับ Living Spec
74
+ - ระบบ Smart Reconciliation แจ้งเตือนและซิงค์สเปกอัตโนมัติ
75
+ - **🖥️ Milestone 6: IDE Native Extension & Visual Kanban Studio**
76
+ - ส่วนขยายบน VS Code / Antigravity Webview สำหรับควบคุม DevFlow ครบวงจรใน IDE
77
+ - **🤖 Milestone 7: Multi-Agent Swarm Orchestration & Semantic Code RAG**
78
+ - ระบบประสานงาน Subagents หลายตัว (Coder, QA, Auditor) ทำงานขนานกัน
79
+ - Local Dependency Graph & Semantic Code Search เพื่อดึงบริบทที่แม่นยำสูงสุด
@@ -0,0 +1,504 @@
1
+ <!DOCTYPE html>
2
+ <html lang="th" data-theme="auto">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Nexus-DevFlow Studio: nexus-devflow</title>
7
+ <style>
8
+ :root {
9
+ --bg: var(--vscode-editor-background, #090d16);
10
+ --bg-panel: var(--vscode-sideBar-background, rgba(17, 24, 39, 0.75));
11
+ --bg-card: rgba(30, 41, 59, 0.6);
12
+ --border: var(--vscode-panel-border, rgba(255, 255, 255, 0.08));
13
+ --border-accent: rgba(56, 189, 248, 0.3);
14
+ --fg: var(--vscode-editor-foreground, #f8fafc);
15
+ --fg-muted: var(--vscode-descriptionForeground, #94a3b8);
16
+ --accent: #38bdf8;
17
+ --accent-gradient: linear-gradient(135deg, #38bdf8 0%, #818cf8 100%);
18
+ --green: #4ade80;
19
+ --yellow: #facc15;
20
+ --red: #f87171;
21
+ --font-mono: var(--vscode-editor-font-family, 'Fira Code', Consolas, monospace);
22
+ --font-sans: var(--vscode-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);
23
+ }
24
+
25
+ * { box-sizing: border-box; margin: 0; padding: 0; }
26
+ body {
27
+ font-family: var(--font-sans);
28
+ background-color: var(--bg);
29
+ color: var(--fg);
30
+ padding: 16px;
31
+ line-height: 1.5;
32
+ font-size: 13px;
33
+ overflow-x: hidden;
34
+ }
35
+
36
+ .studio-container {
37
+ max-width: 1200px;
38
+ margin: 0 auto;
39
+ display: flex;
40
+ flex-direction: column;
41
+ gap: 16px;
42
+ }
43
+
44
+ /* Top Studio Header */
45
+ .studio-header {
46
+ background: var(--bg-panel);
47
+ backdrop-filter: blur(12px);
48
+ border: 1px solid var(--border);
49
+ border-radius: 12px;
50
+ padding: 16px 20px;
51
+ display: flex;
52
+ align-items: center;
53
+ justify-content: space-between;
54
+ flex-wrap: wrap;
55
+ gap: 12px;
56
+ }
57
+ .header-left {
58
+ display: flex;
59
+ align-items: center;
60
+ gap: 12px;
61
+ }
62
+ .project-badge {
63
+ font-weight: 700;
64
+ font-size: 16px;
65
+ background: var(--accent-gradient);
66
+ -webkit-background-clip: text;
67
+ -webkit-text-fill-color: transparent;
68
+ letter-spacing: -0.5px;
69
+ }
70
+ .branch-pill {
71
+ font-family: var(--font-mono);
72
+ font-size: 12px;
73
+ background: rgba(56, 189, 248, 0.12);
74
+ color: var(--accent);
75
+ padding: 3px 10px;
76
+ border-radius: 20px;
77
+ border: 1px solid var(--border-accent);
78
+ }
79
+ .header-right {
80
+ display: flex;
81
+ align-items: center;
82
+ gap: 10px;
83
+ }
84
+ .badge-pass {
85
+ background: rgba(74, 222, 128, 0.15);
86
+ color: var(--green);
87
+ border: 1px solid rgba(74, 222, 128, 0.3);
88
+ padding: 4px 12px;
89
+ border-radius: 20px;
90
+ font-weight: 600;
91
+ }
92
+ .badge-blocked {
93
+ background: rgba(248, 113, 113, 0.15);
94
+ color: var(--red);
95
+ border: 1px solid rgba(248, 113, 113, 0.3);
96
+ padding: 4px 12px;
97
+ border-radius: 20px;
98
+ font-weight: 600;
99
+ }
100
+
101
+ /* Quick Action Dispatcher */
102
+ .action-bar {
103
+ background: var(--bg-panel);
104
+ border: 1px solid var(--border);
105
+ border-radius: 10px;
106
+ padding: 12px 16px;
107
+ display: flex;
108
+ align-items: center;
109
+ gap: 8px;
110
+ overflow-x: auto;
111
+ }
112
+ .action-label {
113
+ font-weight: 600;
114
+ color: var(--fg-muted);
115
+ font-size: 11px;
116
+ text-transform: uppercase;
117
+ margin-right: 4px;
118
+ white-space: nowrap;
119
+ }
120
+ .btn-action {
121
+ background: var(--bg-card);
122
+ border: 1px solid var(--border);
123
+ color: var(--fg);
124
+ padding: 5px 12px;
125
+ border-radius: 6px;
126
+ cursor: pointer;
127
+ font-family: var(--font-mono);
128
+ font-size: 12px;
129
+ transition: all 0.2s ease;
130
+ white-space: nowrap;
131
+ }
132
+ .btn-action:hover {
133
+ background: rgba(56, 189, 248, 0.15);
134
+ border-color: var(--accent);
135
+ color: var(--accent);
136
+ }
137
+ .btn-action.btn-primary {
138
+ background: var(--accent-gradient);
139
+ color: #040812;
140
+ font-weight: 700;
141
+ border: none;
142
+ }
143
+
144
+ /* 3-Pillars Kanban Grid */
145
+ .kanban-grid {
146
+ display: grid;
147
+ grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
148
+ gap: 16px;
149
+ }
150
+ .kanban-col {
151
+ background: var(--bg-panel);
152
+ border: 1px solid var(--border);
153
+ border-radius: 12px;
154
+ padding: 16px;
155
+ display: flex;
156
+ flex-direction: column;
157
+ gap: 12px;
158
+ }
159
+ .col-header {
160
+ display: flex;
161
+ align-items: center;
162
+ justify-content: space-between;
163
+ border-bottom: 1px solid var(--border);
164
+ padding-bottom: 10px;
165
+ }
166
+ .col-title {
167
+ font-size: 13px;
168
+ font-weight: 700;
169
+ display: flex;
170
+ align-items: center;
171
+ gap: 6px;
172
+ }
173
+ .col-count {
174
+ font-size: 11px;
175
+ background: var(--bg-card);
176
+ padding: 2px 8px;
177
+ border-radius: 10px;
178
+ color: var(--fg-muted);
179
+ }
180
+
181
+ .col-content {
182
+ display: flex;
183
+ flex-direction: column;
184
+ gap: 10px;
185
+ max-height: 480px;
186
+ overflow-y: auto;
187
+ }
188
+
189
+ /* Card Items */
190
+ .card-item {
191
+ background: var(--bg-card);
192
+ border: 1px solid var(--border);
193
+ border-radius: 8px;
194
+ padding: 12px;
195
+ display: flex;
196
+ flex-direction: column;
197
+ gap: 6px;
198
+ transition: transform 0.15s ease, border-color 0.15s ease;
199
+ }
200
+ .card-item:hover {
201
+ border-color: var(--border-accent);
202
+ transform: translateY(-1px);
203
+ }
204
+ .card-item.active-item {
205
+ border-color: var(--accent);
206
+ box-shadow: 0 0 12px rgba(56, 189, 248, 0.15);
207
+ }
208
+
209
+ .item-header {
210
+ display: flex;
211
+ align-items: flex-start;
212
+ gap: 8px;
213
+ }
214
+ .badge-id {
215
+ font-family: var(--font-mono);
216
+ font-size: 10px;
217
+ font-weight: 700;
218
+ background: rgba(56, 189, 248, 0.2);
219
+ color: var(--accent);
220
+ padding: 2px 6px;
221
+ border-radius: 4px;
222
+ white-space: nowrap;
223
+ }
224
+ .badge-history {
225
+ background: rgba(129, 140, 248, 0.2);
226
+ color: #818cf8;
227
+ }
228
+ .item-title {
229
+ font-weight: 600;
230
+ font-size: 12px;
231
+ flex: 1;
232
+ }
233
+
234
+ /* Progress bar */
235
+ .progress-bar-container {
236
+ background: rgba(0, 0, 0, 0.3);
237
+ height: 6px;
238
+ border-radius: 3px;
239
+ overflow: hidden;
240
+ margin-top: 4px;
241
+ }
242
+ .progress-bar-fill {
243
+ background: var(--accent-gradient);
244
+ height: 100%;
245
+ transition: width 0.3s ease;
246
+ }
247
+
248
+ .item-tags, .item-meta {
249
+ display: flex;
250
+ align-items: center;
251
+ gap: 6px;
252
+ font-size: 11px;
253
+ color: var(--fg-muted);
254
+ }
255
+ .tag {
256
+ font-size: 10px;
257
+ padding: 1px 6px;
258
+ border-radius: 4px;
259
+ background: rgba(255, 255, 255, 0.05);
260
+ }
261
+ .tag-feasibility { color: var(--green); }
262
+ .tag-value { color: var(--accent); }
263
+ .tag-cat { color: var(--yellow); }
264
+
265
+ .empty-state {
266
+ text-align: center;
267
+ padding: 24px;
268
+ color: var(--fg-muted);
269
+ font-size: 12px;
270
+ }
271
+
272
+ /* Pulse Notification */
273
+ .pulse-panel {
274
+ background: var(--bg-panel);
275
+ border: 1px solid var(--border);
276
+ border-radius: 10px;
277
+ padding: 12px 16px;
278
+ display: flex;
279
+ align-items: center;
280
+ justify-content: space-between;
281
+ font-size: 12px;
282
+ }
283
+ </style>
284
+ </head>
285
+ <body>
286
+ <div class="studio-container">
287
+
288
+ <!-- Top Header -->
289
+ <header class="studio-header">
290
+ <div class="header-left">
291
+ <span class="project-badge">⚡ nexus-devflow</span>
292
+ <span class="branch-pill">🌿 main</span>
293
+ <span class="badge-track">Track: deep</span>
294
+ </div>
295
+ <div class="header-right">
296
+ <span class="badge-pass">✔ Gate Passed</span>
297
+ <button class="btn-action btn-primary" onclick="dispatchCommand('/feature')">
298
+ Next: /feature
299
+ </button>
300
+ </div>
301
+ </header>
302
+
303
+
304
+ <!-- Quick Action Bar -->
305
+ <div class="action-bar">
306
+ <span class="action-label">Quick Actions:</span>
307
+ <button class="btn-action" onclick="dispatchCommand('/feature')">/feature</button>
308
+ <button class="btn-action" onclick="dispatchCommand('/implement')">/implement</button>
309
+ <button class="btn-action" onclick="dispatchCommand('/check')">/check</button>
310
+ <button class="btn-action" onclick="dispatchCommand('/complete')">/complete</button>
311
+ <button class="btn-action" onclick="dispatchCommand('nexus-devflow slice --stage implement')">slice</button>
312
+ <button class="btn-action" onclick="dispatchCommand('nexus-devflow drift')">drift</button>
313
+ <button class="btn-action" onclick="dispatchCommand('nexus-devflow reconcile --fix')">reconcile</button>
314
+ <button class="btn-action" onclick="dispatchCommand('nexus-devflow doctor')">doctor</button>
315
+ </div>
316
+
317
+ <!-- 3-Pillars Kanban View -->
318
+ <main class="kanban-grid">
319
+
320
+ <!-- 🔮 1. Future (Ideas Inbox) -->
321
+ <section class="kanban-col">
322
+ <div class="col-header">
323
+ <span class="col-title">🔮 Future (Ideas Inbox)</span>
324
+ <span class="col-count">4</span>
325
+ </div>
326
+ <div class="col-content">
327
+
328
+ <div class="card-item idea-item">
329
+ <div class="item-header">
330
+ <span class="badge-id">IDEA-003</span>
331
+ <span class="item-title">Interactive Terminal UI (TUI) Dashboard (Ink / Clack)</span>
332
+ </div>
333
+ <div class="item-tags">
334
+ <span class="tag tag-feasibility">**ปานกลาง (Medium Feasibility)** — ใช้ไลบรารี CLI UI เช่น `@clack/prompts` หรือ `ink` (React for CLI) ในการเรนเดอร์ Interface แบบ Interactive</span>
335
+ <span class="tag tag-value">**สูง (Premium DX)** — สร้างความประทับใจระดับ Wow ให้กับผู้ใช้ สามารถใช้คีย์บอร์ดเลื่อนดู Task, ติ๊ก Checklist และกดคัดลอกคำสั่ง AI เข้า Clipboard ได้ทันที</span>
336
+ </div>
337
+ </div>
338
+
339
+ <div class="card-item idea-item">
340
+ <div class="item-header">
341
+ <span class="badge-id">IDEA-004</span>
342
+ <span class="item-title">DevFlow MCP Server (Model Context Protocol) &amp; Multi-Agent API</span>
343
+ </div>
344
+ <div class="item-tags">
345
+ <span class="tag tag-feasibility">**ปานกลาง (Medium Feasibility)** — ใช้ `@modelcontextprotocol/sdk` ของ Anthropic ในการเปิด JSON-RPC Server ผ่าน Stdio</span>
346
+ <span class="tag tag-value">**สูงสุด (Next-Gen AI Integration)** — AI ไม่ต้องใช้ Regex คอยสแกนหรือแก้ Markdown เอง แต่สามารถเรียก Tools เช่น `devflow_add_finding`, `devflow_update_task`, `devflow_get_status` ได้แบบ 100% Type-safe</span>
347
+ </div>
348
+ </div>
349
+
350
+ <div class="card-item idea-item">
351
+ <div class="item-header">
352
+ <span class="badge-id">IDEA-015</span>
353
+ <span class="item-title">Configurable Artifact Language (`artifactLanguage: th | en`)</span>
354
+ </div>
355
+ <div class="item-tags">
356
+ <span class="tag tag-feasibility">**ง่าย (High Feasibility)** — อ่านค่า `artifactLanguage` จาก `nexus-devflow.json` แล้วปรับ Directive ใน Skills</span>
357
+ <span class="tag tag-value">**สูง** — รองรับการใช้งานของทีมงานระดับสากลหรือทีมที่ต้องการเอกสารเป็นภาษาอังกฤษ</span>
358
+ </div>
359
+ </div>
360
+
361
+ <div class="card-item idea-item">
362
+ <div class="item-header">
363
+ <span class="badge-id">IDEA-023</span>
364
+ <span class="item-title">Lightweight Zero-Dependency Pure Markdown Mode</span>
365
+ </div>
366
+ <div class="item-tags">
367
+ <span class="tag tag-feasibility">**ง่าย (High Feasibility)** — สร้างไฟล์เทมเพลตบริสุทธิ์แบบไม่ต้องใช้ CLI</span>
368
+ <span class="tag tag-value">**ปานกลาง** — รองรับสภาพแวดล้อมการทำงานแบบปิโตรเลียม/งานเครื่องมือพื้นฐานที่ไม่มี Node.js</span>
369
+ </div>
370
+ </div>
371
+
372
+ </div>
373
+ </section>
374
+
375
+
376
+ <!-- ⚡ 2. Present (Active Living Context) -->
377
+ <section class="kanban-col">
378
+ <div class="col-header">
379
+ <span class="col-title">⚡ Present (Active Living Spec)</span>
380
+ <span class="col-count">0/0 Tasks</span>
381
+ </div>
382
+ <div class="col-content">
383
+
384
+ <div class="empty-state">
385
+ Idle workspace.<br>Run <code>/feature</code> or <code>/fix</code> to start a run.
386
+ </div>
387
+
388
+ </div>
389
+ </section>
390
+
391
+ <!-- 📦 3. Past (Release History Archive) -->
392
+ <section class="kanban-col">
393
+ <div class="col-header">
394
+ <span class="col-title">📦 Past (History Archives)</span>
395
+ <span class="col-count">43 Releases</span>
396
+ </div>
397
+ <div class="col-content">
398
+
399
+ <div class="card-item history-item">
400
+ <div class="item-header">
401
+ <span class="badge-id badge-history">047</span>
402
+ <span class="item-title">IDE Native Extension &amp; Interactive Webview Studio (`studio` &amp; `devflow_get_studio_html`)</span>
403
+ </div>
404
+ <div class="item-meta">
405
+ <span class="tag tag-cat">feature</span>
406
+ </div>
407
+ </div>
408
+
409
+ <div class="card-item history-item">
410
+ <div class="item-header">
411
+ <span class="badge-id badge-history">046</span>
412
+ <span class="item-title">Git Diff Drift Reconciler &amp; Self-Healing State Engine (`drift` &amp; `reconcile`)</span>
413
+ </div>
414
+ <div class="item-meta">
415
+ <span class="tag tag-cat">feature</span>
416
+ </div>
417
+ </div>
418
+
419
+ <div class="card-item history-item">
420
+ <div class="item-header">
421
+ <span class="badge-id badge-history">045</span>
422
+ <span class="item-title">Just-In-Time (JIT) Dynamic Context Slicing Engine (`slice` &amp; `devflow_get_sliced_context`)</span>
423
+ </div>
424
+ <div class="item-meta">
425
+ <span class="tag tag-cat">feature</span>
426
+ </div>
427
+ </div>
428
+
429
+ <div class="card-item history-item">
430
+ <div class="item-header">
431
+ <span class="badge-id badge-history">044</span>
432
+ <span class="item-title">Branch-Scoped Context Isolation &amp; Dynamic Router (`devflow/context/&lt;branch&gt;/`)</span>
433
+ </div>
434
+ <div class="item-meta">
435
+ <span class="tag tag-cat">feature</span>
436
+ </div>
437
+ </div>
438
+
439
+ <div class="card-item history-item">
440
+ <div class="item-header">
441
+ <span class="badge-id badge-history">043</span>
442
+ <span class="item-title">DevFlow Model Context Protocol (MCP) Server Hub &amp; Type-Safe Schema Engine (`mcp`)</span>
443
+ </div>
444
+ <div class="item-meta">
445
+ <span class="tag tag-cat">feature</span>
446
+ </div>
447
+ </div>
448
+
449
+ <div class="card-item history-item">
450
+ <div class="item-header">
451
+ <span class="badge-id badge-history">042</span>
452
+ <span class="item-title">Automated Quality Gatekeeper &amp; Pre-commit Hook Integration (`check-gate` &amp; `hook`)</span>
453
+ </div>
454
+ <div class="item-meta">
455
+ <span class="tag tag-cat">feature</span>
456
+ </div>
457
+ </div>
458
+
459
+ <div class="card-item history-item">
460
+ <div class="item-header">
461
+ <span class="badge-id badge-history">041</span>
462
+ <span class="item-title">Unified Dual-Track Root Switch, Context Auto-Sync Engine, และ Dashboard Tab Auto-Focus</span>
463
+ </div>
464
+ <div class="item-meta">
465
+ <span class="tag tag-cat">feature</span>
466
+ </div>
467
+ </div>
468
+
469
+ <div class="card-item history-item">
470
+ <div class="item-header">
471
+ <span class="badge-id badge-history">040</span>
472
+ <span class="item-title">Dashboard Blueprint Reference Mockup Parity, Dual-Track Visualizer, และ Snapshot API Backend</span>
473
+ </div>
474
+ <div class="item-meta">
475
+ <span class="tag tag-cat">feature</span>
476
+ </div>
477
+ </div>
478
+
479
+ </div>
480
+ </section>
481
+
482
+ </main>
483
+
484
+ <!-- Bottom Pulse -->
485
+ <footer class="pulse-panel">
486
+ <div>Findings Blockers: <strong>0</strong> | Total Findings: <strong>0</strong></div>
487
+ <div>Git Drift: <strong>✔ In Sync</strong></div>
488
+ </footer>
489
+
490
+ </div>
491
+
492
+ <script>
493
+ function dispatchCommand(cmd) {
494
+ if (window.acquireVsCodeApi) {
495
+ const vscode = window.acquireVsCodeApi();
496
+ vscode.postMessage({ command: 'exec', text: cmd });
497
+ } else if (navigator.clipboard) {
498
+ navigator.clipboard.writeText(cmd);
499
+ alert('Copied command to clipboard: ' + cmd);
500
+ }
501
+ }
502
+ </script>
503
+ </body>
504
+ </html>