opencode-backlog 0.2.1 → 0.2.3

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 CHANGED
@@ -18,7 +18,7 @@ New backlogs contain these categories:
18
18
  - `doing`
19
19
  - `done`
20
20
 
21
- You can add, rename, color, reorder, purge, and remove categories. Each category has a stable ID and a modifiable title.
21
+ You can add, rename, style, reorder, purge, and remove categories. Each category has a stable ID and a modifiable title.
22
22
 
23
23
  The server plugin manages tasks and categories. The TUI plugin provides:
24
24
 
@@ -152,13 +152,13 @@ Click a sidebar task to open its details. The detail dialog provides `c`, `e`, a
152
152
 
153
153
  | Tool | Purpose |
154
154
  | --- | --- |
155
- | `backlog_list` | List categories and tasks, with an optional category ID filter. |
155
+ | `backlog_list` | List tasks with optional `category` and `query` filters. |
156
156
  | `backlog_add` | Add a task at an optional category and position. |
157
157
  | `backlog_update` | Change a task title or notes. |
158
158
  | `backlog_move` | Change a task category or position. |
159
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. |
160
+ | `backlog_category_add` | Add a category with a stable ID, title, color, and icon. |
161
+ | `backlog_category_update` | Change a category title, color, or icon. |
162
162
  | `backlog_category_move` | Change a category position. |
163
163
  | `backlog_category_remove` | Remove an empty category. |
164
164
  | `backlog_category_purge` | Permanently remove all tasks from a category. |
@@ -173,10 +173,10 @@ The plugin creates `BACKLOG.json` when the first task or category is added:
173
173
  {
174
174
  "version": 2,
175
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" }
176
+ { "id": "todo", "title": "Todo", "color": "subdued", "icon": "circle" },
177
+ { "id": "doing", "title": "Doing", "color": "warning", "icon": "dot" },
178
+ { "id": "blocked", "title": "Blocked", "color": "error", "icon": "cross" },
179
+ { "id": "done", "title": "Done", "color": "success", "icon": "check" }
180
180
  ],
