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.
Files changed (46) hide show
  1. package/.kanban/backlog/1-test1.md +22 -0
  2. package/.kanban.json +42 -0
  3. package/README.md +138 -103
  4. package/dist/cli.js +470 -66
  5. package/dist/extension.js +361 -58
  6. package/dist/mcp-server.js +268 -3
  7. package/dist/standalone-webview/{icons-Dx9MGYqN.js → icons-BUWXsIxt.js} +55 -35
  8. package/dist/standalone-webview/icons-BUWXsIxt.js.map +1 -0
  9. package/dist/standalone-webview/index.js +39 -39
  10. package/dist/standalone-webview/index.js.map +1 -1
  11. package/dist/{webview/react-vendor-DkYdDBET.js → standalone-webview/react-vendor-DD6VaYq_.js} +2 -2
  12. package/dist/standalone-webview/react-vendor-DD6VaYq_.js.map +1 -0
  13. package/dist/standalone-webview/style.css +1 -1
  14. package/dist/standalone.js +372 -70
  15. package/dist/webview/{icons-Dx9MGYqN.js → icons-BUWXsIxt.js} +55 -35
  16. package/dist/webview/icons-BUWXsIxt.js.map +1 -0
  17. package/dist/webview/index.js +48 -48
  18. package/dist/webview/index.js.map +1 -1
  19. package/dist/{standalone-webview/react-vendor-DkYdDBET.js → webview/react-vendor-DD6VaYq_.js} +2 -2
  20. package/dist/webview/react-vendor-DD6VaYq_.js.map +1 -0
  21. package/dist/webview/style.css +1 -1
  22. package/package.json +5 -4
  23. package/src/cli/index.ts +126 -0
  24. package/src/extension/KanbanPanel.ts +79 -1
  25. package/src/extension/SidebarViewProvider.ts +22 -20
  26. package/src/extension/index.ts +1 -0
  27. package/src/mcp-server/index.ts +171 -0
  28. package/src/sdk/KanbanSDK.ts +61 -1
  29. package/src/sdk/__tests__/KanbanSDK.test.ts +75 -0
  30. package/src/sdk/__tests__/parser.test.ts +169 -1
  31. package/src/sdk/parser.ts +57 -3
  32. package/src/shared/types.ts +12 -1
  33. package/src/standalone/server.ts +170 -5
  34. package/src/standalone/webhooks.ts +3 -0
  35. package/src/webview/App.tsx +23 -2
  36. package/src/webview/assets/standalone-theme.css +125 -16
  37. package/src/webview/components/CommentsSection.tsx +209 -0
  38. package/src/webview/components/FeatureEditor.tsx +10 -2
  39. package/src/webview/components/KanbanColumn.tsx +2 -2
  40. package/src/webview/components/MarkdownEditor.tsx +50 -5
  41. package/src/webview/components/Toolbar.tsx +12 -2
  42. package/src/webview/standalone-shim.ts +5 -0
  43. package/dist/standalone-webview/icons-Dx9MGYqN.js.map +0 -1
  44. package/dist/standalone-webview/react-vendor-DkYdDBET.js.map +0 -1
  45. package/dist/webview/icons-Dx9MGYqN.js.map +0 -1
  46. 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 VSCode/Cursor extension that brings a full-featured kanban board directly into your editor. Features are stored as human-readable markdown files, making them version-controllable and easy to edit outside the board.
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
- [![VS Marketplace](https://img.shields.io/visual-studio-marketplace/v/borgius.kanban-lite?label=VS%20Marketplace&logo=visualstudiocode)](https://marketplace.visualstudio.com/items?itemName=borgius.kanban-lite)
6
- [![Open VSX](https://img.shields.io/open-vsx/v/borgius/kanban-lite?label=Open%20VSX&logo=vscodium)](https://open-vsx.org/extension/borgius/kanban-lite)
5
+ [![npm](https://img.shields.io/npm/v/kanban-lite)](https://www.npmjs.com/package/kanban-lite)
7
6
  ![License](https://img.shields.io/badge/license-MIT-green)
8
7
 
9
8
  ![Kanban Board Overview](https://raw.githubusercontent.com/borgius/kanban-lite/main/docs/images/board-overview.png)
@@ -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
- ### Kanban Board
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
  ![Editor View](https://raw.githubusercontent.com/borgius/kanban-lite/main/docs/images/editor-view.png)
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 (shows up to 3 with "+X more")
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
- - **Status subfolders**: Features are automatically organized into subfolders by status (with migration of existing files)
60
-
61
- ### Editor Integration
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
- ### VS Code Marketplace
78
- Install from the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=borgius.kanban-lite) or search for "Kanban Lite" in the Extensions view.
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. After installing with `npm install -g kanban-lite`, use `kanban-lite` or the shorthand `kl`:
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 standalone web server
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 standalone web application with a full REST API, outside of VSCode:
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` — the same React board as the VSCode extension
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 (extension + CLI + MCP server)
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
- **Extension**: TypeScript, VSCode API, esbuild
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/ # Standalone SDK (no VSCode dependency)
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
- extension/ # VSCode extension (uses SDK for parsing)
471
- standalone/ # Standalone web server (uses SDK for parsing)
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