@stilero/bankan 1.0.3 → 1.0.5

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 (3) hide show
  1. package/README.md +78 -77
  2. package/package.json +1 -1
  3. package/scripts/setup.js +24 -48
package/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="docs/images/ban_kan_logo_readme.svg" alt="Ban Kan logo" width="520" />
2
+ <img src="https://raw.githubusercontent.com/stilero/bankan/HEAD/docs/images/ban_kan_logo_readme.svg" alt="Ban Kan logo" width="520" />
3
3
  </p>
4
4
 
5
5
  # Ban Kan
@@ -21,7 +21,7 @@ Bring order to parallel AI development without leaving your local workflow.
21
21
  </p>
22
22
 
23
23
  <p align="center">
24
- <img src="docs/images/bankan_screenshot.png" alt="Ban Kan dashboard showing backlog, planning, implementation, review, and done columns" width="1200" />
24
+ <img src="https://raw.githubusercontent.com/stilero/bankan/HEAD/docs/images/bankan_screenshot.png" alt="Ban Kan dashboard showing backlog, planning, implementation, review, and done columns" width="1200" />
25
25
  </p>
26
26
 
27
27
  <p align="center">
@@ -38,6 +38,73 @@ Bring order to parallel AI development without leaving your local workflow.
38
38
 
39
39
  ---
40
40
 
41
+ ## Installation
42
+
43
+ ### Run instantly
44
+
45
+ ```bash
46
+ npx @stilero/bankan
47
+ ```
48
+
49
+ ### Install globally
50
+
51
+ ```bash
52
+ npm install -g @stilero/bankan
53
+ bankan
54
+ ```
55
+
56
+ ### Run from source
57
+
58
+ ```bash
59
+ git clone https://github.com/stilero/bankan.git
60
+ cd bankan
61
+
62
+ npm run install:all
63
+ npm run setup
64
+ npm run dev
65
+ ```
66
+
67
+ Ban Kan starts a local server, opens your browser automatically, and serves the dashboard from the same process.
68
+
69
+ ---
70
+
71
+ ## Requirements
72
+
73
+ - Node.js >= 18
74
+ - git
75
+ - One AI CLI tool:
76
+ - claude
77
+ - codex
78
+
79
+ Native build tools may be needed only if `node-pty` has to compile during install.
80
+
81
+ macOS: Xcode Command Line Tools
82
+ Linux: build-essential
83
+
84
+ ---
85
+
86
+ ## Quick Start
87
+
88
+ 1. Launch Ban Kan
89
+
90
+ ```bash
91
+ bankan
92
+ ```
93
+
94
+ 2. Complete the setup wizard
95
+
96
+ 3. Add one or more repositories in `Settings -> General -> Repositories`
97
+
98
+ 4. Create a task in the dashboard
99
+
100
+ 5. Approve the generated plan
101
+
102
+ 6. Watch agents implement and review the change
103
+
104
+ 7. Optionally create a pull request
105
+
106
+ ---
107
+
41
108
  ## What Is Ban Kan
42
109
 
43
110
  Ban Kan is a **local control center for AI coding agents** that work across real repositories.
@@ -79,14 +146,14 @@ Each stage has a clear responsibility, and tasks move forward only when the prev
79
146
  <table>
80
147
  <tr>
81
148
  <td align="center" width="50%">
82
- <img src="docs/images/before_claude_windows.png" alt="Four separate Claude Code terminal windows used to coordinate parallel agent work before Ban Kan" width="100%" />
149
+ <img src="https://raw.githubusercontent.com/stilero/bankan/HEAD/docs/images/before_claude_windows.png" alt="Four separate Claude Code terminal windows used to coordinate parallel agent work before Ban Kan" width="100%" />
83
150
  <br />
84
151
  <strong>Before Ban Kan</strong>
85
152
  <br />
86
153
  Managing multiple agents means juggling separate terminal windows and fragmented context.
87
154
  </td>
88
155
  <td align="center" width="50%">
89
- <img src="docs/images/bankan_multi_tasks.png" alt="Ban Kan dashboard showing multiple tasks and agent output in one coordinated interface" width="100%" />
156
+ <img src="https://raw.githubusercontent.com/stilero/bankan/HEAD/docs/images/bankan_multi_tasks.png" alt="Ban Kan dashboard showing multiple tasks and agent output in one coordinated interface" width="100%" />
90
157
  <br />
