opencode-backlog 0.1.6 → 0.2.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 +39 -15
- package/dist/backlog.d.ts +21 -6
- package/dist/backlog.js +144 -24
- package/dist/backlog.js.map +1 -1
- package/dist/index.js +152 -31
- package/dist/index.js.map +1 -1
- package/dist/input.d.ts +3 -2
- package/dist/input.js +12 -4
- package/dist/input.js.map +1 -1
- package/dist/tui.js +410 -158
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -10,18 +10,24 @@ Published package: [opencode-backlog on npm](https://www.npmjs.com/package/openc
|
|
|
10
10
|
|
|
11
11
|
## What It Does
|
|
12
12
|
|
|
13
|
-
The plugin stores tasks in `BACKLOG.json` at the project root.
|
|
13
|
+
The plugin stores tasks and ordered categories in `BACKLOG.json` at the project root.
|
|
14
|
+
|
|
15
|
+
New backlogs contain these categories:
|
|
14
16
|
|
|
15
17
|
- `todo`
|
|
16
18
|
- `doing`
|
|
17
19
|
- `done`
|
|
18
20
|
|
|
19
|
-
|
|
21
|
+
You can add, rename, color, reorder, purge, and remove categories. Each category has a stable ID and a modifiable title.
|
|
22
|
+
|
|
23
|
+
The server plugin manages tasks and categories. The TUI plugin provides:
|
|
20
24
|
|
|
21
25
|
- A live backlog summary below the sidebar context.
|
|
22
26
|
- A `Browse backlog` command in the command palette.
|
|
23
27
|
- `/backlog` and `/tasks` slash commands.
|
|
24
|
-
- Task details and
|
|
28
|
+
- Task details and category changes from the TUI.
|
|
29
|
+
- `/backlog-purge` to remove every task from a selected category.
|
|
30
|
+
- `/backlog-categories` to manage categories.
|
|
25
31
|
|
|
26
32
|
## Requirements
|
|
27
33
|
|
|
@@ -121,13 +127,13 @@ Reopen the TUI to load the TUI plugin.
|
|
|
121
127
|
Ask the agent to manage tasks in normal language:
|
|
122
128
|
|
|
123
129
|
```text
|
|
124
|
-
Add a
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
130
|
+
Add a Todo task to document the release process.
|
|
131
|
+
Add a Blocked category after Doing.
|
|
132
|
+
Move the release task to Blocked.
|
|
133
|
+
Purge all tasks in Done.
|
|
128
134
|
```
|
|
129
135
|
|
|
130
|
-
Open the command palette and select `Browse backlog` to inspect tasks. Select a task to view its ID, notes, and
|
|
136
|
+
Open the command palette and select `Browse backlog` to inspect tasks. Select a task to view its ID, notes, and category.
|
|
131
137
|
|
|
132
138
|
Run `/backlog` or `/tasks` to open the same browser directly.
|
|
133
139
|
|
|
@@ -135,9 +141,10 @@ The backlog browser provides these shortcuts:
|
|
|
135
141
|
|
|
136
142
|
- `Enter` opens the selected task details.
|
|
137
143
|
- `n` creates a task.
|
|
138
|
-
- `c` changes the selected task
|
|
144
|
+
- `c` changes the selected task category.
|
|
139
145
|
- `e` edits the selected task.
|
|
140
146
|
- `d` deletes the selected task after confirmation.
|
|
147
|
+
- `p` purges all tasks from a selected category after confirmation.
|
|
141
148
|
|
|
142
149
|
Click a sidebar task to open its details. The detail dialog provides `c`, `e`, and `d` for the same actions.
|
|
143
150
|
|
|
@@ -145,21 +152,32 @@ Click a sidebar task to open its details. The detail dialog provides `c`, `e`, a
|
|
|
145
152
|
|
|
146
153
|
| Tool | Purpose |
|
|
147
154
|
| --- | --- |
|
|
148
|
-
| `backlog_list` | List
|
|
149
|
-
| `backlog_add` | Add a task at an optional
|
|
155
|
+
| `backlog_list` | List categories and tasks, with an optional category ID filter. |
|
|
156
|
+
| `backlog_add` | Add a task at an optional category and position. |
|
|
150
157
|
| `backlog_update` | Change a task title or notes. |
|
|
151
|
-
| `backlog_move` | Change a task
|
|
158
|
+
| `backlog_move` | Change a task category or position. |
|
|
152
159
|
| `backlog_remove` | Permanently remove a task. |
|
|
160
|
+
| `backlog_category_add` | Add a category with a stable ID, title, and optional color. |
|
|
161
|
+
| `backlog_category_update` | Change a category title or color. |
|
|
162
|
+
| `backlog_category_move` | Change a category position. |
|
|
163
|
+
| `backlog_category_remove` | Remove an empty category. |
|
|
164
|
+
| `backlog_category_purge` | Permanently remove all tasks from a category. |
|
|
153
165
|
|
|
154
166
|
The agent receives task IDs from `backlog_list` and from each mutation result.
|
|
155
167
|
|
|
156
168
|
## Backlog File
|
|
157
169
|
|
|
158
|
-
The plugin creates `BACKLOG.json` when the first task is added:
|
|
170
|
+
The plugin creates `BACKLOG.json` when the first task or category is added:
|
|
159
171
|
|
|
160
172
|
```json
|
|
161
173
|
{
|
|
162
|
-
"version":
|
|
174
|
+
"version": 2,
|
|
175
|
+
"categories": [
|
|
176
|
+
{ "id": "todo", "title": "Todo", "color": "subdued" },
|
|
177
|
+
{ "id": "doing", "title": "Doing", "color": "warning" },
|
|
178
|
+
{ "id": "blocked", "title": "Blocked", "color": "error" },
|
|
179
|
+
{ "id": "done", "title": "Done", "color": "success" }
|
|
180
|
+
],
|
|
163
181
|
"items": [
|
|
164
182
|
{
|
|
165
183
|
"id": "c50437e3-2a57-424d-9257-32ec432145a9",
|
|
@@ -171,7 +189,13 @@ The plugin creates `BACKLOG.json` when the first task is added:
|
|
|
171
189
|
}
|
|
172
190
|
```
|
|
173
191
|
|
|
174
|
-
|
|
192
|
+
The category array defines category order. The item array defines task order inside each category.
|
|
193
|
+
|
|
194
|
+
Category IDs stay stable when titles change. The plugin rejects tasks that reference an unknown category ID.
|
|
195
|
+
|
|
196
|
+
Category colors use theme-aware values: `default`, `subdued`, `error`, `warning`, `success`, or `info`.
|
|
197
|
+
|
|
198
|
+
The plugin reads version 1 files with the default categories. The next backlog change writes the file as version 2.
|
|
175
199
|
|
|
176
200
|
Commit `BACKLOG.json` when the backlog must follow the project. Ignore it when the backlog must remain local.
|
|
177
201
|
|
package/dist/backlog.d.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
export declare const BACKLOG_FILE = "BACKLOG.json";
|
|
2
|
-
export declare const
|
|
3
|
-
export type
|
|
2
|
+
export declare const CATEGORY_COLORS: readonly ["default", "subdued", "error", "warning", "success", "info"];
|
|
3
|
+
export type CategoryColor = (typeof CATEGORY_COLORS)[number];
|
|
4
|
+
export interface Category {
|
|
5
|
+
readonly id: string;
|
|
6
|
+
readonly title: string;
|
|
7
|
+
readonly color?: CategoryColor;
|
|
8
|
+
}
|
|
9
|
+
export type Status = string;
|
|
4
10
|
export interface BacklogItem {
|
|
5
11
|
readonly id: string;
|
|
6
12
|
readonly title: string;
|
|
@@ -8,12 +14,21 @@ export interface BacklogItem {
|
|
|
8
14
|
readonly status: Status;
|
|
9
15
|
}
|
|
10
16
|
export interface Backlog {
|
|
11
|
-
readonly version:
|
|
17
|
+
readonly version: 2;
|
|
18
|
+
readonly categories: readonly Category[];
|
|
12
19
|
readonly items: readonly BacklogItem[];
|
|
13
20
|
}
|
|
21
|
+
export declare const DEFAULT_CATEGORIES: readonly Category[];
|
|
14
22
|
export declare const EMPTY_BACKLOG: Backlog;
|
|
15
|
-
export declare function isStatus(value: unknown): value is Status;
|
|
23
|
+
export declare function isStatus(backlog: Backlog, value: unknown): value is Status;
|
|
24
|
+
export declare function isCategoryColor(value: unknown): value is CategoryColor;
|
|
16
25
|
export declare function parseBacklog(value: unknown): Backlog;
|
|
17
|
-
export declare function sortByStatus(items: readonly BacklogItem[]): BacklogItem[];
|
|
18
|
-
export declare function moveItem(items: readonly BacklogItem[], id: string, status: Status | undefined, position: number | undefined): BacklogItem[];
|
|
26
|
+
export declare function sortByStatus(items: readonly BacklogItem[], categories: readonly Category[]): BacklogItem[];
|
|
27
|
+
export declare function moveItem(items: readonly BacklogItem[], id: string, status: Status | undefined, position: number | undefined, categories: readonly Category[]): BacklogItem[];
|
|
19
28
|
export declare function describeBacklog(backlog: Backlog, statuses?: readonly Status[]): string;
|
|
29
|
+
export declare function addCategory(backlog: Backlog, category: Category, position?: number): Backlog;
|
|
30
|
+
export declare function renameCategory(backlog: Backlog, id: string, title: string): Backlog;
|
|
31
|
+
export declare function setCategoryColor(backlog: Backlog, id: string, color: CategoryColor): Backlog;
|
|
32
|
+
export declare function moveCategory(backlog: Backlog, id: string, position: number): Backlog;
|
|
33
|
+
export declare function removeCategory(backlog: Backlog, id: string): Backlog;
|
|
34
|
+
export declare function purgeCategory(backlog: Backlog, id: string): Backlog;
|
package/dist/backlog.js
CHANGED
|
@@ -1,21 +1,54 @@
|
|
|
1
1
|
export const BACKLOG_FILE = "BACKLOG.json";
|
|
2
|
-
export const
|
|
3
|
-
export const
|
|
2
|
+
export const CATEGORY_COLORS = ["default", "subdued", "error", "warning", "success", "info"];
|
|
3
|
+
export const DEFAULT_CATEGORIES = [
|
|
4
|
+
{ id: "todo", title: "Todo", color: "subdued" },
|
|
5
|
+
{ id: "doing", title: "Doing", color: "warning" },
|
|
6
|
+
{ id: "done", title: "Done", color: "success" },
|
|
7
|
+
];
|
|
8
|
+
export const EMPTY_BACKLOG = { version: 2, categories: DEFAULT_CATEGORIES, items: [] };
|
|
4
9
|
function isRecord(value) {
|
|
5
10
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
6
11
|
}
|
|
7
|
-
|
|
8
|
-
|
|
12
|
+
function validateCategory(category, index) {
|
|
13
|
+
const label = index === undefined ? "Category" : `Backlog category ${index}`;
|
|
14
|
+
if (!isRecord(category))
|
|
15
|
+
throw new Error(`${label} must be an object`);
|
|
16
|
+
if (typeof category.id !== "string" || category.id.trim().length === 0) {
|
|
17
|
+
throw new Error(`${label} must have a non-empty id`);
|
|
18
|
+
}
|
|
19
|
+
if (typeof category.title !== "string" || category.title.trim().length === 0) {
|
|
20
|
+
throw new Error(`${label} must have a non-empty title`);
|
|
21
|
+
}
|
|
22
|
+
if (category.color !== undefined && !isCategoryColor(category.color)) {
|
|
23
|
+
throw new Error(`${label} has an invalid color`);
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
id: category.id,
|
|
27
|
+
title: category.title,
|
|
28
|
+
...(category.color === undefined ? {} : { color: category.color }),
|
|
29
|
+
};
|
|
9
30
|
}
|
|
10
|
-
|
|
11
|
-
if (!
|
|
12
|
-
throw new Error("
|
|
31
|
+
function validateCategories(value) {
|
|
32
|
+
if (!Array.isArray(value) || value.length === 0) {
|
|
33
|
+
throw new Error("A version 2 backlog must have at least one category");
|
|
13
34
|
}
|
|
14
35
|
const ids = new Set();
|
|
15
|
-
|
|
36
|
+
return value.map((value, index) => {
|
|
37
|
+
const category = validateCategory(value, index);
|
|
38
|
+
if (ids.has(category.id))
|
|
39
|
+
throw new Error(`Backlog category id ${category.id} is duplicated`);
|
|
40
|
+
ids.add(category.id);
|
|
41
|
+
return category;
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
function validateItems(value, categories) {
|
|
45
|
+
if (!Array.isArray(value))
|
|
46
|
+
throw new Error("Backlog items must be an array");
|
|
47
|
+
const ids = new Set();
|
|
48
|
+
return value.map((item, index) => {
|
|
16
49
|
if (!isRecord(item))
|
|
17
50
|
throw new Error(`Backlog item ${index} must be an object`);
|
|
18
|
-
if (typeof item.id !== "string" || item.id.length === 0) {
|
|
51
|
+
if (typeof item.id !== "string" || item.id.trim().length === 0) {
|
|
19
52
|
throw new Error(`Backlog item ${index} must have a non-empty id`);
|
|
20
53
|
}
|
|
21
54
|
if (ids.has(item.id))
|
|
@@ -26,8 +59,9 @@ export function parseBacklog(value) {
|
|
|
26
59
|
if (item.notes !== undefined && typeof item.notes !== "string") {
|
|
27
60
|
throw new Error(`Backlog item ${item.id} has invalid notes`);
|
|
28
61
|
}
|
|
29
|
-
if (!
|
|
62
|
+
if (typeof item.status !== "string" || !categories.some(({ id }) => id === item.status)) {
|
|
30
63
|
throw new Error(`Backlog item ${item.id} has an invalid status`);
|
|
64
|
+
}
|
|
31
65
|
ids.add(item.id);
|
|
32
66
|
return {
|
|
33
67
|
id: item.id,
|
|
@@ -36,35 +70,121 @@ export function parseBacklog(value) {
|
|
|
36
70
|
status: item.status,
|
|
37
71
|
};
|
|
38
72
|
});
|
|
39
|
-
return { version: 1, items };
|
|
40
73
|
}
|
|
41
|
-
export function
|
|
42
|
-
return
|
|
74
|
+
export function isStatus(backlog, value) {
|
|
75
|
+
return typeof value === "string" && backlog.categories.some(({ id }) => id === value);
|
|
43
76
|
}
|
|
44
|
-
export function
|
|
77
|
+
export function isCategoryColor(value) {
|
|
78
|
+
return typeof value === "string" && CATEGORY_COLORS.includes(value);
|
|
79
|
+
}
|
|
80
|
+
export function parseBacklog(value) {
|
|
81
|
+
if (!isRecord(value))
|
|
82
|
+
throw new Error("BACKLOG.json must contain a backlog object");
|
|
83
|
+
if (value.version === 1) {
|
|
84
|
+
return {
|
|
85
|
+
version: 2,
|
|
86
|
+
categories: DEFAULT_CATEGORIES,
|
|
87
|
+
items: validateItems(value.items, DEFAULT_CATEGORIES),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
if (value.version !== 2)
|
|
91
|
+
throw new Error(`Unsupported backlog version ${String(value.version)}`);
|
|
92
|
+
const categories = validateCategories(value.categories);
|
|
93
|
+
return { version: 2, categories, items: validateItems(value.items, categories) };
|
|
94
|
+
}
|
|
95
|
+
export function sortByStatus(items, categories) {
|
|
96
|
+
return categories.flatMap(({ id }) => items.filter((item) => item.status === id));
|
|
97
|
+
}
|
|
98
|
+
export function moveItem(items, id, status, position, categories) {
|
|
45
99
|
const item = items.find((candidate) => candidate.id === id);
|
|
46
100
|
if (!item)
|
|
47
101
|
throw new Error(`Backlog item ${id} does not exist`);
|
|
48
102
|
const targetStatus = status ?? item.status;
|
|
103
|
+
if (!categories.some((category) => category.id === targetStatus)) {
|
|
104
|
+
throw new Error(`Backlog category ${targetStatus} does not exist`);
|
|
105
|
+
}
|
|
49
106
|
const remaining = items.filter((candidate) => candidate.id !== id);
|
|
50
107
|
const target = remaining.filter((candidate) => candidate.status === targetStatus);
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return STATUSES.flatMap((candidateStatus) => candidateStatus === targetStatus
|
|
108
|
+
target.splice(clampPosition(position, target.length), 0, { ...item, status: targetStatus });
|
|
109
|
+
return categories.flatMap(({ id: categoryId }) => categoryId === targetStatus
|
|
54
110
|
? target
|
|
55
|
-
: remaining.filter((candidate) => candidate.status ===
|
|
111
|
+
: remaining.filter((candidate) => candidate.status === categoryId));
|
|
56
112
|
}
|
|
57
|
-
export function describeBacklog(backlog, statuses
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
113
|
+
export function describeBacklog(backlog, statuses) {
|
|
114
|
+
const selected = statuses ?? backlog.categories.map(({ id }) => id);
|
|
115
|
+
return selected.map((status) => {
|
|
116
|
+
const category = backlog.categories.find(({ id }) => id === status);
|
|
117
|
+
if (!category)
|
|
118
|
+
throw new Error(`Backlog category ${status} does not exist`);
|
|
62
119
|
const items = backlog.items.filter((item) => item.status === status);
|
|
63
120
|
const lines = items.map((item, index) => {
|
|
64
121
|
const notes = item.notes ? `\n Notes: ${item.notes}` : "";
|
|
65
122
|
return `${index}. ${item.id}: ${item.title}${notes}`;
|
|
66
123
|
});
|
|
67
|
-
return `${
|
|
124
|
+
return `${category.title.toUpperCase()} [${category.id}] (${items.length})\n${lines.length > 0 ? lines.join("\n") : "Empty"}`;
|
|
68
125
|
}).join("\n\n");
|
|
69
126
|
}
|
|
127
|
+
export function addCategory(backlog, category, position) {
|
|
128
|
+
const added = validateCategory(category);
|
|
129
|
+
if (backlog.categories.some(({ id }) => id === added.id)) {
|
|
130
|
+
throw new Error(`Backlog category id ${added.id} is duplicated`);
|
|
131
|
+
}
|
|
132
|
+
const categories = [...backlog.categories];
|
|
133
|
+
categories.splice(clampPosition(position, categories.length), 0, added);
|
|
134
|
+
return { ...backlog, categories };
|
|
135
|
+
}
|
|
136
|
+
export function renameCategory(backlog, id, title) {
|
|
137
|
+
if (title.trim().length === 0)
|
|
138
|
+
throw new Error("Category must have a non-empty title");
|
|
139
|
+
if (!backlog.categories.some((category) => category.id === id)) {
|
|
140
|
+
throw new Error(`Backlog category ${id} does not exist`);
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
...backlog,
|
|
144
|
+
categories: backlog.categories.map((category) => category.id === id ? { ...category, title } : category),
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
export function setCategoryColor(backlog, id, color) {
|
|
148
|
+
if (!backlog.categories.some((category) => category.id === id)) {
|
|
149
|
+
throw new Error(`Backlog category ${id} does not exist`);
|
|
150
|
+
}
|
|
151
|
+
return {
|
|
152
|
+
...backlog,
|
|
153
|
+
categories: backlog.categories.map((category) => category.id === id ? { ...category, color } : category),
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
export function moveCategory(backlog, id, position) {
|
|
157
|
+
const category = backlog.categories.find((candidate) => candidate.id === id);
|
|
158
|
+
if (!category)
|
|
159
|
+
throw new Error(`Backlog category ${id} does not exist`);
|
|
160
|
+
const categories = backlog.categories.filter((candidate) => candidate.id !== id);
|
|
161
|
+
categories.splice(clampPosition(position, categories.length), 0, category);
|
|
162
|
+
return { ...backlog, categories, items: sortByStatus(backlog.items, categories) };
|
|
163
|
+
}
|
|
164
|
+
export function removeCategory(backlog, id) {
|
|
165
|
+
requireRemovableCategory(backlog, id);
|
|
166
|
+
if (backlog.items.some((item) => item.status === id)) {
|
|
167
|
+
throw new Error(`Backlog category ${id} is not empty`);
|
|
168
|
+
}
|
|
169
|
+
return { ...backlog, categories: backlog.categories.filter((category) => category.id !== id) };
|
|
170
|
+
}
|
|
171
|
+
export function purgeCategory(backlog, id) {
|
|
172
|
+
if (!backlog.categories.some((category) => category.id === id)) {
|
|
173
|
+
throw new Error(`Backlog category ${id} does not exist`);
|
|
174
|
+
}
|
|
175
|
+
return {
|
|
176
|
+
...backlog,
|
|
177
|
+
items: backlog.items.filter((item) => item.status !== id),
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
function requireRemovableCategory(backlog, id) {
|
|
181
|
+
if (!backlog.categories.some((category) => category.id === id)) {
|
|
182
|
+
throw new Error(`Backlog category ${id} does not exist`);
|
|
183
|
+
}
|
|
184
|
+
if (backlog.categories.length === 1)
|
|
185
|
+
throw new Error("Cannot remove the final backlog category");
|
|
186
|
+
}
|
|
187
|
+
function clampPosition(position, length) {
|
|
188
|
+
return Math.max(0, Math.min(position ?? length, length));
|
|
189
|
+
}
|
|
70
190
|
//# sourceMappingURL=backlog.js.map
|
package/dist/backlog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backlog.js","sourceRoot":"","sources":["../src/backlog.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"backlog.js","sourceRoot":"","sources":["../src/backlog.ts"],"names":[],"mappings":"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"}
|