kanban-lite 1.0.4

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 (99) hide show
  1. package/.editorconfig +9 -0
  2. package/.github/workflows/ci.yml +59 -0
  3. package/.github/workflows/release.yml +75 -0
  4. package/.prettierignore +6 -0
  5. package/.prettierrc.yaml +4 -0
  6. package/.vscode/extensions.json +3 -0
  7. package/.vscode/launch.json +17 -0
  8. package/.vscode/settings.json +21 -0
  9. package/.vscode/tasks.json +22 -0
  10. package/.vscodeignore +11 -0
  11. package/CHANGELOG.md +184 -0
  12. package/CLAUDE.md +58 -0
  13. package/CONTRIBUTING.md +114 -0
  14. package/LICENSE +22 -0
  15. package/README.md +482 -0
  16. package/SKILL.md +237 -0
  17. package/dist/cli.js +8716 -0
  18. package/dist/extension.js +8463 -0
  19. package/dist/mcp-server.js +1327 -0
  20. package/dist/standalone-webview/icons-Dx9MGYqN.js +180 -0
  21. package/dist/standalone-webview/icons-Dx9MGYqN.js.map +1 -0
  22. package/dist/standalone-webview/index.js +85 -0
  23. package/dist/standalone-webview/index.js.map +1 -0
  24. package/dist/standalone-webview/react-vendor-DkYdDBET.js +25 -0
  25. package/dist/standalone-webview/react-vendor-DkYdDBET.js.map +1 -0
  26. package/dist/standalone-webview/style.css +1 -0
  27. package/dist/standalone.js +7513 -0
  28. package/dist/webview/icons-Dx9MGYqN.js +180 -0
  29. package/dist/webview/icons-Dx9MGYqN.js.map +1 -0
  30. package/dist/webview/index.js +85 -0
  31. package/dist/webview/index.js.map +1 -0
  32. package/dist/webview/react-vendor-DkYdDBET.js +25 -0
  33. package/dist/webview/react-vendor-DkYdDBET.js.map +1 -0
  34. package/dist/webview/style.css +1 -0
  35. package/docs/images/board-overview.png +0 -0
  36. package/docs/images/editor-view.png +0 -0
  37. package/docs/plans/2026-02-20-kanban-json-config-design.md +74 -0
  38. package/docs/plans/2026-02-20-kanban-json-config.md +690 -0
  39. package/eslint.config.mjs +31 -0
  40. package/package.json +161 -0
  41. package/postcss.config.js +6 -0
  42. package/resources/icon-light.png +0 -0
  43. package/resources/icon-light.svg +105 -0
  44. package/resources/icon.png +0 -0
  45. package/resources/icon.svg +105 -0
  46. package/resources/kanban-dark.svg +21 -0
  47. package/resources/kanban-light.svg +21 -0
  48. package/resources/kanban.svg +21 -0
  49. package/src/cli/index.ts +846 -0
  50. package/src/extension/FeatureHeaderProvider.ts +370 -0
  51. package/src/extension/KanbanPanel.ts +973 -0
  52. package/src/extension/SidebarViewProvider.ts +507 -0
  53. package/src/extension/featureFileUtils.ts +82 -0
  54. package/src/extension/index.ts +234 -0
  55. package/src/mcp-server/index.ts +632 -0
  56. package/src/sdk/KanbanSDK.ts +349 -0
  57. package/src/sdk/__tests__/KanbanSDK.test.ts +468 -0
  58. package/src/sdk/__tests__/parser.test.ts +170 -0
  59. package/src/sdk/fileUtils.ts +76 -0
  60. package/src/sdk/index.ts +6 -0
  61. package/src/sdk/parser.ts +70 -0
  62. package/src/sdk/types.ts +15 -0
  63. package/src/shared/config.ts +113 -0
  64. package/src/shared/editorTypes.ts +14 -0
  65. package/src/shared/types.ts +120 -0
  66. package/src/standalone/__tests__/server.integration.test.ts +1916 -0
  67. package/src/standalone/__tests__/webhooks.test.ts +357 -0
  68. package/src/standalone/fileUtils.ts +70 -0
  69. package/src/standalone/index.ts +71 -0
  70. package/src/standalone/server.ts +1046 -0
  71. package/src/standalone/webhooks.ts +135 -0
  72. package/src/webview/App.tsx +469 -0
  73. package/src/webview/assets/main.css +329 -0
  74. package/src/webview/assets/standalone-theme.css +130 -0
  75. package/src/webview/components/ColumnDialog.tsx +119 -0
  76. package/src/webview/components/CreateFeatureDialog.tsx +524 -0
  77. package/src/webview/components/DatePicker.tsx +185 -0
  78. package/src/webview/components/FeatureCard.tsx +186 -0
  79. package/src/webview/components/FeatureEditor.tsx +623 -0
  80. package/src/webview/components/KanbanBoard.tsx +144 -0
  81. package/src/webview/components/KanbanColumn.tsx +159 -0
  82. package/src/webview/components/MarkdownEditor.tsx +291 -0
  83. package/src/webview/components/PrioritySelect.tsx +39 -0
  84. package/src/webview/components/QuickAddInput.tsx +72 -0
  85. package/src/webview/components/SettingsPanel.tsx +284 -0
  86. package/src/webview/components/Toolbar.tsx +175 -0
  87. package/src/webview/components/UndoToast.tsx +70 -0
  88. package/src/webview/index.html +12 -0
  89. package/src/webview/lib/utils.ts +6 -0
  90. package/src/webview/main.tsx +11 -0
  91. package/src/webview/standalone-main.tsx +13 -0
  92. package/src/webview/standalone-shim.ts +132 -0
  93. package/src/webview/standalone.html +12 -0
  94. package/src/webview/store/index.ts +241 -0
  95. package/tailwind.config.js +53 -0
  96. package/tsconfig.json +22 -0
  97. package/vite.config.ts +36 -0
  98. package/vite.standalone.config.ts +62 -0
  99. package/vitest.config.ts +15 -0
