millhouse 0.3.9 → 1.0.2

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 (72) hide show
  1. package/README.md +88 -161
  2. package/dist/analysis/issue-analyzer.d.ts +6 -1
  3. package/dist/analysis/issue-analyzer.d.ts.map +1 -1
  4. package/dist/analysis/issue-analyzer.js +45 -13
  5. package/dist/analysis/issue-analyzer.js.map +1 -1
  6. package/dist/analysis/plan-parser.d.ts +7 -1
  7. package/dist/analysis/plan-parser.d.ts.map +1 -1
  8. package/dist/analysis/plan-parser.js +81 -22
  9. package/dist/analysis/plan-parser.js.map +1 -1
  10. package/dist/cli/cleanup.d.ts +1 -1
  11. package/dist/cli/cleanup.d.ts.map +1 -1
  12. package/dist/cli/cleanup.js +24 -28
  13. package/dist/cli/cleanup.js.map +1 -1
  14. package/dist/cli/commands/init.d.ts +6 -0
  15. package/dist/cli/commands/init.d.ts.map +1 -0
  16. package/dist/cli/commands/init.js +156 -0
  17. package/dist/cli/commands/init.js.map +1 -0
  18. package/dist/cli/commands/list.d.ts +6 -0
  19. package/dist/cli/commands/list.d.ts.map +1 -0
  20. package/dist/cli/commands/list.js +111 -0
  21. package/dist/cli/commands/list.js.map +1 -0
  22. package/dist/cli/commands/load.d.ts +2 -0
  23. package/dist/cli/commands/load.d.ts.map +1 -0
  24. package/dist/cli/commands/load.js +111 -0
  25. package/dist/cli/commands/load.js.map +1 -0
  26. package/dist/cli/commands/resume.d.ts.map +1 -1
  27. package/dist/cli/commands/resume.js +5 -28
  28. package/dist/cli/commands/resume.js.map +1 -1
  29. package/dist/cli/commands/run.d.ts +2 -3
  30. package/dist/cli/commands/run.d.ts.map +1 -1
  31. package/dist/cli/commands/run.js +44 -237
  32. package/dist/cli/commands/run.js.map +1 -1
  33. package/dist/cli/commands/save.d.ts +2 -0
  34. package/dist/cli/commands/save.d.ts.map +1 -0
  35. package/dist/cli/commands/save.js +220 -0
  36. package/dist/cli/commands/save.js.map +1 -0
  37. package/dist/cli/commands/setup.js +3 -3
  38. package/dist/cli/progress-display.d.ts +7 -14
  39. package/dist/cli/progress-display.d.ts.map +1 -1
  40. package/dist/cli/progress-display.js +94 -102
  41. package/dist/cli/progress-display.js.map +1 -1
  42. package/dist/core/orchestrator.d.ts +11 -12
  43. package/dist/core/orchestrator.d.ts.map +1 -1
  44. package/dist/core/orchestrator.js +153 -113
  45. package/dist/core/orchestrator.js.map +1 -1
  46. package/dist/core/scheduler.d.ts +6 -1
  47. package/dist/core/scheduler.d.ts.map +1 -1
  48. package/dist/core/scheduler.js +48 -9
  49. package/dist/core/scheduler.js.map +1 -1
  50. package/dist/execution/claude-runner.d.ts +2 -2
  51. package/dist/execution/claude-runner.d.ts.map +1 -1
  52. package/dist/execution/claude-runner.js +12 -5
  53. package/dist/execution/claude-runner.js.map +1 -1
  54. package/dist/index.js +30 -29
  55. package/dist/index.js.map +1 -1
  56. package/dist/storage/json-store.d.ts +1 -0
  57. package/dist/storage/json-store.d.ts.map +1 -1
  58. package/dist/storage/json-store.js +36 -0
  59. package/dist/storage/json-store.js.map +1 -1
  60. package/dist/storage/worklist-store.d.ts +19 -0
  61. package/dist/storage/worklist-store.d.ts.map +1 -0
  62. package/dist/storage/worklist-store.js +131 -0
  63. package/dist/storage/worklist-store.js.map +1 -0
  64. package/dist/types.d.ts +38 -70
  65. package/dist/types.d.ts.map +1 -1
  66. package/dist/types.js +3 -24
  67. package/dist/types.js.map +1 -1
  68. package/package.json +3 -5
  69. package/prompts/implementation.prompt.md +3 -3
  70. package/prompts/issue-analysis.prompt.md +56 -22
  71. package/prompts/plan-analysis.prompt.md +48 -10
  72. package/commands/millhouse.md +0 -223