91
158
  <strong>With Ban Kan</strong>
92
159
  <br />
@@ -133,7 +200,7 @@ Below is the same task moving through Ban Kan's workflow from creation to comple
133
200
  ### 1. Create the task
134
201
 
135
202
  <p align="center">
136
- <img src="docs/images/workflow/add_task.png" alt="Ban Kan add task modal used to create the Stripe payments task" />
203
+ <img src="https://raw.githubusercontent.com/stilero/bankan/HEAD/docs/images/workflow/add_task.png" alt="Ban Kan add task modal used to create the Stripe payments task" />
137
204
  </p>
138
205
 
139
206
  The developer creates a task in the dashboard and defines the story to be planned and executed.
@@ -141,7 +208,7 @@ The developer creates a task in the dashboard and defines the story to be planne
141
208
  ### 2. Planning starts
142
209
 
143
210
  <p align="center">
144
- <img src="docs/images/workflow/planning_stage_started.png" alt="Ban Kan planning stage showing the Stripe payments task as planning starts" />
211
+ <img src="https://raw.githubusercontent.com/stilero/bankan/HEAD/docs/images/workflow/planning_stage_started.png" alt="Ban Kan planning stage showing the Stripe payments task as planning starts" />
145
212
  </p>
146
213
 
147
214
  The planner agent picks up the task, analyzes the repository, and prepares an implementation plan.
@@ -149,7 +216,7 @@ The planner agent picks up the task, analyzes the repository, and prepares an im
149
216
  ### 3. Review and approve the plan
150
217
 
151
218
  <p align="center">
152
- <img src="docs/images/workflow/planning_approve_plan.png" alt="Ban Kan planning stage showing an approval-ready plan for the Stripe payments task" />
219
+ <img src="https://raw.githubusercontent.com/stilero/bankan/HEAD/docs/images/workflow/planning_approve_plan.png" alt="Ban Kan planning stage showing an approval-ready plan for the Stripe payments task" />
153
220
  </p>
154
221
 
155
222
  The generated plan is shown in the dashboard so the developer can approve it before any code is written.
@@ -157,7 +224,7 @@ The generated plan is shown in the dashboard so the developer can approve it bef
157
224
  ### 4. Implementation runs
158
225
 
159
226
  <p align="center">
160
- <img src="docs/images/workflow/implementing_task.png" alt="Ban Kan implementation stage showing the Stripe payments task being actively worked on by an agent" />
227
+ <img src="https://raw.githubusercontent.com/stilero/bankan/HEAD/docs/images/workflow/implementing_task.png" alt="Ban Kan implementation stage showing the Stripe payments task being actively worked on by an agent" />
161
228
  </p>
162
229
 
163
230
  After approval, the implementor agent creates its workspace, writes the code, and reports progress live in the UI.
@@ -165,7 +232,7 @@ After approval, the implementor agent creates its workspace, writes the code, an
165
232
  ### 5. Review stage
166
233
 
167
234
  <p align="center">
168
- <img src="docs/images/workflow/review_stage.png" alt="Ban Kan review stage showing the Stripe payments task being validated by a reviewer agent" />
235
+ <img src="https://raw.githubusercontent.com/stilero/bankan/HEAD/docs/images/workflow/review_stage.png" alt="Ban Kan review stage showing the Stripe payments task being validated by a reviewer agent" />
169
236
  </p>
170
237
 
171
238
  The reviewer agent validates the implementation, checks for issues, and decides whether the task is ready to move forward.
@@ -173,7 +240,7 @@ The reviewer agent validates the implementation, checks for issues, and decides
173
240
  ### 6. Done / ready for PR
174
241
 
175
242
  <p align="center">
176
- <img src="docs/images/workflow/done_stage.png" alt="Ban Kan done stage showing the Stripe payments task completed and ready for pull request creation" />
243
+ <img src="https://raw.githubusercontent.com/stilero/bankan/HEAD/docs/images/workflow/done_stage.png" alt="Ban Kan done stage showing the Stripe payments task completed and ready for pull request creation" />
177
244
  </p>
178
245
 
