@bretwardjames/ghp-cli 0.1.14 → 0.2.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +40 -161
  2. package/dist/active-label.d.ts +40 -0
  3. package/dist/active-label.d.ts.map +1 -0
  4. package/dist/active-label.js +128 -0
  5. package/dist/active-label.js.map +1 -0
  6. package/dist/commands/add-issue.d.ts +3 -0
  7. package/dist/commands/add-issue.d.ts.map +1 -1
  8. package/dist/commands/add-issue.js +26 -27
  9. package/dist/commands/add-issue.js.map +1 -1
  10. package/dist/commands/done.d.ts.map +1 -1
  11. package/dist/commands/done.js +27 -1
  12. package/dist/commands/done.js.map +1 -1
  13. package/dist/commands/mcp.d.ts +7 -0
  14. package/dist/commands/mcp.d.ts.map +1 -0
  15. package/dist/commands/mcp.js +120 -0
  16. package/dist/commands/mcp.js.map +1 -0
  17. package/dist/commands/start.d.ts +16 -0
  18. package/dist/commands/start.d.ts.map +1 -1
  19. package/dist/commands/start.js +213 -154
  20. package/dist/commands/start.js.map +1 -1
  21. package/dist/commands/switch.d.ts +8 -1
  22. package/dist/commands/switch.d.ts.map +1 -1
  23. package/dist/commands/switch.js +67 -23
  24. package/dist/commands/switch.js.map +1 -1
  25. package/dist/commands/worktree.d.ts +16 -0
  26. package/dist/commands/worktree.d.ts.map +1 -0
  27. package/dist/commands/worktree.js +102 -0
  28. package/dist/commands/worktree.js.map +1 -0
  29. package/dist/config.d.ts +16 -2
  30. package/dist/config.d.ts.map +1 -1
  31. package/dist/config.js +22 -1
  32. package/dist/config.js.map +1 -1
  33. package/dist/git-utils.d.ts +2 -2
  34. package/dist/git-utils.d.ts.map +1 -1
  35. package/dist/git-utils.js +3 -1
  36. package/dist/git-utils.js.map +1 -1
  37. package/dist/index.js +39 -0
  38. package/dist/index.js.map +1 -1
  39. package/dist/prompts.d.ts +28 -0
  40. package/dist/prompts.d.ts.map +1 -1
  41. package/dist/prompts.js +66 -0
  42. package/dist/prompts.js.map +1 -1
  43. package/dist/worktree-utils.d.ts +38 -0
  44. package/dist/worktree-utils.d.ts.map +1 -0
  45. package/dist/worktree-utils.js +145 -0
  46. package/dist/worktree-utils.js.map +1 -0
  47. package/package.json +10 -12
package/README.md CHANGED
@@ -1,17 +1,11 @@
1
- # ghp-cli
1
+ # @bretwardjames/ghp-cli
2
2
 
3
3
  GitHub Projects CLI - manage project boards from your terminal.
4
4
 