@@ -0,0 +1,220 @@
1
+ import { execSync } from 'node:child_process';
2
+ import readline from 'node:readline';
3
+ import chalk from 'chalk';
4
+ import ora from 'ora';
5
+ import { WorklistStore } from '../../storage/worklist-store.js';
6
+ async function prompt(question) {
7
+ const rl = readline.createInterface({
8
+ input: process.stdin,
9
+ output: process.stdout,
10
+ });
11
+ return new Promise(resolve => {
12
+ rl.question(question, answer => {
13
+ rl.close();
14
+ resolve(answer.trim().toLowerCase());
15
+ });
16
+ });
17
+ }
18
+ function deleteGitHubIssue(issueNumber) {
19
+ execSync(`gh issue delete ${issueNumber} --yes`, { stdio: 'ignore' });
20
+ }
21
+ async function deleteExistingIssues(worklist, spinner) {
22
+ // Collect all issue numbers to delete
23
+ const issuesToDelete = [];
24
+ for (const item of worklist.items) {
25
+ if (item.githubIssueNumber !== undefined) {
26
+ issuesToDelete.push(item.githubIssueNumber);
27
+ }
28
+ }
29
+ if (worklist.indexIssueNumber !== undefined) {
30
+ issuesToDelete.push(worklist.indexIssueNumber);
31
+ }
32
+ // Delete all issues (ignore errors - issues may have been manually deleted)
33
+ for (const issueNum of issuesToDelete) {
34
+ spinner.start(`Deleting issue #${issueNum}...`);
35
+ try {
36
+ deleteGitHubIssue(issueNum);
37
+ spinner.succeed(`Deleted #${issueNum}`);
38
+ }
39
+ catch {
40
+ // Issue may have been manually deleted - that's fine
41
+ spinner.succeed(`#${issueNum} already deleted`);
42
+ }
43
+ }
44
+ // Clear issue numbers from worklist
45
+ for (const item of worklist.items) {
46
+ delete item.githubIssueNumber;
47
+ }
48
+ delete worklist.indexIssueNumber;
49
+ }
50
+ export async function saveCommand() {
51
+ const store = new WorklistStore();
52
+ const worklist = await store.load();
53
+ if (!worklist) {
54
+ console.error(chalk.red('No worklist found.'));
55
+ console.log('Run "millhouse init" or "millhouse load" first.');
56
+ process.exit(1);
57
+ }
58
+ if (worklist.items.length === 0) {
59
+ console.error(chalk.red('Worklist is empty.'));
60
+ process.exit(1);
61
+ }
62
+ // Verify gh CLI is available
63
+ try {
64
+ execSync('gh --version', { stdio: 'ignore' });
65
+ }
66
+ catch {
67
+ console.error(chalk.red('GitHub CLI (gh) not found.'));
68
+ console.log('Install it from: https://cli.github.com/');
69
+ process.exit(1);
70
+ }
71
+ // Verify gh is authenticated
72
+ try {
73
+ execSync('gh auth status', { stdio: 'ignore' });
74
+ }
75
+ catch {
76
+ console.error(chalk.red('Not authenticated with GitHub CLI.'));
77
+ console.log('Run: gh auth login');
78
+ process.exit(1);
79
+ }
80
+ const spinner = ora();
81
+ // Check if any items already have issue numbers
82
+ const hasIssues = worklist.items.some(i => i.githubIssueNumber !== undefined) || worklist.indexIssueNumber !== undefined;
83
+ if (hasIssues) {
84
+ console.log(chalk.yellow('\nWorklist already has GitHub issues.\n'));
85
+ const choice = await prompt(' [d] Delete existing issues and recreate\n [c] Cancel\n\nChoice: ');
86
+ if (choice !== 'd') {
87
+ console.log('Cancelled.');
88
+ return;
89
+ }
90
+ console.log('');
91
+ await deleteExistingIssues(worklist, spinner);
92
+ console.log('');
93
+ }
94
+ console.log(chalk.bold(`\nCreating ${worklist.items.length} GitHub issues...\n`));
95
+ // Build dependency graph and sort topologically
96
+ const sorted = topologicalSort(worklist.items);
97
+ // Map internal ID -> GitHub issue number
98
+ const idToIssue = new Map();
99
+ for (const item of sorted) {
100
+ spinner.start(`Creating issue: ${item.title}`);
101
+ try {
102
+ // Build the body with GitHub issue numbers for dependencies
103
+ let body = item.body;
104
+ // Replace internal dependency references with GitHub issue numbers
105
+ for (const depId of item.dependencies) {
106
+ const githubNum = idToIssue.get(depId);
107
+ if (githubNum) {
108
+ // Replace #N with actual GitHub issue number
109
+ body = body.replace(new RegExp(`#${depId}\\b`, 'g'), `#${githubNum}`);
110
+ // Also replace "Depends on #N" style references
111
+ body = body.replace(new RegExp(`(depends on|blocked by|after|requires)\\s+#${depId}\\b`, 'gi'), `$1 #${githubNum}`);
112
+ }
113
+ }
114
+ // Add dependency info at the start of the body
115
+ if (item.dependencies.length > 0) {
116
+ const depRefs = item.dependencies
117
+ .map(d => `#${idToIssue.get(d) || d}`)
118
+ .join(', ');
119
+ body = `**Depends on:** ${depRefs}\n\n${body}`;
120
+ }
121
+ // Create issue using gh CLI
122
+ const issue = createGitHubIssue(item.title, body);
123
+ idToIssue.set(item.id, issue.number);
124
+ item.githubIssueNumber = issue.number;
125
+ spinner.succeed(`Created #${issue.number}: ${item.title}`);
126
+ }
127
+ catch (error) {
128
+ spinner.fail(`Failed to create: ${item.title}`);
129
+ console.error(chalk.red(` Error: ${error instanceof Error ? error.message : error}`));
130
+ // Continue with other issues
131
+ }
132
+ }
133
+ // Create index issue
134
+ let indexUrl;
135
+ if (idToIssue.size > 0) {
136
+ spinner.start('Creating index issue...');
137
+ try {
138
+ const indexTitle = worklist.title || 'Implementation Index';
139
+ const indexBody = buildIndexBody(worklist, idToIssue);
140
+ const indexIssue = createGitHubIssue(indexTitle, indexBody);
141
+ indexUrl = indexIssue.url;
142
+ worklist.indexIssueNumber = indexIssue.number;
143
+ spinner.succeed(`Created index issue: #${indexIssue.number}`);
144
+ }
145
+ catch (error) {
146
+ spinner.fail('Failed to create index issue');
147
+ console.error(chalk.red(` Error: ${error instanceof Error ? error.message : error}`));
148
+ }
149
+ }
150
+ // Save updated worklist
151
+ await store.save(worklist);
152
+ console.log(chalk.green(`\n✓ Created ${idToIssue.size} issues`));
153
+ if (indexUrl) {
154
+ console.log(chalk.cyan(`\n${indexUrl}`));
155
+ }
156
+ console.log(chalk.gray('\nRun "millhouse run" to execute'));
157
+ }
158
+ function createGitHubIssue(title, body) {
159
+ // Escape for shell
160
+ const escapedTitle = title.replace(/"/g, '\\"').replace(/`/g, '\\`');
161
+ const escapedBody = body.replace(/"/g, '\\"').replace(/`/g, '\\`');
162
+ const result = execSync(`gh issue create --title "${escapedTitle}" --body "${escapedBody}"`, { encoding: 'utf-8' });
163
+ // Parse issue number from URL
164
+ // Output is like: https://github.com/owner/repo/issues/123
165
+ const url = result.trim();
166
+ const match = url.match(/issues\/(\d+)/);
167
+ if (!match) {
168
+ throw new Error('Failed to parse issue number from gh output');
169
+ }
170
+ return { number: parseInt(match[1], 10), url };
171
+ }
172
+ function buildIndexBody(worklist, idToIssue) {
173
+ const lines = worklist.items.map(item => {
174
+ const ghNum = idToIssue.get(item.id);
175
+ if (!ghNum)
176
+ return null;
177
+ let deps = '';
178
+ if (item.dependencies.length > 0) {
179
+ const depRefs = item.dependencies
180
+ .map(d => `#${idToIssue.get(d) || d}`)
181
+ .join(', ');
182
+ deps = ` (depends on ${depRefs})`;
183
+ }
184
+ // GitHub auto-expands #N to show the issue title, so we don't need to repeat it
185
+ return `- #${ghNum}${deps}`;
186
+ }).filter(Boolean);
187
+ const description = worklist.description ? `${worklist.description}\n\n` : '';
188
+ return `${description}## Issues
189
+
190
+ ${lines.join('\n')}
191
+ `;
192
+ }
193
+ function topologicalSort(items) {
194
+ const sorted = [];
195
+ const visited = new Set();
196
+ const visiting = new Set();
197
+ const itemMap = new Map(items.map(i => [i.id, i]));
198
+ function visit(item) {
199
+ if (visited.has(item.id))
200
+ return;
201
+ if (visiting.has(item.id)) {
202
+ throw new Error(`Circular dependency detected at item ${item.id}`);
203
+ }
204
+ visiting.add(item.id);
205
+ for (const depId of item.dependencies) {
206
+ const dep = itemMap.get(depId);
207
+ if (dep) {
208
+ visit(dep);
209
+ }
210
+ }
211
+ visiting.delete(item.id);
212
+ visited.add(item.id);
213
+ sorted.push(item);
214
+ }
215
+ for (const item of items) {
216
+ visit(item);
217
+ }
218
+ return sorted;
219
+ }
220
+ //# sourceMappingURL=save.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"save.js","sourceRoot":"","sources":["../../../src/cli/commands/save.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAGhE,KAAK,UAAU,MAAM,CAAC,QAAgB;IACpC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;YAC7B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,WAAmB;IAC5C,QAAQ,CAAC,mBAAmB,WAAW,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AACxE,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,QAAkB,EAAE,OAA+B;IACrF,sCAAsC;IACtC,MAAM,cAAc,GAAa,EAAE,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACzC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAC5C,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACjD,CAAC;IAED,4EAA4E;IAC5E,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,mBAAmB,QAAQ,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC;YACH,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC5B,OAAO,CAAC,OAAO,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,qDAAqD;YACrD,OAAO,CAAC,OAAO,CAAC,IAAI,QAAQ,kBAAkB,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IACD,OAAO,QAAQ,CAAC,gBAAgB,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IAEpC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC;QACH,QAAQ,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC;QACH,QAAQ,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;IAEtB,gDAAgD;IAChD,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,KAAK,SAAS,CAAC,IAAI,QAAQ,CAAC,gBAAgB,KAAK,SAAS,CAAC;IACzH,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,MAAM,CACzB,qEAAqE,CACtE,CAAC;QAEF,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,QAAQ,CAAC,KAAK,CAAC,MAAM,qBAAqB,CAAC,CAAC,CAAC;IAElF,gDAAgD;IAChD,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE/C,yCAAyC;IACzC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE5C,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAE/C,IAAI,CAAC;YACH,4DAA4D;YAC5D,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAErB,mEAAmE;YACnE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtC,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACvC,IAAI,SAAS,EAAE,CAAC;oBACd,6CAA6C;oBAC7C,IAAI,GAAG,IAAI,CAAC,OAAO,CACjB,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,GAAG,CAAC,EAC/B,IAAI,SAAS,EAAE,CAChB,CAAC;oBACF,gDAAgD;oBAChD,IAAI,GAAG,IAAI,CAAC,OAAO,CACjB,IAAI,MAAM,CAAC,8CAA8C,KAAK,KAAK,EAAE,IAAI,CAAC,EAC1E,OAAO,SAAS,EAAE,CACnB,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,+CAA+C;YAC/C,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY;qBAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;qBACrC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,IAAI,GAAG,mBAAmB,OAAO,OAAO,IAAI,EAAE,CAAC;YACjD,CAAC;YAED,4BAA4B;YAC5B,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAClD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAC;YAEtC,OAAO,CAAC,OAAO,CAAC,YAAY,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAChD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACvF,6BAA6B;QAC/B,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,IAAI,QAA4B,CAAC;IACjC,IAAI,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAEzC,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,IAAI,sBAAsB,CAAC;YAC5D,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACtD,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAC5D,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC;YAC1B,QAAQ,CAAC,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAC;YAC9C,OAAO,CAAC,OAAO,CAAC,yBAAyB,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC7C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,SAAS,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;IACjE,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAOD,SAAS,iBAAiB,CAAC,KAAa,EAAE,IAAY;IACpD,mBAAmB;IACnB,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEnE,MAAM,MAAM,GAAG,QAAQ,CACrB,4BAA4B,YAAY,aAAa,WAAW,GAAG,EACnE,EAAE,QAAQ,EAAE,OAAO,EAAE,CACtB,CAAC;IAEF,8BAA8B;IAC9B,2DAA2D;IAC3D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,cAAc,CACrB,QAAkB,EAClB,SAA8B;IAE9B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY;iBAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;iBACrC,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,IAAI,GAAG,gBAAgB,OAAO,GAAG,CAAC;QACpC,CAAC;QAED,gFAAgF;QAChF,OAAO,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,WAAW,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAE9E,OAAO,GAAG,WAAW;;EAErB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;CACjB,CAAC;AACF,CAAC;AAED,SAAS,eAAe,CAAC,KAAqB;IAC5C,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnD,SAAS,KAAK,CAAC,IAAkB;QAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,OAAO;QACjC,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,wCAAwC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEtB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,GAAG,EAAE,CAAC;gBACR,KAAK,CAAC,GAAG,CAAC,CAAC;YACb,CAAC;QACH,CAAC;QAED,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -57,11 +57,11 @@ export async function setupCommand(options) {
57
57
  }