179
246
  Once review passes, the task moves to Done and can be used as the basis for a pull request.
@@ -182,72 +249,6 @@ Multiple tasks can move through these stages simultaneously with different agent
182
249
 
183
250
  ---
184
251
 
185
- ## Installation
186
-
187
- ### Run instantly
188
-
189
- ```bash
190
- npx @stilero/bankan
191
- ```
192
-
193
- ### Install globally
194
-
195
- ```bash
196
- npm install -g @stilero/bankan
197
- bankan
198
- ```
199
-
200
- ### Run from source
201
-
202
- ```bash
203
- git clone https://github.com/stilero/bankan.git
204
- cd bankan
205
-
206
- npm run install:all
207
- npm run setup
208
- npm run dev
209
- ```
210
-
211
- Ban Kan starts a local server, opens your browser automatically, and serves the dashboard from the same process.
212
-
213
- ---
214
-
215
- ## Requirements
216
-
217
- - Node.js >= 18
218
- - git
219
- - One AI CLI tool:
220
- - claude
221
- - codex
222
- - Native build tools for node-pty
223
-
224
- macOS: Xcode Command Line Tools
225
- Linux: build-essential
226
-
227
- ---
228
-
229
- ## Quick Start
230
-
231
- 1. Launch Ban Kan
232
-
233
- ```bash
234
- bankan
235
- ```
236
-
237
- 2. Complete the setup wizard
238
-
239
- 3. Add one or more local repositories
240
-
241
- 4. Create a task in the dashboard
242
-
243
- 5. Approve the generated plan
244
-
245
- 6. Watch agents implement and review the change
246
-
247
- 7. Optionally create a pull request
248
-
249
- ---
250
-
251
252
  ## How It Works
252
253
 
