@sascha384/tic 1.7.0 → 1.8.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.
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "tic",
3
+ "description": "Issue tracking plugin for Claude Code",
4
+ "owner": {
5
+ "name": "Sascha Krug"
6
+ },
7
+ "plugins": [
8
+ {
9
+ "name": "tic",
10
+ "description": "Issue tracking skills and MCP server",
11
+ "source": "./"
12
+ }
13
+ ]
14
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "tic",
3
+ "description": "Issue tracking skills for Claude Code",
4
+ "version": "1.8.0",
5
+ "author": {
6
+ "name": "Sascha Krug"
7
+ },
8
+ "repository": "https://github.com/fa-krug/tic",
9
+ "license": "MIT",
10
+ "keywords": [
11
+ "issue-tracking",
12
+ "work-items",
13
+ "mcp"
14
+ ]
15
+ }
package/.mcp.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "tic": {
3
+ "command": "npx",
4
+ "args": ["-y", "@sascha384/tic", "mcp", "serve"]
5
+ }
6
+ }
package/README.md CHANGED
@@ -156,66 +156,31 @@ next_id: 1
156
156
 
157
157
  You can edit these files directly — they're plain text. Customize types, statuses, and iterations by editing `config.yml`.
158
158
 
159
- ## MCP Server
160
-
161
- tic includes a built-in [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server that exposes your work items to AI assistants like Claude. This lets AI tools read, create, update, and manage your issues without leaving the conversation.
162
-
163
- ### Starting the Server
159
+ ## Claude Code Integration
164
160
 
165
161
  ```bash
166
- tic mcp serve
162
+ claude plugin marketplace add fa-krug/tic
163
+ claude plugin install tic
167
164
  ```
168
165
 
169
- The server communicates over stdio using the MCP protocol.
170
-
171
- ### Connecting to Claude Code
166
+ That's it. The plugin installs tic automatically on first use.
172
167
 
173
- Add tic as an MCP server in your project:
168
+ ### What Claude Can Do
174
169
 
175
- ```bash
176
- claude mcp add --scope project --transport stdio tic -- npx tic mcp serve
177
- ```
170
+ - List, search, create, update, and delete work items
171
+ - Navigate parent-child hierarchies and dependencies
172
+ - Add comments and manage iterations
173
+ - Initialize tic in new projects
178
174
 
179
- Or create a `.mcp.json` file in your project root:
180
-
181
- ```json
182
- {
183
- "mcpServers": {
184
- "tic": {
185
- "type": "stdio",
186
- "command": "npx",
187
- "args": ["tic", "mcp", "serve"]
188
- }
189
- }
190
- }
191
- ```
175
+ The plugin auto-detects your backend (GitHub, GitLab, Azure DevOps, or local) and adapts to its capabilities.
192
176
 
193
- ### Available Tools
177
+ ### Updating
194
178
 
195
- The MCP server exposes 14 tools:
196
-
197
- | Tool | Description |
198
- |------|-------------|
199
- | `init_project` | Initialize a new tic project (creates `.tic/` directory) |
200
- | `get_config` | Get project configuration (statuses, types, iterations) |
201
- | `list_items` | List work items with optional filters by type, status, or iteration |
202
- | `show_item` | Show full details of a single work item |
203
- | `create_item` | Create a new work item with title, type, status, priority, and more |
204
- | `update_item` | Update any field on an existing work item |
205
- | `delete_item` | Preview deleting a work item (shows affected children and dependents) |
206
- | `confirm_delete` | Confirm and execute a previously previewed deletion |
207
- | `add_comment` | Add a timestamped comment to a work item |
208
- | `set_iteration` | Set the current active iteration |
209
- | `search_items` | Search work items by text query across titles and descriptions |
210
- | `get_children` | Get child items of a specific work item |
211
- | `get_dependents` | Get items that depend on a specific work item |
212
- | `get_item_tree` | Get work items as a hierarchical tree structure |
213
-
214
- ### Safety
215
-
216
- Deletion is a two-step process: `delete_item` returns a preview of what will be affected (children that will be unparented, dependents that will lose a dependency), and `confirm_delete` must be called separately to actually remove the item. This prevents accidental data loss when AI tools are managing your issues.
179
+ ```bash
180
+ claude plugin update tic
181
+ ```
217
182
 
218
- If the server is started in a directory without a `.tic/` project, all tools except `init_project` will return an error asking you to initialize first.
183
+ Or enable auto-updates for the tic marketplace in Claude Code settings.
219
184
 
220
185
  ## CLI Commands
221
186
 
@@ -0,0 +1,10 @@
1
+ import type { BackendCapabilities } from '../backends/types.js';
2
+ export type BulkAction = 'status' | 'iteration' | 'parent' | 'type' | 'priority' | 'assignee' | 'labels' | 'delete';
3
+ interface BulkMenuProps {
4
+ itemCount: number;
5
+ capabilities: BackendCapabilities;
6
+ onSelect: (action: BulkAction) => void;
7
+ onCancel: () => void;
8
+ }
9
+ export declare function BulkMenu({ itemCount, capabilities, onSelect, onCancel, }: BulkMenuProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
@@ -0,0 +1,49 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text, useInput } from 'ink';
3
+ import SelectInput from 'ink-select-input';
4
+ export function BulkMenu({ itemCount, capabilities, onSelect, onCancel, }) {
5
+ useInput((input, key) => {
6
+ if (key.escape) {
7
+ onCancel();
8
+ return;
9
+ }
10
+ // Shortcut keys
11
+ const shortcuts = {
12
+ s: 'status',
13
+ i: 'iteration',
14
+ p: 'parent',
15
+ t: 'type',
16
+ P: 'priority',
17
+ a: 'assignee',
18
+ l: 'labels',
19
+ d: 'delete',
20
+ };
21
+ const action = shortcuts[input];
22
+ if (action) {
23
+ onSelect(action);
24
+ }
25
+ });
26
+ const items = [];
27
+ items.push({ label: 'Set status... (s)', value: 'status' });
28
+ if (capabilities.iterations) {
29
+ items.push({ label: 'Set iteration... (i)', value: 'iteration' });
30
+ }
31
+ if (capabilities.fields.parent) {
32
+ items.push({ label: 'Set parent... (p)', value: 'parent' });
33
+ }
34
+ if (capabilities.customTypes) {
35
+ items.push({ label: 'Set type... (t)', value: 'type' });
36
+ }
37
+ if (capabilities.fields.priority) {
38
+ items.push({ label: 'Set priority... (P)', value: 'priority' });
39
+ }
40
+ if (capabilities.fields.assignee) {
41
+ items.push({ label: 'Set assignee... (a)', value: 'assignee' });
42
+ }
43
+ if (capabilities.fields.labels) {
44
+ items.push({ label: 'Set labels... (l)', value: 'labels' });
45
+ }
46
+ items.push({ label: 'Delete (d)', value: 'delete' });
47
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { bold: true, color: "cyan", children: ["Bulk Actions (", itemCount, " ", itemCount === 1 ? 'item' : 'items', ")"] }) }), _jsx(SelectInput, { items: items, onSelect: (item) => onSelect(item.value) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: '↑↓ navigate enter select esc cancel' }) })] }));
48
+ }
49
+ //# sourceMappingURL=BulkMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BulkMenu.js","sourceRoot":"","sources":["../../src/components/BulkMenu.tsx"],"names":[],"mappings":"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"}
@@ -5,8 +5,9 @@ interface CardLayoutProps {
5
5
  cursor: number;
6
6
  capabilities: BackendCapabilities;
7
7
  collapsedIds: Set<string>;
8
+ markedIds: Set<string>;
8
9
  }
9
10
  export declare function formatPriority(priority: string | undefined): string;
