boxglow 0.5.2 → 0.6.0
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/README.md +33 -28
- package/bin/boxglow.js +7424 -3005
- package/dist/assets/index-DSK28cPU.js +3479 -0
- package/dist/assets/index-T2Nrf6LN.css +1 -0
- package/dist/index.html +2 -2
- package/docs/AGENTS_SNIPPET.md +70 -17
- package/examples/logic-daw/boxglow.json +37 -37
- package/examples/notes-app/boxglow.json +20 -20
- package/package.json +1 -1
- package/dist/assets/index-B0rLWujQ.css +0 -1
- package/dist/assets/index-qzdNjZOL.js +0 -3465
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# Boxglow
|
|
4
4
|
|
|
5
5
|
**Plans and progress as boxes and wires. See at a glance what your AI agents and your team are working on.**
|
|
6
|
-
Tasks are boxes with inputs and outputs; a box goes New (BlackBox:
|
|
6
|
+
Tasks are boxes with inputs and outputs; a box goes New (BlackBox: output decided but nothing inside yet) → In Progress (GrayBox) → Done (WhiteBox) as its output gets confirmed, and the card header shows the state at a glance. Humans and AI agents (Claude Code, Codex, ...) edit the same `boxglow.json`; the UI shows who is working where, what is waiting for your decision, and what is left. The CLI alone is enough for an agent; the UI is for people.
|
|
7
7
|
|
|
8
8
|
**計画と進捗を、ボックスと線で。AI エージェントとチームが今どこを作っていて、何が終わり、どこで判断を待っているかが一目でわかる。**
|
|
9
9
|
|
|
@@ -11,29 +11,27 @@ Tasks are boxes with inputs and outputs; a box goes New (BlackBox: dark, output
|
|
|
11
11
|
- CLI for agents: `npx boxglow` (status / start / done / split / ask / answer ...)
|
|
12
12
|
- License: MIT
|
|
13
13
|
|
|
14
|
-
##
|
|
14
|
+
## What's new in 0.6.0
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
- **A diagram you can read at a glance**: boxes are cards (category, title, state, then inputs on the left and outputs on the right) with a header colored by state. In View mode boxes are laid out in dependency order as numbered stages; a vertical, top-to-bottom view is one click away. Your own layout in the file is untouched and is used in Edit mode.
|
|
17
|
+
- **Several agents at once**: claims (opt-in per plan) let an agent or sub-agent hold a box for a while so others leave it alone. Edits to different boxes merge automatically; only a box both sides changed asks you to choose.
|
|
18
|
+
- **Sync between machines (experimental, off by default)**: "Start syncing" in `serve` and the VS Code extension, plans listed on the server, delete with 30-day restore.
|
|
19
|
+
- **Saving moves only what changed**: adding, moving or growing a box pushes only the boxes it now overlaps; the rest of the plan keeps its positions.
|
|
17
20
|
|
|
18
|
-
|
|
19
|
-
- **Scope:** scope B12 --goal "Goal" --non-goals "Excluded" --acceptance "Checks" --consult "When to ask" records four optional fields. Read them at the start of context, or expand Current scope in the inspector. Edit through ⋯ → Edit work scope. focus B12 prioritizes that box and its descendants; focus none clears it. Read-only scope/focus/policy commands take no changing options.
|
|
20
|
-
- **Resume:** current state comes first. Completed handoff notes show only a count unless --include-completed is requested. Descriptions and notes show when they were written and whether they predate the status change; legacy dates stay unknown. Done can suggest reviewing an outdated description, but never rewrites it.
|
|
21
|
+
Details and compatibility notes: [CHANGELOG.md](CHANGELOG.md). Update the CLI, `serve` and the VS Code extension (0.5.0) together.
|
|
21
22
|
|
|
22
|
-
|
|
23
|
+
### Keeping agent work on track
|
|
23
24
|
|
|
24
|
-
**
|
|
25
|
+
- **Readiness**: `resume`, `status --brief` and the Next tab separate boxes that are ready from boxes waiting for inputs and name the missing inputs. `start` warns on missing inputs (`--reason` records why); `policy --start reject --done reject` makes it strict for one plan. People are never blocked.
|
|
26
|
+
- **Scope**: `scope <box> --goal ... --non-goals ... --acceptance ... --consult ...` records what the work is and is not; it leads the output of `context`. `focus <box>` puts one box and its descendants first.
|
|
27
|
+
- **Resume**: `resume` shows the current state and the latest handoff notes first, so the next session (or another agent) picks up where the last one stopped.
|
|
25
28
|
|
|
26
|
-
### 日本語:
|
|
29
|
+
### 日本語: 0.6.0 の要点
|
|
27
30
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
- scope B12 --goal "達成すること" --non-goals "今回扱わないこと" --acceptance "完了条件" --consult "相談条件" で任意の4項目を記録します。context の先頭と詳細パネルから読め、画面の ⋯ →「作業範囲を編集」で編集できます。空欄は普段の画面に出しません。none または空文字で項目を消せます。
|
|
33
|
-
- focus B12 は対象と配下を優先し、対象外は別の組に残します。focus none で解除できます。guard 有効時の scope/focus/policy 変更には最新の --context-token を付け、出力の新しいトークンを次に使います。
|
|
34
|
-
- resume は現況を先に表示し、完了した引き継ぎは件数だけ出します。--include-completed または画面の展開ボタンで履歴を読めます。説明・引き継ぎの日時と状態変更との前後関係を示し、古い記録の日時は推測しません。
|
|
35
|
-
- Done 後に説明の古い状況が残る可能性があるときは見直しを促します。本文は自動変更しません。完了条件の達成や成果物の品質を自動で証明するものではありません。
|
|
36
|
-
- **旧版との併用:** 0.4.2以前は新しい制御を行わず、保存すると計画の確認設定・優先対象を落とします。新機能を使う計画の書き手は対応ビルドに揃えてください。今回は版番号変更・公開を含みません。
|
|
31
|
+
- **一目で読める図**: ボックスは、分類・題名・状態・入力 (左)・出力 (右) のカードになり、見出しの色で状態がわかります。View では依存の順に「工程」として並び、縦 (上から下) の表示にも切り替えられます。ファイルの配置は変わらず、Edit ではその配置を使います。
|
|
32
|
+
- **複数の AI の並行作業**: 受け持ち (計画ごとに有効化) で、エージェントやサブエージェントが箱を一定時間持てます。別の箱への編集は自動で統合し、同じ箱を両側で変えたときだけ選びます。
|
|
33
|
+
- **端末間の同期 (試験的・既定はオフ)**: `serve` と VS Code 拡張の「同期を始める」、サーバー上の計画の一覧、削除と 30 日間の復元。
|
|
34
|
+
- **保存で動くのは変えた箱の周りだけ**: 追加・移動・拡大した箱が新たに重なった箱だけを押し出し、ほかの配置は保ちます。
|
|
37
35
|
|
|
38
36
|
## Quick start with an AI agent
|
|
39
37
|
|
|
@@ -85,6 +83,11 @@ MCP provides `boxglow_context`, `boxglow_checkpoint`, and `contextToken` on guar
|
|
|
85
83
|
| `guard on\|off` | Enable or disable context checks (setup-agent enables them) |
|
|
86
84
|
| `resume [--json]` | Handoff notes, answers not yet acknowledged and next actions in one overview (read-only) |
|
|
87
85
|
| `status [--brief]` | Markdown summary (`--brief` omits the full tree): pending decisions, who is working where, tree with ids, next candidates |
|
|
86
|
+
| `context <block>` | Context for the box (parents, input providers, decisions, handoff) with its `readiness` (ready / needs detail / waiting) |
|
|
87
|
+
| `claim <block>` | Hold a box without starting it (before adding detail or splitting; "not needed" when claims are off) |
|
|
88
|
+
| `review-split <parent>` / `split-ok <parent> --note` | Material and checklist for reviewing a breakdown / record the review with its basis (goes stale when the material changes) |
|
|
89
|
+
| `review-box <block>` / `box-ok <block> --note` | The same for a box's readiness (target, deliverable, checks, inputs, upstream branch answers) |
|
|
90
|
+
| `lint [block] [--strict]` | Must-fix gaps (missing expect / acceptance, parent outputs nobody makes, exclusive branch paths both required) and review candidates (single child, unconnected outputs, token entries) |
|
|
88
91
|
| `start <block> --note` / `done <block> --artifact name=url` | Record work in progress / completion with deliverables |
|
|
89
92
|
| `split <block> --spec '<json>'` | Decompose a box into child boxes with named inputs / outputs and connections |
|
|
90
93
|
| `ask <block> "question" --options "A\|B"` / `answer <block> "A"` | Ask a human for a decision / answer it |
|
|
@@ -97,7 +100,7 @@ MCP provides `boxglow_context`, `boxglow_checkpoint`, and `contextToken` on guar
|
|
|
97
100
|
| `export --out docs/ROADMAP.md` / `export --format json` | Write the whole plan as Markdown (or JSON) |
|
|
98
101
|
| `check` / `artifact` | Re-find deliverables after renames; attach a deliverable without finishing |
|
|
99
102
|
| `merge <base> <ours> <theirs>` / `git-setup` | Box-level 3-way merge for Git (see below) |
|
|
100
|
-
| `blocked`, `review`, `leave`, `show`, `log`, `layout`, `validate`, `prompt`, `group*` | See `npx boxglow help` |
|
|
103
|
+
| `blocked`, `review`, `leave`, `show`, `list`, `log`, `layout`, `validate`, `prompt`, `group*` | See `npx boxglow help` |
|
|
101
104
|
|
|
102
105
|
### Codex setup
|
|
103
106
|
|
|
@@ -153,7 +156,7 @@ The server finds `boxglow.json` like the CLI does (current directory upwards, or
|
|
|
153
156
|
|
|
154
157
|
## VS Code extension
|
|
155
158
|
|
|
156
|
-
Install **Boxglow** from the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=sukima.boxglow-vscode): search for "Boxglow" in the Extensions view, or run `code --install-extension sukima.boxglow-vscode`. Keep the extension and the CLI on matching releases (extension 0.
|
|
159
|
+
Install **Boxglow** from the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=sukima.boxglow-vscode): search for "Boxglow" in the Extensions view, or run `code --install-extension sukima.boxglow-vscode`. Keep the extension and the CLI on matching releases (extension 0.5.0 goes with boxglow 0.6.0).
|
|
157
160
|
|
|
158
161
|
`vscode/` holds the extension's source. It opens `boxglow.json` as the same diagram inside the editor (custom editor "Boxglow"; right-click the file or use the editor title button / command *Boxglow: Open boxglow.json as a diagram*). The diagram follows the file when the CLI or an agent writes it, edits in the diagram are written back, and light / dark follow the VS Code theme. To build it yourself: `npm run build:vscode` (bundles the web app into `vscode/media/`), then `cd vscode && npm run package` (`.vsix`, install via *Extensions: Install from VSIX...*).
|
|
159
162
|
|
|
@@ -190,9 +193,9 @@ Boxglow never uploads your files. A deliverable is a **reference**: a URL, or fo
|
|
|
190
193
|
|
|
191
194
|
| State | Meaning | Look |
|
|
192
195
|
|---|---|---|
|
|
193
|
-
| New (BlackBox) | Output decided, nothing inside yet |
|
|
194
|
-
| In Progress (GrayBox) | Being decomposed or worked on |
|
|
195
|
-
| Done (WhiteBox) | Output confirmed with a deliverable |
|
|
196
|
+
| New (BlackBox) | Output decided, nothing inside yet | Slate header, ○ icon |
|
|
197
|
+
| In Progress (GrayBox) | Being decomposed or worked on | Teal header, ◐ icon, progress bar |
|
|
198
|
+
| Done (WhiteBox) | Output confirmed with a deliverable | Light header, ● with a check |
|
|
196
199
|
|
|
197
200
|
Expanded boxes (containers) are drawn as frames: the shallower the level, the thicker the border, and the fill alternates per level so nesting is visible. Wires are thin and use colors never used for borders (thick green = the source already has a deliverable, thin amber = not yet). Selecting a wire highlights the whole signal in orange, through parent ports, from the original output to the final input.
|
|
198
201
|
|
|
@@ -203,12 +206,14 @@ Expanded boxes (containers) are drawn as frames: the shallower the level, the th
|
|
|
203
206
|
- An input with no source is automatically promoted to the project's input (dashed line) until someone connects it.
|
|
204
207
|
- Activity badges: CC (Claude Code) / CX (Codex) / human, states working / blocked / needs decision / waiting review. Decisions are answered in the UI and read back by the agent.
|
|
205
208
|
- Ready inputs: a wire whose source already has a deliverable (or is done) is drawn thick and green, and the input name gets a dot, so you can see at a glance which inputs are available.
|
|
206
|
-
- Me / unassigned: pick yourself in the drawer; your boxes get a teal stripe. Owners are not printed on boxes (open the box to see them); filter by owner or "unassigned" in the drawer.
|
|
209
|
+
- Me / unassigned: pick yourself in the drawer; your boxes get a teal stripe. Owners are not printed on boxes (open the box to see them); filter by owner or "unassigned" in the drawer. The table icon (In charge) next to the horizontal / vertical switch at the bottom left lists one member's (or the unassigned) boxes as a sortable table with due dates, estimates, waiting inputs and open questions; `boxglow list --assignee <name>` prints the same table.
|
|
207
210
|
- Decisions: `ask` records a question with candidates; the answer is kept together with the candidates that were not chosen, and `reopen` moves an answer to the history so you can change course later.
|
|
208
211
|
- Issue link: a box can carry a JIRA / Redmine / GitHub issue URL (`--issue`, or the More tab); the key (PROJ-123, #45) is shown on the box and opens the issue.
|
|
209
212
|
- Input groups: project inputs can be grouped (e.g. "PCIe specs", "DDR specs"); each group is its own input node, and a group can be exported / imported as `*.boxglow-inputs.json` to reuse in another project (`boxglow group`, `group-set`, `group-export`, `group-import`).
|
|
210
|
-
- Boxes never overlap: siblings are pushed
|
|
211
|
-
-
|
|
213
|
+
- Boxes never overlap: when a box is added, moved or grows, only the siblings it now overlaps are pushed right or down; the grown box stays put and the rest of the plan keeps its positions.
|
|
214
|
+
- Readiness: "the inputs are in" and "the work is concrete enough to start" are judged separately. An output carries a planned deliverable (`expect`, e.g. `file:src/auth/callback.ts`; `note` for an investigation) next to the real deliverables, and the acceptance criteria live in the scope. `boxglow context` prints the `readiness` (ready / needs detail / waiting, with reasons and the next commands), candidates are grouped the same way, and the canvas, side panel and In charge table show "needs detail". `start` warns on such a box (`policy --unprepared reject` refuses AI starts; a reason does not bypass it), and `boxglow claim <block>` holds a box for planning without starting it. `split` takes `expect` / `acceptance` per child (only for the ones you start now) and `parentMakes` for outputs the parent makes itself.
|
|
215
|
+
- Branches: a branch box (+ Block → Branch, or `boxglow branch "<title>" --options "A|B"`) shows a fork that is not decided yet (an existing box can be turned into one from its ⋯ menu, or `boxglow branch --box <block>`). Each option is a path (output). Boxes on the paths wait for the answer; once you pick a path (Choose a path at the top of the side panel, or `boxglow answer`), the paths not chosen are skipped (faded, left out of progress, next candidates and lists). A branch is drawn as a card with cut corners and an "IF" diamond on its edge. Where paths come together, a merge part drawn like an OR gate (+ Block → Merge, or `boxglow join`) passes the work on as soon as any one path arrives.
|
|
216
|
+
- Edit / View: a top-bar toggle; in View mode drag-and-drop editing and the Delete key are off. View lays boxes out in dependency order as numbered stages (left to right, or top to bottom with the vertical view in the zoom panel); Edit shows and edits the layout saved in the file. You cannot zoom out further than the whole diagram (Fit), and selecting a box or opening a panel keeps your zoom and position.
|
|
212
217
|
- Short IDs: every box gets `B1`, `B2`, ... shown on the box; search by ID or title from the top bar (`/`), and use the ID in the CLI.
|
|
213
218
|
- Schedule: start date, due date, estimate and actual hours per box; overdue boxes are flagged.
|
|
214
219
|
- One source of truth: an input's description is the description of the output it is connected to (edit it there); only unconnected inputs carry their own text.
|
|
@@ -236,7 +241,7 @@ Boxglow is open core: everything that works with the one file on your machine (w
|
|
|
236
241
|
|
|
237
242
|
```bash
|
|
238
243
|
npm install
|
|
239
|
-
npm run dev # http://localhost:5173/
|
|
244
|
+
npm run dev # http://localhost:5173/
|
|
240
245
|
npm test # Vitest (graph rules, merge, routing helpers)
|
|
241
246
|
npm run build # web app -> dist/, CLI -> bin/boxglow.js
|
|
242
247
|
node bin/boxglow.js help
|
|
@@ -248,7 +253,7 @@ The CLI speaks the plan's language: `npx boxglow init --lang en` (or `ja`; the d
|
|
|
248
253
|
|
|
249
254
|
URL parameters: `?demo=1` (sample), `&readonly=1`, `&embed=1`, `&theme=dark|light`, `&lang=en|ja` (UI language; otherwise the browser language, remembered once switched from the ⋯ menu), `?view=article` (= demo + embed + readonly), `#p=<id>`.
|
|
250
255
|
|
|
251
|
-
The web app is hosted on Cloudflare Pages (`npm run deploy:pages` builds with `VITE_BASE=/` into `dist-pages/` and uploads it). Any static host works:
|
|
256
|
+
The web app is hosted on Cloudflare Pages (`npm run deploy:pages` builds with `VITE_BASE=/` into `dist-pages/` and uploads it). Any static host works: the default build uses relative paths, so `dist/` can be served from any path (set `VITE_BASE` to use absolute paths).
|
|
252
257
|
|
|
253
258
|
Browser checks live in `e2e/` (`npm run e2e`): wires never crossing boxes on every tab of the example plans (also with squeezed positions), tab switching time, double-click / selection / decision flows, the English UI and the VS Code webview mode. They need Playwright from outside this repository (`PLAYWRIGHT=<path>`; see `e2e/run.sh`) and are not part of CI; the unit and property tests (`npm test`) are.
|
|
254
259
|
|