181
181
  "items": [
182
182
  {
@@ -195,6 +195,20 @@ Category IDs stay stable when titles change. The plugin rejects tasks that refer
195
195
 
196
196
  Category colors use theme-aware values: `default`, `subdued`, `error`, `warning`, `success`, or `info`.
197
197
 
198
+ Category icons use `circle`, `dot`, `check`, `cross`, `pause`, `diamond`, or `none`.
199
+
200
+ Known category IDs provide style presets when color or icon is absent:
201
+
202
+ | ID | Color | Icon |
203
+ | --- | --- | --- |
204
+ | `todo` | `subdued` | `circle` |
205
+ | `doing` | `warning` | `dot` |
206
+ | `blocked` | `error` | `cross` |
207
+ | `review` | `info` | `diamond` |
208
+ | `waiting` | `warning` | `pause` |
209
+ | `done` | `success` | `check` |
210
+ | `cancelled` | `subdued` | `cross` |
211
+
198
212
  The plugin reads version 1 files with the default categories. The next backlog change writes the file as version 2.
199
213
 
200
214
  Commit `BACKLOG.json` when the backlog must follow the project. Ignore it when the backlog must remain local.
@@ -229,33 +243,21 @@ Entering `nix develop` installs the repository pre-commit hook. The hook checks
229
243
 
230
244
  ## Release
231
245
 
232
- Bootstrap the new package from an authenticated workstation:
246
+ Publish each release from an authenticated workstation:
233
247
 
234
248
  ```sh
235
249
  npm login
236
250
  npm publish
237
251
  ```
238
252
 
239
- Staged publishing cannot create a new package. After `opencode-backlog` exists on npm, configure trusted publishing with these exact values:
240
-
241
- ```text
242
- Organization or user: sachahjkl
243
- Repository: opencode-backlog
244
- Workflow filename: publish.yml
245
- Environment name: <empty>
246
- Allowed action: npm publish
247
- ```
248
-
249
- For later releases, update the package version and push its commit and tag:
253
+ Update the package version, then push its commit and tag:
250
254
 
251
255
  ```sh
252
256
  npm version patch
253
257
  git push origin master --follow-tags
254
258
  ```
255
259
 
256
- Use `minor` or `major` instead of `patch` when the release requires it. The workflow rejects a tag that does not match `package.json`.
257
-
258
- The workflow publishes through npm trusted publishing. It uses OIDC and does not store an npm token.
260
+ Use `minor` or `major` instead of `patch` when the release requires it. Keep the tag equal to the `package.json` version.
259
261
 
260
262
  ## Compatibility
261
263
 
package/dist/backlog.d.ts CHANGED
@@ -1,11 +1,18 @@
1
1
  export declare const BACKLOG_FILE = "BACKLOG.json";
2
2
  export declare const CATEGORY_COLORS: readonly ["default", "subdued", "error", "warning", "success", "info"];
3
+ export declare const CATEGORY_ICONS: readonly ["circle", "dot", "check", "cross", "pause", "diamond", "none"];
3
4
  export type CategoryColor = (typeof CATEGORY_COLORS)[number];
5
+ export type CategoryIcon = (typeof CATEGORY_ICONS)[number];
4
6
  export interface Category {
5
7
  readonly id: string;
6
8
  readonly title: string;
7
9
  readonly color?: CategoryColor;
10
+ readonly icon?: CategoryIcon;
8
11
  }
12
+ export declare const CATEGORY_PRESETS: Readonly<Record<string, {
13
+ color: CategoryColor;
14
+ icon: CategoryIcon;
15
+ }>>;
9
16
  export type Status = string;
10
17
  export interface BacklogItem {
11
18
  readonly id: string;
@@ -22,13 +29,15 @@ export declare const DEFAULT_CATEGORIES: readonly Category[];
22
29
  export declare const EMPTY_BACKLOG: Backlog;
23
30
  export declare function isStatus(backlog: Backlog, value: unknown): value is Status;
24
31
  export declare function isCategoryColor(value: unknown): value is CategoryColor;
32
+ export declare function isCategoryIcon(value: unknown): value is CategoryIcon;
25
33
  export declare function parseBacklog(value: unknown): Backlog;
26
34
  export declare function sortByStatus(items: readonly BacklogItem[], categories: readonly Category[]): BacklogItem[];
27
35
  export declare function moveItem(items: readonly BacklogItem[], id: string, status: Status | undefined, position: number | undefined, categories: readonly Category[]): BacklogItem[];
28
- export declare function describeBacklog(backlog: Backlog, statuses?: readonly Status[]): string;
36
+ export declare function describeBacklog(backlog: Backlog, statuses?: readonly Status[], query?: string): string;
29
37
  export declare function addCategory(backlog: Backlog, category: Category, position?: number): Backlog;
30
38
  export declare function renameCategory(backlog: Backlog, id: string, title: string): Backlog;
31
39
  export declare function setCategoryColor(backlog: Backlog, id: string, color: CategoryColor): Backlog;
40
+ export declare function setCategoryIcon(backlog: Backlog, id: string, icon: CategoryIcon): Backlog;
32
41
  export declare function moveCategory(backlog: Backlog, id: string, position: number): Backlog;
33
42
  export declare function removeCategory(backlog: Backlog, id: string): Backlog;
34
43
  export declare function purgeCategory(backlog: Backlog, id: string): Backlog;
package/dist/backlog.js CHANGED
@@ -1,9 +1,19 @@
1
1
  export const BACKLOG_FILE = "BACKLOG.json";
2
2
  export const CATEGORY_COLORS = ["default", "subdued", "error", "warning", "success", "info"];
3
+ export const CATEGORY_ICONS = ["circle", "dot", "check", "cross", "pause", "diamond", "none"];
4
+ export const CATEGORY_PRESETS = {
5
+ todo: { color: "subdued", icon: "circle" },
6
+ doing: { color: "warning", icon: "dot" },
7
+ blocked: { color: "error", icon: "cross" },
8
+ review: { color: "info", icon: "diamond" },
9
+ waiting: { color: "warning", icon: "pause" },
10
+ done: { color: "success", icon: "check" },
11
+ cancelled: { color: "subdued", icon: "cross" },
12
+ };
3
13
  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" },
14
+ { id: "todo", title: "Todo", ...CATEGORY_PRESETS.todo },
15
+ { id: "doing", title: "Doing", ...CATEGORY_PRESETS.doing },
16
+ { id: "done", title: "Done", ...CATEGORY_PRESETS.done },
7
17
  ];
8
18
  export const EMPTY_BACKLOG = { version: 2, categories: DEFAULT_CATEGORIES, items: [] };
9
19
  function isRecord(value) {
@@ -22,10 +32,14 @@ function validateCategory(category, index) {
22
32
  if (category.color !== undefined && !isCategoryColor(category.color)) {
23
33
  throw new Error(`${label} has an invalid color`);
24
34
  }
35
+ if (category.icon !== undefined && !isCategoryIcon(category.icon)) {
36
+ throw new Error(`${label} has an invalid icon`);
37
+ }
25
38
  return {
26
39
  id: category.id,
27
40
  title: category.title,
28
41
  ...(category.color === undefined ? {} : { color: category.color }),
42
+ ...(category.icon === undefined ? {} : { icon: category.icon }),
29
43
  };
30
44
  }
31
45
  function validateCategories(value) {
@@ -77,6 +91,9 @@ export function isStatus(backlog, value) {
77
91
  export function isCategoryColor(value) {
78
92
  return typeof value === "string" && CATEGORY_COLORS.includes(value);
79
93
  }
94
+ export function isCategoryIcon(value) {
95
+ return typeof value === "string" && CATEGORY_ICONS.includes(value);
96
+ }
80
97
  export function parseBacklog(value) {
81
98
  if (!isRecord(value))
82
99
  throw new Error("BACKLOG.json must contain a backlog object");
@@ -110,19 +127,30 @@ export function moveItem(items, id, status, position, categories) {
110
127
  ? target
111
128
  : remaining.filter((candidate) => candidate.status === categoryId));
112
129
  }
113
- export function describeBacklog(backlog, statuses) {
130
+ export function describeBacklog(backlog, statuses, query) {
114
131
  const selected = statuses ?? backlog.categories.map(({ id }) => id);
115
- return selected.map((status) => {
132
+ const term = query?.trim().toLocaleLowerCase();
133
+ const sections = selected.map((status) => {
116
134
  const category = backlog.categories.find(({ id }) => id === status);
117
135
  if (!category)
118
136
  throw new Error(`Backlog category ${status} does not exist`);
119
- const items = backlog.items.filter((item) => item.status === status);
137
+ const items = backlog.items.filter((item) => {
138
+ if (item.status !== status)
139
+ return false;
140
+ if (!term)
141
+ return true;
142
+ return [item.id, item.title, item.notes ?? ""].some((value) => value.toLocaleLowerCase().includes(term));
143
+ });
120
144
  const lines = items.map((item, index) => {
121
145
  const notes = item.notes ? `\n Notes: ${item.notes}` : "";
122
146
  return `${index}. ${item.id}: ${item.title}${notes}`;
123
147
  });
124
- return `${category.title.toUpperCase()} [${category.id}] (${items.length})\n${lines.length > 0 ? lines.join("\n") : "Empty"}`;
125
- }).join("\n\n");
148
+ return { category, items, lines };
149
+ });
150
+ const visible = term ? sections.filter(({ items }) => items.length > 0) : sections;
151
+ if (visible.length === 0)
152
+ return `No backlog tasks match ${JSON.stringify(query?.trim() ?? "")}.`;
153
+ return visible.map(({ category, items, lines }) => `${category.title.toUpperCase()} [${category.id}] (${items.length})\n${lines.length > 0 ? lines.join("\n") : "Empty"}`).join("\n\n");
126
154
  }
127
155
  export function addCategory(backlog, category, position) {
128
156
  const added = validateCategory(category);
@@ -153,6 +181,15 @@ export function setCategoryColor(backlog, id, color) {
153
181
  categories: backlog.categories.map((category) => category.id === id ? { ...category, color } : category),
154
182
  };
155
183
  }
184
+ export function setCategoryIcon(backlog, id, icon) {
185
+ if (!backlog.categories.some((category) => category.id === id)) {
186
+ throw new Error(`Backlog category ${id} does not exist`);
187
+ }
188
+ return {
189
+ ...backlog,
190
+ categories: backlog.categories.map((category) => category.id === id ? { ...category, icon } : category),
191
+ };
192
+ }
156
193
  export function moveCategory(backlog, id, position) {
157
194
  const category = backlog.categories.find((candidate) => candidate.id === id);
158
195
  if (!category)
@@ -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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"}
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import { join } from "node:path";
3
3
  import { Plugin } from "@opencode-ai/plugin";
4
- import { BACKLOG_FILE, CATEGORY_COLORS, addCategory, describeBacklog, moveItem, moveCategory, purgeCategory, removeCategory, renameCategory, setCategoryColor, sortByStatus, } from "./backlog.js";
5
- import { optionalNullableString, optionalCategoryColor, optionalPosition, optionalStatus, record, requiredString, } from "./input.js";
4
+ import { BACKLOG_FILE, CATEGORY_COLORS, CATEGORY_ICONS, addCategory, describeBacklog, moveItem, moveCategory, purgeCategory, removeCategory, renameCategory, setCategoryColor, setCategoryIcon, sortByStatus, } from "./backlog.js";
5
+ import { optionalNullableString, optionalCategoryColor, optionalCategoryIcon, optionalPosition, optionalString, optionalStatus, record, requiredString, } from "./input.js";
6
6
  import { readBacklog, updateBacklog } from "./store.js";
7
7
  const idInput = {
8
8
  type: "object",
@@ -16,6 +16,7 @@ const categoryTitleInput = {
16
16
  id: { type: "string", minLength: 1 },
17
17
  title: { type: "string", minLength: 1 },
18
18
  color: { type: "string", enum: CATEGORY_COLORS },
19
+ icon: { type: "string", enum: CATEGORY_ICONS },
19
20
  },
20
21
  required: ["id"],
21
22
  additionalProperties: false,
@@ -36,6 +37,15 @@ function replaceItem(items, replacement) {
36
37
  }
37
38
  return items.map((item) => (item.id === replacement.id ? replacement : item));
38
39
  }
40
+ function itemLocation(backlog, id) {
41
+ const item = backlog.items.find((candidate) => candidate.id === id);
42
+ if (!item)
43
+ throw new Error(`Backlog item ${id} does not exist`);
44
+ const position = backlog.items
45
+ .filter((candidate) => candidate.status === item.status)
46
+ .findIndex((candidate) => candidate.id === id);
47
+ return { item, position };
48
+ }
39
49
  export default Plugin.define({
40
50
  id: "opencode.backlog",
41
51
  tui: true,
@@ -43,18 +53,23 @@ export default Plugin.define({
43
53
  await context.tool.transform((tools) => {
44
54
  tools.add({
45
55
  name: "backlog_list",
46
- description: "List the ordered project backlog, optionally filtered by category ID.",
56
+ description: "List the ordered project backlog, optionally filtered by category ID and search term.",
47
57
  input: {
48
58
  type: "object",
49
- properties: { status: { type: "string", minLength: 1 } },
59
+ properties: {
60
+ category: { type: "string", minLength: 1 },
61
+ query: { type: "string", minLength: 1 },
62
+ },
50
63
  additionalProperties: false,
51
64
  },
52
65
  options: { codemode: false },
53
66
  execute: async (input, toolContext) => {
54
67
  const backlog = await readForSession(context, toolContext.sessionID);
55
- const status = optionalStatus(record(input), backlog);
68
+ const values = record(input);
69
+ const category = optionalStatus(values, backlog, "category");
70
+ const query = optionalString(values, "query");
56
71
  return {
57
- content: describeBacklog(backlog, status === undefined ? undefined : [status]),
72
+ content: describeBacklog(backlog, category === undefined ? undefined : [category], query),
58
73
  };
59
74
  },
60
75
  });
@@ -98,7 +113,8 @@ export default Plugin.define({
98
113
  });
99
114
  if (!item)
100
115
  throw new Error("Backlog update did not add an item");
101
- return { content: `Added ${item.id}.\n\n${describeBacklog(backlog)}` };
116
+ const location = itemLocation(backlog, item.id);
117
+ return { content: `Added ${item.id} to ${location.item.status} at position ${location.position}.` };
102
118
  },
103
119
  });
104
120
  tools.add({
@@ -123,7 +139,7 @@ export default Plugin.define({
123
139
  if (title === undefined && notes === undefined) {
124
140
  throw new Error("backlog_update requires a title or notes change");
125
141
  }
126
- const backlog = await updateForSession(context, toolContext.sessionID, (current) => {
142
+ await updateForSession(context, toolContext.sessionID, (current) => {
127
143
  const item = current.items.find((candidate) => candidate.id === id);
128
144
  if (!item)
129
145
  throw new Error(`Backlog item ${id} does not exist`);
@@ -139,7 +155,7 @@ export default Plugin.define({
139
155
  items: sortByStatus(replaceItem(current.items, replacement), current.categories),
140
156
  };
141
157
  });
142
- return { content: `Updated ${id}.\n\n${describeBacklog(backlog)}` };
158
+ return { content: `Updated ${id}.` };
143
159
  },
144
160
  });
145
161
  tools.add({
@@ -171,7 +187,8 @@ export default Plugin.define({
171
187
  items: moveItem(current.items, id, status, position, current.categories),
172
188
  };
173
189
  });
174
- return { content: `Moved ${id}.\n\n${describeBacklog(backlog)}` };
190
+ const location = itemLocation(backlog, id);
191
+ return { content: `Moved ${id} to ${location.item.status} at position ${location.position}.` };
175
192
  },
176
193
  });
177
194
  tools.add({
@@ -181,7 +198,7 @@ export default Plugin.define({
181
198
  options: { codemode: false },
182
199
  execute: async (input, toolContext) => {
183
200
  const id = requiredString(record(input), "id");
184
- const backlog = await updateForSession(context, toolContext.sessionID, (current) => {
201
+ await updateForSession(context, toolContext.sessionID, (current) => {
185
202
  if (!current.items.some((item) => item.id === id)) {
186
203
  throw new Error(`Backlog item ${id} does not exist`);
187
204
  }
@@ -191,7 +208,7 @@ export default Plugin.define({
191
208
  items: current.items.filter((item) => item.id !== id),
192
209
  };
193
210
  });
194
- return { content: `Removed ${id}.\n\n${describeBacklog(backlog)}` };
211
+ return { content: `Removed ${id}.` };
195
212
  },
196
213
  });
197
214
  tools.add({
@@ -203,6 +220,7 @@ export default Plugin.define({
203
220
  id: { type: "string", minLength: 1 },
204
221
  title: { type: "string", minLength: 1 },
205
222
  color: { type: "string", enum: CATEGORY_COLORS },
223
+ icon: { type: "string", enum: CATEGORY_ICONS },
206
224
  position: { type: "integer", minimum: 0 },
207
225
  },
208
226
  required: ["id", "title"],
@@ -214,14 +232,21 @@ export default Plugin.define({
214
232
  const id = requiredString(values, "id");
215
233
  const title = requiredString(values, "title");
216
234
  const color = optionalCategoryColor(values);
235
+ const icon = optionalCategoryIcon(values);
217
236
  const position = optionalPosition(values);
218
- const backlog = await updateForSession(context, toolContext.sessionID, (current) => addCategory(current, { id, title, ...(color === undefined ? {} : { color }) }, position));
219
- return { content: `Added category ${id}.\n\n${describeBacklog(backlog)}` };
237
+ const backlog = await updateForSession(context, toolContext.sessionID, (current) => addCategory(current, {
238
+ id,
239
+ title,
240
+ ...(color === undefined ? {} : { color }),
241
+ ...(icon === undefined ? {} : { icon }),
242
+ }, position));
243
+ const categoryPosition = backlog.categories.findIndex((category) => category.id === id);
244
+ return { content: `Added category ${id} at position ${categoryPosition}.` };
220
245
  },
221
246
  });
222
247
  tools.add({
223
248
  name: "backlog_category_update",
224
- description: "Change a backlog category title or color.",
249
+ description: "Change a backlog category title, color, or icon.",
225
250
  input: categoryTitleInput,
226
251
  options: { codemode: false },
227
252
  execute: async (input, toolContext) => {
@@ -229,14 +254,16 @@ export default Plugin.define({
229
254
  const id = requiredString(values, "id");
230
255
  const title = values.title === undefined ? undefined : requiredString(values, "title");
231
256
  const color = optionalCategoryColor(values);
232
- if (title === undefined && color === undefined) {
233
- throw new Error("backlog_category_update requires a title or color change");
257
+ const icon = optionalCategoryIcon(values);
258
+ if (title === undefined && color === undefined && icon === undefined) {
259
+ throw new Error("backlog_category_update requires a title, color, or icon change");
234
260
  }
235
- const backlog = await updateForSession(context, toolContext.sessionID, (current) => {
261
+ await updateForSession(context, toolContext.sessionID, (current) => {
236
262
  const renamed = title === undefined ? current : renameCategory(current, id, title);
237
- return color === undefined ? renamed : setCategoryColor(renamed, id, color);
263
+ const colored = color === undefined ? renamed : setCategoryColor(renamed, id, color);
264
+ return icon === undefined ? colored : setCategoryIcon(colored, id, icon);
238
265
  });
239
- return { content: `Updated category ${id}.\n\n${describeBacklog(backlog)}` };
266
+ return { content: `Updated category ${id}.` };
240
267
  },
241
268
  });
242
269
  tools.add({
@@ -259,7 +286,8 @@ export default Plugin.define({
259
286
  if (position === undefined)
260
287
  throw new Error("position is required");
261
288
  const backlog = await updateForSession(context, toolContext.sessionID, (current) => moveCategory(current, id, position));
262
- return { content: `Moved category ${id}.\n\n${describeBacklog(backlog)}` };
289
+ const categoryPosition = backlog.categories.findIndex((category) => category.id === id);
290
+ return { content: `Moved category ${id} to position ${categoryPosition}.` };
263
291
  },
264
292
  });
265
293
  tools.add({
@@ -269,8 +297,8 @@ export default Plugin.define({
269
297
  options: { codemode: false },
270
298
  execute: async (input, toolContext) => {
271
299
  const id = requiredString(record(input), "id");
272
- const backlog = await updateForSession(context, toolContext.sessionID, (current) => removeCategory(current, id));
273
- return { content: `Removed category ${id}.\n\n${describeBacklog(backlog)}` };
300
+ await updateForSession(context, toolContext.sessionID, (current) => removeCategory(current, id));
301
+ return { content: `Removed category ${id}.` };
274
302
  },
275
303
  });
276
304
  tools.add({
@@ -280,8 +308,12 @@ export default Plugin.define({
280
308
  options: { codemode: false },
281
309
  execute: async (input, toolContext) => {
282
310
  const id = requiredString(record(input), "id");
283
- const backlog = await updateForSession(context, toolContext.sessionID, (current) => purgeCategory(current, id));
284
- return { content: `Purged tasks from category ${id}.\n\n${describeBacklog(backlog)}` };
311
+ let count = 0;
312
+ await updateForSession(context, toolContext.sessionID, (current) => {
313
+ count = current.items.filter((item) => item.status === id).length;
314
+ return purgeCategory(current, id);
315
+ });
316
+ return { content: `Purged ${count} ${count === 1 ? "task" : "tasks"} from category ${id}.` };
285
317
  },
286
318
  });
287
319
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EACL,YAAY,EACZ,eAAe,EACf,WAAW,EACX,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,YAAY,GAGb,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,MAAM,EACN,cAAc,GACf,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAEvD,MAAM,OAAO,GAAG;IACd,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE;IACpD,QAAQ,EAAE,CAAC,IAAI,CAAC;IAChB,oBAAoB,EAAE,KAAK;CACnB,CAAA;AAEV,MAAM,kBAAkB,GAAG;IACzB,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;QACpC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;QACvC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE;KACjD;IACD,QAAQ,EAAE,CAAC,IAAI,CAAC;IAChB,oBAAoB,EAAE,KAAK;CACnB,CAAA;AAEV,KAAK,UAAU,WAAW,CAAC,OAAuB,EAAE,SAAiB;IACnE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;IACxD,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;AACvD,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,OAAuB,EAAE,SAAiB;IACtE,OAAO,WAAW,CAAC,MAAM,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;AAC3D,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,OAAuB,EACvB,SAAiB,EACjB,MAAqC;IAErC,OAAO,aAAa,CAAC,MAAM,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAA;AACrE,CAAC;AAED,SAAS,WAAW,CAAC,KAA6B,EAAE,WAAwB;IAC1E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,gBAAgB,WAAW,CAAC,EAAE,iBAAiB,CAAC,CAAA;IAClE,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AAC/E,CAAC;AAED,eAAe,MAAM,CAAC,MAAM,CAAC;IAC3B,EAAE,EAAE,kBAAkB;IACtB,GAAG,EAAE,IAAI;IACT,KAAK,CAAC,KAAK,CAAC,OAAO;QACjB,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,KAAK,CAAC,GAAG,CAAC;gBACR,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,uEAAuE;gBACpF,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE;oBACxD,oBAAoB,EAAE,KAAK;iBAC5B;gBACD,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;gBAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;oBACpC,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;oBACpE,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAA;oBACrD,OAAO;wBACL,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;qBAC/E,CAAA;gBACH,CAAC;aACF,CAAC,CAAA;YAEF,KAAK,CAAC,GAAG,CAAC;gBACR,IAAI,EAAE,aAAa;gBACnB,WAAW,EAAE,gEAAgE;gBAC7E,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;wBACvC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBACzB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;wBACxC,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE;qBAC1C;oBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;oBACnB,oBAAoB,EAAE,KAAK;iBAC5B;gBACD,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;gBAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;oBACpC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;oBAC5B,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;oBAC7C,MAAM,KAAK,GAAG,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,SAAS,CAAA;oBAClE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;oBACzC,IAAI,IAA6B,CAAA;oBACjC,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;wBACjF,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;wBAC3C,IAAI,CAAC,aAAa;4BAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;wBAClF,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,aAAa,CAAC,EAAE,CAAA;wBAClE,IAAI,GAAG;4BACL,EAAE,EAAE,UAAU,EAAE;4BAChB,KAAK;4BACL,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;4BACzC,MAAM;yBACP,CAAA;wBACD,OAAO;4BACL,OAAO,EAAE,CAAC;4BACV,UAAU,EAAE,OAAO,CAAC,UAAU;4BAC9B,KAAK,EAAE,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC;yBACzF,CAAA;oBACH,CAAC,CAAC,CAAA;oBACF,IAAI,CAAC,IAAI;wBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;oBAChE,OAAO,EAAE,OAAO,EAAE,SAAS,IAAI,CAAC,EAAE,QAAQ,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,CAAA;gBACxE,CAAC;aACF,CAAC,CAAA;YAEF,KAAK,CAAC,GAAG,CAAC;gBACR,IAAI,EAAE,gBAAgB;gBACtB,WAAW,EAAE,sEAAsE;gBACnF,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;wBACpC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;wBACvC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;qBACpC;oBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;oBAChB,oBAAoB,EAAE,KAAK;iBAC5B;gBACD,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;gBAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;oBACpC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;oBAC5B,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;oBACvC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;oBACtF,MAAM,KAAK,GAAG,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;oBACrD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;wBAC/C,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;oBACpE,CAAC;oBACD,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;wBACjF,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;wBACnE,IAAI,CAAC,IAAI;4BAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAA;wBAC/D,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,gBAAgB,EAAE,GAAG,IAAI,CAAA;wBAC1D,MAAM,WAAW,GAAgB;4BAC/B,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;4BAC7C,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;4BACzC,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;yBAC5D,CAAA;wBACD,OAAO;4BACL,OAAO,EAAE,CAAC;4BACV,UAAU,EAAE,OAAO,CAAC,UAAU;4BAC9B,KAAK,EAAE,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC;yBACjF,CAAA;oBACH,CAAC,CAAC,CAAA;oBACF,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,CAAA;gBACrE,CAAC;aACF,CAAC,CAAA;YAEF,KAAK,CAAC,GAAG,CAAC;gBACR,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,yEAAyE;gBACtF,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;wBACpC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;wBACxC,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE;qBAC1C;oBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;oBAChB,oBAAoB,EAAE,KAAK;iBAC5B;gBACD,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;gBAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;oBACpC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;oBAC5B,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;oBACvC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;oBACzC,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;wBACjF,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;wBAC9C,IAAI,MAAM,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;4BACnD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;wBACtE,CAAC;wBACD,OAAO;4BACL,OAAO,EAAE,CAAC;4BACV,UAAU,EAAE,OAAO,CAAC,UAAU;4BAC9B,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC;yBACzE,CAAA;oBACH,CAAC,CAAC,CAAA;oBACF,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,CAAA;gBACnE,CAAC;aACF,CAAC,CAAA;YAEF,KAAK,CAAC,GAAG,CAAC;gBACR,IAAI,EAAE,gBAAgB;gBACtB,WAAW,EAAE,qDAAqD;gBAClE,KAAK,EAAE,OAAO;gBACd,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;gBAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;oBACpC,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAA;oBAC9C,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;wBACjF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;4BAClD,MAAM,IAAI,KAAK,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAA;wBACtD,CAAC;wBACD,OAAO;4BACL,OAAO,EAAE,CAAC;4BACV,UAAU,EAAE,OAAO,CAAC,UAAU;4BAC9B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;yBACtD,CAAA;oBACH,CAAC,CAAC,CAAA;oBACF,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,CAAA;gBACrE,CAAC;aACF,CAAC,CAAA;YAEF,KAAK,CAAC,GAAG,CAAC;gBACR,IAAI,EAAE,sBAAsB;gBAC5B,WAAW,EAAE,mFAAmF;gBAChG,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;wBACpC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;wBACvC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE;wBAChD,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE;qBAC1C;oBACD,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;oBACzB,oBAAoB,EAAE,KAAK;iBAC5B;gBACD,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;gBAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;oBACpC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;oBAC5B,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;oBACvC,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;oBAC7C,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;oBAC3C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;oBACzC,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CACjF,WAAW,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CACzF,CAAA;oBACD,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,CAAA;gBAC5E,CAAC;aACF,CAAC,CAAA;YAEF,KAAK,CAAC,GAAG,CAAC;gBACR,IAAI,EAAE,yBAAyB;gBAC/B,WAAW,EAAE,2CAA2C;gBACxD,KAAK,EAAE,kBAAkB;gBACzB,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;gBAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;oBACpC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;oBAC5B,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;oBACvC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;oBACtF,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;oBAC3C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;wBAC/C,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAA;oBAC7E,CAAC;oBACD,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;wBACjF,MAAM,OAAO,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA;wBAClF,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA;oBAC7E,CAAC,CAAC,CAAA;oBACF,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,CAAA;gBAC9E,CAAC;aACF,CAAC,CAAA;YAEF,KAAK,CAAC,GAAG,CAAC;gBACR,IAAI,EAAE,uBAAuB;gBAC7B,WAAW,EAAE,mDAAmD;gBAChE,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;wBACpC,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE;qBAC1C;oBACD,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC;oBAC5B,oBAAoB,EAAE,KAAK;iBAC5B;gBACD,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;gBAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;oBACpC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;oBAC5B,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;oBACvC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;oBACzC,IAAI,QAAQ,KAAK,SAAS;wBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;oBACnE,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CACjF,YAAY,CAAC,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,CACpC,CAAA;oBACD,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,CAAA;gBAC5E,CAAC;aACF,CAAC,CAAA;YAEF,KAAK,CAAC,GAAG,CAAC;gBACR,IAAI,EAAE,yBAAyB;gBAC/B,WAAW,EAAE,mCAAmC;gBAChD,KAAK,EAAE,OAAO;gBACd,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;gBAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;oBACpC,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAA;oBAC9C,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CACjF,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC,CAC5B,CAAA;oBACD,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,CAAA;gBAC9E,CAAC;aACF,CAAC,CAAA;YAEF,KAAK,CAAC,GAAG,CAAC;gBACR,IAAI,EAAE,wBAAwB;gBAC9B,WAAW,EAAE,kFAAkF;gBAC/F,KAAK,EAAE,OAAO;gBACd,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;gBAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;oBACpC,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAA;oBAC9C,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CACjF,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,CAC3B,CAAA;oBACD,OAAO,EAAE,OAAO,EAAE,8BAA8B,EAAE,QAAQ,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,CAAA;gBACxF,CAAC;aACF,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/input.d.ts CHANGED
@@ -1,8 +1,9 @@
1
- import { type Backlog, type CategoryColor, type Status } from "./backlog.js";
1
+ import { type Backlog, type CategoryColor, type CategoryIcon, type Status } from "./backlog.js";
2
2
  export declare function record(input: unknown): Record<string, unknown>;
3
3
  export declare function requiredString(input: Record<string, unknown>, key: string): string;
4
4
  export declare function optionalString(input: Record<string, unknown>, key: string): string | undefined;
5
5
  export declare function optionalNullableString(input: Record<string, unknown>, key: string): string | null | undefined;
6
- export declare function optionalStatus(input: Record<string, unknown>, backlog: Backlog): Status | undefined;
6
+ export declare function optionalStatus(input: Record<string, unknown>, backlog: Backlog, key?: string): Status | undefined;
7
7
  export declare function optionalCategoryColor(input: Record<string, unknown>): CategoryColor | undefined;
8
+ export declare function optionalCategoryIcon(input: Record<string, unknown>): CategoryIcon | undefined;
8
9
  export declare function optionalPosition(input: Record<string, unknown>): number | undefined;
package/dist/input.js CHANGED
@@ -1,4 +1,4 @@
1
- import { isCategoryColor, isStatus, } from "./backlog.js";
1
+ import { isCategoryColor, isCategoryIcon, isStatus, } from "./backlog.js";
2
2
  export function record(input) {
3
3
  if (typeof input !== "object" || input === null || Array.isArray(input)) {
4
4
  throw new Error("Tool input must be an object");
@@ -26,12 +26,12 @@ export function optionalNullableString(input, key) {
26
26
  return value;
27
27
  throw new Error(`${key} must be a string or null`);
28
28
  }
29
- export function optionalStatus(input, backlog) {
30
- const value = input.status;
29
+ export function optionalStatus(input, backlog, key = "status") {
30
+ const value = input[key];
31
31
  if (value === undefined)
32
32
  return undefined;
33
33
  if (!isStatus(backlog, value))
34
- throw new Error("status must identify a backlog category");
34
+ throw new Error(`${key} must identify a backlog category`);
35
35
  return value;
36
36
  }
37
37
  export function optionalCategoryColor(input) {
@@ -42,6 +42,14 @@ export function optionalCategoryColor(input) {
42
42
  throw new Error("color must identify a supported category color");
43
43
  return value;
44
44
  }
45
+ export function optionalCategoryIcon(input) {
46
+ const value = input.icon;
47
+ if (value === undefined)
48
+ return undefined;
49
+ if (!isCategoryIcon(value))
50
+ throw new Error("icon must identify a supported category icon");
51
+ return value;
52
+ }
45
53
  export function optionalPosition(input) {
46
54
  const value = input.position;
47
55
  if (value === undefined)
package/dist/input.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"input.js","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,QAAQ,GAIT,MAAM,cAAc,CAAA;AAErB,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACjD,CAAC;IACD,OAAO,KAAgC,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAA8B,EAAE,GAAW;IACxE,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;IACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,6BAA6B,CAAC,CAAA;IACtD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAA8B,EAAE,GAAW;IACxE,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;IACxB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,mBAAmB,CAAC,CAAA;IACzE,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAA8B,EAC9B,GAAW;IAEX,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;IACxB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACpF,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,2BAA2B,CAAC,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAA8B,EAAE,OAAgB;IAC7E,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAA;IAC1B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACzC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;IACzF,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAA8B;IAClE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;IACzB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACzC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IAC9F,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAA8B;IAC7D,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAA;IAC5B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACzC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;IAC5D,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"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"}
package/dist/tui.js CHANGED
@@ -11,17 +11,26 @@ import { watch } from "node:fs";
11
11
  import { join } from "node:path";
12
12
  import { Plugin } from "@opencode-ai/plugin/tui";
13
13
  import { createMemo, createSignal, For, onCleanup, onMount, Show } from "solid-js";
14
- import { addCategory, BACKLOG_FILE, CATEGORY_COLORS, EMPTY_BACKLOG, moveItem, moveCategory, purgeCategory, removeCategory, renameCategory, setCategoryColor } from "./backlog.js";
14
+ import { addCategory, BACKLOG_FILE, CATEGORY_COLORS, CATEGORY_ICONS, CATEGORY_PRESETS, EMPTY_BACKLOG, moveItem, moveCategory, purgeCategory, removeCategory, renameCategory, setCategoryColor, setCategoryIcon } from "./backlog.js";
15
15
  import { readBacklog, readBacklogSync, updateBacklog } from "./store.js";
16
16
  function categoryTitle(categories, status) {
17
17
  return categories.find(category => category.id === status)?.title ?? status;
18
18
  }
19
19
  function categoryColorName(category) {
20
- if (category.color) return category.color;
21
- if (category.id === "todo") return "subdued";
22
- if (category.id === "doing") return "warning";
23
- if (category.id === "done") return "success";
24
- return "info";
20
+ return category.color ?? CATEGORY_PRESETS[category.id]?.color ?? "info";
21
+ }
22
+ function categoryIconName(category) {
23
+ return category.icon ?? CATEGORY_PRESETS[category.id]?.icon ?? "circle";
24
+ }
25
+ function categoryIcon(category) {
26
+ const icon = categoryIconName(category);
27
+ if (icon === "circle") return "○";
28
+ if (icon === "dot") return "●";
29
+ if (icon === "check") return "✓";
30
+ if (icon === "cross") return "×";
31
+ if (icon === "pause") return "‖";
32
+ if (icon === "diamond") return "◆";
33
+ return "";
25
34
  }
26
35
  function readSnapshot(directory) {
27
36
  try {
@@ -115,8 +124,22 @@ function BacklogView(props) {
115
124
  var _el$11 = _$createElement("box"),
116
125
  _el$12 = _$createElement("text");
117
126
  _$insertNode(_el$11, _el$12);
127
+ _$setProp(_el$11, "flexDirection", "row");
128
+ _$setProp(_el$11, "gap", 1);
118
129
  _$setProp(_el$11, "minWidth", 0);
119
130
  _$setProp(_el$11, "onMouseUp", () => void showTaskDetails(props.context, item, backlog().categories));
131
+ _$insert(_el$11, _$createComponent(Show, {
132
+ get when() {
133
+ return categoryIcon(category);
134
+ },
135
+ children: icon => (() => {
136
+ var _el$13 = _$createElement("text");
137
+ _$setProp(_el$13, "flexShrink", 0);
138
+ _$insert(_el$13, icon);
139
+ _$effect(_$p => _$setProp(_el$13, "fg", color(), _$p));
140
+ return _el$13;
141
+ })()
142
+ }), _el$12);
120
143
  _$setProp(_el$12, "wrapMode", "none");
121
144
  _$setProp(_el$12, "truncate", true);
122
145
  _$setProp(_el$12, "flexGrow", 1);
@@ -140,24 +163,24 @@ function taskDetails(item, categories) {
140
163
  }
141
164
  function TaskAction(props) {
142
165
  return (() => {
143
- var _el$13 = _$createElement("text"),
144
- _el$14 = _$createElement("b"),
145
- _el$15 = _$createTextNode(` `);
146
- _$insertNode(_el$13, _el$14);
147
- _$insertNode(_el$13, _el$15);
148
- _$insert(_el$14, () => props.shortcut);
149
- _$insert(_el$13, () => props.label, null);
166
+ var _el$14 = _$createElement("text"),
167
+ _el$15 = _$createElement("b"),
168
+ _el$16 = _$createTextNode(` `);
169
+ _$insertNode(_el$14, _el$15);
170
+ _$insertNode(_el$14, _el$16);
171
+ _$insert(_el$15, () => props.shortcut);
172
+ _$insert(_el$14, () => props.label, null);
150
173
  _$effect(_p$ => {
151
174
  var _v$ = props.danger ? props.context.theme.text.feedback.error.default : props.context.theme.text.subdued,
152
175
  _v$2 = props.run;
153
- _v$ !== _p$.e && (_p$.e = _$setProp(_el$13, "fg", _v$, _p$.e));
154
- _v$2 !== _p$.t && (_p$.t = _$setProp(_el$13, "onMouseUp", _v$2, _p$.t));
176
+ _v$ !== _p$.e && (_p$.e = _$setProp(_el$14, "fg", _v$, _p$.e));
177
+ _v$2 !== _p$.t && (_p$.t = _$setProp(_el$14, "onMouseUp", _v$2, _p$.t));
155
178
  return _p$;
156
179
  }, {
157
180
  e: undefined,
158
181
  t: undefined
159
182
  });
160
- return _el$13;
183
+ return _el$14;
161
184
  })();
162
185
  }
163
186
  function TaskDetailsDialog(props) {
@@ -195,37 +218,37 @@ function TaskDetailsDialog(props) {
195
218
  }]
196
219
  }));
197
220
  return (() => {
198
- var _el$16 = _$createElement("box"),
199
- _el$17 = _$createElement("box"),
200
- _el$18 = _$createElement("text"),
201
- _el$19 = _$createElement("b"),
202
- _el$20 = _$createElement("text"),
203
- _el$22 = _$createElement("text"),
204
- _el$23 = _$createElement("box");
205
- _$insertNode(_el$16, _el$17);
206
- _$insertNode(_el$16, _el$22);
207
- _$insertNode(_el$16, _el$23);
208
- _$setProp(_el$16, "paddingLeft", 2);
209
- _$setProp(_el$16, "paddingRight", 2);
210
- _$setProp(_el$16, "gap", 1);
221
+ var _el$17 = _$createElement("box"),
222
+ _el$18 = _$createElement("box"),
223
+ _el$19 = _$createElement("text"),
224
+ _el$20 = _$createElement("b"),
225
+ _el$21 = _$createElement("text"),
226
+ _el$23 = _$createElement("text"),
227
+ _el$24 = _$createElement("box");
211
228
  _$insertNode(_el$17, _el$18);
212
- _$insertNode(_el$17, _el$20);
213
- _$setProp(_el$17, "flexDirection", "row");
214
- _$setProp(_el$17, "justifyContent", "space-between");
215
- _$setProp(_el$17, "gap", 2);
229
+ _$insertNode(_el$17, _el$23);
230
+ _$insertNode(_el$17, _el$24);
231
+ _$setProp(_el$17, "paddingLeft", 2);
232
+ _$setProp(_el$17, "paddingRight", 2);
233
+ _$setProp(_el$17, "gap", 1);
216
234
  _$insertNode(_el$18, _el$19);
217
- _$setProp(_el$18, "wrapMode", "word");
218
- _$setProp(_el$18, "flexGrow", 1);
219
- _$insert(_el$19, () => props.item.title);
220
- _$insertNode(_el$20, _$createTextNode(`esc`));
221
- _$setProp(_el$20, "onMouseUp", () => props.context.ui.dialog.clear());
222
- _$setProp(_el$22, "wrapMode", "word");
223
- _$insert(_el$22, () => taskDetails(props.item, props.categories));
224
- _$setProp(_el$23, "flexDirection", "row");
225
- _$setProp(_el$23, "justifyContent", "flex-end");
226
- _$setProp(_el$23, "gap", 2);
227
- _$setProp(_el$23, "paddingBottom", 1);
228
- _$insert(_el$23, _$createComponent(TaskAction, {
235
+ _$insertNode(_el$18, _el$21);
236
+ _$setProp(_el$18, "flexDirection", "row");
237
+ _$setProp(_el$18, "justifyContent", "space-between");
238
+ _$setProp(_el$18, "gap", 2);
239
+ _$insertNode(_el$19, _el$20);
240
+ _$setProp(_el$19, "wrapMode", "word");
241
+ _$setProp(_el$19, "flexGrow", 1);
242
+ _$insert(_el$20, () => props.item.title);
243
+ _$insertNode(_el$21, _$createTextNode(`esc`));
244
+ _$setProp(_el$21, "onMouseUp", () => props.context.ui.dialog.clear());
245
+ _$setProp(_el$23, "wrapMode", "word");
246
+ _$insert(_el$23, () => taskDetails(props.item, props.categories));
247
+ _$setProp(_el$24, "flexDirection", "row");
248
+ _$setProp(_el$24, "justifyContent", "flex-end");
249
+ _$setProp(_el$24, "gap", 2);
250
+ _$setProp(_el$24, "paddingBottom", 1);
251
+ _$insert(_el$24, _$createComponent(TaskAction, {
229
252
  get context() {
230
253
  return props.context;
231
254
  },
@@ -233,7 +256,7 @@ function TaskDetailsDialog(props) {
233
256
  label: "status",
234
257
  run: changeStatus
235
258
  }), null);
236
- _$insert(_el$23, _$createComponent(TaskAction, {
259
+ _$insert(_el$24, _$createComponent(TaskAction, {
237
260
  get context() {
238
261
  return props.context;
239
262
  },
@@ -241,7 +264,7 @@ function TaskDetailsDialog(props) {
241
264
  label: "edit",
242
265
  run: edit
243
266
  }), null);
244
- _$insert(_el$23, _$createComponent(TaskAction, {
267
+ _$insert(_el$24, _$createComponent(TaskAction, {
245
268
  get context() {
246
269
  return props.context;
247
270
  },
@@ -254,16 +277,16 @@ function TaskDetailsDialog(props) {
254
277
  var _v$3 = props.context.theme.text.default,
255
278
  _v$4 = props.context.theme.text.subdued,
256
279
  _v$5 = props.context.theme.text.subdued;
257
- _v$3 !== _p$.e && (_p$.e = _$setProp(_el$18, "fg", _v$3, _p$.e));
258
- _v$4 !== _p$.t && (_p$.t = _$setProp(_el$20, "fg", _v$4, _p$.t));
259
- _v$5 !== _p$.a && (_p$.a = _$setProp(_el$22, "fg", _v$5, _p$.a));
280
+ _v$3 !== _p$.e && (_p$.e = _$setProp(_el$19, "fg", _v$3, _p$.e));
281
+ _v$4 !== _p$.t && (_p$.t = _$setProp(_el$21, "fg", _v$4, _p$.t));
282
+ _v$5 !== _p$.a && (_p$.a = _$setProp(_el$23, "fg", _v$5, _p$.a));
260
283
  return _p$;
261
284
  }, {
262
285
  e: undefined,
263
286
  t: undefined,
264
287
  a: undefined
265
288
  });
266
- return _el$16;
289
+ return _el$17;
267
290
  })();
268
291
  }
269
292
  function showTaskDetails(context, item, categories) {
@@ -466,20 +489,36 @@ async function addBacklogCategory(context) {
466
489
  value: suggestedID
467
490
  });
468
491
  if (!id?.trim()) return;
492
+ const preset = CATEGORY_PRESETS[id.trim()];
469
493
  const color = await context.ui.dialog.select({
470
494
  title: title.trim(),
471
495
  placeholder: "Category color",
472
- current: "info",
496
+ current: preset?.color ?? "info",
473
497
  options: CATEGORY_COLORS.map(value => ({
474
498
  title: value,
475
499
  value
476
500
  }))
477
501
  });
478
502
  if (!color) return;
503
+ const icon = await context.ui.dialog.select({
504
+ title: title.trim(),
505
+ placeholder: "Category icon",
506
+ current: preset?.icon ?? "circle",
507
+ options: CATEGORY_ICONS.map(value => ({
508
+ title: `${categoryIcon({
509
+ id: "",
510
+ title: "",
511
+ icon: value
512
+ }) || " "} ${value}`,
513
+ value
514
+ }))
515
+ });
516
+ if (!icon) return;
479
517
  const category = {
480
518
  id: id.trim(),
481
519
  title: title.trim(),
482
- color
520
+ color,
521
+ icon
483
522
  };
484
523
  const {
485
524
  path
@@ -526,6 +565,30 @@ async function colorBacklogCategory(context, category) {
526
565
  variant: "success"
527
566
  });
528
567
  }
568
+ async function iconBacklogCategory(context, category) {
569
+ const icon = await context.ui.dialog.select({
570
+ title: `Icon: ${category.title}`,
571
+ placeholder: "Category icon",
572
+ current: categoryIconName(category),
573
+ options: CATEGORY_ICONS.map(value => ({
574
+ title: `${categoryIcon({
575
+ id: "",
576
+ title: "",
577
+ icon: value
578
+ }) || " "} ${value}`,
579
+ value
580
+ }))
581
+ });
582
+ if (!icon || icon === categoryIconName(category)) return;
583
+ const {
584
+ path
585
+ } = backlogLocation(context);
586
+ await updateBacklog(path, current => setCategoryIcon(current, category.id, icon));
587
+ context.ui.toast.show({
588
+ message: `Updated icon for "${category.title}".`,
589
+ variant: "success"
590
+ });
591
+ }
529
592
  async function moveBacklogCategory(context, category) {
530
593
  const {
531
594
  path
@@ -604,6 +667,9 @@ async function manageBacklogCategories(context) {
604
667
  }, {
605
668
  title: "Change color",
606
669
  value: "color"
670
+ }, {
671
+ title: "Change icon",
672
+ value: "icon"
607
673
  }, {
608
674
  title: "Move",
609
675
  value: "move"
@@ -617,6 +683,7 @@ async function manageBacklogCategories(context) {
617
683
  });
618
684
  if (action === "rename") return renameBacklogCategory(context, category);
619
685
  if (action === "color") return colorBacklogCategory(context, category);
686
+ if (action === "icon") return iconBacklogCategory(context, category);
620
687
  if (action === "move") return moveBacklogCategory(context, category);
621
688
  if (action === "delete") return deleteBacklogCategory(context, category);
622
689
  if (action !== "purge") return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-backlog",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "Project backlog tools and sidebar for OpenCode 2",
5
5
  "type": "module",
6
6
  "repository": {