10
11
  export declare function formatAssignee(assignee: string | undefined): string;
11
- export declare function CardLayout({ treeItems, cursor, capabilities, collapsedIds, }: CardLayoutProps): import("react/jsx-runtime").JSX.Element | null;
12
+ export declare function CardLayout({ treeItems, cursor, capabilities, collapsedIds, markedIds, }: CardLayoutProps): import("react/jsx-runtime").JSX.Element | null;
12
13
  export {};
@@ -27,12 +27,13 @@ function statusColor(status) {
27
27
  return 'red';
28
28
  return 'blue';
29
29
  }
30
- export function CardLayout({ treeItems, cursor, capabilities, collapsedIds, }) {
30
+ export function CardLayout({ treeItems, cursor, capabilities, collapsedIds, markedIds, }) {
31
31
  if (treeItems.length === 0)
32
32
  return null;
33
33
  return (_jsx(Box, { flexDirection: "column", children: treeItems.map((treeItem, idx) => {
34
34
  const { item, depth, isCrossType, hasChildren } = treeItem;
35
35
  const selected = idx === cursor;
36
+ const marked = markedIds.has(item.id);
36
37
  const indent = ' '.repeat(depth);
37
38
  const marker = selected ? '>' : ' ';
38
39
  const hasDeps = capabilities.fields.dependsOn && item.dependsOn.length > 0;
@@ -47,7 +48,7 @@ export function CardLayout({ treeItems, cursor, capabilities, collapsedIds, }) {
47
48
  // Indent for meta line: align with title start
48
49
  // marker(1) + indent + collapseIndicator(2) + '#'(1) + id + ' '(1) = offset
49
50
  const metaIndent = ' ' + indent + ' ' + ' '.repeat(item.id.length + 2);
50
- return (_jsxs(Box, { flexDirection: "column", marginBottom: idx < treeItems.length - 1 ? 1 : 0, children: [_jsx(Box, { children: _jsxs(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, children: [marker, indent, collapseIndicator, "#", item.id, " ", item.title, typeLabel, depIndicator] }) }), _jsxs(Box, { children: [_jsx(Text, { color: selected ? 'cyan' : undefined, dimColor: dimmed, children: metaIndent }), _jsx(Text, { color: statusColor(item.status), children: "\u25CF" }), _jsxs(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, children: [' ', item.status, capabilities.fields.priority && formatPriority(item.priority)
51
+ return (_jsxs(Box, { flexDirection: "column", marginBottom: idx < treeItems.length - 1 ? 1 : 0, ...(marked && !selected ? { backgroundColor: 'cyan' } : {}), children: [_jsx(Box, { children: _jsxs(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, children: [marker, indent, collapseIndicator, "#", item.id, " ", item.title, typeLabel, depIndicator] }) }), _jsxs(Box, { children: [_jsx(Text, { color: selected ? 'cyan' : undefined, dimColor: dimmed, children: metaIndent }), _jsx(Text, { color: statusColor(item.status), children: "\u25CF" }), _jsxs(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, children: [' ', item.status, capabilities.fields.priority && formatPriority(item.priority)
51
52
  ? ' ' + formatPriority(item.priority)
52
53
  : '', capabilities.fields.assignee && formatAssignee(item.assignee)
53
54
  ? ' ' + formatAssignee(item.assignee)
@@ -1 +1 @@
1
- {"version":3,"file":"CardLayout.js","sourceRoot":"","sources":["../../src/components/CardLayout.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CardLayout.js","sourceRoot":"","sources":["../../src/components/CardLayout.tsx"],"names":[],"mappings":"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"}
@@ -31,6 +31,21 @@ export function getShortcuts(screen, capabilities, gitAvailable, hasSyncManager)
31
31
  if (capabilities.fields.parent) {
32
32
  actions.push({ key: 'p', description: 'Set parent' });
33
33
  }
34
+ actions.push({ key: 'm', description: 'Toggle mark' });
35
+ actions.push({ key: 'M', description: 'Clear all marks' });
36
+ actions.push({ key: 'b', description: 'Bulk actions menu' });
37
+ if (capabilities.customTypes) {
38
+ actions.push({ key: 't', description: 'Set type' });
39
+ }
40
+ if (capabilities.fields.priority) {
41
+ actions.push({ key: 'P', description: 'Set priority' });
42
+ }
43
+ if (capabilities.fields.assignee) {
44
+ actions.push({ key: 'a', description: 'Set assignee' });
45
+ }
46
+ if (capabilities.fields.labels) {
47
+ actions.push({ key: 'l', description: 'Set labels' });
48
+ }
34
49
  const switching = [];
35
50
  if (capabilities.customTypes) {
36
51
  switching.push({ key: 'tab', description: 'Cycle work item type' });
@@ -44,7 +59,7 @@ export function getShortcuts(screen, capabilities, gitAvailable, hasSyncManager)
44
59
  other.push({ key: 'r', description: 'Sync' });
45
60
  }
46
61
  if (gitAvailable) {
47
- other.push({ key: 'b', description: 'Branch / worktree' });
62
+ other.push({ key: 'B', description: 'Branch / worktree' });
48
63
  }
49
64
  other.push({ key: 'q', description: 'Quit' });
50
65
  const groups = [
@@ -1 +1 @@
1
- {"version":3,"file":"HelpScreen.js","sourceRoot":"","sources":["../../src/components/HelpScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAatC,MAAM,aAAa,GAA2B;IAC5C,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,WAAW;IACjB,kBAAkB,EAAE,kBAAkB;IACtC,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,MAAM,UAAU,YAAY,CAC1B,MAAc,EACd,YAAiC,EACjC,YAAqB,EACrB,cAAuB;IAEvB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,GAAG,GAAoB;gBAC3B,EAAE,GAAG,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE;aACxD,CAAC;YACF,IAAI,YAAY,CAAC,aAAa,EAAE,CAAC;gBAC/B,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC,CAAC;gBACvE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC,CAAC;YAC9D,CAAC;YAED,MAAM,OAAO,GAAoB;gBAC/B,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE;gBAC1C,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,iBAAiB,EAAE;gBAC5C,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,aAAa,EAAE;gBACxC,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,iBAAiB,EAAE;gBAC5C,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,eAAe,EAAE;aAC3C,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,CAAC;YACxD,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC/B,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC;YACxD,CAAC;YAED,MAAM,SAAS,GAAoB,EAAE,CAAC;YACtC,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;gBAC7B,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,CAAC,CAAC;YACtE,CAAC;YACD,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;gBAC5B,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAChE,CAAC;YACD,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;YAEtD,MAAM,KAAK,GAAoB,EAAE,CAAC;YAClC,IAAI,cAAc,EAAE,CAAC;gBACnB,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;YAChD,CAAC;YACD,IAAI,YAAY,EAAE,CAAC;gBACjB,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC,CAAC;YAC7D,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;YAE9C,MAAM,MAAM,GAAoB;gBAC9B,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE;gBACvC,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE;aACzC,CAAC;YACF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;YAC5D,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YAClD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,OAAO;gBACL;oBACE,KAAK,EAAE,YAAY;oBACnB,SAAS,EAAE;wBACT,EAAE,GAAG,EAAE,eAAe,EAAE,WAAW,EAAE,qBAAqB,EAAE;qBAC7D;iBACF;gBACD;oBACE,KAAK,EAAE,SAAS;oBAChB,SAAS,EAAE;wBACT;4BACE,GAAG,EAAE,OAAO;4BACZ,WAAW,EAAE,gCAAgC;yBAC9C;wBACD;4BACE,GAAG,EAAE,KAAK;4BACV,WAAW,EAAE,wCAAwC;yBACtD;qBACF;iBACF;gBACD;oBACE,KAAK,EAAE,MAAM;oBACb,SAAS,EAAE;wBACT;4BACE,GAAG,EAAE,KAAK;4BACV,WAAW,EAAE,uCAAuC;yBACrD;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,OAAO;gBACL;oBACE,KAAK,EAAE,YAAY;oBACnB,SAAS,EAAE;wBACT,EAAE,GAAG,EAAE,eAAe,EAAE,WAAW,EAAE,qBAAqB,EAAE;wBAC5D,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE;qBAClD;iBACF;aACF,CAAC;QACJ,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,OAAO;gBACL;oBACE,KAAK,EAAE,YAAY;oBACnB,SAAS,EAAE;wBACT,EAAE,GAAG,EAAE,eAAe,EAAE,WAAW,EAAE,kBAAkB,EAAE;wBACzD,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE;wBAC/C,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE;qBACzC;iBACF;gBACD;oBACE,KAAK,EAAE,SAAS;oBAChB,SAAS,EAAE;wBACT,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE;wBAChD,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE;qBAC7C;iBACF;aACF,CAAC;QACJ,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,OAAO;gBACL;oBACE,KAAK,EAAE,YAAY;oBACnB,SAAS,EAAE;wBACT,EAAE,GAAG,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE;wBACtD,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE;qBACzC;iBACF;aACF,CAAC;QACJ,CAAC;QAED;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAE,YAAY,EAA4B;IACnE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,GAAG,WAAW,EAAE,CAAC;IACrE,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAC/C,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEjE,MAAM,MAAM,GAAG,YAAY,CACzB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,KAAK,IAAI,CACrB,CAAC;IAEF,QAAQ,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACvB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,oBAAoB,EAAE,CAAC;QACzB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,aAAa,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC;IAEpD,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,2CACC,KAAK,IACtB,GACH,EAEL,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,MAAC,GAAG,IAAmB,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aAC3D,MAAC,IAAI,IAAC,IAAI,mBAAE,KAAK,CAAC,KAAK,SAAS,EAC/B,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CACjC,MAAC,GAAG,IAAoB,UAAU,EAAE,CAAC,aACnC,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,QAAQ,CAAC,GAAG,GAAQ,GACpC,EACN,KAAC,IAAI,cAAE,QAAQ,CAAC,WAAW,GAAQ,KAJ3B,QAAQ,CAAC,GAAG,CAKhB,CACP,CAAC,KATM,KAAK,CAAC,KAAK,CAUf,CACP,CAAC,EAEF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,QAAQ,gCAAiB,GAC3B,IACF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"HelpScreen.js","sourceRoot":"","sources":["../../src/components/HelpScreen.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ interface PriorityPickerProps {
2
+ onSelect: (priority: 'low' | 'medium' | 'high' | 'critical') => void;
3
+ onCancel: () => void;
4
+ }
5
+ export declare function PriorityPicker({ onSelect, onCancel }: PriorityPickerProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text, useInput } from 'ink';
3
+ import SelectInput from 'ink-select-input';
4
+ const PRIORITIES = [
5
+ { label: 'Critical', value: 'critical' },
6
+ { label: 'High', value: 'high' },
7
+ { label: 'Medium', value: 'medium' },
8
+ { label: 'Low', value: 'low' },
9
+ ];
10
+ export function PriorityPicker({ onSelect, onCancel }) {
11
+ useInput((_input, key) => {
12
+ if (key.escape) {
13
+ onCancel();
14
+ }
15
+ });
16
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, children: "Set Priority" }) }), _jsx(SelectInput, { items: PRIORITIES, onSelect: (item) => onSelect(item.value) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: '↑↓ navigate enter select esc cancel' }) })] }));
17
+ }
18
+ //# sourceMappingURL=PriorityPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PriorityPicker.js","sourceRoot":"","sources":["../../src/components/PriorityPicker.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAO3C,MAAM,UAAU,GAGX;IACH,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACxC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAChC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACpC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;CAC/B,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAuB;IACxE,QAAQ,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACvB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,IAAI,mCAAoB,GAC1B,EACN,KAAC,WAAW,IACV,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GACxC,EACF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,QAAQ,kBAAE,uCAAuC,GAAQ,GAC3D,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface StatusPickerProps {
2
+ statuses: string[];
3
+ onSelect: (status: string) => void;
4
+ onCancel: () => void;
5
+ }
6
+ export declare function StatusPicker({ statuses, onSelect, onCancel, }: StatusPickerProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text, useInput } from 'ink';
3
+ import SelectInput from 'ink-select-input';
4
+ export function StatusPicker({ statuses, onSelect, onCancel, }) {
5
+ useInput((_input, key) => {
6
+ if (key.escape) {
7
+ onCancel();
8
+ }
9
+ });
10
+ const items = statuses.map((s) => ({
11
+ label: s,
12
+ value: s,
13
+ }));
14
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, children: "Set Status" }) }), _jsx(SelectInput, { items: items, onSelect: (item) => onSelect(item.value) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: '↑↓ navigate enter select esc cancel' }) })] }));
15
+ }
16
+ //# sourceMappingURL=StatusPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusPicker.js","sourceRoot":"","sources":["../../src/components/StatusPicker.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAQ3C,MAAM,UAAU,YAAY,CAAC,EAC3B,QAAQ,EACR,QAAQ,EACR,QAAQ,GACU;IAClB,QAAQ,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACvB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACjC,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,CAAC;KACT,CAAC,CAAC,CAAC;IAEJ,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,IAAI,iCAAkB,GACxB,EACN,KAAC,WAAW,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAI,EACvE,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,QAAQ,kBAAE,uCAAuC,GAAQ,GAC3D,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -5,6 +5,7 @@ interface TableLayoutProps {
5
5
  cursor: number;
6
6
  capabilities: BackendCapabilities;
7
7
  collapsedIds: Set<string>;
8
+ markedIds: Set<string>;
8
9
  }
9
- export declare function TableLayout({ treeItems, cursor, capabilities, collapsedIds, }: TableLayoutProps): import("react/jsx-runtime").JSX.Element;
10
+ export declare function TableLayout({ treeItems, cursor, capabilities, collapsedIds, markedIds, }: TableLayoutProps): import("react/jsx-runtime").JSX.Element;
10
11
  export {};
@@ -5,7 +5,7 @@ const colStatus = 14;
5
5
  const colPriority = 10;
6
6
  const colAssignee = 12;
7
7
  const gap = 2;
8
- export function TableLayout({ treeItems, cursor, capabilities, collapsedIds, }) {
8
+ export function TableLayout({ treeItems, cursor, capabilities, collapsedIds, markedIds, }) {
9
9
  const colId = useMemo(() => {
10
10
  const maxLen = treeItems.reduce((max, { item }) => Math.max(max, item.id.length), 2);
11
11
  return maxLen + gap;
@@ -13,6 +13,7 @@ export function TableLayout({ treeItems, cursor, capabilities, collapsedIds, })
13
13
  return (_jsxs(_Fragment, { children: [_jsxs(Box, { children: [_jsx(Box, { width: 2, children: _jsx(Text, { children: " " }) }), _jsx(Box, { width: colId, children: _jsx(Text, { bold: true, underline: true, children: "ID" }) }), _jsx(Box, { flexGrow: 1, marginRight: gap, children: _jsx(Text, { bold: true, underline: true, children: "Title" }) }), _jsx(Box, { width: colStatus, marginRight: gap, children: _jsx(Text, { bold: true, underline: true, children: "Status" }) }), capabilities.fields.priority && (_jsx(Box, { width: colPriority, marginRight: gap, children: _jsx(Text, { bold: true, underline: true, children: "Priority" }) })), capabilities.fields.assignee && (_jsx(Box, { width: colAssignee, children: _jsx(Text, { bold: true, underline: true, children: "Assignee" }) }))] }), treeItems.map((treeItem, idx) => {
14
14
  const { item, prefix, isCrossType, hasChildren } = treeItem;
15
15
  const selected = idx === cursor;
16
+ const marked = markedIds.has(item.id);
16
17
  const hasUnresolvedDeps = item.dependsOn.length > 0;
17
18
  const collapseIndicator = hasChildren
18
19
  ? collapsedIds.has(item.id)
@@ -21,7 +22,7 @@ export function TableLayout({ treeItems, cursor, capabilities, collapsedIds, })
21
22
  : ' ';
22
23
  const typeLabel = isCrossType ? ` (${item.type})` : '';
23
24
  const dimmed = isCrossType && !selected;
24
- return (_jsxs(Box, { children: [_jsx(Box, { width: 2, children: _jsx(Text, { color: "cyan", children: selected ? '>' : ' ' }) }), _jsx(Box, { width: colId, overflowX: "hidden", children: _jsx(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, children: item.id }) }), _jsx(Box, { flexGrow: 1, marginRight: gap, overflowX: "hidden", children: _jsxs(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, wrap: "truncate", children: [capabilities.relationships ? prefix : '', collapseIndicator, item.title, typeLabel] }) }), _jsx(Box, { width: colStatus, marginRight: gap, overflowX: "hidden", children: _jsxs(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, children: [capabilities.fields.dependsOn && hasUnresolvedDeps ? '⧗ ' : '', item.status] }) }), capabilities.fields.priority && (_jsx(Box, { width: colPriority, marginRight: gap, overflowX: "hidden", children: _jsx(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, children: item.priority }) })), capabilities.fields.assignee && (_jsx(Box, { width: colAssignee, overflowX: "hidden", children: _jsx(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, wrap: "truncate", children: item.assignee }) }))] }, `${item.id}-${item.type}`));
25
+ return (_jsxs(Box, { ...(marked && !selected ? { backgroundColor: 'cyan' } : {}), children: [_jsx(Box, { width: 2, children: _jsx(Text, { color: "cyan", children: selected ? '>' : ' ' }) }), _jsx(Box, { width: colId, overflowX: "hidden", children: _jsx(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, children: item.id }) }), _jsx(Box, { flexGrow: 1, marginRight: gap, overflowX: "hidden", children: _jsxs(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, wrap: "truncate", children: [capabilities.relationships ? prefix : '', collapseIndicator, item.title, typeLabel] }) }), _jsx(Box, { width: colStatus, marginRight: gap, overflowX: "hidden", children: _jsxs(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, children: [capabilities.fields.dependsOn && hasUnresolvedDeps ? '⧗ ' : '', item.status] }) }), capabilities.fields.priority && (_jsx(Box, { width: colPriority, marginRight: gap, overflowX: "hidden", children: _jsx(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, children: item.priority }) })), capabilities.fields.assignee && (_jsx(Box, { width: colAssignee, overflowX: "hidden", children: _jsx(Text, { color: selected ? 'cyan' : undefined, bold: selected, dimColor: dimmed, wrap: "truncate", children: item.assignee }) }))] }, `${item.id}-${item.type}`));
25
26
  })] }));
26
27
  }
