create-claude-workspace 2.1.9 → 2.1.11
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/dist/scheduler/index.mjs
CHANGED
|
@@ -206,12 +206,16 @@ export async function runScheduler(opts) {
|
|
|
206
206
|
tui.destroy();
|
|
207
207
|
return;
|
|
208
208
|
}
|
|
209
|
-
// State
|
|
209
|
+
// State — always load existing state to preserve completed/skipped tasks
|
|
210
210
|
let state;
|
|
211
211
|
const existing = readState(opts.projectDir);
|
|
212
|
-
if (
|
|
212
|
+
if (existing) {
|
|
213
213
|
state = existing;
|
|
214
|
-
|
|
214
|
+
// Clear in-progress pipelines from previous run (can't resume mid-pipeline)
|
|
215
|
+
if (!opts.resume) {
|
|
216
|
+
state.pipelines = {};
|
|
217
|
+
}
|
|
218
|
+
logger.info(`Loaded state: ${state.completedTasks.length} completed, ${state.skippedTasks.length} skipped, iteration ${state.iteration}`);
|
|
215
219
|
}
|
|
216
220
|
else {
|
|
217
221
|
state = emptyState(opts.concurrency);
|
package/dist/scheduler/loop.mjs
CHANGED
|
@@ -72,6 +72,15 @@ export async function runIteration(deps) {
|
|
|
72
72
|
logger.info('No tasks found (no tasks.json or TODO.md)');
|
|
73
73
|
return false;
|
|
74
74
|
}
|
|
75
|
+
// Reconcile task status with scheduler state (handles restart without --resume)
|
|
76
|
+
for (const task of tasks) {
|
|
77
|
+
if (state.completedTasks.includes(task.id) && task.status !== 'done') {
|
|
78
|
+
task.status = 'done';
|
|
79
|
+
}
|
|
80
|
+
if (state.skippedTasks.includes(task.id) && task.status !== 'skipped') {
|
|
81
|
+
task.status = 'skipped';
|
|
82
|
+
}
|
|
83
|
+
}
|
|
75
84
|
// Check project completion
|
|
76
85
|
if (isProjectComplete(tasks)) {
|
|
77
86
|
logger.info('All tasks complete.');
|
|
@@ -423,7 +423,11 @@ export class TUI {
|
|
|
423
423
|
this.log(` ${pre} ${ANSI_COLORS.red}✗ ${output}${RESET}`, `ERROR: ${output}`);
|
|
424
424
|
}
|
|
425
425
|
else {
|
|
426
|
-
|
|
426
|
+
const lines = output.split('\n');
|
|
427
|
+
const summary = lines.length > 3
|
|
428
|
+
? `${lines.length} lines`
|
|
429
|
+
: output.replace(/\n/g, ' ').trim();
|
|
430
|
+
this.log(` ${pre} ${ANSI_COLORS.green}✓${RESET} ${DIM}${summary}${RESET}`, `OK: ${summary}`);
|
|
427
431
|
}
|
|
428
432
|
}
|
|
429
433
|
}
|