5
- Part of the [GHP Tools](https://github.com/bretwardjames/ghp-core) suite. Works alongside the [VS Code/Cursor extension](https://github.com/bretwardjames/vscode-gh-projects) for a complete GitHub Projects workflow.
5
+ Part of the [GHP monorepo](https://github.com/bretwardjames/ghp). Works alongside the [VS Code/Cursor extension](https://github.com/bretwardjames/ghp/tree/main/apps/vscode) for a complete GitHub Projects workflow.
6
6
 
7
7
  ## Installation
8
8
 
9
- **Quick install (CLI + VS Code extension):**
10
- ```bash
11
- curl -fsSL https://raw.githubusercontent.com/bretwardjames/ghp-core/main/install.sh | bash
12
- ```
13
-
14
- **CLI only:**
15
9
  ```bash
16
10
  npm install -g @bretwardjames/ghp-cli
17
11
  ```
@@ -28,8 +22,8 @@ ghp work
28
22
  # View project board
29
23
  ghp plan
30
24
 
31
- # Create an issue
32
- ghp add "Fix login bug"
25
+ # Start working on an issue
26
+ ghp start 123
33
27
  ```
34
28
 
35
29
  ## Commands
@@ -37,107 +31,68 @@ ghp add "Fix login bug"
37
31
  ### Views
38
32
 
39
33
  ```bash
40
- # Your work (sidebar view)
41
- ghp work
34
+ ghp work # Your assigned items
42
35
  ghp work --status "In Progress"
43
- ghp work --hide-done
44
- ghp work --group priority # Group by field
36
+ ghp work --group priority # Group by field
45
37
 
46
- # Project board
47
- ghp plan
48
- ghp plan --mine # Only my items
49
- ghp plan --status Backlog # List view for single status
50
- ghp plan --slice type=Bug # Filter by field
51
- ghp plan bugs # Use configured shortcut
38
+ ghp plan # Project board
39
+ ghp plan --mine # Only my items
40
+ ghp plan --slice type=Bug # Filter by field
41
+ ghp plan bugs # Use configured shortcut
52
42
  ```
53
43
 
54
44
  ### Issue Management
55
45
 
56
46
  ```bash
57
- # Create issue (opens editor with template)
58
- ghp add "Issue title"
59
- ghp add -t bug_report # Use specific template
60
- ghp add --list-templates # List available templates
61
-
62
- # View issue details
63
- ghp open 123
64
- ghp open 123 --browser # Open in browser
65
-
66
- # Edit issue description
67
- ghp edit 123 # Opens in $EDITOR
68
-
69
- # Add comment
70
- ghp comment 123 -m "Fixed in latest commit"
71
- ghp comment 123 # Opens editor
47
+ ghp add "Issue title" # Create issue
48
+ ghp add -t bug_report # Use specific template
49
+ ghp open 123 # View issue details
50
+ ghp open 123 --browser # Open in browser
51
+ ghp edit 123 # Edit in $EDITOR
52
+ ghp comment 123 -m "message" # Add comment
72
53
  ```
73
54
 
74
55
  ### Workflow
75
56
 
76
57
  ```bash
77
- # Start working on an issue (creates branch, updates status)
78
- ghp start 123
79
-
80
- # Mark as done
81
- ghp done 123
82
-
83
- # Move to different status
84
- ghp move 123 "In Review"
85
-
86
- # Assign users
87
- ghp assign 123 @username
88
- ghp assign 123 # Assign to self
58
+ ghp start 123 # Create branch, update status
59
+ ghp done 123 # Mark as done
60
+ ghp move 123 "In Review" # Change status
61
+ ghp assign 123 @username # Assign users
89
62
  ```
90
63
 
91
64
  ### Branch Management
92
65
 
93
66
  ```bash
94
- # Switch to issue's branch
95
- ghp switch 123
96
-
97
- # Link current branch to issue
98
- ghp link-branch 123
99
-
100
- # Unlink branch
101
- ghp unlink-branch 123
102
-
103
- # Sync active label with current branch
104
- ghp sync
67
+ ghp switch 123 # Switch to issue's branch
68
+ ghp link-branch 123 # Link current branch to issue
69
+ ghp unlink-branch 123 # Unlink branch
70
+ ghp sync # Sync active label with branch
105
71
  ```
106
72
 
107
73
  ## Configuration
108
74
 
109
- ghp-cli uses a layered config system (like VS Code):
110
-
111
- | Layer | Path | Purpose |
112
- |-------|------|---------|
113
- | **Workspace** | `.ghp/config.json` | Team settings (commit this) |
114
- | **User** | `~/.config/ghp-cli/config.json` | Personal overrides |
115
-
116
- Settings merge: defaults → workspace → user
117
-
118
- ### Config Commands
119
-
120
75
  ```bash
121
- # View merged config with sources
122
- ghp config --show
123
-
124
- # Edit user config (opens $EDITOR)
125
- ghp config
76
+ ghp config --show # View all settings
77
+ ghp config # Edit user config
78
+ ghp config -w # Edit workspace config (shared)
79
+ ghp config sync # Sync with VS Code/Cursor
80
+ ```
126
81
 
127
- # Edit workspace config (shared with team)
128
- ghp config -w
82
+ ## MCP Server (Claude Desktop)
129
83
 
130
- # Get/set individual values
131
- ghp config mainBranch
132
- ghp config mainBranch develop
133
- ghp config mainBranch develop -w # Set in workspace config
84
+ Configure the ghp MCP server for use with Claude Desktop:
134
85
 
135
- # Sync from VS Code/Cursor settings
136
- ghp config sync
137
- ghp config sync -w # Sync to workspace config
86
+ ```bash
87
+ ghp mcp --install # Auto-configure Claude Desktop
88
+ ghp mcp --config # Show config JSON to copy manually
138
89
  ```
139
90
 
140
- ### Config File Format
91
+ **Config files:**
92
+ - User: `~/.config/ghp-cli/config.json`
93
+ - Workspace: `.ghp/config.json` (commit this)
94
+
95
+ ### Example Config
141
96
 
142
97
  ```json
143
98
  {
@@ -145,92 +100,16 @@ ghp config sync -w # Sync to workspace config
145
100
  "branchPattern": "{user}/{number}-{title}",
146
101
  "startWorkingStatus": "In Progress",
147
102
  "doneStatus": "Done",
148
-
149
- "defaults": {
150
- "plan": {
151
- "mine": true
152
- },
153
- "addIssue": {
154
- "template": "bug_report",
155
- "status": "Backlog"
156
- }
157
- },
158
-
159
103
  "shortcuts": {
160
- "bugs": {
161
- "status": "Backlog",
162
- "slice": ["type=Bug"]
163
- },
164
- "mywork": {
165
- "status": "In Progress",
166
- "mine": true
167
- }
104
+ "bugs": { "status": "Backlog", "slice": ["type=Bug"] }
168
105
  }
169
106
  }
170
107
  ```
171
108
 
172
- ### Shortcuts
173
-
174
- Define shortcuts for common `ghp plan` filters:
175
-
176
- ```bash
177
- ghp plan bugs # Expands to: ghp plan --status Backlog --slice type=Bug
178
- ghp plan mywork # Expands to: ghp plan --status "In Progress" --mine
179
- ```
180
-
181
- ### Slice Filters
182
-
183
- Filter by any field:
184
-
185
- ```bash
186
- --slice type=Bug # Issue type (org-level)
187
- --slice label=frontend # Labels
188
- --slice assignee=username # Assignee
189
- --slice Priority=High # Custom project fields
190
- --slice Size=Small # Custom project fields
191
- ```
192
-
193
- ### Syncing with VS Code
194
-
195
- If you use the VS Code extension, you can sync shared settings bidirectionally:
196
-
197
- ```bash
198
- ghp config sync
199
- ```
200
-
201
- This compares settings between CLI and VS Code/Cursor and lets you choose which to keep:
202
- - For conflicting settings: choose CLI value, VS Code value, enter custom, or skip
203
- - For settings only in one place: optionally sync to the other
204
- - Changes are applied to both CLI config and VS Code settings
205
-
206
- **Syncable settings:**
207
- | CLI | VS Code |
208
- |-----|---------|
209
- | `mainBranch` | `ghProjects.mainBranch` |
210
- | `branchPattern` | `ghProjects.branchNamePattern` |
211
- | `startWorkingStatus` | `ghProjects.startWorkingStatus` |
212
- | `doneStatus` | `ghProjects.prMergedStatus` |
213
-
214
- You can also sync from VS Code using the Command Palette: "GitHub Projects: Sync Settings with CLI"
215
-
216
- ## Issue Templates
217
-
218
- Place templates in `.github/ISSUE_TEMPLATE/` in your repo. When creating issues, you can:
219
-
220
- - Select a template interactively (if no default set)
221
- - Use `-t <name>` to specify a template
222
- - Set `defaults.addIssue.template` in config for auto-selection
223
-
224
109
  ## Requirements
225
110
 
226
111
  - Node.js >= 18
227
112
  - GitHub account with Projects access
228
- - `gh` CLI recommended (for auth token)
229
-
230
- ## Related
231
-
232
- - [ghp-core](https://github.com/bretwardjames/ghp-core) - Shared library and install script
233
- - [vscode-gh-projects](https://github.com/bretwardjames/vscode-gh-projects) - VS Code/Cursor extension
234
113
 
235
114
  ## License
236
115
 
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Active label management for ghp CLI.
3
+ *
4
+ * The active label (@username:active) indicates which issue(s) a user is currently
5
+ * working on. This module handles applying and removing the label with awareness
6
+ * of parallel worktree workflows.
7
+ */
8
+ import { type RepoInfo } from './github-api.js';
9
+ /**
10
+ * Apply the "actively working" label to an issue.
11
+ *
12
+ * @param repo - Repository information
13
+ * @param issueNumber - The issue number to apply the label to
14
+ * @param exclusive - If true (default), remove label from other issues.
15
+ * If false, just add without removing from others (for parallel work).
16
+ */
17
+ export declare function applyActiveLabel(repo: RepoInfo, issueNumber: number, exclusive?: boolean): Promise<void>;
18
+ /**
19
+ * Remove the active label from an issue, but protect other issues that have
20
+ * active worktrees. This is used when completing or moving away from an issue.
21
+ *
22
+ * Logic:
23
+ * - Remove the label from the specified issue
24
+ * - For other issues with the active label, only remove if they don't have
25
+ * an active worktree
26
+ *
27
+ * @param repo - Repository information
28
+ * @param issueNumber - The issue to remove the label from
29
+ * @param removeFromOthers - If true, also remove from other non-worktree issues
30
+ */
31
+ export declare function removeActiveLabelSafely(repo: RepoInfo, issueNumber: number, removeFromOthers?: boolean): Promise<void>;
32
+ /**
33
+ * Get all issues that have the active label and an active worktree.
34
+ * Useful for checking what parallel work is in progress.
35
+ *
36
+ * @param repo - Repository information
37
+ * @returns Array of issue numbers with both active label and worktree
38
+ */
39
+ export declare function getActiveWorktreeIssues(repo: RepoInfo): Promise<number[]>;
40
+ //# sourceMappingURL=active-label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-label.d.ts","sourceRoot":"","sources":["../src/active-label.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIrD;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAClC,IAAI,EAAE,QAAQ,EACd,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,OAAc,GAC1B,OAAO,CAAC,IAAI,CAAC,CAyCf;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,uBAAuB,CACzC,IAAI,EAAE,QAAQ,EACd,WAAW,EAAE,MAAM,EACnB,gBAAgB,GAAE,OAAc,GACjC,OAAO,CAAC,IAAI,CAAC,CAuCf;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA0B/E"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Active label management for ghp CLI.
3
+ *
4
+ * The active label (@username:active) indicates which issue(s) a user is currently
5
+ * working on. This module handles applying and removing the label with awareness
6
+ * of parallel worktree workflows.
7
+ */
8
+ import chalk from 'chalk';
9
+ import { api } from './github-api.js';
10
+ import { listWorktrees } from './git-utils.js';
11
+ import { getBranchForIssue } from './branch-linker.js';
12
+ /**
13
+ * Apply the "actively working" label to an issue.
14
+ *
15
+ * @param repo - Repository information
16
+ * @param issueNumber - The issue number to apply the label to
17
+ * @param exclusive - If true (default), remove label from other issues.
18
+ * If false, just add without removing from others (for parallel work).
19
+ */
20
+ export async function applyActiveLabel(repo, issueNumber, exclusive = true) {
21
+ const activeLabel = api.getActiveLabelName();
22
+ // Ensure the label exists
23
+ await api.ensureLabel(repo, activeLabel);
24
+ // In exclusive mode, remove label from other issues first
25
+ // But protect issues that have active worktrees
26
+ if (exclusive) {
27
+ const issuesWithLabel = await api.findIssuesWithLabel(repo, activeLabel);
28
+ // Get all worktree branches to protect issues with active worktrees
29
+ const worktrees = await listWorktrees();
30
+ const worktreeBranches = new Set(worktrees
31
+ .filter(wt => wt.branch && !wt.isMain)
32
+ .map(wt => wt.branch));
33
+ for (const otherIssue of issuesWithLabel) {
34
+ if (otherIssue === issueNumber)
35
+ continue;
36
+ // Check if this issue's branch has a worktree
37
+ const linkedBranch = await getBranchForIssue(repo, otherIssue);
38
+ if (linkedBranch && worktreeBranches.has(linkedBranch)) {
39
+ // Has active worktree - keep the label
40
+ console.log(chalk.dim(`Keeping ${activeLabel} on #${otherIssue} (has active worktree)`));
41
+ continue;
42
+ }
43
+ // No worktree - remove label
44
+ await api.removeLabelFromIssue(repo, otherIssue, activeLabel);
45
+ console.log(chalk.dim(`Removed ${activeLabel} from #${otherIssue}`));
46
+ }
47
+ }
48
+ // Add label to current issue
49
+ const labelAdded = await api.addLabelToIssue(repo, issueNumber, activeLabel);
50
+ if (labelAdded) {
51
+ console.log(chalk.green('✓'), `Applied "${activeLabel}" label`);
52
+ }
53
+ }
54
+ /**
55
+ * Remove the active label from an issue, but protect other issues that have
56
+ * active worktrees. This is used when completing or moving away from an issue.
57
+ *
58
+ * Logic:
59
+ * - Remove the label from the specified issue
60
+ * - For other issues with the active label, only remove if they don't have
61
+ * an active worktree
62
+ *
63
+ * @param repo - Repository information
64
+ * @param issueNumber - The issue to remove the label from
65
+ * @param removeFromOthers - If true, also remove from other non-worktree issues
66
+ */
67
+ export async function removeActiveLabelSafely(repo, issueNumber, removeFromOthers = true) {
68
+ const activeLabel = api.getActiveLabelName();
69
+ // Get all issues with the active label
70
+ const issuesWithLabel = await api.findIssuesWithLabel(repo, activeLabel);
71
+ // If the target issue has the label, remove it
72
+ if (issuesWithLabel.includes(issueNumber)) {
73
+ await api.removeLabelFromIssue(repo, issueNumber, activeLabel);
74
+ console.log(chalk.dim(`Removed ${activeLabel} from #${issueNumber}`));
75
+ }
76
+ // Optionally clean up labels from issues without worktrees
77
+ if (removeFromOthers && issuesWithLabel.length > 1) {
78
+ // Get all worktree branches
79
+ const worktrees = await listWorktrees();
80
+ const worktreeBranches = new Set(worktrees
81
+ .filter(wt => wt.branch && !wt.isMain)
82
+ .map(wt => wt.branch));
83
+ // Check each other issue
84
+ for (const otherIssue of issuesWithLabel) {
85
+ if (otherIssue === issueNumber)
86
+ continue;
87
+ // Check if this issue's branch has a worktree
88
+ const linkedBranch = await getBranchForIssue(repo, otherIssue);
89
+ if (linkedBranch && worktreeBranches.has(linkedBranch)) {
90
+ // Has active worktree - keep the label
91
+ console.log(chalk.dim(`Keeping ${activeLabel} on #${otherIssue} (has active worktree)`));
92
+ continue;
93
+ }
94
+ // No worktree - remove label (normal exclusive behavior)
95
+ await api.removeLabelFromIssue(repo, otherIssue, activeLabel);
96
+ console.log(chalk.dim(`Removed ${activeLabel} from #${otherIssue}`));
97
+ }
98
+ }
99
+ }
100
+ /**
101
+ * Get all issues that have the active label and an active worktree.
102
+ * Useful for checking what parallel work is in progress.
103
+ *
104
+ * @param repo - Repository information
105
+ * @returns Array of issue numbers with both active label and worktree
106
+ */
107
+ export async function getActiveWorktreeIssues(repo) {
108
+ const activeLabel = api.getActiveLabelName();
109
+ const issuesWithLabel = await api.findIssuesWithLabel(repo, activeLabel);
110
+ if (issuesWithLabel.length === 0) {
111
+ return [];
112
+ }
113
+ // Get all worktree branches
114
+ const worktrees = await listWorktrees();
115
+ const worktreeBranches = new Set(worktrees
116
+ .filter(wt => wt.branch && !wt.isMain)
117
+ .map(wt => wt.branch));
118
+ // Filter to issues with worktrees
119
+ const result = [];
120
+ for (const issueNumber of issuesWithLabel) {
121
+ const linkedBranch = await getBranchForIssue(repo, issueNumber);
122
+ if (linkedBranch && worktreeBranches.has(linkedBranch)) {
123
+ result.push(issueNumber);
124
+ }
125
+ }
126
+ return result;
127
+ }
128
+ //# sourceMappingURL=active-label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-label.js","sourceRoot":"","sources":["../src/active-label.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,9 @@ interface AddIssueOptions {
5
5
  edit?: boolean;