253
254
  ```mermaid
@@ -339,7 +340,7 @@ Useful scripts:
339
340
 
340
341
  - `npm run build` – build client bundle
341
342
  - `npm run dev` – run server + Vite client
342
- - `npm run setup` – interactive setup wizard
343
+ - `npm run setup` – interactive setup wizard for agent CLI selection and local runtime config
343
344
  - `npm run install:all` – install all dependencies
344
345
 
345
346
  ---
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stilero/bankan",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "type": "module",
5
5
  "description": "Run AI coding agents like a Kanban board. Plan, implement, review and ship code using parallel AI agents across your local repositories.",
6
6
  "license": "MIT",
package/scripts/setup.js CHANGED
@@ -102,20 +102,23 @@ async function main() {
102
102
  console.log(`\n ${red('⚠')} Neither claude nor codex CLI found. At least one is required.\n`);
103
103
  }
104
104
 
105
- // Check native build tools
106
- const platform = process.platform;
107
- if (platform === 'darwin') {
108
- try {
109
- execSync('xcode-select -p', { stdio: 'pipe' });
110
- console.log(` ${green('✓')} Xcode command line tools`);
111
- } catch {
112
- console.log(` ${yellow('')} Xcode CLI tools missing ${dim('(xcode-select --install)')}`);
113
- }
114
- } else if (platform === 'linux') {
115
- if (checkCommand('cc')) {
116
- console.log(` ${green('')} C compiler`);
117
- } else {
118
- console.log(` ${yellow('')} C compiler missing ${dim('(apt install build-essential)')}`);
105
+ if (!IS_PACKAGED_RUNTIME) {
106
+ console.log(` ${dim('Note: native build tools may be needed if npm has to compile node-pty during install.')}`);
107
+
108
+ const platform = process.platform;
109
+ if (platform === 'darwin') {
110
+ try {
111
+ execSync('xcode-select -p', { stdio: 'pipe' });
112
+ console.log(` ${green('')} Xcode command line tools available`);
113
+ } catch {
114
+ console.log(` ${yellow('⚠')} Xcode CLI tools not found ${dim('(only needed if node-pty builds from source: xcode-select --install)')}`);
115
+ }
116
+ } else if (platform === 'linux') {
117
+ if (checkCommand('cc')) {
118
+ console.log(` ${green('')} C compiler available`);
119
+ } else {
120
+ console.log(` ${yellow('⚠')} C compiler not found ${dim('(only needed if node-pty builds from source: apt install build-essential)')}`);
121
+ }
119
122
  }
120
123
  }
121
124
 
@@ -127,36 +130,11 @@ async function main() {
127
130
 
128
131
  // Step 3: Project Config
129
132
  console.log(bold(' Project Configuration\n'));
130
-
131
- const reposHint = existing.REPOS ? dim(` (${existing.REPOS}), Enter to keep`) : '';
132
- const reposAnswer = await ask(` REPOS (comma-separated git repo paths)${reposHint}: `);
133
- if (reposAnswer.trim()) {
134
- config.REPOS = reposAnswer.trim();
135
- }
136
-
137
- if (config.REPOS) {
138
- const repoPaths = config.REPOS.split(',').map(s => s.trim()).filter(Boolean);
139
- for (const repoPath of repoPaths) {
140
- try {
141
- execSync(`git -C "${repoPath}" rev-parse HEAD`, { stdio: 'pipe' });
142
- console.log(` ${green('✓')} ${repoPath} — valid git repo`);
143
- } catch {
144
- console.log(` ${yellow('⚠')} ${repoPath} — not a git repo or no commits yet`);
145
- }
146
- }
147
- }
148
-
149
- const ghRepoHint = existing.GITHUB_REPO ? dim(` (${existing.GITHUB_REPO}), Enter to keep`) : dim(' (optional, owner/repo)');
150
- const ghRepoAnswer = await ask(` GITHUB_REPO${ghRepoHint}: `);
151
- if (ghRepoAnswer.trim()) config.GITHUB_REPO = ghRepoAnswer.trim();
152
-
153
- const ghTokenHint = existing.GITHUB_TOKEN ? dim(' (already set, Enter to keep)') : dim(' (optional)');
154
- const ghTokenAnswer = await ask(` GITHUB_TOKEN${ghTokenHint}: `);
155
- if (ghTokenAnswer.trim()) config.GITHUB_TOKEN = ghTokenAnswer.trim();
156
-
133
+ console.log(` ${dim('Repositories are configured in the app under Settings → General → Repositories.')}`);
134
+ console.log(` ${dim('Use the workspace folder in Settings to choose where task workspaces are created.')}`);
157
135
  console.log('');
158
136
 
159
- // Step 5: Agent Config
137
+ // Step 4: Agent Config
160
138
  console.log(bold(' Agent Configuration\n'));
161
139
 
162
140
  const imp1Default = existing.IMPLEMENTOR_1_CLI || 'claude';
@@ -171,12 +149,9 @@ async function main() {
171
149
 
172
150
  console.log('');
173
151
 
174
- // Step 6: Write .env.local
152
+ // Step 5: Write .env.local
175
153
  mkdirSync(runtimePaths.dataDir, { recursive: true });
176
154
  const envLines = [
177
- `REPOS=${config.REPOS || ''}`,
178
- `GITHUB_REPO=${config.GITHUB_REPO || ''}`,
179
- `GITHUB_TOKEN=${config.GITHUB_TOKEN || ''}`,
180
155
  `IMPLEMENTOR_1_CLI=${config.IMPLEMENTOR_1_CLI || 'claude'}`,
181
156
  `IMPLEMENTOR_2_CLI=${config.IMPLEMENTOR_2_CLI || 'codex'}`,
182
157
  `PORT=${config.PORT}`,
@@ -193,7 +168,7 @@ async function main() {
193
168
  return;
194
169
  }
195
170
 
196
- // Step 7: Install Dependencies
171
+ // Step 6: Install Dependencies
197
172
  console.log(bold(' Installing dependencies...\n'));
198
173
 
199
174
  const installSteps = [
@@ -212,7 +187,7 @@ async function main() {
212
187
  }
213
188
  }
214
189
 
215
- // Step 8: Success
190
+ // Step 7: Success
216
191
  console.log('');
217
192
  console.log(green(bold(' ✓ Setup complete!')));
218
193
  console.log('');
@@ -220,6 +195,7 @@ async function main() {
220
195
  console.log(cyan(' npm start'));
221
196
  console.log('');
222
197
  console.log(` Then open: ${cyan('http://localhost:5173')}`);
198
+ console.log(` Configure repositories in ${cyan('Settings → General → Repositories')}.`);
223
199
  console.log('');
224
200
 
225
201
  rl.close();