27
28
  //# sourceMappingURL=TableLayout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableLayout.js","sourceRoot":"","sources":["../../src/components/TableLayout.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAWhC,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB,MAAM,GAAG,GAAG,CAAC,CAAC;AAEd,MAAM,UAAU,WAAW,CAAC,EAC1B,SAAS,EACT,MAAM,EACN,YAAY,EACZ,YAAY,GACK;IACjB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAC7B,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAChD,CAAC,CACF,CAAC;QACF,OAAO,MAAM,GAAG,GAAG,CAAC;IACtB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,CACL,8BACE,MAAC,GAAG,eACF,KAAC,GAAG,IAAC,KAAK,EAAE,CAAC,YACX,KAAC,IAAI,oBAAS,GACV,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,KAAK,YACf,KAAC,IAAI,IAAC,IAAI,QAAC,SAAS,yBAEb,GACH,EACN,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,YAChC,KAAC,IAAI,IAAC,IAAI,QAAC,SAAS,4BAEb,GACH,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,YACrC,KAAC,IAAI,IAAC,IAAI,QAAC,SAAS,6BAEb,GACH,EACL,YAAY,CAAC,MAAM,CAAC,QAAQ,IAAI,CAC/B,KAAC,GAAG,IAAC,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,YACvC,KAAC,IAAI,IAAC,IAAI,QAAC,SAAS,+BAEb,GACH,CACP,EACA,YAAY,CAAC,MAAM,CAAC,QAAQ,IAAI,CAC/B,KAAC,GAAG,IAAC,KAAK,EAAE,WAAW,YACrB,KAAC,IAAI,IAAC,IAAI,QAAC,SAAS,+BAEb,GACH,CACP,IACG,EAEL,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE;gBAC/B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;gBAC5D,MAAM,QAAQ,GAAG,GAAG,KAAK,MAAM,CAAC;gBAChC,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;gBACpD,MAAM,iBAAiB,GAAG,WAAW;oBACnC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBACzB,CAAC,CAAC,IAAI;wBACN,CAAC,CAAC,IAAI;oBACR,CAAC,CAAC,IAAI,CAAC;gBACT,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvD,MAAM,MAAM,GAAG,WAAW,IAAI,CAAC,QAAQ,CAAC;gBACxC,OAAO,CACL,MAAC,GAAG,eACF,KAAC,GAAG,IAAC,KAAK,EAAE,CAAC,YACX,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAQ,GAC5C,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAC,QAAQ,YACnC,KAAC,IAAI,IACH,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACpC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,YAEf,IAAI,CAAC,EAAE,GACH,GACH,EACN,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAC,QAAQ,YACpD,MAAC,IAAI,IACH,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACpC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAC,UAAU,aAEd,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EACxC,iBAAiB,EACjB,IAAI,CAAC,KAAK,EACV,SAAS,IACL,GACH,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAC,QAAQ,YACzD,MAAC,IAAI,IACH,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACpC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,aAEf,YAAY,CAAC,MAAM,CAAC,SAAS,IAAI,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAC9D,IAAI,CAAC,MAAM,IACP,GACH,EACL,YAAY,CAAC,MAAM,CAAC,QAAQ,IAAI,CAC/B,KAAC,GAAG,IAAC,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAC,QAAQ,YAC3D,KAAC,IAAI,IACH,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACpC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,YAEf,IAAI,CAAC,QAAQ,GACT,GACH,CACP,EACA,YAAY,CAAC,MAAM,CAAC,QAAQ,IAAI,CAC/B,KAAC,GAAG,IAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAC,QAAQ,YACzC,KAAC,IAAI,IACH,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACpC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAC,UAAU,YAEd,IAAI,CAAC,QAAQ,GACT,GACH,CACP,KA1DO,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CA2D7B,CACP,CAAC;YACJ,CAAC,CAAC,IACD,CACJ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"TableLayout.js","sourceRoot":"","sources":["../../src/components/TableLayout.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface TypePickerProps {
