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.
- package/.editorconfig +9 -0
- package/.github/workflows/ci.yml +59 -0
- package/.github/workflows/release.yml +75 -0
- package/.prettierignore +6 -0
- package/.prettierrc.yaml +4 -0
- package/.vscode/extensions.json +3 -0
- package/.vscode/launch.json +17 -0
- package/.vscode/settings.json +21 -0
- package/.vscode/tasks.json +22 -0
- package/.vscodeignore +11 -0
- package/CHANGELOG.md +184 -0
- package/CLAUDE.md +58 -0
- package/CONTRIBUTING.md +114 -0
- package/LICENSE +22 -0
- package/README.md +482 -0
- package/SKILL.md +237 -0
- package/dist/cli.js +8716 -0
- package/dist/extension.js +8463 -0
- package/dist/mcp-server.js +1327 -0
- package/dist/standalone-webview/icons-Dx9MGYqN.js +180 -0
- package/dist/standalone-webview/icons-Dx9MGYqN.js.map +1 -0
- package/dist/standalone-webview/index.js +85 -0
- package/dist/standalone-webview/index.js.map +1 -0
- package/dist/standalone-webview/react-vendor-DkYdDBET.js +25 -0
- package/dist/standalone-webview/react-vendor-DkYdDBET.js.map +1 -0
- package/dist/standalone-webview/style.css +1 -0
- package/dist/standalone.js +7513 -0
- package/dist/webview/icons-Dx9MGYqN.js +180 -0
- package/dist/webview/icons-Dx9MGYqN.js.map +1 -0
- package/dist/webview/index.js +85 -0
- package/dist/webview/index.js.map +1 -0
- package/dist/webview/react-vendor-DkYdDBET.js +25 -0
- package/dist/webview/react-vendor-DkYdDBET.js.map +1 -0
- package/dist/webview/style.css +1 -0
- package/docs/images/board-overview.png +0 -0
- package/docs/images/editor-view.png +0 -0
- package/docs/plans/2026-02-20-kanban-json-config-design.md +74 -0
- package/docs/plans/2026-02-20-kanban-json-config.md +690 -0
- package/eslint.config.mjs +31 -0
- package/package.json +161 -0
- package/postcss.config.js +6 -0
- package/resources/icon-light.png +0 -0
- package/resources/icon-light.svg +105 -0
- package/resources/icon.png +0 -0
- package/resources/icon.svg +105 -0
- package/resources/kanban-dark.svg +21 -0
- package/resources/kanban-light.svg +21 -0
- package/resources/kanban.svg +21 -0
- package/src/cli/index.ts +846 -0
- package/src/extension/FeatureHeaderProvider.ts +370 -0
- package/src/extension/KanbanPanel.ts +973 -0
- package/src/extension/SidebarViewProvider.ts +507 -0
- package/src/extension/featureFileUtils.ts +82 -0
- package/src/extension/index.ts +234 -0
- package/src/mcp-server/index.ts +632 -0
- package/src/sdk/KanbanSDK.ts +349 -0
- package/src/sdk/__tests__/KanbanSDK.test.ts +468 -0
- package/src/sdk/__tests__/parser.test.ts +170 -0
- package/src/sdk/fileUtils.ts +76 -0
- package/src/sdk/index.ts +6 -0
- package/src/sdk/parser.ts +70 -0
- package/src/sdk/types.ts +15 -0
- package/src/shared/config.ts +113 -0
- package/src/shared/editorTypes.ts +14 -0
- package/src/shared/types.ts +120 -0
- package/src/standalone/__tests__/server.integration.test.ts +1916 -0
- package/src/standalone/__tests__/webhooks.test.ts +357 -0
- package/src/standalone/fileUtils.ts +70 -0
- package/src/standalone/index.ts +71 -0
- package/src/standalone/server.ts +1046 -0
- package/src/standalone/webhooks.ts +135 -0
- package/src/webview/App.tsx +469 -0
- package/src/webview/assets/main.css +329 -0
- package/src/webview/assets/standalone-theme.css +130 -0
- package/src/webview/components/ColumnDialog.tsx +119 -0
- package/src/webview/components/CreateFeatureDialog.tsx +524 -0
- package/src/webview/components/DatePicker.tsx +185 -0
- package/src/webview/components/FeatureCard.tsx +186 -0
- package/src/webview/components/FeatureEditor.tsx +623 -0
- package/src/webview/components/KanbanBoard.tsx +144 -0
- package/src/webview/components/KanbanColumn.tsx +159 -0
- package/src/webview/components/MarkdownEditor.tsx +291 -0
- package/src/webview/components/PrioritySelect.tsx +39 -0
- package/src/webview/components/QuickAddInput.tsx +72 -0
- package/src/webview/components/SettingsPanel.tsx +284 -0
- package/src/webview/components/Toolbar.tsx +175 -0
- package/src/webview/components/UndoToast.tsx +70 -0
- package/src/webview/index.html +12 -0
- package/src/webview/lib/utils.ts +6 -0
- package/src/webview/main.tsx +11 -0
- package/src/webview/standalone-main.tsx +13 -0
- package/src/webview/standalone-shim.ts +132 -0
- package/src/webview/standalone.html +12 -0
- package/src/webview/store/index.ts +241 -0
- package/tailwind.config.js +53 -0
- package/tsconfig.json +22 -0
- package/vite.config.ts +36 -0
- package/vite.standalone.config.ts +62 -0
- package/vitest.config.ts +15 -0
package/.editorconfig
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# name: CI
|
|
2
|
+
|
|
3
|
+
# on:
|
|
4
|
+
# push:
|
|
5
|
+
# branches: [main]
|
|
6
|
+
# pull_request:
|
|
7
|
+
# branches: [main]
|
|
8
|
+
|
|
9
|
+
# jobs:
|
|
10
|
+
# build:
|
|
11
|
+
# runs-on: ubuntu-latest
|
|
12
|
+
|
|
13
|
+
# steps:
|
|
14
|
+
# - name: Checkout
|
|
15
|
+
# uses: actions/checkout@v4
|
|
16
|
+
|
|
17
|
+
# - name: Setup Node.js
|
|
18
|
+
# uses: actions/setup-node@v4
|
|
19
|
+
# with:
|
|
20
|
+
# node-version: 20
|
|
21
|
+
|
|
22
|
+
# - name: Setup pnpm
|
|
23
|
+
# uses: pnpm/action-setup@v4
|
|
24
|
+
# with:
|
|
25
|
+
# version: 9
|
|
26
|
+
|
|
27
|
+
# - name: Get pnpm store directory
|
|
28
|
+
# shell: bash
|
|
29
|
+
# run: |
|
|
30
|
+
# echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
|
|
31
|
+
|
|
32
|
+
# - name: Setup pnpm cache
|
|
33
|
+
# uses: actions/cache@v4
|
|
34
|
+
# with:
|
|
35
|
+
# path: ${{ env.STORE_PATH }}
|
|
36
|
+
# key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
|
37
|
+
# restore-keys: |
|
|
38
|
+
# ${{ runner.os }}-pnpm-store-
|
|
39
|
+
|
|
40
|
+
# - name: Install dependencies
|
|
41
|
+
# run: pnpm install
|
|
42
|
+
|
|
43
|
+
# - name: Type check
|
|
44
|
+
# run: pnpm typecheck
|
|
45
|
+
|
|
46
|
+
# - name: Lint
|
|
47
|
+
# run: pnpm lint
|
|
48
|
+
|
|
49
|
+
# - name: Build
|
|
50
|
+
# run: pnpm build
|
|
51
|
+
|
|
52
|
+
# - name: Package extension
|
|
53
|
+
# run: pnpm vsce package --no-dependencies
|
|
54
|
+
|
|
55
|
+
# - name: Upload VSIX artifact
|
|
56
|
+
# uses: actions/upload-artifact@v4
|
|
57
|
+
# with:
|
|
58
|
+
# name: kanban-lite-${{ github.sha }}
|
|
59
|
+
# path: "*.vsix"
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# name: Release
|
|
2
|
+
|
|
3
|
+
# on:
|
|
4
|
+
# push:
|
|
5
|
+
# tags:
|
|
6
|
+
# - "v*"
|
|
7
|
+
|
|
8
|
+
# permissions:
|
|
9
|
+
# contents: write
|
|
10
|
+
|
|
11
|
+
# jobs:
|
|
12
|
+
# release:
|
|
13
|
+
# runs-on: ubuntu-latest
|
|
14
|
+
|
|
15
|
+
# steps:
|
|
16
|
+
# - name: Checkout
|
|
17
|
+
# uses: actions/checkout@v4
|
|
18
|
+
|
|
19
|
+
# - name: Setup Node.js
|
|
20
|
+
# uses: actions/setup-node@v4
|
|
21
|
+
# with:
|
|
22
|
+
# node-version: 20
|
|
23
|
+
|
|
24
|
+
# - name: Setup pnpm
|
|
25
|
+
# uses: pnpm/action-setup@v4
|
|
26
|
+
# with:
|
|
27
|
+
# version: 9
|
|
28
|
+
|
|
29
|
+
# - name: Get pnpm store directory
|
|
30
|
+
# shell: bash
|
|
31
|
+
# run: |
|
|
32
|
+
# echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
|
|
33
|
+
|
|
34
|
+
# - name: Setup pnpm cache
|
|
35
|
+
# uses: actions/cache@v4
|
|
36
|
+
# with:
|
|
37
|
+
# path: ${{ env.STORE_PATH }}
|
|
38
|
+
# key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
|
39
|
+
# restore-keys: |
|
|
40
|
+
# ${{ runner.os }}-pnpm-store-
|
|
41
|
+
|
|
42
|
+
# - name: Install dependencies
|
|
43
|
+
# run: pnpm install
|
|
44
|
+
|
|
45
|
+
# - name: Type check
|
|
46
|
+
# run: pnpm typecheck
|
|
47
|
+
|
|
48
|
+
# - name: Lint
|
|
49
|
+
# run: pnpm lint
|
|
50
|
+
|
|
51
|
+
# - name: Build
|
|
52
|
+
# run: pnpm build
|
|
53
|
+
|
|
54
|
+
# - name: Get version from tag
|
|
55
|
+
# id: version
|
|
56
|
+
# run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
|
|
57
|
+
|
|
58
|
+
# - name: Package extension
|
|
59
|
+
# run: mkdir -p releases && pnpm vsce package --no-dependencies -o releases/kanban-lite-${{ steps.version.outputs.VERSION }}.vsix
|
|
60
|
+
|
|
61
|
+
# - name: Create GitHub Release
|
|
62
|
+
# uses: softprops/action-gh-release@v2
|
|
63
|
+
# with:
|
|
64
|
+
# files: "releases/*.vsix"
|
|
65
|
+
# generate_release_notes: true
|
|
66
|
+
|
|
67
|
+
# - name: Publish to VS Code Marketplace
|
|
68
|
+
# run: pnpm vsce publish --no-dependencies
|
|
69
|
+
# env:
|
|
70
|
+
# VSCE_PAT: ${{ secrets.VSCE_PAT }}
|
|
71
|
+
|
|
72
|
+
# - name: Publish to Open VSX
|
|
73
|
+
# run: pnpm ovsx publish releases/*.vsix
|
|
74
|
+
# env:
|
|
75
|
+
# OVSX_PAT: ${{ secrets.OVSX_PAT }}
|
package/.prettierignore
ADDED
package/.prettierrc.yaml
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.2.0",
|
|
3
|
+
"configurations": [
|
|
4
|
+
{
|
|
5
|
+
"name": "Run Extension",
|
|
6
|
+
"type": "extensionHost",
|
|
7
|
+
"request": "launch",
|
|
8
|
+
"args": [
|
|
9
|
+
"--extensionDevelopmentPath=${workspaceFolder}"
|
|
10
|
+
],
|
|
11
|
+
"outFiles": [
|
|
12
|
+
"${workspaceFolder}/dist/**/*.js"
|
|
13
|
+
],
|
|
14
|
+
"preLaunchTask": "npm: build"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"[typescript]": {
|
|
3
|
+
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
4
|
+
},
|
|
5
|
+
"[javascript]": {
|
|
6
|
+
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
7
|
+
},
|
|
8
|
+
"[json]": {
|
|
9
|
+
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
10
|
+
},
|
|
11
|
+
"kanban-lite.showPriorityBadges": true,
|
|
12
|
+
"kanban-lite.showAssignee": true,
|
|
13
|
+
"kanban-lite.showDueDate": true,
|
|
14
|
+
"kanban-lite.showLabels": true,
|
|
15
|
+
"kanban-lite.showBuildWithAI": false,
|
|
16
|
+
"kanban-lite.showFileName": false,
|
|
17
|
+
"kanban-lite.compactMode": false,
|
|
18
|
+
"kanban-lite.markdownEditorMode": false,
|
|
19
|
+
"kanban-lite.defaultPriority": "medium",
|
|
20
|
+
"kanban-lite.defaultStatus": "backlog"
|
|
21
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "2.0.0",
|
|
3
|
+
"tasks": [
|
|
4
|
+
{
|
|
5
|
+
"type": "npm",
|
|
6
|
+
"script": "build",
|
|
7
|
+
"problemMatcher": [],
|
|
8
|
+
"label": "npm: build",
|
|
9
|
+
"group": {
|
|
10
|
+
"kind": "build",
|
|
11
|
+
"isDefault": true
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"type": "npm",
|
|
16
|
+
"script": "watch",
|
|
17
|
+
"problemMatcher": [],
|
|
18
|
+
"label": "npm: watch",
|
|
19
|
+
"isBackground": true
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
package/.vscodeignore
ADDED
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to the Kanban Lite extension will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [1.7.0] - 2026-02-20
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Settings button in the toolbar to quickly open extension settings
|
|
12
|
+
- Markdown editor mode for opening features in the native VS Code editor
|
|
13
|
+
- Kanban skill installation instructions to README
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- Replaced PNG icons with SVG versions for better quality and smaller file size
|
|
17
|
+
|
|
18
|
+
## [1.6.4] - 2026-02-20
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
- Added new SVG icon and updated PNG icon
|
|
22
|
+
|
|
23
|
+
## [1.6.3] - 2026-02-19
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
- Allow saving features without a title (falls back to description)
|
|
27
|
+
|
|
28
|
+
### Fixed
|
|
29
|
+
- Activity bar incorrectly opening on ALT key press
|
|
30
|
+
|
|
31
|
+
## [1.6.2] - 2026-02-19
|
|
32
|
+
|
|
33
|
+
### Fixed
|
|
34
|
+
- Removed incorrect `fontSize` configuration from KanbanPanel
|
|
35
|
+
|
|
36
|
+
## [1.6.1] - 2026-02-19
|
|
37
|
+
|
|
38
|
+
### Fixed
|
|
39
|
+
- Focus must leave the webview before `focusMenuBar` works (VS Code limitation)
|
|
40
|
+
|
|
41
|
+
## [1.6.0] - 2026-02-14
|
|
42
|
+
|
|
43
|
+
### Added
|
|
44
|
+
- Undo delete functionality with a stack-based history
|
|
45
|
+
- Rich text editor in the CreateFeatureDialog
|
|
46
|
+
|
|
47
|
+
## [1.5.0] - 2026-02-14
|
|
48
|
+
|
|
49
|
+
### Added
|
|
50
|
+
- Keyboard shortcut for saving and closing the CreateFeatureDialog
|
|
51
|
+
|
|
52
|
+
## [1.4.0] - 2026-02-14
|
|
53
|
+
|
|
54
|
+
### Added
|
|
55
|
+
- File name display on cards with a toggle setting
|
|
56
|
+
|
|
57
|
+
## [1.3.0] - 2026-02-13
|
|
58
|
+
|
|
59
|
+
### Added
|
|
60
|
+
- Automatic cleanup of empty old status folders during board updates
|
|
61
|
+
- CONTRIBUTING.md guide for new contributors
|
|
62
|
+
|
|
63
|
+
## [1.2.0] - 2026-02-13
|
|
64
|
+
|
|
65
|
+
### Added
|
|
66
|
+
- `completedAt` frontmatter field that records when a feature was marked as done, displayed as relative time on cards (e.g. "completed 2 days ago")
|
|
67
|
+
|
|
68
|
+
### Changed
|
|
69
|
+
- Simplified status subfolders to use only a `done` folder instead of per-status folders
|
|
70
|
+
|
|
71
|
+
### Dependencies
|
|
72
|
+
- Bumped `qs` from 6.14.1 to 6.14.2
|
|
73
|
+
|
|
74
|
+
## [1.1.0] - 2026-02-13
|
|
75
|
+
|
|
76
|
+
### Added
|
|
77
|
+
- Open file button in editor to quickly jump to the underlying markdown file ([#19](https://github.com/LachyFS/kanban-lite/issues/19))
|
|
78
|
+
- External change detection in editor — reloads content when the file is modified outside the extension ([#19](https://github.com/LachyFS/kanban-lite/issues/19))
|
|
79
|
+
|
|
80
|
+
### Fixed
|
|
81
|
+
- CRLF line endings no longer break markdown frontmatter parsing ([#20](https://github.com/LachyFS/kanban-lite/issues/20))
|
|
82
|
+
- Order collisions when deleting features in KanbanPanel ([0f11a00](https://github.com/LachyFS/kanban-lite/commit/0f11a00))
|
|
83
|
+
|
|
84
|
+
### Changed
|
|
85
|
+
- Removed delete button from feature cards for a cleaner card layout ([086e738](https://github.com/LachyFS/kanban-lite/commit/086e738))
|
|
86
|
+
|
|
87
|
+
### Thanks
|
|
88
|
+
- [@hodanli](https://github.com/hodanli) for requesting the open file button and external change detection ([#19](https://github.com/LachyFS/kanban-lite/issues/19)), and reporting the CRLF line ending bug ([#20](https://github.com/LachyFS/kanban-lite/issues/20))
|
|
89
|
+
|
|
90
|
+
## [1.0.0] - 2026-02-12
|
|
91
|
+
|
|
92
|
+
### Added
|
|
93
|
+
- Sidebar view for Kanban board in the activity bar ([#9](https://github.com/LachyFS/kanban-lite/issues/9))
|
|
94
|
+
- Drag-and-drop card reordering within columns ([#16](https://github.com/LachyFS/kanban-lite/issues/16))
|
|
95
|
+
- Label management with suggestions in CreateFeatureDialog and FeatureEditor ([#4](https://github.com/LachyFS/kanban-lite/issues/4))
|
|
96
|
+
- `showLabels` setting to toggle label visibility on cards and in editors
|
|
97
|
+
- Assignee input with suggestions in feature creation and editing
|
|
98
|
+
- Due date and label fields in feature creation dialog
|
|
99
|
+
- "Build with AI" feature toggle (`showBuildWithAI` setting) that respects `disableAIFeatures` ([#5](https://github.com/LachyFS/kanban-lite/issues/5))
|
|
100
|
+
- Status subfolders support with automatic migration of existing feature files ([#3](https://github.com/LachyFS/kanban-lite/issues/3))
|
|
101
|
+
- Auto-save functionality in FeatureEditor
|
|
102
|
+
|
|
103
|
+
### Fixed
|
|
104
|
+
- Broken label selector in edit view
|
|
105
|
+
- `n` hotkey no longer triggers when modifier keys are held ([#7](https://github.com/LachyFS/kanban-lite/issues/7))
|
|
106
|
+
- Alt key no longer blocked from opening the menu bar ([#8](https://github.com/LachyFS/kanban-lite/issues/8))
|
|
107
|
+
- Missing activation event for sidebar webview ([#14](https://github.com/LachyFS/kanban-lite/issues/14))
|
|
108
|
+
- Date selection no longer rendered off-screen ([#10](https://github.com/LachyFS/kanban-lite/issues/10))
|
|
109
|
+
- Input handling now correctly ignores contentEditable elements
|
|
110
|
+
- Due date hidden on cards with "done" status ([#17](https://github.com/LachyFS/kanban-lite/issues/17))
|
|
111
|
+
|
|
112
|
+
### Changed
|
|
113
|
+
- Removed QuickAdd functionality in favor of the full CreateFeatureDialog
|
|
114
|
+
- Consistent card height across all columns
|
|
115
|
+
- Replaced `Buffer` with `TextEncoder` for file writing (browser compatibility)
|
|
116
|
+
- Replaced Node `fs` module with `vscode.workspace.fs` for file operations (virtual filesystem support)
|
|
117
|
+
|
|
118
|
+
### Thanks
|
|
119
|
+
- [@ungive](https://github.com/ungive) for requesting the sidebar view ([#9](https://github.com/LachyFS/kanban-lite/issues/9)) and card reordering ([#16](https://github.com/LachyFS/kanban-lite/issues/16)), and reporting numerous bugs around hotkeys ([#7](https://github.com/LachyFS/kanban-lite/issues/7)), activation ([#14](https://github.com/LachyFS/kanban-lite/issues/14)), date rendering ([#10](https://github.com/LachyFS/kanban-lite/issues/10), [#17](https://github.com/LachyFS/kanban-lite/issues/17)), and the menu bar ([#8](https://github.com/LachyFS/kanban-lite/issues/8))
|
|
120
|
+
- [@hodanli](https://github.com/hodanli) for requesting label management from the UI ([#4](https://github.com/LachyFS/kanban-lite/issues/4)) and status subfolders for done items ([#3](https://github.com/LachyFS/kanban-lite/issues/3))
|
|
121
|
+
|
|
122
|
+
## [0.1.6] - 2026-02-09
|
|
123
|
+
|
|
124
|
+
### Added
|
|
125
|
+
- Live settings updates: webview now instantly reflects VS Code setting changes without reopening
|
|
126
|
+
- Configuration change listener for KanbanPanel (columns, display settings, defaults)
|
|
127
|
+
- Configuration change listener for FeatureHeaderProvider (features directory re-evaluation)
|
|
128
|
+
|
|
129
|
+
### Fixed
|
|
130
|
+
- File watcher now properly disposes when features directory setting changes
|
|
131
|
+
|
|
132
|
+
## [0.1.5] - 2026-02-09
|
|
133
|
+
|
|
134
|
+
### Fixed
|
|
135
|
+
- VS Code configuration settings (columns, priority badges, assignee, due date, compact mode, default priority/status) now correctly propagate to the webview ([#2](https://github.com/LachyFS/kanban-lite/issues/2))
|
|
136
|
+
- Quick add input uses configured default priority instead of hardcoded value
|
|
137
|
+
- Create feature dialog uses configured default priority and status
|
|
138
|
+
|
|
139
|
+
### Changed
|
|
140
|
+
- Removed obsolete macOS entitlements and icon files from the build directory
|
|
141
|
+
|
|
142
|
+
### Thanks
|
|
143
|
+
- [@hodanli](https://github.com/hodanli) for reporting the priority badges settings bug ([#2](https://github.com/LachyFS/kanban-lite/issues/2))
|
|
144
|
+
|
|
145
|
+
## [0.1.4] - 2026-01-29
|
|
146
|
+
|
|
147
|
+
### Added
|
|
148
|
+
- Pressing `enter` in the title input field moves cursor to the description textarea, `shift-enter` creates a new line
|
|
149
|
+
|
|
150
|
+
### Fixed
|
|
151
|
+
- Prevent opening new feature panel when editing an existing feature with `n` hotkey
|
|
152
|
+
- Use `resourceLangId` instead of hardcoded path for kanban-lite command ([#1](https://github.com/LachyFS/kanban-lite/issues/1))
|
|
153
|
+
- Remove hardcoded devtool resource path for `editor/title/run` menu item ([#1](https://github.com/LachyFS/kanban-lite/issues/1))
|
|
154
|
+
- Removed redundant tile heading in edit view UI, (title is already visible in markdown editor)
|
|
155
|
+
|
|
156
|
+
### Thanks
|
|
157
|
+
- [@SuperbDotHub](https://github.com/SuperbDotHub) for reporting the features directory path bug ([#1](https://github.com/LachyFS/kanban-lite/issues/1))
|
|
158
|
+
|
|
159
|
+
## [0.1.1] - 2026-01-28
|
|
160
|
+
|
|
161
|
+
### Added
|
|
162
|
+
- AI agent integration for starting feature creation with Claude, Codex, or OpenCode
|
|
163
|
+
- Keyboard shortcuts for AI actions
|
|
164
|
+
- Configurable kanban columns with custom colors
|
|
165
|
+
- Priority badges, assignee, and due date display options
|
|
166
|
+
- Compact mode setting for feature cards
|
|
167
|
+
- Marketplace publishing support (VS Code + Open VSX)
|
|
168
|
+
|
|
169
|
+
### Changed
|
|
170
|
+
- Updated repository URLs to reflect new ownership
|
|
171
|
+
- Replaced SVG icons with PNG formats for better compatibility
|
|
172
|
+
- Enhanced README with installation instructions and images
|
|
173
|
+
|
|
174
|
+
## [0.1.0] - 2026-01-27
|
|
175
|
+
|
|
176
|
+
### Added
|
|
177
|
+
- Initial release
|
|
178
|
+
- Kanban board view for managing features as markdown files
|
|
179
|
+
- Drag-and-drop between columns (Backlog, To Do, In Progress, Review, Done)
|
|
180
|
+
- Feature cards with frontmatter metadata (status, priority, assignee, due date)
|
|
181
|
+
- Create, edit, and delete features from the board
|
|
182
|
+
- Configurable features directory
|
|
183
|
+
- Rich markdown editor with Tiptap
|
|
184
|
+
- VS Code webview integration
|
package/CLAUDE.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Kanban Markdown - Development Guide
|
|
2
|
+
|
|
3
|
+
A VSCode extension + standalone server + CLI + MCP server for managing kanban boards stored as markdown files.
|
|
4
|
+
|
|
5
|
+
## Architecture
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
src/
|
|
9
|
+
sdk/ # Core SDK (no external dependencies) - KanbanSDK class
|
|
10
|
+
shared/ # Shared types (Feature, KanbanColumn, CardDisplaySettings) and config module
|
|
11
|
+
cli/ # CLI tool (built on SDK)
|
|
12
|
+
mcp-server/ # MCP server (built on SDK + config + webhooks)
|
|
13
|
+
extension/ # VSCode extension
|
|
14
|
+
standalone/ # HTTP server with REST API + WebSocket + file watcher
|
|
15
|
+
webview/ # React frontend (shared by extension + standalone)
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Key Files
|
|
19
|
+
|
|
20
|
+
- `src/sdk/KanbanSDK.ts` - Core card/column CRUD operations
|
|
21
|
+
- `src/sdk/parser.ts` - Markdown frontmatter parsing and serialization
|
|
22
|
+
- `src/shared/types.ts` - All TypeScript types and enums
|
|
23
|
+
- `src/shared/config.ts` - `.kanban.json` config read/write, settings conversion
|
|
24
|
+
- `src/standalone/server.ts` - HTTP server with all REST API routes + WebSocket
|
|
25
|
+
- `src/standalone/webhooks.ts` - Webhook CRUD and delivery
|
|
26
|
+
- `src/cli/index.ts` - All CLI commands
|
|
27
|
+
- `src/mcp-server/index.ts` - All MCP tool definitions
|
|
28
|
+
|
|
29
|
+
## Build
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npm run build # Build everything
|
|
33
|
+
npm run build:cli # CLI only
|
|
34
|
+
npm run build:mcp # MCP server only
|
|
35
|
+
npm run build:standalone-server # HTTP server only
|
|
36
|
+
npx tsc --noEmit # Type-check
|
|
37
|
+
npm test # Run tests (vitest)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Feature Parity
|
|
41
|
+
|
|
42
|
+
All three interfaces (API, CLI, MCP) support the same operations: cards CRUD, columns CRUD, settings get/update, webhooks CRUD, workspace info. When adding new functionality, add it to all three.
|
|
43
|
+
|
|
44
|
+
## Data Storage
|
|
45
|
+
|
|
46
|
+
- Cards: `.kanban/{status}/card-name-YYYY-MM-DD.md` (markdown with YAML frontmatter)
|
|
47
|
+
- Config: `.kanban.json` (columns, display settings)
|
|
48
|
+
- Webhooks: `.kanban-webhooks.json`
|
|
49
|
+
- SDK board config: `.kanban/board.json` (used by SDK for column management)
|
|
50
|
+
|
|
51
|
+
## Conventions
|
|
52
|
+
|
|
53
|
+
- Card IDs are auto-generated from title + date
|
|
54
|
+
- Partial ID matching is supported across all interfaces
|
|
55
|
+
- Fractional indexing (base-62) for card ordering within columns
|
|
56
|
+
- `completedAt` is auto-managed when status changes to/from `done`
|
|
57
|
+
- `modified` timestamp is auto-updated on any change
|
|
58
|
+
- The standalone server uses synchronous `fs` operations; the SDK uses async `fs/promises`
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Contributing to Kanban Lite
|
|
2
|
+
|
|
3
|
+
Thanks for your interest in contributing to Kanban Lite! This guide will help you get started.
|
|
4
|
+
|
|
5
|
+
## Getting Started
|
|
6
|
+
|
|
7
|
+
### Prerequisites
|
|
8
|
+
|
|
9
|
+
- [Node.js](https://nodejs.org/) (v18+)
|
|
10
|
+
- [VS Code](https://code.visualstudio.com/) (v1.85.0+)
|
|
11
|
+
- npm
|
|
12
|
+
|
|
13
|
+
### Setup
|
|
14
|
+
|
|
15
|
+
1. Fork and clone the repository:
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
git clone https://github.com/<your-username>/kanban-lite.git
|
|
19
|
+
cd kanban-lite
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
2. Install dependencies:
|
|
23
|
+
|
|
24
|
+
```sh
|
|
25
|
+
npm install
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
3. Start the development watcher:
|
|
29
|
+
|
|
30
|
+
```sh
|
|
31
|
+
npm run dev
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
4. Press `F5` in VS Code to launch the Extension Development Host.
|
|
35
|
+
|
|
36
|
+
## Project Structure
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
src/
|
|
40
|
+
├── extension/ # VS Code extension backend (Node.js)
|
|
41
|
+
│ ├── index.ts # Extension entry point
|
|
42
|
+
│ └── ...
|
|
43
|
+
├── shared/ # Types shared between extension and webview
|
|
44
|
+
│ └── types.ts
|
|
45
|
+
└── webview/ # React frontend (Vite + Tailwind)
|
|
46
|
+
├── App.tsx
|
|
47
|
+
├── components/
|
|
48
|
+
├── store/
|
|
49
|
+
└── ...
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
- **Extension** is bundled with esbuild (`npm run build:extension`)
|
|
53
|
+
- **Webview** is bundled with Vite (`npm run build:webview`)
|
|
54
|
+
|
|
55
|
+
## Development
|
|
56
|
+
|
|
57
|
+
### Available Scripts
|
|
58
|
+
|
|
59
|
+
| Command | Description |
|
|
60
|
+
|---|---|
|
|
61
|
+
| `npm run dev` | Watch mode for both extension and webview |
|
|
62
|
+
| `npm run build` | Production build |
|
|
63
|
+
| `npm run lint` | Run ESLint |
|
|
64
|
+
| `npm run typecheck` | Run TypeScript type checking |
|
|
65
|
+
| `npm run package` | Package the extension as a `.vsix` |
|
|
66
|
+
|
|
67
|
+
### Code Style
|
|
68
|
+
|
|
69
|
+
- **Prettier** is configured — single quotes, no semicolons, 100 char line width
|
|
70
|
+
- **2-space indentation**, UTF-8, LF line endings
|
|
71
|
+
- Run `npm run lint` before submitting a PR
|
|
72
|
+
|
|
73
|
+
## Submitting Changes
|
|
74
|
+
|
|
75
|
+
1. Create a branch from `main`:
|
|
76
|
+
|
|
77
|
+
```sh
|
|
78
|
+
git checkout -b my-feature
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
2. Make your changes and verify they work:
|
|
82
|
+
|
|
83
|
+
```sh
|
|
84
|
+
npm run lint
|
|
85
|
+
npm run typecheck
|
|
86
|
+
npm run build
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
3. Commit your changes with a clear message:
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
feat: add drag-and-drop reordering within columns
|
|
93
|
+
fix: prevent duplicate feature IDs on rapid creation
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
We loosely follow [Conventional Commits](https://www.conventionalcommits.org/) (`feat:`, `fix:`, `chore:`, `docs:`, etc.).
|
|
97
|
+
|
|
98
|
+
4. Push your branch and open a pull request against `main`.
|
|
99
|
+
|
|
100
|
+
## Reporting Bugs
|
|
101
|
+
|
|
102
|
+
Open an issue at [GitHub Issues](https://github.com/LachyFS/kanban-lite/issues) with:
|
|
103
|
+
|
|
104
|
+
- Steps to reproduce
|
|
105
|
+
- Expected vs actual behavior
|
|
106
|
+
- VS Code version and OS
|
|
107
|
+
|
|
108
|
+
## Feature Requests
|
|
109
|
+
|
|
110
|
+
Feature requests are welcome! Please open an issue describing the use case and proposed behavior.
|
|
111
|
+
|
|
112
|
+
## License
|
|
113
|
+
|
|
114
|
+
By contributing, you agree that your contributions will be licensed under the [MIT License](LICENSE).
|
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 LachyFS
|
|
4
|
+
Copyright (c) 2026 LachyFS
|
|
5
|
+
|
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
in the Software without restriction, including without limitation the rights
|
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
furnished to do so, subject to the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
+
SOFTWARE.
|