@gamflaz/opencode-todolist 1.1.0 → 1.1.1
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 +61 -32
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -8,6 +8,7 @@ plus a TUI widget above the composer that shows progress in real time.
|
|
|
8
8
|
- Hierarchical tasks: any number of root tasks, each with up to 9 subtasks.
|
|
9
9
|
- Numeric IDs only: root `1`, `2`, … and subtasks `1.1`, `1.2`, … (`1.9` max).
|
|
10
10
|
- Small partial updates: change one item without resending the whole list.
|
|
11
|
+
- Scoped reads: pull the whole list, one branch, or a single item.
|
|
11
12
|
- Strict forward-only progress with enforced order between root tasks.
|
|
12
13
|
- Real-time TUI widget with collapse, scroll, `↻ Continue`, and clear controls.
|
|
13
14
|
- Bundled skills that teach the agent how to drive the tool.
|
|
@@ -40,22 +41,36 @@ dependencies, so `bun install` is required before use.
|
|
|
40
41
|
|
|
41
42
|
#### Operation fields
|
|
42
43
|
|
|
43
|
-
| Operation | Required fields
|
|
44
|
-
| --------- |
|
|
45
|
-
| `read` | `operation`
|
|
46
|
-
| `write` | `operation`, `todos`
|
|
47
|
-
| `update` | `operation`, `id`, `status`
|
|
44
|
+
| Operation | Required fields | Optional fields |
|
|
45
|
+
| --------- | --------------------------- | ------------------------------ |
|
|
46
|
+
| `read` | `operation` | `scope`, `target` |
|
|
47
|
+
| `write` | `operation`, `todos` | None; use `todos: []` to clear |
|
|
48
|
+
| `update` | `operation`, `id`, `status` | `content`, `priority`, `note` |
|
|
48
49
|
|
|
49
50
|
For `update`, send `null` for `priority` or `note` to remove the existing value.
|
|
50
51
|
|
|
51
52
|
### Read
|
|
52
53
|
|
|
54
|
+
By default `read` returns the whole list. An optional `scope` narrows it to one
|
|
55
|
+
branch or one row, which keeps the response small on a long list.
|
|
56
|
+
|
|
57
|
+
| `scope` | `target` | Returns |
|
|
58
|
+
| ---------- | ------------------- | -------------------------------------------- |
|
|
59
|
+
| `all` | — | the whole list (default) |
|
|
60
|
+
| `root` | a root id, e.g. `1` | that root and all of its subtasks |
|
|
61
|
+
| `children` | a subtask id, `1.1` | that subtask, with its root shown as context |
|
|
62
|
+
| `item` | `1` or `1.1` | only that row |
|
|
63
|
+
|
|
64
|
+
`target` is only valid together with `scope: "root"`, `"children"`, or
|
|
65
|
+
`"item"` — passing it without one is rejected, so a scope can never be silently
|
|
66
|
+
ignored.
|
|
67
|
+
|
|
68
|
+
The whole list:
|
|
69
|
+
|
|
53
70
|
```json
|
|
54
71
|
{ "operation": "read" }
|
|
55
72
|
```
|
|
56
73
|
|
|
57
|
-
Returns the current list as a progress tree:
|
|
58
|
-
|
|
59
74
|
```text
|
|
60
75
|
[~] 1. Design architecture (1/2)
|
|
61
76
|
↳ note: Keep the hierarchy shallow
|
|
@@ -64,9 +79,35 @@ Returns the current list as a progress tree:
|
|
|
64
79
|
[ ] 2. Write tests
|
|
65
80
|
```
|
|
66
81
|
|
|
82
|
+
One branch (`root`):
|
|
83
|
+
|
|
84
|
+
```json
|
|
85
|
+
{ "operation": "read", "scope": "root", "target": 1 }
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
A single subtask, with its root as context (`children`):
|
|
89
|
+
|
|
90
|
+
```json
|
|
91
|
+
{ "operation": "read", "scope": "children", "target": 1.2 }
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
```text
|
|
95
|
+
[~] 1. Design architecture (1/2)
|
|
96
|
+
[~] 1.2 API endpoints
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
One row with no context (`item`):
|
|
100
|
+
|
|
101
|
+
```json
|
|
102
|
+
{ "operation": "read", "scope": "item", "target": 1.2 }
|
|
103
|
+
```
|
|
104
|
+
|
|
67
105
|
Markers: `[ ]` pending, `[~]` in progress, `[x]` completed, `[-]` cancelled,
|
|
68
106
|
`[!]` error. Notes render under their item as `↳ note: …`.
|
|
69
107
|
|
|
108
|
+
Even when a scope hides rows, the root keeps its real `(completed/total)` count —
|
|
109
|
+
only the display is narrowed.
|
|
110
|
+
|
|
70
111
|
### Write
|
|
71
112
|
|
|
72
113
|
`write` initializes a session or clears it. A non-empty list is only accepted
|
|
@@ -100,14 +141,14 @@ Clear the current list:
|
|
|
100
141
|
|
|
101
142
|
#### Todo item fields
|
|
102
143
|
|
|
103
|
-
| Field | Type
|
|
104
|
-
| ---------- |
|
|
105
|
-
| `id` | number
|
|
106
|
-
| `content` | string
|
|
107
|
-
| `status` | enum
|
|
108
|
-
| `priority` | `high` \| `medium` \| `low`
|
|
109
|
-
| `note` | string
|
|
110
|
-
| `children` | array of child items
|
|
144
|
+
| Field | Type | Required | Description |
|
|
145
|
+
| ---------- | --------------------------- | ------------- | --------------------------------------------------------------- |
|
|
146
|
+
| `id` | number | Yes | Root: positive integer. Child: `<root>.<n>`, such as `1.1`. |
|
|
147
|
+
| `content` | string | Yes | Task summary. |
|
|
148
|
+
| `status` | enum | Yes | `pending`, `in_progress`, `completed`, `cancelled`, or `error`. |
|
|
149
|
+
| `priority` | `high` \| `medium` \| `low` | No | Optional priority label. |
|
|
150
|
+
| `note` | string | No | Technical context or evidence. |
|
|
151
|
+
| `children` | array of child items | No, root only | Up to 9 subtasks. Child items cannot contain more children. |
|
|
111
152
|
|
|
112
153
|
Root IDs must be unique. A child ID must start with its parent root ID.
|
|
113
154
|
|
|
@@ -129,11 +170,11 @@ Root IDs must be unique. A child ID must start with its parent root ID.
|
|
|
129
170
|
|
|
130
171
|
| Field | Required | Notes |
|
|
131
172
|
| ---------- | -------- | ------------------------------------------------------------ |
|
|
132
|
-
| `id` | Yes | Root number or subtask number (`1`, `1.1`).
|
|
133
|
-
| `status` | Yes | `pending`, `in_progress`, `completed`, `cancelled`, `error`.
|
|
134
|
-
| `content` | No | One-line summary shown in the widget.
|
|
135
|
-
| `note` | No | Technical context or evidence. Pass `null` to remove.
|
|
136
|
-
| `priority` | No | `high`, `medium`, or `low`. Pass `null` to remove.
|
|
173
|
+
| `id` | Yes | Root number or subtask number (`1`, `1.1`). |
|
|
174
|
+
| `status` | Yes | `pending`, `in_progress`, `completed`, `cancelled`, `error`. |
|
|
175
|
+
| `content` | No | One-line summary shown in the widget. |
|
|
176
|
+
| `note` | No | Technical context or evidence. Pass `null` to remove. |
|
|
177
|
+
| `priority` | No | `high`, `medium`, or `low`. Pass `null` to remove. |
|
|
137
178
|
|
|
138
179
|
## Skills
|
|
139
180
|
|
|
@@ -152,15 +193,3 @@ bun run compile # rebuild dist/ (tsc + Solid JSX transform)
|
|
|
152
193
|
`bun run compile` must be used instead of `bun run build`: the raw `tsc` pass
|
|
153
194
|
alone leaves intermediate `.jsx` files in `dist/`, which Bun then prefers over
|
|
154
195
|
the compiled `.js` and reports as `No renderer found` / `ENOENT ... dist/tui.jsx`.
|
|
155
|
-
|
|
156
|
-
## Publishing notes
|
|
157
|
-
|
|
158
|
-
`dist/`, `index.js`, and `tui.js` are generated build output and are not
|
|
159
|
-
committed. They reach users through the npm tarball: npm runs `prepare`
|
|
160
|
-
(`bun run compile`) before packing, and `files` ships the built `dist/`
|
|
161
|
-
directory. The `opencode plugin add` installer skips lifecycle scripts
|
|
162
|
-
(`ignoreScripts: true`), so the tarball — not a post-install build — must
|
|
163
|
-
contain `dist/`.
|
|
164
|
-
|
|
165
|
-
Before publishing, run `bun run check && bun run compile` and confirm
|
|
166
|
-
`dist/` contains no `.jsx` files.
|