2
+ types: string[];
3
+ onSelect: (type: string) => void;
4
+ onCancel: () => void;
5
+ }
6
+ export declare function TypePicker({ types, onSelect, onCancel }: TypePickerProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text, useInput } from 'ink';
3
+ import SelectInput from 'ink-select-input';
4
+ export function TypePicker({ types, onSelect, onCancel }) {
5
+ useInput((_input, key) => {
6
+ if (key.escape) {
7
+ onCancel();
8
+ }
9
+ });
10
+ const items = types.map((t) => ({
11
+ label: t.charAt(0).toUpperCase() + t.slice(1),
12
+ value: t,
13
+ }));
14
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, children: "Set Type" }) }), _jsx(SelectInput, { items: items, onSelect: (item) => onSelect(item.value) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: '↑↓ navigate enter select esc cancel' }) })] }));
15
+ }
16
+ //# sourceMappingURL=TypePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypePicker.js","sourceRoot":"","sources":["../../src/components/TypePicker.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAQ3C,MAAM,UAAU,UAAU,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAmB;IACvE,QAAQ,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACvB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7C,KAAK,EAAE,CAAC;KACT,CAAC,CAAC,CAAC;IAEJ,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,IAAI,+BAAgB,GACtB,EACN,KAAC,WAAW,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAI,EACvE,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,QAAQ,kBAAE,uCAAuC,GAAQ,GAC3D,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -1,2 +1,5 @@
1
1
  export type { TreeItem } from './buildTree.js';