6
6
  template?: string;
7
7
  listTemplates?: boolean;
8
+ noTemplate?: boolean;
9
+ /** Use default values for all prompts (non-interactive mode) */
10
+ forceDefaults?: boolean;
8
11
  }
9
12
  export declare function addIssueCommand(title: string, options: AddIssueOptions): Promise<void>;
10
13
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"add-issue.d.ts","sourceRoot":"","sources":["../../src/commands/add-issue.ts"],"names":[],"mappings":"AASA,UAAU,eAAe;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AA6DD,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAyM5F"}
1
+ {"version":3,"file":"add-issue.d.ts","sourceRoot":"","sources":["../../src/commands/add-issue.ts"],"names":[],"mappings":"AAUA,UAAU,eAAe;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gEAAgE;IAChE,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AA6DD,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA6M5F"}
@@ -6,6 +6,7 @@ import { spawn } from 'child_process';
6
6
  import { writeFileSync, readFileSync, unlinkSync, existsSync, readdirSync } from 'fs';
7
7
  import { tmpdir } from 'os';
8
8
  import { join } from 'path';
9
+ import { promptSelectWithDefault, isInteractive } from '../prompts.js';
9
10
  async function openEditor(initialContent) {
10
11
  const editor = process.env.EDITOR || process.env.VISUAL || 'vim';
11
12
  const tmpFile = join(tmpdir(), `ghp-issue-${Date.now()}.md`);
@@ -112,20 +113,15 @@ export async function addIssueCommand(title, options) {
112
113
  // Determine which template to use (CLI > config default)
113
114
  let templateName = options.template || defaults.template;
114
115
  // If no template specified and templates exist, prompt user to pick one
115
- if (!templateName && templates.length > 0 && !options.body) {
116
- console.log(chalk.bold('Select a template:'));
117
- templates.forEach((t, i) => console.log(` ${i + 1}. ${t.name}`));
118
- console.log(` ${templates.length + 1}. ${chalk.dim('Blank issue')}`);
119
- console.log();
120
- const readline = await import('readline');
121
- const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
122
- const choice = await new Promise(resolve => {
123
- rl.question('Template number: ', (answer) => {
124
- rl.close();
125
- resolve(answer.trim());
126
- });
127
- });
128
- const idx = parseInt(choice, 10) - 1;
116
+ // --no-template flag skips this entirely
117
+ if (!templateName && templates.length > 0 && !options.body && !options.noTemplate) {
118
+ // Build options list: templates + blank issue
119
+ const templateOptions = [...templates.map(t => t.name), chalk.dim('Blank issue')];
120
+ // In non-interactive or with --force-defaults, default to blank issue
121
+ const defaultIdx = templates.length; // "Blank issue" is last
122
+ const idx = await promptSelectWithDefault('Select a template:', templateOptions, defaultIdx, // default: blank issue for non-interactive
123
+ options.forceDefaults ? defaultIdx : undefined // --force-defaults forces blank
124
+ );
129
125
  if (idx >= 0 && idx < templates.length) {
130
126
  templateName = templates[idx].name;
131
127
  }
@@ -151,7 +147,9 @@ export async function addIssueCommand(title, options) {
151
147
  }
152
148
  }
153
149
  // Open editor if: using template (always), -e flag, or no body provided
154
- if (usingTemplate || options.edit || !options.body) {
150
+ // But only if we're in interactive mode
151
+ const shouldOpenEditor = usingTemplate || options.edit || !options.body;
152
+ if (shouldOpenEditor && isInteractive()) {
155
153
  const instructions = [
156
154
  `# ${title || '<Replace with issue title>'}`,
157
155
  '',
@@ -182,6 +180,14 @@ export async function addIssueCommand(title, options) {
182
180
  process.exit(1);
183
181
  }
184
182
  }
183
+ else if (shouldOpenEditor && !isInteractive()) {
184
+ // Non-interactive mode: skip editor, use template body as-is
185
+ if (options.edit) {
186
+ console.log(chalk.yellow('Warning:'), 'Cannot open editor in non-interactive mode, using body as-is');
187
+ }
188
+ // Clean up template body (remove HTML comments)
189
+ body = body.replace(/<!--[\s\S]*?-->/g, '').trim();
190
+ }
185
191
  // Validate title
186
192
  if (!title || title === 'Issue Title' || title === '<Replace with issue title>') {
187
193
  console.error(chalk.red('Error:'), 'Issue title is required');
@@ -191,18 +197,11 @@ export async function addIssueCommand(title, options) {
191
197
  let statusName = options.status || defaults.status;
192
198
  const statusField = await api.getStatusField(project.id);
193
199
  if (!statusName && statusField && statusField.options.length > 0) {
194
- console.log(chalk.bold('Select initial status:'));
195
- statusField.options.forEach((opt, i) => console.log(` ${i + 1}. ${opt.name}`));
196
- console.log();
197
- const readline = await import('readline');
198
- const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
199
- const choice = await new Promise(resolve => {
200
- rl.question('Status number: ', (answer) => {
201
- rl.close();
202
- resolve(answer.trim());
203
- });
204
- });
205
- const idx = parseInt(choice, 10) - 1;
200
+ // In non-interactive or with --force-defaults, use first status option as default
201
+ const statusOptions = statusField.options.map(opt => opt.name);
202
+ const idx = await promptSelectWithDefault('Select initial status:', statusOptions, 0, // default: first status for non-interactive
203
+ options.forceDefaults ? 0 : undefined // --force-defaults forces first
204
+ );
206
205
  if (idx >= 0 && idx < statusField.options.length) {
207
206
  statusName = statusField.options[idx].name;
208
207
  }
@@ -1 +1 @@
1
- {"version":3,"file":"add-issue.js","sourceRoot":"","sources":["../../src/commands/add-issue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"add-issue.js","sourceRoot":"","sources":["../../src/commands/add-issue.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"done.d.ts","sourceRoot":"","sources":["../../src/commands/done.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6D9D"}
1
+ {"version":3,"file":"done.d.ts","sourceRoot":"","sources":["../../src/commands/done.ts"],"names":[],"mappings":"AAQA,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2F9D"}
@@ -1,7 +1,10 @@
1
1
  import chalk from 'chalk';
2
2
  import { api } from '../github-api.js';
3
- import { detectRepository } from '../git-utils.js';
3
+ import { detectRepository, listWorktrees, removeWorktree } from '../git-utils.js';
4
4
  import { getConfig } from '../config.js';
5
+ import { removeActiveLabelSafely } from '../active-label.js';
6
+ import { getBranchForIssue } from '../branch-linker.js';
7
+ import { confirmWithDefault, isInteractive } from '../prompts.js';
5
8
  export async function doneCommand(issue) {
6
9
  const issueNumber = parseInt(issue, 10);
7
10
  if (isNaN(issueNumber)) {
@@ -45,6 +48,29 @@ export async function doneCommand(issue) {
45
48
  const success = await api.updateItemStatus(item.projectId, item.id, statusField.fieldId, option.id);
46
49
  if (success) {
47
50
  console.log(chalk.green('✓'), `Marked as done: ${item.title}`);
51
+ // Remove active label from this issue (but protect other worktree issues)
52
+ await removeActiveLabelSafely(repo, issueNumber, true);
53
+ // Check if this issue has a worktree and offer to remove it
54
+ const branchName = await getBranchForIssue(repo, issueNumber);
55
+ if (branchName) {
56
+ const worktrees = await listWorktrees();
57
+ const worktree = worktrees.find(wt => wt.branch === branchName && !wt.isMain);
58
+ if (worktree && isInteractive()) {
59
+ console.log();
60
+ console.log(chalk.dim('Found worktree:'), worktree.path);
61
+ const shouldRemove = await confirmWithDefault('Remove worktree?', true);
62
+ if (shouldRemove) {
63
+ try {
64
+ await removeWorktree(worktree.path);
65
+ console.log(chalk.green('✓'), 'Removed worktree');
66
+ }
67
+ catch {
68
+ console.log(chalk.yellow('⚠'), 'Could not remove worktree (may have uncommitted changes)');
69
+ console.log(chalk.dim('Run:'), `git worktree remove --force "${worktree.path}"`);
70
+ }
71
+ }
72
+ }
73
+ }
48
74
  }
49
75
  else {
50
76
  console.error(chalk.red('Error:'), 'Failed to update status');