package/README.md ADDED
@@ -0,0 +1,482 @@
1
+ # Kanban Lite
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.
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)
7
+ ![License](https://img.shields.io/badge/license-MIT-green)
8
+
9
+ ![Kanban Board Overview](https://raw.githubusercontent.com/borgius/kanban-lite/main/docs/images/board-overview.png)
10
+
11
+ ## Kanban Skill
12
+
13
+ Install the kanban skill via [skills.sh](https://skills.sh) to give your AI agent full context of your board and the ability to create, update, and move features directly from the terminal. Works with Claude Code, Codex, OpenCode, and any skills.sh-compatible agent.
14
+
15
+ ```bash
16
+ npx skills add https://github.com/borgius/kanban-lite
17
+ ```
18
+
19
+ See [SKILL.md](SKILL.md) for the full skill reference covering MCP tools, CLI, and REST API.
20
+
21
+ ## Features
22
+
23
+ ### Kanban Board
24
+
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
27
+ - **Drag-and-drop**: Move cards between columns and reorder within columns
28
+ - **Split-view editor**: Board on left, inline markdown editor on right
29
+ - **Layout toggle**: Switch between horizontal and vertical board layouts
30
+ - **Keyboard shortcuts**:
31
+ - `N` - Create new feature
32
+ - `Esc` - Close dialogs
33
+ - `Cmd/Ctrl + Enter` - Submit create dialog
34
+ - `Enter` in title - Move to description field
35
+ - `Shift + Enter` in title - Add new line
36
+
37
+
38
+ ### Feature Cards
39
+
40
+ ![Editor View](https://raw.githubusercontent.com/borgius/kanban-lite/main/docs/images/editor-view.png)
41
+
42
+
43
+ - **Priority levels**: Critical, High, Medium, Low (color-coded badges)
44
+ - **Assignees**: Assign team members to features
45
+ - **Due dates**: Smart formatting (Overdue, Today, Tomorrow, "5d", etc.)
46
+ - **Labels**: Tag features with multiple labels (shows up to 3 with "+X more")
47
+ - **Auto-generated IDs**: Based on title and timestamp (e.g., `implement-dark-mode-2026-01-29`)
48
+ - **Timestamps**: Created and modified dates tracked automatically
49
+
50
+ ### Filtering & Search
51
+ - **Full-text search**: Search across content, IDs, assignees, and labels
52
+ - **Priority filter**: Show only critical, high, medium, or low items
53
+ - **Assignee filter**: Filter by team member or show unassigned items
54
+ - **Label filter**: Filter by specific labels
55
+ - **Due date filters**: Overdue, due today, due this week, or no due date
56
+ - **Clear filters button**: Reset all filters at once
57
+
58
+ ### 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
74
+
75
+ ## Installation
76
+
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
+ }
133
+ ```
134
+
135
+ Columns are fully customizable — add, remove, rename, or recolor them from the board UI, CLI, or REST API.
136
+
137
+ ## CLI
138
+
139
+ Manage your kanban board from the terminal. After installing with `npm install -g kanban-lite`, use `kanban-lite` or the shorthand `kl`:
140
+
141
+ ```bash
142
+ # List all cards
143
+ kl list
144
+
145
+ # List with filters
146
+ kl list --status todo --priority high
147
+
148
+ # Create a card
149
+ kl add --title "Implement search" --priority high --label "frontend,search"
150
+
151
+ # Show card details
152
+ kl show implement-search
153
+
154
+ # Move to a different column
155
+ kl move implement-search in-progress
156
+
157
+ # Update fields
158
+ kl edit implement-search --assignee alice --due 2026-03-01
159
+
160
+ # Delete a card
161
+ kl delete implement-search
162
+
163
+ # Attachments
164
+ kl attach implement-search # List attachments
165
+ kl attach add implement-search ./screenshot.png # Attach a file
166
+ kl attach remove implement-search screenshot.png # Remove attachment
167
+
168
+ # Manage columns
169
+ kl columns # List columns
170
+ kl columns add --id testing --name Testing # Add column
171
+ kl columns update testing --color "#ff9900" # Update column
172
+ kl columns remove testing # Remove column
173
+
174
+ # Webhooks
175
+ kl webhooks # List webhooks
176
+ kl webhooks add --url https://example.com/hook # Register webhook
177
+ kl webhooks add --url https://example.com/hook \
178
+ --events task.created,task.moved --secret mykey # With event filter and secret
179
+ kl webhooks remove wh_abc123 # Remove webhook
180
+
181
+ # Settings
182
+ kl settings # Show current settings
183
+ kl settings update --compactMode true # Update a setting
184
+
185
+ # Workspace
186
+ kl pwd # Print workspace root path
187
+
188
+ # Start standalone web server
189
+ kl serve # Start on port 3000
190
+ kl serve --port 8080 --no-browser # Custom port, no auto-open
191
+
192
+ # Initialize features directory
193
+ kl init
194
+ ```
195
+
196
+ Use `--json` for machine-readable output. Use `--dir <path>` to specify a custom features directory.
197
+
198
+ ## Standalone Server
199
+
200
+ Run the kanban board as a standalone web application with a full REST API, outside of VSCode:
201
+
202
+ ```bash
203
+ # Using the CLI
204
+ kl serve
205
+
206
+ # Or directly
207
+ kanban-md
208
+
209
+ # With options
210
+ kanban-md --port 8080 --dir .kanban --no-browser
211
+ ```
212
+
213
+ The server provides:
214
+ - **Web UI** at `http://localhost:3000` — the same React board as the VSCode extension
215
+ - **REST API** at `http://localhost:3000/api` — full programmatic access
216
+ - **WebSocket** — real-time updates for connected clients
217
+
218
+ ### REST API
219
+
220
+ All responses follow the format `{ "ok": true, "data": ... }` or `{ "ok": false, "error": "message" }`. CORS is enabled for all origins.
221
+
222
+ #### Tasks
223
+
224
+ | Method | Endpoint | Description |
225
+ |--------|----------|-------------|
226
+ | `GET` | `/api/tasks` | List all tasks (query: `?status=&priority=&assignee=&label=`) |
227
+ | `GET` | `/api/tasks/:id` | Get a single task |
228
+ | `POST` | `/api/tasks` | Create a task |
229
+ | `PUT` | `/api/tasks/:id` | Update task properties |
230
+ | `PATCH` | `/api/tasks/:id/move` | Move task to column/position |
231
+ | `DELETE` | `/api/tasks/:id` | Delete a task |
232
+
233
+ #### Columns
234
+
235
+ | Method | Endpoint | Description |
236
+ |--------|----------|-------------|
237
+ | `GET` | `/api/columns` | List all columns |
238
+ | `POST` | `/api/columns` | Add a column |
239
+ | `PUT` | `/api/columns/:id` | Update a column |
240
+ | `DELETE` | `/api/columns/:id` | Delete a column |
241
+
242
+ #### Settings
243
+
244
+ | Method | Endpoint | Description |
245
+ |--------|----------|-------------|
246
+ | `GET` | `/api/settings` | Get board settings |
247
+ | `PUT` | `/api/settings` | Update board settings |
248
+
249
+ #### Webhooks
250
+
251
+ | Method | Endpoint | Description |
252
+ |--------|----------|-------------|
253
+ | `GET` | `/api/webhooks` | List registered webhooks |
254
+ | `POST` | `/api/webhooks` | Register a webhook |
255
+ | `DELETE` | `/api/webhooks/:id` | Remove a webhook |
256
+
257
+ #### Workspace
258
+
259
+ | Method | Endpoint | Description |
260
+ |--------|----------|-------------|
261
+ | `GET` | `/api/workspace` | Get workspace root path |
262
+
263
+ #### Attachments
264
+
265
+ | Method | Endpoint | Description |
266
+ |--------|----------|-------------|
267
+ | `POST` | `/api/tasks/:id/attachments` | Upload attachment(s) |
268
+ | `GET` | `/api/tasks/:id/attachments/:filename` | Download an attachment |
269
+ | `DELETE` | `/api/tasks/:id/attachments/:filename` | Remove an attachment |
270
+
271
+ ### Example: Create a task via API
272
+
273
+ ```bash
274
+ curl -X POST http://localhost:3000/api/tasks \
275
+ -H "Content-Type: application/json" \
276
+ -d '{"content": "# My Task\n\nDescription here", "status": "todo", "priority": "high"}'
277
+ ```
278
+
279
+ ## Webhooks
280
+
281
+ Register webhooks to receive HTTP POST notifications when tasks or columns change. Webhooks work with both the standalone server and the CLI.
282
+
283
+ ### Events
284
+
285
+ | Event | Trigger |
286
+ |-------|---------|
287
+ | `task.created` | A new task is created |
288
+ | `task.updated` | Task properties are changed |
289
+ | `task.moved` | Task is moved to a different column |
290
+ | `task.deleted` | A task is deleted |
291
+ | `column.created` | A new column is added |
292
+ | `column.updated` | Column name or color is changed |
293
+ | `column.deleted` | A column is removed |
294
+
295
+ ### Payload
296
+
297
+ ```json
298
+ {
299
+ "event": "task.created",
300
+ "timestamp": "2026-02-21T10:30:00.000Z",
301
+ "data": { "id": "my-task", "status": "todo", "priority": "high", "..." : "..." }
302
+ }
303
+ ```
304
+
305
+ ### Headers
306
+
307
+ - `Content-Type: application/json`
308
+ - `X-Webhook-Event: task.created`
309
+ - `X-Webhook-Signature: sha256=<hmac>` (if a secret is configured)
310
+
311
+ ### Register via CLI or API
312
+
313
+ ```bash
314
+ # CLI
315
+ kl webhooks add --url https://example.com/hook --events task.created,task.moved --secret mykey
316
+
317
+ # API
318
+ curl -X POST http://localhost:3000/api/webhooks \
319
+ -H "Content-Type: application/json" \
320
+ -d '{"url": "https://example.com/hook", "events": ["task.created", "task.moved"], "secret": "mykey"}'
321
+ ```
322
+
323
+ Webhook registrations are stored in `.kanban-webhooks.json` at the workspace root.
324
+
325
+ ## MCP Server
326
+
327
+ Expose your kanban board to AI agents (Claude, Cursor, etc.) via the [Model Context Protocol](https://modelcontextprotocol.io/).
328
+
329
+ ### Setup with Claude Code
330
+
331
+ Add to your `.claude/settings.json`:
332
+
333
+ ```json
334
+ {
335
+ "mcpServers": {
336
+ "kanban": {
337
+ "command": "npx",
338
+ "args": ["kanban-lite", "kanban-mcp"],
339
+ "env": {
340
+ "KANBAN_FEATURES_DIR": "/path/to/your/project/.kanban"
341
+ }
342
+ }
343
+ }
344
+ }
345
+ ```
346
+
347
+ Or run directly:
348
+
349
+ ```bash
350
+ kanban-mcp --dir .kanban
351
+ ```
352
+
353
+ ### Available Tools
354
+
355
+ | Tool | Description |
356
+ |------|-------------|
357
+ | `list_cards` | List/filter cards by status, priority, assignee, or label |
358
+ | `get_card` | Get full details of a card (supports partial ID matching) |
359
+ | `create_card` | Create a new card with title, body, status, priority, etc. |
360
+ | `update_card` | Update fields of an existing card |
361
+ | `move_card` | Move a card to a different status column |
362
+ | `delete_card` | Permanently delete a card |
363
+ | `list_attachments` | List attachments on a card |
364
+ | `add_attachment` | Attach a file to a card (copies to card directory) |
365
+ | `remove_attachment` | Remove an attachment reference from a card |
366
+ | `list_columns` | List all board columns |
367
+ | `add_column` | Add a new column to the board |
368
+ | `update_column` | Update a column's name or color |
369
+ | `remove_column` | Remove a column (must be empty) |
370
+ | `get_settings` | Get board display settings |
371
+ | `update_settings` | Update board display settings |
372
+ | `list_webhooks` | List registered webhooks |
373
+ | `add_webhook` | Register a new webhook |
374
+ | `remove_webhook` | Remove a webhook |
375
+ | `get_workspace_info` | Get workspace root path and features directory |
376
+
377
+ ## SDK
378
+
379
+ Use the kanban SDK programmatically in your own tools:
380
+
381
+ ```typescript
382
+ import { KanbanSDK } from 'kanban-lite/dist/sdk'
383
+
384
+ const sdk = new KanbanSDK('/path/to/.kanban')
385
+
386
+ // List all cards
387
+ const cards = await sdk.listCards()
388
+
389
+ // Create a card
390
+ const card = await sdk.createCard({
391
+ content: '# My Card\n\nDescription here.',
392
+ status: 'todo',
393
+ priority: 'high',
394
+ labels: ['backend']
395
+ })
396
+
397
+ // Move a card
398
+ await sdk.moveCard('card-id', 'in-progress')
399
+
400
+ // Update fields
401
+ await sdk.updateCard('card-id', { assignee: 'alice' })
402
+
403
+ // Delete
404
+ await sdk.deleteCard('card-id')
405
+
406
+ // Attachments
407
+ await sdk.addAttachment('card-id', '/path/to/file.png')
408
+ await sdk.removeAttachment('card-id', 'file.png')
409
+ const attachments = await sdk.listAttachments('card-id')
410
+
411
+ // Manage columns
412
+ const columns = await sdk.listColumns()
413
+ await sdk.addColumn({ id: 'testing', name: 'Testing', color: '#ff9900' })
414
+ await sdk.updateColumn('testing', { name: 'QA' })
415
+ await sdk.removeColumn('testing')
416
+ ```
417
+
418
+ ## Development
419
+
420
+ ### Prerequisites
421
+ - Node.js 18+
422
+ - pnpm
423
+
424
+ ### Setup
425
+
426
+ ```bash
427
+ # Install dependencies
428
+ pnpm install
429
+
430
+ # Start development (watch mode)
431
+ pnpm dev
432
+
433
+ # Build for production (extension + CLI + MCP server)
434
+ pnpm build
435
+
436
+ # Build individually
437
+ pnpm build:extension
438
+ pnpm build:cli
439
+ pnpm build:mcp
440
+
441
+ # Run tests
442
+ pnpm test
443
+
444
+ # Type checking
445
+ pnpm typecheck
446
+
447
+ # Linting
448
+ pnpm lint
449
+ ```
450
+
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
+ ### Tech Stack
458
+
459
+ **Extension**: TypeScript, VSCode API, esbuild
460
+ **Webview**: React 18, Vite, Tailwind CSS, Zustand, Tiptap
461
+ **SDK/CLI/MCP**: TypeScript, Node.js, @modelcontextprotocol/sdk
462
+
463
+ ### Architecture
464
+
465
+ ```
466
+ src/
467
+ sdk/ # Standalone SDK (no VSCode dependency)
468
+ cli/ # CLI tool (built on SDK)
469
+ 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)
473
+ shared/ # Shared types
474
+ ```
475
+
476
+ ## Acknowledgments
477
+
478
+ This project was originally created by [LachyFS](https://github.com/LachyFS). Thank you for building the foundation that made Kanban Lite possible.
479
+
480
+ ## License
481
+
482
+ MIT