2
+ export declare function getTargetIds(markedIds: Set<string>, cursorItem: {
3
+ id: string;
4
+ } | undefined): string[];
2
5
  export declare function WorkItemList(): import("react/jsx-runtime").JSX.Element;
@@ -15,6 +15,16 @@ import { useBackendData } from '../hooks/useBackendData.js';
15
15
  import { SyncQueueStore } from '../sync/queue.js';
16
16
  import { buildTree } from './buildTree.js';
17
17
  import { SearchOverlay } from './SearchOverlay.js';
18
+ import { BulkMenu } from './BulkMenu.js';
19
+ import { PriorityPicker } from './PriorityPicker.js';
20
+ import { TypePicker } from './TypePicker.js';
21
+ import { StatusPicker } from './StatusPicker.js';
22
+ export function getTargetIds(markedIds, cursorItem) {
23
+ if (markedIds.size > 0) {
24
+ return [...markedIds];
25
+ }
26
+ return cursorItem ? [cursorItem.id] : [];
27
+ }
18
28
  export function WorkItemList() {
19
29
  const { backend, syncManager, navigate, navigateToHelp, selectWorkItem, activeType, setActiveType, } = useAppState();
20
30
  const { exit } = useApp();
@@ -25,8 +35,23 @@ export function WorkItemList() {
25
35
  const [parentInput, setParentInput] = useState('');
26
36
  const [isSearching, setIsSearching] = useState(false);
27
37
  const [allSearchItems, setAllSearchItems] = useState([]);
38
+ // Marked items state for bulk operations
39
+ const [markedIds, setMarkedIds] = useState(() => new Set());
40
+ const [deleteTargetIds, setDeleteTargetIds] = useState([]);
41
+ const [parentTargetIds, setParentTargetIds] = useState([]);
42
+ const [showBulkMenu, setShowBulkMenu] = useState(false);
43
+ const [showStatusPicker, setShowStatusPicker] = useState(false);
44
+ const [showTypePicker, setShowTypePicker] = useState(false);
45
+ const [showPriorityPicker, setShowPriorityPicker] = useState(false);
46
+ const [settingAssignee, setSettingAssignee] = useState(false);
47
+ const [assigneeInput, setAssigneeInput] = useState('');
48
+ const [settingLabels, setSettingLabels] = useState(false);
49
+ const [labelsInput, setLabelsInput] = useState('');
50
+ const [bulkTargetIds, setBulkTargetIds] = useState([]);
51
+ // Marked count for header display
52
+ const markedCount = markedIds.size;
28
53
  const [syncStatus, setSyncStatus] = useState(syncManager?.getStatus() ?? null);
29
- const { capabilities, types, currentIteration: iteration, items: allItems, loading, refresh: refreshData, } = useBackendData(backend);
54
+ const { capabilities, types, statuses, currentIteration: iteration, items: allItems, loading, refresh: refreshData, } = useBackendData(backend);
30
55
  useEffect(() => {
31
56
  if (!syncManager)
32
57
  return;
@@ -116,20 +141,47 @@ export function WorkItemList() {
116
141
  }
117
142
  return;
118
143
  }
144
+ if (showBulkMenu)
145
+ return;
146
+ if (settingAssignee) {
147
+ if (key.escape) {
148
+ setSettingAssignee(false);
149
+ setBulkTargetIds([]);
150
+ }
151
+ return;
152
+ }
153
+ if (settingLabels) {
154
+ if (key.escape) {
155
+ setSettingLabels(false);
156
+ setBulkTargetIds([]);
157
+ }
158
+ return;
159
+ }
119
160
  if (isSearching)
120
161
  return;
121
162
  if (confirmDelete) {
122
163
  if (input === 'y' || input === 'Y') {
123
164
  void (async () => {
124
- await backend.cachedDeleteWorkItem(treeItems[cursor].item.id);
125
- await queueWrite('delete', treeItems[cursor].item.id);
165
+ for (const id of deleteTargetIds) {
166
+ await backend.cachedDeleteWorkItem(id);
167
+ await queueWrite('delete', id);
168
+ }
126
169
  setConfirmDelete(false);
170
+ setDeleteTargetIds([]);
171
+ setMarkedIds((prev) => {
172
+ const next = new Set(prev);
173
+ for (const id of deleteTargetIds) {
174
+ next.delete(id);
175
+ }
176
+ return next;
177
+ });
127
178
  setCursor((c) => Math.max(0, c - 1));
128
179
  refreshData();
129
180
  })();
130
181
  }
131
182
  else {
132
183
  setConfirmDelete(false);
184
+ setDeleteTargetIds([]);
133
185
  }
134
186
  return;
135
187
  }
@@ -187,7 +239,11 @@ export function WorkItemList() {
187
239
  navigate('form');
188
240
  }
189
241
  if (input === 'd' && treeItems.length > 0) {
190
- setConfirmDelete(true);
242
+ const targetIds = getTargetIds(markedIds, treeItems[cursor]?.item);
243
+ if (targetIds.length > 0) {
244
+ setDeleteTargetIds(targetIds);
245
+ setConfirmDelete(true);
246
+ }
191
247
  }
192
248
  if (input === 'o' && treeItems.length > 0) {
193
249
  void (async () => {
@@ -195,7 +251,7 @@ export function WorkItemList() {
195
251
  refreshData();
196
252
  })();
197
253
  }
198
- if (input === 'b' && gitAvailable && treeItems.length > 0) {
254
+ if (input === 'B' && gitAvailable && treeItems.length > 0) {
199
255
  const item = treeItems[cursor].item;
200
256
  const comments = item.comments;
201
257
  const config = readConfigSync(process.cwd());
@@ -217,9 +273,19 @@ export function WorkItemList() {
217
273
  capabilities.fields.parent &&
218
274
  treeItems.length > 0 &&
219
275
  !settingParent) {
220
- setSettingParent(true);
221
- const currentParent = treeItems[cursor].item.parent;
222
- setParentInput(currentParent !== null ? String(currentParent) : '');
276
+ const targetIds = getTargetIds(markedIds, treeItems[cursor]?.item);
277
+ if (targetIds.length > 0) {
278
+ setParentTargetIds(targetIds);
279
+ setSettingParent(true);
280
+ // For single item, prefill current parent
281
+ if (targetIds.length === 1) {
282
+ const item = treeItems.find((t) => t.item.id === targetIds[0]);
283
+ setParentInput(item?.item.parent ?? '');
284
+ }
285
+ else {
286
+ setParentInput('');
287
+ }
288
+ }
223
289
  }
224
290
  if (key.tab && capabilities.customTypes && types.length > 0) {
225
291
  const currentIdx = types.indexOf(activeType ?? '');
@@ -233,6 +299,55 @@ export function WorkItemList() {
233
299
  refreshData();
234
300
  });
235
301
  }
302
+ if (input === 'm' && treeItems.length > 0) {
303
+ const itemId = treeItems[cursor].item.id;
304
+ setMarkedIds((prev) => {
305
+ const next = new Set(prev);
306
+ if (next.has(itemId)) {
307
+ next.delete(itemId);
308
+ }
309
+ else {
310
+ next.add(itemId);
311
+ }
312
+ return next;
313
+ });
314
+ }
315
+ if (input === 'M') {
316
+ setMarkedIds(new Set());
317
+ }
318
+ if (input === 'b' && treeItems.length > 0) {
319
+ setShowBulkMenu(true);
320
+ }
321
+ if (input === 'P' && capabilities.fields.priority && treeItems.length > 0) {
322
+ const targetIds = getTargetIds(markedIds, treeItems[cursor]?.item);
323
+ if (targetIds.length > 0) {
324
+ setBulkTargetIds(targetIds);
325
+ setShowPriorityPicker(true);
326
+ }
327
+ }
328
+ if (input === 'a' && capabilities.fields.assignee && treeItems.length > 0) {
329
+ const targetIds = getTargetIds(markedIds, treeItems[cursor]?.item);
330
+ if (targetIds.length > 0) {
331
+ setBulkTargetIds(targetIds);
332
+ setSettingAssignee(true);
333
+ setAssigneeInput('');
334
+ }
335
+ }
336
+ if (input === 'l' && capabilities.fields.labels && treeItems.length > 0) {
337
+ const targetIds = getTargetIds(markedIds, treeItems[cursor]?.item);
338
+ if (targetIds.length > 0) {
339
+ setBulkTargetIds(targetIds);
340
+ setSettingLabels(true);
341
+ setLabelsInput('');
342
+ }
343
+ }
344
+ if (input === 't' && capabilities.customTypes && treeItems.length > 0) {
345
+ const targetIds = getTargetIds(markedIds, treeItems[cursor]?.item);
346
+ if (targetIds.length > 0) {
347
+ setBulkTargetIds(targetIds);
348
+ setShowTypePicker(true);
349
+ }
350
+ }
236
351
  });
237
352
  const handleSearchSelect = (item) => {
238
353
  setIsSearching(false);
@@ -242,6 +357,43 @@ export function WorkItemList() {
242
357
  const handleSearchCancel = () => {
243
358
  setIsSearching(false);
244
359
  };
360
+ const handleBulkAction = (action) => {
361
+ const targetIds = getTargetIds(markedIds, treeItems[cursor]?.item);
362
+ if (targetIds.length === 0)
363
+ return;
364
+ setBulkTargetIds(targetIds);
365
+ switch (action) {
366
+ case 'status':
367
+ setShowStatusPicker(true);
368
+ break;
369
+ case 'iteration':
370
+ navigate('iteration-picker');
371
+ break;
372
+ case 'parent':
373
+ setParentTargetIds(targetIds);
374
+ setSettingParent(true);
375
+ setParentInput('');
376
+ break;
377
+ case 'type':
378
+ setShowTypePicker(true);
379
+ break;
380
+ case 'priority':
381
+ setShowPriorityPicker(true);
382
+ break;
383
+ case 'assignee':
384
+ setSettingAssignee(true);
385
+ setAssigneeInput('');
386
+ break;
387
+ case 'labels':
388
+ setSettingLabels(true);
389
+ setLabelsInput('');
390
+ break;
391
+ case 'delete':
392
+ setDeleteTargetIds(targetIds);
393
+ setConfirmDelete(true);
394
+ break;
395
+ }
396
+ };
245
397
  const typeLabel = activeType
246
398
  ? activeType.charAt(0).toUpperCase() + activeType.slice(1) + 's'
247
399
  : '';
@@ -257,15 +409,58 @@ export function WorkItemList() {
257
409
  if (loading) {
258
410
  return (_jsx(Box, { children: _jsx(Text, { dimColor: true, children: "Loading..." }) }));
259
411
  }
260
- return (_jsxs(Box, { flexDirection: "column", children: [isSearching && (_jsx(SearchOverlay, { items: allSearchItems, currentIteration: iteration, onSelect: handleSearchSelect, onCancel: handleSearchCancel })), !isSearching && (_jsxs(_Fragment, { children: [_jsxs(Box, { marginBottom: 1, children: [_jsxs(Text, { wrap: "truncate", children: [_jsxs(Text, { bold: true, color: "cyan", children: [typeLabel, " \u2014 ", iteration] }), _jsx(Text, { dimColor: true, children: ` (${items.length} items)` })] }), syncStatus && syncStatus.state === 'syncing' ? (_jsxs(Box, { marginLeft: 1, children: [_jsx(Text, { color: "yellow", children: _jsx(Spinner, { type: "dots" }) }), _jsx(Text, { dimColor: true, children: " Syncing..." })] })) : syncStatus && syncStatus.state === 'error' ? (_jsx(Text, { dimColor: true, children: ` ⚠ Sync failed (${syncStatus.errors.length} errors)` })) : syncStatus && syncStatus.pendingCount > 0 ? (_jsx(Text, { dimColor: true, children: ` ↑ ${syncStatus.pendingCount} pending` })) : syncStatus ? (_jsx(Text, { dimColor: true, children: " \u2713 Synced" })) : null] }), terminalWidth >= 80 ? (_jsx(TableLayout, { treeItems: visibleTreeItems, cursor: viewport.visibleCursor, capabilities: capabilities, collapsedIds: collapsedIds })) : (_jsx(CardLayout, { treeItems: visibleTreeItems, cursor: viewport.visibleCursor, capabilities: capabilities, collapsedIds: collapsedIds })), treeItems.length === 0 && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { dimColor: true, children: ["No ", activeType, "s in this iteration."] }) })), _jsx(Box, { marginTop: 1, children: capabilities.fields.parent && settingParent ? (_jsxs(Box, { children: [_jsx(Text, { color: "cyan", children: "Set parent ID (empty to clear): " }), _jsx(TextInput, { value: parentInput, onChange: setParentInput, focus: true, onSubmit: (value) => {
412
+ return (_jsxs(Box, { flexDirection: "column", children: [isSearching && (_jsx(SearchOverlay, { items: allSearchItems, currentIteration: iteration, onSelect: handleSearchSelect, onCancel: handleSearchCancel })), !isSearching && (_jsxs(_Fragment, { children: [showBulkMenu && (_jsx(BulkMenu, { itemCount: markedIds.size > 0 ? markedIds.size : 1, capabilities: capabilities, onSelect: (action) => {
413
+ setShowBulkMenu(false);
414
+ handleBulkAction(action);
415
+ }, onCancel: () => setShowBulkMenu(false) })), showStatusPicker && (_jsx(StatusPicker, { statuses: statuses, onSelect: (status) => {
416
+ void (async () => {
417
+ setShowStatusPicker(false);
418
+ for (const id of bulkTargetIds) {
419
+ await backend.cachedUpdateWorkItem(id, { status });
420
+ await queueWrite('update', id);
421
+ }
422
+ setBulkTargetIds([]);
423
+ refreshData();
424
+ })();
425
+ }, onCancel: () => {
426
+ setShowStatusPicker(false);
427
+ setBulkTargetIds([]);
428
+ } })), showTypePicker && (_jsx(TypePicker, { types: types, onSelect: (type) => {
429
+ void (async () => {
430
+ setShowTypePicker(false);
431
+ for (const id of bulkTargetIds) {
432
+ await backend.cachedUpdateWorkItem(id, { type });
433
+ await queueWrite('update', id);
434
+ }
435
+ setBulkTargetIds([]);
436
+ refreshData();
437
+ })();
438
+ }, onCancel: () => {
439
+ setShowTypePicker(false);
440
+ setBulkTargetIds([]);
441
+ } })), showPriorityPicker && (_jsx(PriorityPicker, { onSelect: (priority) => {
442
+ void (async () => {
443
+ setShowPriorityPicker(false);
444
+ for (const id of bulkTargetIds) {
445
+ await backend.cachedUpdateWorkItem(id, { priority });
446
+ await queueWrite('update', id);
447
+ }
448
+ setBulkTargetIds([]);
449
+ refreshData();
450
+ })();
451
+ }, onCancel: () => {
452
+ setShowPriorityPicker(false);
453
+ setBulkTargetIds([]);
454
+ } })), _jsxs(Box, { marginBottom: 1, children: [_jsxs(Text, { wrap: "truncate", children: [_jsxs(Text, { bold: true, color: "cyan", children: [typeLabel, " \u2014 ", iteration] }), _jsx(Text, { dimColor: true, children: ` (${items.length} items)` })] }), syncStatus && syncStatus.state === 'syncing' ? (_jsxs(Box, { marginLeft: 1, children: [_jsx(Text, { color: "yellow", children: _jsx(Spinner, { type: "dots" }) }), _jsx(Text, { dimColor: true, children: " Syncing..." })] })) : syncStatus && syncStatus.state === 'error' ? (_jsx(Text, { dimColor: true, children: ` ⚠ Sync failed (${syncStatus.errors.length} errors)` })) : syncStatus && syncStatus.pendingCount > 0 ? (_jsx(Text, { dimColor: true, children: ` ↑ ${syncStatus.pendingCount} pending` })) : syncStatus ? (_jsx(Text, { dimColor: true, children: " \u2713 Synced" })) : null, markedCount > 0 && (_jsx(Text, { color: "magenta", children: ` ● ${markedCount} marked` }))] }), terminalWidth >= 80 ? (_jsx(TableLayout, { treeItems: visibleTreeItems, cursor: viewport.visibleCursor, capabilities: capabilities, collapsedIds: collapsedIds, markedIds: markedIds })) : (_jsx(CardLayout, { treeItems: visibleTreeItems, cursor: viewport.visibleCursor, capabilities: capabilities, collapsedIds: collapsedIds, markedIds: markedIds })), treeItems.length === 0 && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { dimColor: true, children: ["No ", activeType, "s in this iteration."] }) })), _jsx(Box, { marginTop: 1, children: capabilities.fields.parent && settingParent ? (_jsxs(Box, { children: [_jsxs(Text, { color: "cyan", children: ["Set parent for ", parentTargetIds.length, " item", parentTargetIds.length > 1 ? 's' : '', " (empty to clear):", ' '] }), _jsx(TextInput, { value: parentInput, onChange: setParentInput, focus: true, onSubmit: (value) => {
261
455
  void (async () => {
262
- const item = treeItems[cursor].item;
263
456
  const newParent = value.trim() === '' ? null : value.trim();
264
457
  try {
265
- await backend.cachedUpdateWorkItem(item.id, {
266
- parent: newParent,
267
- });
268
- await queueWrite('update', item.id);
458
+ for (const id of parentTargetIds) {
459
+ await backend.cachedUpdateWorkItem(id, {
460
+ parent: newParent,
461
+ });
462
+ await queueWrite('update', id);
463
+ }
269
464
  setWarning('');
270
465
  }
271
466
  catch (e) {
@@ -273,8 +468,36 @@ export function WorkItemList() {
273
468
  }
274
469
  setSettingParent(false);
275
470
  setParentInput('');
471
+ setParentTargetIds([]);
472
+ refreshData();
473
+ })();
474
+ } })] })) : settingAssignee ? (_jsxs(Box, { children: [_jsxs(Text, { color: "cyan", children: ["Set assignee for ", bulkTargetIds.length, " item", bulkTargetIds.length > 1 ? 's' : '', ":", ' '] }), _jsx(TextInput, { value: assigneeInput, onChange: setAssigneeInput, focus: true, onSubmit: (value) => {
475
+ void (async () => {
476
+ const assignee = value.trim();
477
+ for (const id of bulkTargetIds) {
478
+ await backend.cachedUpdateWorkItem(id, { assignee });
479
+ await queueWrite('update', id);
480
+ }
481
+ setSettingAssignee(false);
482
+ setAssigneeInput('');
483
+ setBulkTargetIds([]);
484
+ refreshData();
485
+ })();
486
+ } })] })) : settingLabels ? (_jsxs(Box, { children: [_jsxs(Text, { color: "cyan", children: ["Set labels for ", bulkTargetIds.length, " item", bulkTargetIds.length > 1 ? 's' : '', " (comma-separated):", ' '] }), _jsx(TextInput, { value: labelsInput, onChange: setLabelsInput, focus: true, onSubmit: (value) => {
487
+ void (async () => {
488
+ const labels = value
489
+ .split(',')
490
+ .map((l) => l.trim())
491
+ .filter(Boolean);
492
+ for (const id of bulkTargetIds) {
493
+ await backend.cachedUpdateWorkItem(id, { labels });
494
+ await queueWrite('update', id);
495
+ }
496
+ setSettingLabels(false);
497
+ setLabelsInput('');
498
+ setBulkTargetIds([]);
276
499
  refreshData();
277
500
  })();
278
- } })] })) : confirmDelete ? (_jsxs(Text, { color: "red", children: ["Delete item #", treeItems[cursor]?.item.id, "? (y/n)"] })) : (_jsx(Text, { dimColor: true, children: helpText })) }), warning && (_jsx(Box, { children: _jsxs(Text, { color: "yellow", children: ["\u26A0 ", warning] }) }))] }))] }));
501
+ } })] })) : confirmDelete ? (_jsxs(Text, { color: "red", children: ["Delete ", deleteTargetIds.length, " item", deleteTargetIds.length > 1 ? 's' : '', "? (y/n)"] })) : (_jsx(Text, { dimColor: true, children: helpText })) }), warning && (_jsx(Box, { children: _jsxs(Text, { color: "yellow", children: ["\u26A0 ", warning] }) }))] }))] }));
279
502
  }
