kanban-lite 1.0.4 → 1.0.6
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/.kanban/backlog/1-test1.md +22 -0
- package/.kanban.json +42 -0
- package/README.md +138 -103
- package/dist/cli.js +470 -66
- package/dist/extension.js +361 -58
- package/dist/mcp-server.js +268 -3
- package/dist/standalone-webview/{icons-Dx9MGYqN.js → icons-BUWXsIxt.js} +55 -35
- package/dist/standalone-webview/icons-BUWXsIxt.js.map +1 -0
- package/dist/standalone-webview/index.js +39 -39
- package/dist/standalone-webview/index.js.map +1 -1
- package/dist/{webview/react-vendor-DkYdDBET.js → standalone-webview/react-vendor-DD6VaYq_.js} +2 -2
- package/dist/standalone-webview/react-vendor-DD6VaYq_.js.map +1 -0
- package/dist/standalone-webview/style.css +1 -1
- package/dist/standalone.js +372 -70
- package/dist/webview/{icons-Dx9MGYqN.js → icons-BUWXsIxt.js} +55 -35
- package/dist/webview/icons-BUWXsIxt.js.map +1 -0
- package/dist/webview/index.js +48 -48
- package/dist/webview/index.js.map +1 -1
- package/dist/{standalone-webview/react-vendor-DkYdDBET.js → webview/react-vendor-DD6VaYq_.js} +2 -2
- package/dist/webview/react-vendor-DD6VaYq_.js.map +1 -0
- package/dist/webview/style.css +1 -1
- package/package.json +5 -4
- package/src/cli/index.ts +126 -0
- package/src/extension/KanbanPanel.ts +79 -1
- package/src/extension/SidebarViewProvider.ts +22 -20
- package/src/extension/index.ts +1 -0
- package/src/mcp-server/index.ts +171 -0
- package/src/sdk/KanbanSDK.ts +61 -1
- package/src/sdk/__tests__/KanbanSDK.test.ts +75 -0
- package/src/sdk/__tests__/parser.test.ts +169 -1
- package/src/sdk/parser.ts +57 -3
- package/src/shared/types.ts +12 -1
- package/src/standalone/server.ts +170 -5
- package/src/standalone/webhooks.ts +3 -0
- package/src/webview/App.tsx +23 -2
- package/src/webview/assets/standalone-theme.css +125 -16
- package/src/webview/components/CommentsSection.tsx +209 -0
- package/src/webview/components/FeatureEditor.tsx +10 -2
- package/src/webview/components/KanbanColumn.tsx +2 -2
- package/src/webview/components/MarkdownEditor.tsx +50 -5
- package/src/webview/components/Toolbar.tsx +12 -2
- package/src/webview/standalone-shim.ts +5 -0
- package/dist/standalone-webview/icons-Dx9MGYqN.js.map +0 -1
- package/dist/standalone-webview/react-vendor-DkYdDBET.js.map +0 -1
- package/dist/webview/icons-Dx9MGYqN.js.map +0 -1
- package/dist/webview/react-vendor-DkYdDBET.js.map +0 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: "1"
|
|
3
|
+
status: "backlog"
|
|
4
|
+
priority: "medium"
|
|
5
|
+
assignee: null
|
|
6
|
+
dueDate: null
|
|
7
|
+
created: "2026-02-21T22:15:35.146Z"
|
|
8
|
+
modified: "2026-02-21T22:27:48.359Z"
|
|
9
|
+
completedAt: null
|
|
10
|
+
labels: []
|
|
11
|
+
attachments: []
|
|
12
|
+
order: "a0"
|
|
13
|
+
---
|
|
14
|
+
# test1
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
comment: true
|
|
18
|
+
id: "c1"
|
|
19
|
+
author: "test"
|
|
20
|
+
created: "2026-02-21T22:27:48.359Z"
|
|
21
|
+
---
|
|
22
|
+
ljdslfjdl
|
package/.kanban.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"featuresDirectory": ".kanban",
|
|
3
|
+
"defaultPriority": "medium",
|
|
4
|
+
"defaultStatus": "backlog",
|
|
5
|
+
"columns": [
|
|
6
|
+
{
|
|
7
|
+
"id": "backlog",
|
|
8
|
+
"name": "Backlog",
|
|
9
|
+
"color": "#6b7280"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"id": "todo",
|
|
13
|
+
"name": "To Do",
|
|
14
|
+
"color": "#3b82f6"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "in-progress",
|
|
18
|
+
"name": "In Progress",
|
|
19
|
+
"color": "#f59e0b"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "review",
|
|
23
|
+
"name": "Review",
|
|
24
|
+
"color": "#8b5cf6"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "done",
|
|
28
|
+
"name": "Done",
|
|
29
|
+
"color": "#22c55e"
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"aiAgent": "claude",
|
|
33
|
+
"nextCardId": 2,
|
|
34
|
+
"showPriorityBadges": true,
|
|
35
|
+
"showAssignee": true,
|
|
36
|
+
"showDueDate": true,
|
|
37
|
+
"showLabels": true,
|
|
38
|
+
"showBuildWithAI": true,
|
|
39
|
+
"showFileName": false,
|
|
40
|
+
"compactMode": false,
|
|
41
|
+
"markdownEditorMode": false
|
|
42
|
+
}
|
package/README.md
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
# Kanban Lite
|
|
2
2
|
|
|
3
|
-
A
|
|
3
|
+
A lightweight kanban board stored as plain markdown files. Manage your tasks via a **web UI**, **CLI**, **REST API**, or **MCP server** for AI agents. Everything is human-readable, version-controllable, and lives right in your project.
|
|
4
4
|
|
|
5
|
-
[](https://open-vsx.org/extension/borgius/kanban-lite)
|
|
5
|
+
[](https://www.npmjs.com/package/kanban-lite)
|
|
7
6
|

|
|
8
7
|
|
|
9
8
|

|
|
@@ -18,32 +17,47 @@ npx skills add https://github.com/borgius/kanban-lite
|
|
|
18
17
|
|
|
19
18
|
See [SKILL.md](SKILL.md) for the full skill reference covering MCP tools, CLI, and REST API.
|
|
20
19
|
|
|
20
|
+
## Quick Start
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Install globally
|
|
24
|
+
npm install -g kanban-lite
|
|
25
|
+
|
|
26
|
+
# Initialize a board in your project
|
|
27
|
+
kl init
|
|
28
|
+
|
|
29
|
+
# Start the web UI
|
|
30
|
+
kl serve
|
|
31
|
+
|
|
32
|
+
# Or create your first card from the terminal
|
|
33
|
+
kl add --title "My first task" --priority high
|
|
34
|
+
```
|
|
35
|
+
|
|
21
36
|
## Features
|
|
22
37
|
|
|
23
|
-
###
|
|
38
|
+
### Web UI
|
|
24
39
|
|
|
25
|
-
- **5-column workflow**: Backlog, To Do, In Progress, Review, Done
|
|
26
|
-
- **Sidebar view**: Access the board from the activity bar without opening a panel
|
|
40
|
+
- **5-column workflow**: Backlog, To Do, In Progress, Review, Done (fully customizable)
|
|
27
41
|
- **Drag-and-drop**: Move cards between columns and reorder within columns
|
|
28
42
|
- **Split-view editor**: Board on left, inline markdown editor on right
|
|
29
43
|
- **Layout toggle**: Switch between horizontal and vertical board layouts
|
|
44
|
+
- **Real-time updates**: WebSocket-powered live sync across clients
|
|
45
|
+
- **Light & dark mode** support
|
|
30
46
|
- **Keyboard shortcuts**:
|
|
31
47
|
- `N` - Create new feature
|
|
32
48
|
- `Esc` - Close dialogs
|
|
33
49
|
- `Cmd/Ctrl + Enter` - Submit create dialog
|
|
34
|
-
- `Enter` in title - Move to description field
|
|
35
|
-
- `Shift + Enter` in title - Add new line
|
|
36
|
-
|
|
37
50
|
|
|
38
51
|
### Feature Cards
|
|
39
52
|
|
|
40
53
|

|
|
41
54
|
|
|
42
|
-
|
|
43
55
|
- **Priority levels**: Critical, High, Medium, Low (color-coded badges)
|
|
44
56
|
- **Assignees**: Assign team members to features
|
|
45
57
|
- **Due dates**: Smart formatting (Overdue, Today, Tomorrow, "5d", etc.)
|
|
46
|
-
- **Labels**: Tag features with multiple labels
|
|
58
|
+
- **Labels**: Tag features with multiple labels
|
|
59
|
+
- **Attachments**: Attach files to cards
|
|
60
|
+
- **Comments**: Add discussion threads to cards (stored in the same markdown file)
|
|
47
61
|
- **Auto-generated IDs**: Based on title and timestamp (e.g., `implement-dark-mode-2026-01-29`)
|
|
48
62
|
- **Timestamps**: Created and modified dates tracked automatically
|
|
49
63
|
|
|
@@ -53,90 +67,21 @@ See [SKILL.md](SKILL.md) for the full skill reference covering MCP tools, CLI, a
|
|
|
53
67
|
- **Assignee filter**: Filter by team member or show unassigned items
|
|
54
68
|
- **Label filter**: Filter by specific labels
|
|
55
69
|
- **Due date filters**: Overdue, due today, due this week, or no due date
|
|
56
|
-
- **Clear filters button**: Reset all filters at once
|
|
57
70
|
|
|
58
71
|
### File Organization
|
|
59
|
-
- **
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
- Rich text editing with Tiptap markdown editor
|
|
63
|
-
- Inline frontmatter editing (dropdowns for status/priority, inputs for assignee/due date/labels)
|
|
64
|
-
- Auto-save functionality
|
|
65
|
-
- Live settings updates without reopening the board
|
|
66
|
-
- Auto-refresh when files change externally
|
|
67
|
-
- Theme integration with VSCode/Cursor (light & dark mode)
|
|
68
|
-
|
|
69
|
-
### AI Agent Integration
|
|
70
|
-
- **Claude Code**: Default, Plan, Auto-edit, and Full Auto modes
|
|
71
|
-
- **Codex**: Suggest, Auto-edit, and Full Auto modes
|
|
72
|
-
- **OpenCode**: Agent integration support
|
|
73
|
-
- AI receives feature context (title, priority, labels, description) for informed assistance
|
|
72
|
+
- **Plain markdown**: Cards are standard markdown files with YAML frontmatter
|
|
73
|
+
- **Status subfolders**: Automatically organized into subfolders by status
|
|
74
|
+
- **Git-friendly**: Everything is version-controllable
|
|
74
75
|
|
|
75
76
|
## Installation
|
|
76
77
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
### Open VSX (VSCodium, Cursor, etc.)
|
|
81
|
-
Install from [Open VSX](https://open-vsx.org/extension/borgius/kanban-lite) or search for "Kanban Lite" in the Extensions view.
|
|
82
|
-
|
|
83
|
-
### From VSIX (Manual)
|
|
84
|
-
1. Download the `.vsix` file from the releases
|
|
85
|
-
2. In VSCode: Extensions > `...` > Install from VSIX
|
|
86
|
-
3. Select the downloaded file
|
|
87
|
-
|
|
88
|
-
## Usage
|
|
89
|
-
|
|
90
|
-
1. Open the command palette (`Cmd+Shift+P` / `Ctrl+Shift+P`)
|
|
91
|
-
2. Run **"Open Kanban Board"**
|
|
92
|
-
3. Start creating and managing features
|
|
93
|
-
|
|
94
|
-
Features are stored as markdown files in `.kanban/` within your workspace, organized into status subfolders:
|
|
95
|
-
|
|
96
|
-
```markdown
|
|
97
|
-
---
|
|
98
|
-
id: "implement-dark-mode-toggle-2026-01-25"
|
|
99
|
-
status: "todo"
|
|
100
|
-
priority: "high"
|
|
101
|
-
assignee: "john"
|
|
102
|
-
dueDate: "2026-01-25"
|
|
103
|
-
created: "2026-01-25T10:30:00.000Z"
|
|
104
|
-
modified: "2026-01-25T14:20:00.000Z"
|
|
105
|
-
labels: ["feature", "ui"]
|
|
106
|
-
order: 0
|
|
107
|
-
---
|
|
108
|
-
|
|
109
|
-
# Implement dark mode toggle
|
|
110
|
-
|
|
111
|
-
Add a toggle in settings to switch between light and dark themes...
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
## Configuration
|
|
115
|
-
|
|
116
|
-
Board configuration is stored in `.kanban.json` at your workspace root. This file is shared across all interfaces (VSCode extension, standalone server, CLI).
|
|
117
|
-
|
|
118
|
-
```json
|
|
119
|
-
{
|
|
120
|
-
"columns": [
|
|
121
|
-
{ "id": "backlog", "name": "Backlog", "color": "#6b7280" },
|
|
122
|
-
{ "id": "todo", "name": "To Do", "color": "#3b82f6" },
|
|
123
|
-
{ "id": "in-progress", "name": "In Progress", "color": "#f59e0b" },
|
|
124
|
-
{ "id": "review", "name": "Review", "color": "#8b5cf6" },
|
|
125
|
-
{ "id": "done", "name": "Done", "color": "#22c55e" }
|
|
126
|
-
],
|
|
127
|
-
"showPriorityBadges": true,
|
|
128
|
-
"showAssignee": true,
|
|
129
|
-
"showDueDate": true,
|
|
130
|
-
"showLabels": true,
|
|
131
|
-
"compactMode": false
|
|
132
|
-
}
|
|
78
|
+
```bash
|
|
79
|
+
npm install -g kanban-lite
|
|
133
80
|
```
|
|
134
81
|
|
|
135
|
-
Columns are fully customizable — add, remove, rename, or recolor them from the board UI, CLI, or REST API.
|
|
136
|
-
|
|
137
82
|
## CLI
|
|
138
83
|
|
|
139
|
-
Manage your kanban board from the terminal
|
|
84
|
+
Manage your kanban board from the terminal using `kanban-lite` or the shorthand `kl`:
|
|
140
85
|
|
|
141
86
|
```bash
|
|
142
87
|
# List all cards
|
|
@@ -165,6 +110,13 @@ kl attach implement-search # List attachments
|
|
|
165
110
|
kl attach add implement-search ./screenshot.png # Attach a file
|
|
166
111
|
kl attach remove implement-search screenshot.png # Remove attachment
|
|
167
112
|
|
|
113
|
+
# Comments
|
|
114
|
+
kl comment implement-search # List comments
|
|
115
|
+
kl comment add implement-search --author alice \
|
|
116
|
+
--body "Looks good, needs tests" # Add a comment
|
|
117
|
+
kl comment edit implement-search c1 --body "Updated" # Edit a comment
|
|
118
|
+
kl comment remove implement-search c1 # Remove a comment
|
|
119
|
+
|
|
168
120
|
# Manage columns
|
|
169
121
|
kl columns # List columns
|
|
170
122
|
kl columns add --id testing --name Testing # Add column
|
|
@@ -185,7 +137,7 @@ kl settings update --compactMode true # Update a setting
|
|
|
185
137
|
# Workspace
|
|
186
138
|
kl pwd # Print workspace root path
|
|
187
139
|
|
|
188
|
-
# Start
|
|
140
|
+
# Start web server
|
|
189
141
|
kl serve # Start on port 3000
|
|
190
142
|
kl serve --port 8080 --no-browser # Custom port, no auto-open
|
|
191
143
|
|
|
@@ -197,7 +149,7 @@ Use `--json` for machine-readable output. Use `--dir <path>` to specify a custom
|
|
|
197
149
|
|
|
198
150
|
## Standalone Server
|
|
199
151
|
|
|
200
|
-
Run the kanban board as a
|
|
152
|
+
Run the kanban board as a web application with a full REST API:
|
|
201
153
|
|
|
202
154
|
```bash
|
|
203
155
|
# Using the CLI
|
|
@@ -211,7 +163,7 @@ kanban-md --port 8080 --dir .kanban --no-browser
|
|
|
211
163
|
```
|
|
212
164
|
|
|
213
165
|
The server provides:
|
|
214
|
-
- **Web UI** at `http://localhost:3000` —
|
|
166
|
+
- **Web UI** at `http://localhost:3000` — a full React-based kanban board
|
|
215
167
|
- **REST API** at `http://localhost:3000/api` — full programmatic access
|
|
216
168
|
- **WebSocket** — real-time updates for connected clients
|
|
217
169
|
|
|
@@ -260,6 +212,15 @@ All responses follow the format `{ "ok": true, "data": ... }` or `{ "ok": false,
|
|
|
260
212
|
|--------|----------|-------------|
|
|
261
213
|
| `GET` | `/api/workspace` | Get workspace root path |
|
|
262
214
|
|
|
215
|
+
#### Comments
|
|
216
|
+
|
|
217
|
+
| Method | Endpoint | Description |
|
|
218
|
+
|--------|----------|-------------|
|
|
219
|
+
| `GET` | `/api/tasks/:id/comments` | List comments on a task |
|
|
220
|
+
| `POST` | `/api/tasks/:id/comments` | Add a comment (`{ author, content }`) |
|
|
221
|
+
| `PUT` | `/api/tasks/:id/comments/:commentId` | Update a comment (`{ content }`) |
|
|
222
|
+
| `DELETE` | `/api/tasks/:id/comments/:commentId` | Delete a comment |
|
|
223
|
+
|
|
263
224
|
#### Attachments
|
|
264
225
|
|
|
265
226
|
| Method | Endpoint | Description |
|
|
@@ -288,6 +249,9 @@ Register webhooks to receive HTTP POST notifications when tasks or columns chang
|
|
|
288
249
|
| `task.updated` | Task properties are changed |
|
|
289
250
|
| `task.moved` | Task is moved to a different column |
|
|
290
251
|
| `task.deleted` | A task is deleted |
|
|
252
|
+
| `comment.created` | A comment is added to a task |
|
|
253
|
+
| `comment.updated` | A comment is edited |
|
|
254
|
+
| `comment.deleted` | A comment is removed |
|
|
291
255
|
| `column.created` | A new column is added |
|
|
292
256
|
| `column.updated` | Column name or color is changed |
|
|
293
257
|
| `column.deleted` | A column is removed |
|
|
@@ -363,6 +327,10 @@ kanban-mcp --dir .kanban
|
|
|
363
327
|
| `list_attachments` | List attachments on a card |
|
|
364
328
|
| `add_attachment` | Attach a file to a card (copies to card directory) |
|
|
365
329
|
| `remove_attachment` | Remove an attachment reference from a card |
|
|
330
|
+
| `list_comments` | List comments on a card |
|
|
331
|
+
| `add_comment` | Add a comment to a card |
|
|
332
|
+
| `update_comment` | Edit a comment's content |
|
|
333
|
+
| `delete_comment` | Remove a comment from a card |
|
|
366
334
|
| `list_columns` | List all board columns |
|
|
367
335
|
| `add_column` | Add a new column to the board |
|
|
368
336
|
| `update_column` | Update a column's name or color |
|
|
@@ -403,6 +371,12 @@ await sdk.updateCard('card-id', { assignee: 'alice' })
|
|
|
403
371
|
// Delete
|
|
404
372
|
await sdk.deleteCard('card-id')
|
|
405
373
|
|
|
374
|
+
// Comments
|
|
375
|
+
await sdk.addComment('card-id', 'alice', 'Looks good!')
|
|
376
|
+
await sdk.updateComment('card-id', 'c1', 'Updated comment')
|
|
377
|
+
await sdk.deleteComment('card-id', 'c1')
|
|
378
|
+
const comments = await sdk.listComments('card-id')
|
|
379
|
+
|
|
406
380
|
// Attachments
|
|
407
381
|
await sdk.addAttachment('card-id', '/path/to/file.png')
|
|
408
382
|
await sdk.removeAttachment('card-id', 'file.png')
|
|
@@ -415,6 +389,75 @@ await sdk.updateColumn('testing', { name: 'QA' })
|
|
|
415
389
|
await sdk.removeColumn('testing')
|
|
416
390
|
```
|
|
417
391
|
|
|
392
|
+
## Data Storage
|
|
393
|
+
|
|
394
|
+
Cards are stored as markdown files with YAML frontmatter in `.kanban/` within your project:
|
|
395
|
+
|
|
396
|
+
```markdown
|
|
397
|
+
---
|
|
398
|
+
id: "implement-dark-mode-toggle-2026-01-25"
|
|
399
|
+
status: "todo"
|
|
400
|
+
priority: "high"
|
|
401
|
+
assignee: "john"
|
|
402
|
+
dueDate: "2026-01-25"
|
|
403
|
+
created: "2026-01-25T10:30:00.000Z"
|
|
404
|
+
modified: "2026-01-25T14:20:00.000Z"
|
|
405
|
+
labels: ["feature", "ui"]
|
|
406
|
+
order: 0
|
|
407
|
+
---
|
|
408
|
+
|
|
409
|
+
# Implement dark mode toggle
|
|
410
|
+
|
|
411
|
+
Add a toggle in settings to switch between light and dark themes...
|
|
412
|
+
|
|
413
|
+
---
|
|
414
|
+
comment: true
|
|
415
|
+
id: "c1"
|
|
416
|
+
author: "alice"
|
|
417
|
+
created: "2026-01-25T15:00:00.000Z"
|
|
418
|
+
---
|
|
419
|
+
Should we support system preference detection too?
|
|
420
|
+
|
|
421
|
+
---
|
|
422
|
+
comment: true
|
|
423
|
+
id: "c2"
|
|
424
|
+
author: "john"
|
|
425
|
+
created: "2026-01-25T15:30:00.000Z"
|
|
426
|
+
---
|
|
427
|
+
Yes, good idea. I'll add that as a follow-up.
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
Comments are stored as additional YAML documents in the same file, keeping everything in one place and version-controllable.
|
|
431
|
+
|
|
432
|
+
## Configuration
|
|
433
|
+
|
|
434
|
+
Board configuration is stored in `.kanban.json` at your project root:
|
|
435
|
+
|
|
436
|
+
```json
|
|
437
|
+
{
|
|
438
|
+
"columns": [
|
|
439
|
+
{ "id": "backlog", "name": "Backlog", "color": "#6b7280" },
|
|
440
|
+
{ "id": "todo", "name": "To Do", "color": "#3b82f6" },
|
|
441
|
+
{ "id": "in-progress", "name": "In Progress", "color": "#f59e0b" },
|
|
442
|
+
{ "id": "review", "name": "Review", "color": "#8b5cf6" },
|
|
443
|
+
{ "id": "done", "name": "Done", "color": "#22c55e" }
|
|
444
|
+
],
|
|
445
|
+
"showPriorityBadges": true,
|
|
446
|
+
"showAssignee": true,
|
|
447
|
+
"showDueDate": true,
|
|
448
|
+
"showLabels": true,
|
|
449
|
+
"compactMode": false
|
|
450
|
+
}
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
Columns are fully customizable — add, remove, rename, or recolor them from the web UI, CLI, or REST API.
|
|
454
|
+
|
|
455
|
+
## AI Agent Integration
|
|
456
|
+
- **Claude Code**: Default, Plan, Auto-edit, and Full Auto modes
|
|
457
|
+
- **Codex**: Suggest, Auto-edit, and Full Auto modes
|
|
458
|
+
- **OpenCode**: Agent integration support
|
|
459
|
+
- AI receives feature context (title, priority, labels, description) for informed assistance
|
|
460
|
+
|
|
418
461
|
## Development
|
|
419
462
|
|
|
420
463
|
### Prerequisites
|
|
@@ -430,13 +473,13 @@ pnpm install
|
|
|
430
473
|
# Start development (watch mode)
|
|
431
474
|
pnpm dev
|
|
432
475
|
|
|
433
|
-
# Build for production
|
|
476
|
+
# Build for production
|
|
434
477
|
pnpm build
|
|
435
478
|
|
|
436
479
|
# Build individually
|
|
437
|
-
pnpm build:extension
|
|
438
480
|
pnpm build:cli
|
|
439
481
|
pnpm build:mcp
|
|
482
|
+
pnpm build:standalone-server
|
|
440
483
|
|
|
441
484
|
# Run tests
|
|
442
485
|
pnpm test
|
|
@@ -448,28 +491,20 @@ pnpm typecheck
|
|
|
448
491
|
pnpm lint
|
|
449
492
|
```
|
|
450
493
|
|
|
451
|
-
### Debugging
|
|
452
|
-
|
|
453
|
-
1. Press `F5` in VSCode to launch the Extension Development Host
|
|
454
|
-
2. Open the command palette and run "Open Kanban Board"
|
|
455
|
-
3. Make changes and reload the window (`Cmd+R`) to see updates
|
|
456
|
-
|
|
457
494
|
### Tech Stack
|
|
458
495
|
|
|
459
|
-
**
|
|
460
|
-
**Webview**: React 18, Vite, Tailwind CSS, Zustand, Tiptap
|
|
496
|
+
**Web UI**: React 18, Vite, Tailwind CSS, Zustand, Tiptap
|
|
461
497
|
**SDK/CLI/MCP**: TypeScript, Node.js, @modelcontextprotocol/sdk
|
|
462
498
|
|
|
463
499
|
### Architecture
|
|
464
500
|
|
|
465
501
|
```
|
|
466
502
|
src/
|
|
467
|
-
sdk/ #
|
|
503
|
+
sdk/ # Core SDK (no external dependencies)
|
|
468
504
|
cli/ # CLI tool (built on SDK)
|
|
469
505
|
mcp-server/ # MCP server (built on SDK)
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
webview/ # React frontend (shared by extension + standalone)
|
|
506
|
+
standalone/ # Standalone web server (uses SDK)
|
|
507
|
+
webview/ # React frontend
|
|
473
508
|
shared/ # Shared types
|
|
474
509
|
```
|
|
475
510
|
|