@masslessai/push-todo 4.0.4 → 4.0.5
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/lib/api.js +33 -0
- package/lib/cli.js +35 -0
- package/package.json +1 -1
package/lib/api.js
CHANGED
|
@@ -147,6 +147,39 @@ export async function markTaskCompleted(taskId, comment = '') {
|
|
|
147
147
|
return true;
|
|
148
148
|
}
|
|
149
149
|
|
|
150
|
+
/**
|
|
151
|
+
* Create a new todo.
|
|
152
|
+
*
|
|
153
|
+
* @param {Object} options - Todo creation options
|
|
154
|
+
* @param {string} options.title - Todo title (required)
|
|
155
|
+
* @param {string|null} options.content - Detailed content (optional)
|
|
156
|
+
* @param {boolean} options.backlog - Whether to create as backlog item
|
|
157
|
+
* @returns {Promise<Object>} Created todo with { id, displayNumber, title, createdAt }
|
|
158
|
+
*/
|
|
159
|
+
export async function createTodo({ title, content = null, backlog = false }) {
|
|
160
|
+
const response = await apiRequest('create-todo', {
|
|
161
|
+
method: 'POST',
|
|
162
|
+
body: JSON.stringify({
|
|
163
|
+
title,
|
|
164
|
+
normalizedContent: content || null,
|
|
165
|
+
isBacklog: backlog,
|
|
166
|
+
createdByClient: 'cli',
|
|
167
|
+
}),
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
if (!response.ok) {
|
|
171
|
+
const text = await response.text();
|
|
172
|
+
throw new Error(`Failed to create todo: ${text}`);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
const data = await response.json();
|
|
176
|
+
if (!data.success) {
|
|
177
|
+
throw new Error(data.error || 'Unknown error creating todo');
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
return data.todo;
|
|
181
|
+
}
|
|
182
|
+
|
|
150
183
|
/**
|
|
151
184
|
* Queue a task for daemon execution.
|
|
152
185
|
*
|
package/lib/cli.js
CHANGED
|
@@ -43,6 +43,7 @@ ${bold('push-todo')} - Voice tasks from Push iOS app for Claude Code
|
|
|
43
43
|
${bold('USAGE:')}
|
|
44
44
|
push-todo [options] List active tasks
|
|
45
45
|
push-todo <number> Show specific task
|
|
46
|
+
push-todo create <title> Create a new todo
|
|
46
47
|
push-todo connect Run connection doctor
|
|
47
48
|
push-todo search <query> Search tasks
|
|
48
49
|
push-todo review Review completed tasks
|
|
@@ -78,6 +79,8 @@ ${bold('OPTIONS:')}
|
|
|
78
79
|
${bold('EXAMPLES:')}
|
|
79
80
|
push-todo List active tasks for current project
|
|
80
81
|
push-todo 427 Show task #427
|
|
82
|
+
push-todo create "Fix auth bug" Create a new todo
|
|
83
|
+
push-todo create "Item" --backlog Create as backlog item
|
|
81
84
|
push-todo -a List all tasks across projects
|
|
82
85
|
push-todo --queue 1,2,3 Queue tasks 1, 2, 3 for daemon
|
|
83
86
|
push-todo search "auth bug" Search for tasks matching "auth bug"
|
|
@@ -505,6 +508,38 @@ export async function run(argv) {
|
|
|
505
508
|
return requestConfirmation(values, positionals);
|
|
506
509
|
}
|
|
507
510
|
|
|
511
|
+
// Create command - create a new todo
|
|
512
|
+
if (command === 'create') {
|
|
513
|
+
const title = positionals.slice(1).join(' ');
|
|
514
|
+
if (!title) {
|
|
515
|
+
console.error(red('Error: Title is required.'));
|
|
516
|
+
console.error('');
|
|
517
|
+
console.error('Usage:');
|
|
518
|
+
console.error(' push-todo create "Fix the auth bug"');
|
|
519
|
+
console.error(' push-todo create "Fix the auth bug" --backlog');
|
|
520
|
+
console.error(' push-todo create "Fix the auth bug" --content "Detailed description"');
|
|
521
|
+
process.exit(1);
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
try {
|
|
525
|
+
const todo = await api.createTodo({
|
|
526
|
+
title,
|
|
527
|
+
content: values.content || null,
|
|
528
|
+
backlog: values.backlog || false,
|
|
529
|
+
});
|
|
530
|
+
|
|
531
|
+
if (values.json) {
|
|
532
|
+
console.log(JSON.stringify(todo, null, 2));
|
|
533
|
+
} else {
|
|
534
|
+
console.log(green(`Created todo #${todo.displayNumber}: ${todo.title}`));
|
|
535
|
+
}
|
|
536
|
+
} catch (error) {
|
|
537
|
+
console.error(red(`Failed to create todo: ${error.message}`));
|
|
538
|
+
process.exit(1);
|
|
539
|
+
}
|
|
540
|
+
return;
|
|
541
|
+
}
|
|
542
|
+
|
|
508
543
|
// Cron command - scheduled jobs
|
|
509
544
|
if (command === 'cron') {
|
|
510
545
|
const { addJob, removeJob, listJobs } = await import('./cron.js');
|