280
503
  //# sourceMappingURL=WorkItemList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkItemList.js","sourceRoot":"","sources":["../../src/components/WorkItemList.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorkItemList.js","sourceRoot":"","sources":["../../src/components/WorkItemList.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sascha384/tic",
3
- "version": "1.7.0",
3
+ "version": "1.8.0",
4
4
  "description": "Terminal UI for issue tracking",
5
5
  "type": "module",
6
6
  "bin": {
@@ -8,7 +8,10 @@
8
8
  },
9
9
  "files": [
10
10
  "dist",
11
- "README.md"
11
+ "README.md",
12
+ ".claude-plugin",
13
+ ".mcp.json",
14
+ "skills"
12
15
  ],
13
16
  "scripts": {
14
17
  "build": "tsc -p tsconfig.build.json",
@@ -45,6 +48,8 @@
45
48
  },
46
49
  "devDependencies": {
47
50
  "@eslint/js": "^9.39.2",
51
+ "@semantic-release/exec": "^7.1.0",
52
+ "@semantic-release/git": "^10.0.1",
48
53
  "@sindresorhus/tsconfig": "^8.1.0",
49
54
  "@types/node": "^25.1.0",
50
55
  "@types/react": "^19.2.10",
@@ -65,7 +70,22 @@
65
70
  "plugins": [
66
71
  "@semantic-release/commit-analyzer",
67
72
  "@semantic-release/release-notes-generator",
73
+ [
74
+ "@semantic-release/exec",
75
+ {
76
+ "prepareCmd": "node scripts/sync-plugin-version.js ${nextRelease.version}"
77
+ }
78
+ ],
68
79
  "@semantic-release/npm",
80
+ [
81
+ "@semantic-release/git",
82
+ {
83
+ "assets": [
84
+ ".claude-plugin/plugin.json"
85
+ ],
86
+ "message": "chore(release): sync plugin version to ${nextRelease.version} [skip ci]"
87
+ }
88
+ ],
69
89
  "@semantic-release/github"
70
90
  ]
71
91
  }
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: tic-config
3
+ description: Use when initializing projects, checking configuration, or changing backends/iterations
4
+ ---
5
+
6
+ # tic Configuration
7
+
8
+ Use these tools to initialize and configure tic projects.
9
+
10
+ ## Tools
11
+
12
+ ### init_project
13
+
14
+ Creates a `.tic/` directory in the current project. Call this first if other tools fail with "Not a tic project".
15
+
16
+ ### get_config
17
+
18
+ Returns project configuration:
19
+ - `backend` — current backend type (local, github, gitlab, azure, jira)
20
+ - `statuses` — available status values
21
+ - `types` — available work item types
22
+ - `iterations` — configured iterations
23
+ - `currentIteration` — active iteration filter
24
+ - `capabilities` — what the backend supports
25
+
26
+ **Always call this first** to understand what types, statuses, and iterations are available before creating or updating items.
27
+
28
+ ### set_backend
29
+
30
+ Switch between backends: `local`, `github`, `gitlab`, `azure`, `jira`.
31
+
32
+ The backend is auto-detected from git remotes, but can be overridden.
33
+
34
+ ### set_iteration
35
+
36
+ Set the current iteration filter. This affects which items appear in `list_items` and `search_items` unless `all: true` is passed.
37
+
38
+ ## Capabilities
39
+
40
+ The `capabilities` object from `get_config` tells you what the backend supports:
41
+
42
+ ```json
43
+ {
44
+ "relationships": true, // parent/child, dependencies
45
+ "customTypes": true, // configurable work item types
46
+ "customStatuses": true, // configurable statuses
47
+ "iterations": true, // iteration/sprint support
48
+ "comments": true, // commenting on items
49
+ "fields": {
50
+ "priority": true,
51
+ "assignee": true,
52
+ "labels": true,
53
+ "parent": true,
54
+ "dependsOn": true
55
+ }
56
+ }
57
+ ```
58
+
59
+ Check capabilities before using optional fields — not all backends support all features.
@@ -0,0 +1,92 @@
1
+ ---
2
+ name: tic-items
3
+ description: Use when creating, updating, listing, searching, or deleting work items
4
+ ---
5
+
6
+ # tic Work Items
7
+
8
+ Use these tools to manage work items across any backend.
9
+
10
+ ## Before You Start
11
+
12
+ Call `get_config` first to understand:
13
+ - Available `types` (e.g., epic, issue, task)
14
+ - Available `statuses` (e.g., backlog, todo, in-progress, done)
15
+ - Available `iterations`
16
+ - Backend `capabilities` (which fields are supported)
17
+
18
+ ## Tools
19
+
20
+ ### list_items
21
+
22
+ List work items with optional filters:
23
+ - `type` — filter by work item type
24
+ - `status` — filter by status
25
+ - `iteration` — filter by iteration
26
+ - `all` — show all iterations (ignores current iteration filter)
27
+
28
+ Use filters rather than fetching all and filtering locally.
29
+
30
+ ### show_item
31
+
32
+ Get full details of a work item by ID. Returns all fields including description, comments, and a `url` for opening in browser/editor.
33
+
34
+ ### search_items
35
+
36
+ Text search across title and description. Supports the same filters as `list_items`.
37
+
38
+ ### create_item
39
+
40
+ Create a new work item. Required field:
41
+ - `title` — work item title
42
+
43
+ Optional fields (check capabilities first):
44
+ - `type` — defaults to first available type
45
+ - `status` — defaults to first available status
46
+ - `priority` — low, medium, high, critical
47
+ - `assignee` — who owns this
48
+ - `labels` — comma-separated tags
49
+ - `iteration` — which sprint/milestone
50
+ - `parent` — ID of parent item
51
+ - `depends_on` — array of IDs this item depends on
52
+ - `description` — full details
53
+
54
+ ### update_item
55
+
56
+ Update an existing work item. Required field:
57
+ - `id` — work item ID
58
+
59
+ All other fields are optional — only pass what you want to change.
60
+
61
+ To clear a parent relationship, pass `parent: null`.
62
+
63
+ ### delete_item / confirm_delete
64
+
65
+ **Two-step deletion for safety:**
66
+
67
+ 1. Call `delete_item` with the ID — returns a preview showing:
68
+ - The item being deleted
69
+ - Children that will be unparented
70
+ - Dependents that will lose this dependency
71
+
72
+ 2. Call `confirm_delete` with the same ID to execute
73
+
74
+ This prevents accidental data loss. Always preview before confirming.
75
+
76
+ ### add_comment
77
+
78
+ Add a timestamped comment to a work item. Only available if backend supports comments (check `capabilities.comments`).
79
+
80
+ - `id` — work item ID
81
+ - `text` — comment content
82
+ - `author` — optional, defaults to system
83
+
84
+ ## Example Workflow
85
+
86
+ ```
87
+ 1. get_config → understand available types/statuses
88
+ 2. list_items with type: "task", status: "todo" → see open tasks
89
+ 3. create_item with title, type, priority → create new item
90
+ 4. update_item with id, status: "in-progress" → update status
91
+ 5. add_comment with id, text → add progress note
92
+ ```
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: tic-relationships
3
+ description: Use when working with parent-child hierarchies or dependencies between items
4
+ ---
5
+
6
+ # tic Relationships
7
+
8
+ Use these tools to navigate and manage work item hierarchies and dependencies.
9
+
10
+ ## Prerequisites
11
+
12
+ Check `capabilities.relationships` from `get_config` — not all backends support relationships.
13
+
14
+ ## Tools
15
+
16
+ ### get_item_tree
17
+
18
+ Get all work items as a hierarchical tree structure. Children are nested under their parents.
19
+
20
+ Best for understanding overall project structure. Supports same filters as `list_items`:
21
+ - `type`, `status`, `iteration`, `all`
22
+
23
+ ### get_children
24
+
25
+ Get direct children of a specific work item.
26
+
27
+ - `id` — parent work item ID
28
+
29
+ Returns array of child work items.
30
+
31
+ ### get_dependents
32
+
33
+ Get items that depend on (are blocked by) a specific work item.
34
+
35
+ - `id` — work item ID
36
+
37
+ Returns array of dependent work items. Useful for understanding impact before completing or deleting an item.
38
+
39
+ ## Setting Relationships
40
+
41
+ ### Parent-Child
42
+
43
+ Set during `create_item` or `update_item`:
44
+ - `parent: "123"` — set parent to item 123
45
+ - `parent: null` — clear parent (make root-level)
46
+
47
+ Children appear indented under their parent in tree views.
48
+
49
+ ### Dependencies
50
+
51
+ Set during `create_item` or `update_item`:
52
+ - `depends_on: ["123", "456"]` — this item is blocked by items 123 and 456
53
+
54
+ Dependencies indicate work that must complete before this item can proceed.
55
+
56
+ ## Validation
57
+
58
+ The backend enforces:
59
+ - **No circular parents** — item cannot be its own ancestor
60
+ - **Referential integrity** — referenced items must exist
61
+
62
+ ## Cleanup on Delete
63
+
64
+ When an item is deleted:
65
+ - Children have their `parent` cleared (become root-level)
66
+ - The item is removed from other items' `depends_on` lists
67
+
68
+ The `delete_item` preview shows these affected items before you confirm.
69
+
70
+ ## Warnings
71
+
72
+ When completing an item (`status: "done"`), tic warns if:
73
+ - Item has open children
74
+ - Item has unresolved dependencies
75
+
76
+ These are warnings, not blockers — you can proceed if appropriate.