@sascha384/tic 1.7.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +14 -0
- package/.claude-plugin/plugin.json +15 -0
- package/.mcp.json +6 -0
- package/README.md +15 -50
- package/dist/backends/ado/index.d.ts +1 -0
- package/dist/backends/ado/index.js +3 -0
- package/dist/backends/ado/index.js.map +1 -1
- package/dist/backends/github/index.d.ts +1 -0
- package/dist/backends/github/index.js +3 -0
- package/dist/backends/github/index.js.map +1 -1
- package/dist/backends/gitlab/index.d.ts +1 -0
- package/dist/backends/gitlab/index.js +3 -0
- package/dist/backends/gitlab/index.js.map +1 -1
- package/dist/backends/jira/index.d.ts +1 -0
- package/dist/backends/jira/index.js +3 -0
- package/dist/backends/jira/index.js.map +1 -1
- package/dist/backends/local/index.d.ts +1 -0
- package/dist/backends/local/index.js +3 -0
- package/dist/backends/local/index.js.map +1 -1
- package/dist/backends/types.d.ts +3 -0
- package/dist/backends/types.js +10 -0
- package/dist/backends/types.js.map +1 -1
- package/dist/components/BulkMenu.d.ts +10 -0
- package/dist/components/BulkMenu.js +49 -0
- package/dist/components/BulkMenu.js.map +1 -0
- package/dist/components/CardLayout.d.ts +2 -1
- package/dist/components/CardLayout.js +3 -2
- package/dist/components/CardLayout.js.map +1 -1
- package/dist/components/HelpScreen.js +16 -1
- package/dist/components/HelpScreen.js.map +1 -1
- package/dist/components/MultiAutocompleteInput.d.ts +10 -0
- package/dist/components/MultiAutocompleteInput.js +66 -0
- package/dist/components/MultiAutocompleteInput.js.map +1 -0
- package/dist/components/PriorityPicker.d.ts +6 -0
- package/dist/components/PriorityPicker.js +18 -0
- package/dist/components/PriorityPicker.js.map +1 -0
- package/dist/components/StatusPicker.d.ts +7 -0
- package/dist/components/StatusPicker.js +16 -0
- package/dist/components/StatusPicker.js.map +1 -0
- package/dist/components/TableLayout.d.ts +2 -1
- package/dist/components/TableLayout.js +3 -2
- package/dist/components/TableLayout.js.map +1 -1
- package/dist/components/TypePicker.d.ts +7 -0
- package/dist/components/TypePicker.js +16 -0
- package/dist/components/TypePicker.js.map +1 -0
- package/dist/components/WorkItemForm.js +69 -29
- package/dist/components/WorkItemForm.js.map +1 -1
- package/dist/components/WorkItemList.d.ts +3 -0
- package/dist/components/WorkItemList.js +238 -18
- package/dist/components/WorkItemList.js.map +1 -1
- package/dist/editor.d.ts +5 -0
- package/dist/editor.js +32 -0
- package/dist/editor.js.map +1 -0
- package/dist/hooks/useBackendData.d.ts +2 -0
- package/dist/hooks/useBackendData.js +41 -10
- package/dist/hooks/useBackendData.js.map +1 -1
- package/dist/sync/SyncManager.js +5 -1
- package/dist/sync/SyncManager.js.map +1 -1
- package/package.json +22 -2
- package/skills/tic-config/SKILL.md +59 -0
- package/skills/tic-items/SKILL.md +92 -0
- package/skills/tic-relationships/SKILL.md +76 -0
|
@@ -1,29 +1,44 @@
|
|
|
1
|
-
import { useState, useEffect, useCallback } from 'react';
|
|
1
|
+
import { useState, useEffect, useCallback, useRef } from 'react';
|
|
2
|
+
let dataCache = null;
|
|
2
3
|
export function useBackendData(backend, iteration) {
|
|
3
4
|
const capabilities = backend.getCapabilities(); // sync — no I/O
|
|
4
|
-
|
|
5
|
+
// Check cache at mount time and store in ref (won't change during lifecycle)
|
|
6
|
+
const hadCacheAtMount = useRef(dataCache !== null);
|
|
7
|
+
// Use cached data if available, otherwise start with loading state
|
|
8
|
+
const [loading, setLoading] = useState(!hadCacheAtMount.current);
|
|
5
9
|
const [error, setError] = useState(null);
|
|
6
|
-
const [statuses, setStatuses] = useState([]);
|
|
7
|
-
const [iterations, setIterations] = useState([]);
|
|
8
|
-
const [types, setTypes] = useState([]);
|
|
9
|
-
const [assignees, setAssignees] = useState([]);
|
|
10
|
-
const [
|
|
11
|
-
const [
|
|
10
|
+
const [statuses, setStatuses] = useState(dataCache?.statuses ?? []);
|
|
11
|
+
const [iterations, setIterations] = useState(dataCache?.iterations ?? []);
|
|
12
|
+
const [types, setTypes] = useState(dataCache?.types ?? []);
|
|
13
|
+
const [assignees, setAssignees] = useState(dataCache?.assignees ?? []);
|
|
14
|
+
const [labels, setLabels] = useState(dataCache?.labels ?? []);
|
|
15
|
+
const [currentIteration, setCurrentIteration] = useState(dataCache?.currentIteration ?? '');
|
|
16
|
+
const [items, setItems] = useState(dataCache?.items ?? []);
|
|
12
17
|
const [refreshCounter, setRefreshCounter] = useState(0);
|
|
18
|
+
// Track if this is the initial mount to avoid showing loading on return
|
|
19
|
+
const isInitialMount = useRef(true);
|
|
13
20
|
const refresh = useCallback(() => {
|
|
14
21
|
setRefreshCounter((c) => c + 1);
|
|
15
22
|
}, []);
|
|
16
23
|
useEffect(() => {
|
|
17
24
|
let cancelled = false;
|
|
18
|
-
|
|
25
|
+
// Only show loading if:
|
|
26
|
+
// - No cache at mount time and this is initial mount, OR
|
|
27
|
+
// - This is an explicit refresh (not initial mount)
|
|
28
|
+
const showLoading = !hadCacheAtMount.current || !isInitialMount.current;
|
|
29
|
+
if (showLoading) {
|
|
30
|
+
setLoading(true);
|
|
31
|
+
}
|
|
32
|
+
isInitialMount.current = false;
|
|
19
33
|
async function load() {
|
|
20
34
|
try {
|
|
21
35
|
const iter = iteration ?? (await backend.getCurrentIteration());
|
|
22
|
-
const [s, it, t, a, wi] = await Promise.all([
|
|
36
|
+
const [s, it, t, a, l, wi] = await Promise.all([
|
|
23
37
|
backend.getStatuses(),
|
|
24
38
|
backend.getIterations(),
|
|
25
39
|
backend.getWorkItemTypes(),
|
|
26
40
|
backend.getAssignees().catch(() => []),
|
|
41
|
+
backend.getLabels().catch(() => []),
|
|
27
42
|
backend.listWorkItems(iter),
|
|
28
43
|
]);
|
|
29
44
|
if (cancelled)
|
|
@@ -32,9 +47,20 @@ export function useBackendData(backend, iteration) {
|
|
|
32
47
|
setIterations(it);
|
|
33
48
|
setTypes(t);
|
|
34
49
|
setAssignees(a);
|
|
50
|
+
setLabels(l);
|
|
35
51
|
setCurrentIteration(iter);
|
|
36
52
|
setItems(wi);
|
|
37
53
|
setError(null);
|
|
54
|
+
// Update cache
|
|
55
|
+
dataCache = {
|
|
56
|
+
statuses: s,
|
|
57
|
+
iterations: it,
|
|
58
|
+
types: t,
|
|
59
|
+
assignees: a,
|
|
60
|
+
labels: l,
|
|
61
|
+
currentIteration: iter,
|
|
62
|
+
items: wi,
|
|
63
|
+
};
|
|
38
64
|
}
|
|
39
65
|
catch (e) {
|
|
40
66
|
if (cancelled)
|
|
@@ -57,6 +83,7 @@ export function useBackendData(backend, iteration) {
|
|
|
57
83
|
iterations,
|
|
58
84
|
types,
|
|
59
85
|
assignees,
|
|
86
|
+
labels,
|
|
60
87
|
currentIteration,
|
|
61
88
|
items,
|
|
62
89
|
loading,
|
|
@@ -64,4 +91,8 @@ export function useBackendData(backend, iteration) {
|
|
|
64
91
|
refresh,
|
|
65
92
|
};
|
|
66
93
|
}
|
|
94
|
+
// Export for testing
|
|
95
|
+
export function clearBackendDataCache() {
|
|
96
|
+
dataCache = null;
|
|
97
|
+
}
|
|
67
98
|
//# sourceMappingURL=useBackendData.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBackendData.js","sourceRoot":"","sources":["../../src/hooks/useBackendData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useBackendData.js","sourceRoot":"","sources":["../../src/hooks/useBackendData.ts"],"names":[],"mappings":"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"}
|
package/dist/sync/SyncManager.js
CHANGED
|
@@ -107,7 +107,11 @@ export class SyncManager {
|
|
|
107
107
|
return entry.itemId;
|
|
108
108
|
}
|
|
109
109
|
case 'delete': {
|
|
110
|
-
|
|
110
|
+
// Items with local- prefix were never synced to remote, nothing to delete.
|
|
111
|
+
// Return successfully so the entry is removed from the queue.
|
|
112
|
+
if (!entry.itemId.startsWith('local-')) {
|
|
113
|
+
await this.remote.deleteWorkItem(entry.itemId);
|
|
114
|
+
}
|
|
111
115
|
return entry.itemId;
|
|
112
116
|
}
|
|
113
117
|
case 'comment': {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncManager.js","sourceRoot":"","sources":["../../src/sync/SyncManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"SyncManager.js","sourceRoot":"","sources":["../../src/sync/SyncManager.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sascha384/tic",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.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.
|