58
58
  console.log(`
59
59
  ${chalk.bold('Slash commands (in Claude Code):')}
60
- /millhouse plan [file] Refine a plan (omit file to use current plan)
61
- /millhouse issues [file] Create GitHub issues (omit file to use current plan)
60
+ /millhouse plan [name] Analyze plan.md and save as JSON
61
+ /millhouse issues [name] Create GitHub issues from JSON plan
62
62
 
63
63
  ${chalk.bold('Then run from terminal:')}
64
- millhouse run [file] Execute plan (omit file to use latest plan)
64
+ millhouse run [name] Execute from JSON plan (fast)
65
65
  millhouse run issues [id] Execute GitHub issues (omit id to run all)
66
66
  millhouse status Show run status
67
67
  `);
@@ -31,8 +31,6 @@ export declare class ProgressDisplay {
31
31
  private resizeHandler;
32
32
  private isRunning;
33
33
  private logHistory;
34
- private renderTimeout;
35
- private renderScheduled;
36
34
  constructor(options?: {
37
35
  displayMode?: 'compact' | 'detailed';
38
36
  });
@@ -69,26 +67,21 @@ export declare class ProgressDisplay {
69
67
  */
70
68
  private truncateMessage;
71
69
  /**
72
- * Truncate a string to fit within maxWidth terminal columns.
73
- * Uses string-width to correctly handle ANSI codes and wide characters.
74
- */
75
- private truncateToWidth;
76
- /**
77
- * Clear previously rendered lines (used when switching modes).
70
+ * Clear previously rendered lines (for mode switches).
78
71
  */
79
72
  private clearLines;
80
73
  /**
81
- * Schedule a render. Throttled to prevent overwhelming the terminal.
74
+ * Render the compact view.
82
75
  */
83
- private scheduleRender;
76
+ private render;
84
77
  /**
85
- * Actually render the compact view.
78
+ * Build a single display line, truncated to fit maxWidth.
86
79
  */
87
- private doRender;
80
+ private buildLine;
88
81
  /**
89
- * Render immediately (used for initial render and final render).
82
+ * Hard truncate a string (with ANSI codes) to maxWidth.
90
83
  */
91
- private render;
84
+ private hardTruncate;
92
85
  /**
93
86
  * Render final summary after stopping.
94
87
  */
@@ -1 +1 @@
1
- {"version":3,"file":"progress-display.d.ts","sourceRoot":"","sources":["../../src/cli/progress-display.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAUnF,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,UAAU,CAAwC;IAC1D,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAuD;IACzE,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,eAAe,CAAS;gBAEpB,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,SAAS,GAAG,UAAU,CAAA;KAAE;IAM9D;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI;IA+CzC;;OAEG;IACH,KAAK,IAAI,IAAI;IA+Cb;;OAEG;IACH,IAAI,IAAI,IAAI;IA8BZ;;OAEG;IACH,OAAO,CAAC,UAAU;IAsBlB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAgB/B;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAuDvC;;OAEG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAkBvD;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAkCvB;;OAEG;IACH,OAAO,CAAC,UAAU;IAOlB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,QAAQ;IA8ChB;;OAEG;IACH,OAAO,CAAC,MAAM;IASd;;OAEG;IACH,OAAO,CAAC,WAAW;IAcnB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAUpB;;OAEG;IACH,OAAO,CAAC,aAAa;CAStB"}
1
+ {"version":3,"file":"progress-display.d.ts","sourceRoot":"","sources":["../../src/cli/progress-display.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAUnF,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,UAAU,CAAwC;IAC1D,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAuD;gBAE7D,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,SAAS,GAAG,UAAU,CAAA;KAAE;IAM9D;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI;IA+CzC;;OAEG;IACH,KAAK,IAAI,IAAI;IA4Cb;;OAEG;IACH,IAAI,IAAI,IAAI;IAwBZ;;OAEG;IACH,OAAO,CAAC,UAAU;IAsBlB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAgB/B;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAuDvC;;OAEG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAkBvD;;OAEG;IACH,OAAO,CAAC,eAAe;IAQvB;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACH,OAAO,CAAC,MAAM;IAgCd;;OAEG;IACH,OAAO,CAAC,SAAS;IAgDjB;;OAEG;IACH,OAAO,CAAC,YAAY;IA8BpB;;OAEG;IACH,OAAO,CAAC,WAAW;IAcnB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAUpB;;OAEG;IACH,OAAO,CAAC,aAAa;CAStB"}
@@ -9,8 +9,6 @@ export class ProgressDisplay {
9
9
  resizeHandler = null;
10
10
  isRunning = false;
11
11
  logHistory = [];
12
- renderTimeout = null;
13
- renderScheduled = false;
14
12
  constructor(options) {
15
13
  if (options?.displayMode === 'detailed') {
16
14
  this.compactMode = false;
@@ -82,13 +80,10 @@ export class ProgressDisplay {
82
80
  };
83
81
  process.stdin.on('data', this.keyHandler);
84
82
  }
85
- // Listen for terminal resize to re-render with new width
83
+ // Listen for terminal resize
86
84
  if (process.stdout.isTTY) {
87
85
  this.resizeHandler = () => {
88
86
  if (this.compactMode && this.isRunning) {
89
- // Just re-render with new width - some garbage may remain briefly
90
- // from previously wrapped lines, but it's better than clearing
91
- // useful content above the progress display
92
87
  this.render();
93
88
  }
94
89
  };
@@ -105,11 +100,6 @@ export class ProgressDisplay {
105
100
  */
106
101
  stop() {
107
102
  this.isRunning = false;
108
- // Clear any pending render
109
- if (this.renderTimeout) {
110
- clearTimeout(this.renderTimeout);
111
- this.renderTimeout = null;
112
- }
113
103
  if (process.stdin.isTTY) {
114
104
  if (this.keyHandler) {
115
105
  process.stdin.removeListener('data', this.keyHandler);
@@ -211,7 +201,7 @@ export class ProgressDisplay {
211
201
  break;
212
202
  }
213
203
  if (this.compactMode && this.isRunning) {
214
- this.scheduleRender();
204
+ this.render();
215
205
  }
216
206
  else if (!this.compactMode && this.isRunning) {
217
207
  this.renderDetailedEvent(event);
@@ -231,7 +221,7 @@ export class ProgressDisplay {
231
221
  if (issue) {
232
222
  issue.latestMessage = this.truncateMessage(message);
233
223
  if (this.compactMode && this.isRunning) {
234
- this.scheduleRender();
224
+ this.render();
235
225
  }
236
226
  }
237
227
  }
@@ -239,119 +229,121 @@ export class ProgressDisplay {
239
229
  * Truncate a message to fit on one line.
240
230
  */
241
231
  truncateMessage(message) {
242
- // Remove newlines and trim - actual length truncation happens in doRender based on terminal width
243
- return message.replace(/\n/g, ' ').trim();
244
- }
245
- /**
246
- * Truncate a string to fit within maxWidth terminal columns.
247
- * Uses string-width to correctly handle ANSI codes and wide characters.
248
- */
249
- truncateToWidth(str, maxWidth) {
250
- if (stringWidth(str) <= maxWidth) {
251
- return str;
252
- }
253
- // Need to truncate - rebuild string character by character
254
- let result = '';
255
- let i = 0;
256
- while (i < str.length) {
257
- // Check for ANSI escape sequence
258
- if (str[i] === '\x1B' && str[i + 1] === '[') {
259
- // Find end of escape sequence
260
- let j = i + 2;
261
- while (j < str.length && str[j] !== 'm') {
262
- j++;
263
- }
264
- // Include the 'm' and add to result (doesn't affect width)
265
- result += str.slice(i, j + 1);
266
- i = j + 1;
267
- }
268
- else {
269
- // Check if adding this character would exceed width (leaving room for ...)
270
- const charWidth = stringWidth(str[i]);
271
- if (stringWidth(result) + charWidth > maxWidth - 3) {
272
- break;
273
- }
274
- result += str[i];
275
- i++;
276
- }
277
- }
278
- return result + '...';
232
+ // Remove newlines and trim
233
+ const clean = message.replace(/\n/g, ' ').trim();
234
+ const maxLen = 60;
235
+ if (clean.length <= maxLen)
236
+ return clean;
237
+ return clean.slice(0, maxLen - 3) + '...';
279
238
  }
280
239
  /**
281
- * Clear previously rendered lines (used when switching modes).
240
+ * Clear previously rendered lines (for mode switches).
282
241
  */
283
242
  clearLines() {
284
243
  if (this.lastRenderLines > 0) {
285
- process.stdout.write(`\r\x1B[${this.lastRenderLines}A\x1B[J`);
244
+ // Move cursor up and clear everything below
245
+ process.stdout.write(`\x1B[${this.lastRenderLines}A\x1B[J`);
286
246
  this.lastRenderLines = 0;
287
247
  }
288
248
  }
289
249
  /**
290
- * Schedule a render. Throttled to prevent overwhelming the terminal.
291
- */
292
- scheduleRender() {
293
- if (this.renderScheduled)
294
- return;
295
- this.renderScheduled = true;
296
- // Use setImmediate for first render, then throttle subsequent renders
297
- if (this.renderTimeout) {
298
- clearTimeout(this.renderTimeout);
299
- }
300
- this.renderTimeout = setTimeout(() => {
301
- this.renderScheduled = false;
302
- this.renderTimeout = null;
303
- this.doRender();
304
- }, 50); // 50ms throttle
305
- }
306
- /**
307
- * Actually render the compact view.
250
+ * Render the compact view.
308
251
  */
309
- doRender() {
310
- // Build the complete output with clear codes in a single string
252
+ render() {
253
+ // Get terminal width (leave margin for safety)
254
+ const termWidth = (process.stdout.columns || 80) - 2;
255
+ // Build output string
311
256
  let output = '';
312
- // Clear previous render if we have one
257
+ // Move cursor up to overwrite previous render
313
258
  if (this.lastRenderLines > 0) {
314
- // Move to start of line
315
- output += '\r';
316
- // Move cursor up to start of render area
317
259
  output += `\x1B[${this.lastRenderLines}A`;
318
- // Clear from cursor to end of screen
319
- output += '\x1B[J';
320
260
  }
321
- // Get terminal width for truncation (default to 80 if unavailable)
322
- const termWidth = process.stdout.columns || 80;
323
- // Build the new content
324
- const lines = [];
261
+ let lineCount = 0;
325
262
  for (const issueNumber of this.issueOrder) {
326
263
  const issue = this.issues.get(issueNumber);
327
264
  if (!issue)
328
265
  continue;
329
- const stateIcon = this.getStateIcon(issue.state);
330
- const stateColor = this.getStateColor(issue.state);
331
- // Truncate title to max 30 chars
332
- const titleShort = issue.title.length > 30
333
- ? issue.title.slice(0, 27) + '...'
334
- : issue.title;
335
- // Build the full line, then truncate to terminal width
336
- const fullLine = `${stateIcon} ${stateColor(`#${issue.number}`)} ${chalk.gray(titleShort)} ${chalk.dim('│')} ${issue.latestMessage}`;
337
- const line = this.truncateToWidth(fullLine, termWidth - 1);
338
- lines.push(line);
266
+ // Build line with truncation based on available width
267
+ const line = this.buildLine(issue, termWidth);
268
+ // Write line, clear to end of line, then newline
269
+ output += '\r' + line + '\x1B[K\n';
270
+ lineCount++;
339
271
  }
340
- output += lines.join('\n') + '\n';
341
- // Single atomic write
272
+ // Clear any remaining old lines below
273
+ output += '\x1B[J';
342
274
  process.stdout.write(output);
343
- this.lastRenderLines = lines.length;
275
+ this.lastRenderLines = lineCount;
344
276
  }
345
277
  /**
346
- * Render immediately (used for initial render and final render).
278
+ * Build a single display line, truncated to fit maxWidth.
347
279
  */
348
- render() {
349
- if (this.renderTimeout) {
350
- clearTimeout(this.renderTimeout);
351
- this.renderTimeout = null;
280
+ buildLine(issue, maxWidth) {
281
+ const stateIcon = this.getStateIcon(issue.state);
282
+ const stateColor = this.getStateColor(issue.state);
283
+ const numStr = `#${issue.number}`;
284
+ const separator = ' │ ';
285
+ // Measure fixed parts using stringWidth (handles wide chars like ● and │)
286
+ const iconWidth = stringWidth(stateIcon);
287
+ const numWidth = stringWidth(numStr);
288
+ const sepWidth = stringWidth(separator);
289
+ const spacesWidth = 2; // spaces between parts
290
+ const fixedWidth = iconWidth + spacesWidth + numWidth + sepWidth;
291
+ // Remaining width for title + message
292
+ const remainingWidth = maxWidth - fixedWidth;
293
+ if (remainingWidth < 15) {
294
+ // Terminal too narrow, just show icon and number
295
+ return `${stateIcon} ${stateColor(numStr)}`;
296
+ }
297
+ // Split remaining space: give title up to 30 chars, rest to message
298
+ const titleMaxWidth = Math.min(30, Math.floor(remainingWidth * 0.5));
299
+ const msgMaxWidth = remainingWidth - titleMaxWidth - 1; // -1 for space after title
300
+ // Truncate title (plain text, then color)
301
+ let title = issue.title;
302
+ if (title.length > titleMaxWidth) {
303
+ title = title.slice(0, titleMaxWidth - 3) + '...';
304
+ }
305
+ // Truncate message (plain text)
306
+ let msg = issue.latestMessage.replace(/\n/g, ' ').trim();
307
+ if (msg.length > msgMaxWidth) {
308
+ msg = msg.slice(0, msgMaxWidth - 3) + '...';
309
+ }
310
+ const line = `${stateIcon} ${stateColor(numStr)} ${chalk.gray(title)} ${chalk.dim('│')} ${msg}`;
311
+ // Final safety check - if still too wide, hard truncate
312
+ if (stringWidth(line) > maxWidth) {
313
+ return this.hardTruncate(line, maxWidth);
314
+ }
315
+ return line;
316
+ }
317
+ /**
318
+ * Hard truncate a string (with ANSI codes) to maxWidth.
319
+ */
320
+ hardTruncate(str, maxWidth) {
321
+ if (stringWidth(str) <= maxWidth) {
322
+ return str;
323
+ }
324
+ let result = '';
325
+ let width = 0;
326
+ let i = 0;
327
+ while (i < str.length && width < maxWidth - 3) {
328
+ if (str[i] === '\x1B') {
329
+ // ANSI escape - find the end and include it
330
+ let j = i + 1;
331
+ while (j < str.length && str[j] !== 'm') {
332
+ j++;
333
+ }
334
+ result += str.slice(i, j + 1);
335
+ i = j + 1;
336
+ }
337
+ else {
338
+ const cw = stringWidth(str[i]);
339
+ if (width + cw > maxWidth - 3)
340
+ break;
341
+ result += str[i];
342
+ width += cw;
343
+ i++;
344
+ }
352
345
  }
353
- this.renderScheduled = false;
354
- this.doRender();
346
+ return result + '...\x1B[0m';
355
347
  }
356
348
  /**
357
349
  * Render final summary after stopping.
@@ -1 +1 @@
1
- {"version":3,"file":"progress-display.js","sourceRoot":"","sources":["../../src/cli/progress-display.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"progress-display.js","sourceRoot":"","sources":["../../src/cli/progress-display.ts"],"names":[],"mappings":"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"}