@doist/todoist-cli 1.40.0 → 1.42.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/CHANGELOG.md +14 -0
- package/dist/commands/activity.d.ts.map +1 -1
- package/dist/commands/activity.js +4 -7
- package/dist/commands/activity.js.map +1 -1
- package/dist/commands/auth/index.js +1 -1
- package/dist/commands/auth/index.js.map +1 -1
- package/dist/commands/auth/status.js +1 -1
- package/dist/commands/auth/status.js.map +1 -1
- package/dist/commands/backup/download.d.ts +6 -0
- package/dist/commands/backup/download.d.ts.map +1 -0
- package/dist/commands/backup/download.js +28 -0
- package/dist/commands/backup/download.js.map +1 -0
- package/dist/commands/backup/helpers.d.ts +3 -0
- package/dist/commands/backup/helpers.d.ts.map +1 -0
- package/dist/commands/backup/helpers.js +12 -0
- package/dist/commands/backup/helpers.js.map +1 -0
- package/dist/commands/backup/index.d.ts +3 -0
- package/dist/commands/backup/index.d.ts.map +1 -0
- package/dist/commands/backup/index.js +30 -0
- package/dist/commands/backup/index.js.map +1 -0
- package/dist/commands/backup/list.d.ts +7 -0
- package/dist/commands/backup/list.d.ts.map +1 -0
- package/dist/commands/backup/list.js +25 -0
- package/dist/commands/backup/list.js.map +1 -0
- package/dist/commands/comment/list.js +1 -1
- package/dist/commands/comment/list.js.map +1 -1
- package/dist/commands/{completed.d.ts → completed/index.d.ts} +1 -1
- package/dist/commands/completed/index.d.ts.map +1 -0
- package/dist/commands/completed/index.js +28 -0
- package/dist/commands/completed/index.js.map +1 -0
- package/dist/commands/completed/list.d.ts +10 -0
- package/dist/commands/completed/list.d.ts.map +1 -0
- package/dist/commands/completed/list.js +109 -0
- package/dist/commands/completed/list.js.map +1 -0
- package/dist/commands/label/helpers.d.ts +1 -0
- package/dist/commands/label/helpers.d.ts.map +1 -1
- package/dist/commands/label/helpers.js +12 -0
- package/dist/commands/label/helpers.js.map +1 -1
- package/dist/commands/label/index.d.ts.map +1 -1
- package/dist/commands/label/index.js +32 -2
- package/dist/commands/label/index.js.map +1 -1
- package/dist/commands/label/list.d.ts +4 -1
- package/dist/commands/label/list.d.ts.map +1 -1
- package/dist/commands/label/list.js +8 -2
- package/dist/commands/label/list.js.map +1 -1
- package/dist/commands/label/remove-shared.d.ts +5 -0
- package/dist/commands/label/remove-shared.d.ts.map +1 -0
- package/dist/commands/label/remove-shared.js +21 -0
- package/dist/commands/label/remove-shared.js.map +1 -0
- package/dist/commands/label/rename-shared.d.ts +5 -0
- package/dist/commands/label/rename-shared.d.ts.map +1 -0
- package/dist/commands/label/rename-shared.js +16 -0
- package/dist/commands/label/rename-shared.js.map +1 -0
- package/dist/commands/notification/helpers.d.ts +1 -1
- package/dist/commands/notification/helpers.d.ts.map +1 -1
- package/dist/commands/notification/helpers.js +1 -2
- package/dist/commands/notification/helpers.js.map +1 -1
- package/dist/commands/notification/view.d.ts.map +1 -1
- package/dist/commands/notification/view.js +1 -2
- package/dist/commands/notification/view.js.map +1 -1
- package/dist/commands/project/archived-count.js +1 -1
- package/dist/commands/project/archived-count.js.map +1 -1
- package/dist/commands/project/archived.d.ts +3 -0
- package/dist/commands/project/archived.d.ts.map +1 -0
- package/dist/commands/project/archived.js +94 -0
- package/dist/commands/project/archived.js.map +1 -0
- package/dist/commands/project/collaborators.d.ts.map +1 -1
- package/dist/commands/project/collaborators.js +1 -2
- package/dist/commands/project/collaborators.js.map +1 -1
- package/dist/commands/project/index.d.ts.map +1 -1
- package/dist/commands/project/index.js +14 -1
- package/dist/commands/project/index.js.map +1 -1
- package/dist/commands/project/list.d.ts +1 -0
- package/dist/commands/project/list.d.ts.map +1 -1
- package/dist/commands/project/list.js +11 -1
- package/dist/commands/project/list.js.map +1 -1
- package/dist/commands/section/index.d.ts.map +1 -1
- package/dist/commands/section/index.js +3 -2
- package/dist/commands/section/index.js.map +1 -1
- package/dist/commands/section/list.d.ts +6 -1
- package/dist/commands/section/list.d.ts.map +1 -1
- package/dist/commands/section/list.js +12 -2
- package/dist/commands/section/list.js.map +1 -1
- package/dist/commands/workspace/insights.js +1 -1
- package/dist/commands/workspace/insights.js.map +1 -1
- package/dist/commands/workspace/users.d.ts.map +1 -1
- package/dist/commands/workspace/users.js +1 -2
- package/dist/commands/workspace/users.js.map +1 -1
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/api/core.d.ts.map +1 -1
- package/dist/lib/api/core.js +19 -3
- package/dist/lib/api/core.js.map +1 -1
- package/dist/lib/api/notifications.d.ts +1 -1
- package/dist/lib/api/notifications.d.ts.map +1 -1
- package/dist/lib/collaborators.d.ts.map +1 -1
- package/dist/lib/collaborators.js +2 -4
- package/dist/lib/collaborators.js.map +1 -1
- package/dist/lib/oauth.d.ts +2 -2
- package/dist/lib/oauth.d.ts.map +1 -1
- package/dist/lib/oauth.js +2 -2
- package/dist/lib/oauth.js.map +1 -1
- package/dist/lib/permissions.d.ts.map +1 -1
- package/dist/lib/permissions.js +8 -0
- package/dist/lib/permissions.js.map +1 -1
- package/dist/lib/skills/content.d.ts +1 -1
- package/dist/lib/skills/content.d.ts.map +1 -1
- package/dist/lib/skills/content.js +18 -4
- package/dist/lib/skills/content.js.map +1 -1
- package/package.json +2 -2
- package/dist/commands/completed.d.ts.map +0 -1
- package/dist/commands/completed.js +0 -108
- package/dist/commands/completed.js.map +0 -1
|
@@ -39,11 +39,11 @@ Tokens are stored in the OS credential manager when available, with fallback to
|
|
|
39
39
|
|
|
40
40
|
- Daily views: \`td today\`, \`td inbox\`, \`td upcoming\`, \`td completed\`, \`td activity\`
|
|
41
41
|
- Task lifecycle: \`td task list/view/add/update/reschedule/move/complete/uncomplete/delete/browse\`
|
|
42
|
-
- Projects: \`td project list/view/create/update/archive/unarchive/delete/move/join/browse/collaborators/permissions\`
|
|
42
|
+
- Projects: \`td project list/view/create/update/archive/unarchive/archived/delete/move/join/browse/collaborators/permissions\`
|
|
43
43
|
- Project analytics: \`td project progress/health/health-context/activity-stats/analyze-health\`
|
|
44
44
|
- Organization: \`td label ...\`, \`td filter ...\`, \`td section ...\`, \`td workspace ...\`
|
|
45
45
|
- Collaboration: \`td comment ...\`, \`td notification ...\`, \`td reminder ...\`
|
|
46
|
-
- Templates and files: \`td template ...\`, \`td attachment view <file-url
|
|
46
|
+
- Templates and files: \`td template ...\`, \`td attachment view <file-url>\`, \`td backup ...\`
|
|
47
47
|
- Account and tooling: \`td stats\`, \`td settings ...\`, \`td completion ...\`, \`td view <todoist-url>\`, \`td doctor\`, \`td update\`, \`td changelog\`
|
|
48
48
|
|
|
49
49
|
## References
|
|
@@ -62,7 +62,8 @@ Some commands require \`id:\` or URL refs (name lookup unavailable): \`task unco
|
|
|
62
62
|
td today
|
|
63
63
|
td inbox --priority p1
|
|
64
64
|
td upcoming 14 --workspace "Work"
|
|
65
|
-
td completed --since 2024-01-01 --until 2024-01-31
|
|
65
|
+
td completed list --since 2024-01-01 --until 2024-01-31
|
|
66
|
+
td completed list --search "meeting notes"
|
|
66
67
|
td activity --type task --event completed
|
|
67
68
|
\`\`\`
|
|
68
69
|
|
|
@@ -89,6 +90,8 @@ Useful task flags:
|
|
|
89
90
|
### Projects And Workspaces
|
|
90
91
|
\`\`\`bash
|
|
91
92
|
td project list --personal
|
|
93
|
+
td project list --search "Road"
|
|
94
|
+
td project archived
|
|
92
95
|
td project view "Roadmap" --detailed
|
|
93
96
|
td project collaborators "Roadmap"
|
|
94
97
|
td project create --name "New Project" --color blue
|
|
@@ -115,11 +118,14 @@ td workspace insights "Acme" --project-ids "id1,id2"
|
|
|
115
118
|
### Labels, Filters, And Sections
|
|
116
119
|
\`\`\`bash
|
|
117
120
|
td label list
|
|
121
|
+
td label list --search "bug"
|
|
118
122
|
td label view "urgent"
|
|
119
123
|
td label create --name "urgent" --color red
|
|
120
124
|
td label update "urgent" --color orange
|
|
121
125
|
td label delete "urgent" --yes
|
|
122
126
|
td label browse "urgent"
|
|
127
|
+
td label rename-shared "oldname" --name "newname"
|
|
128
|
+
td label remove-shared "oldname" --yes
|
|
123
129
|
|
|
124
130
|
td filter list
|
|
125
131
|
td filter view "Urgent work"
|
|
@@ -129,6 +135,8 @@ td filter delete "Urgent work" --yes
|
|
|
129
135
|
td filter browse "Urgent work"
|
|
130
136
|
|
|
131
137
|
td section list "Roadmap"
|
|
138
|
+
td section list --search "Planning"
|
|
139
|
+
td section list --search "Planning" --project "Roadmap"
|
|
132
140
|
td section create --project "Roadmap" --name "In Progress"
|
|
133
141
|
td section update id:123 --name "Done"
|
|
134
142
|
td section archive id:123
|
|
@@ -137,7 +145,7 @@ td section delete id:123 --yes
|
|
|
137
145
|
td section browse id:123
|
|
138
146
|
\`\`\`
|
|
139
147
|
|
|
140
|
-
Shared labels can appear in \`td label list\` and \`td label view\`, but standard update and delete actions only work for labels with IDs.
|
|
148
|
+
Shared labels can appear in \`td label list\` and \`td label view\`, but standard update and delete actions only work for labels with IDs. Use \`td label rename-shared\` and \`td label remove-shared\` for shared labels.
|
|
141
149
|
|
|
142
150
|
### Comments, Attachments, Notifications, And Reminders
|
|
143
151
|
\`\`\`bash
|
|
@@ -174,6 +182,12 @@ td template import-file "Roadmap" --file template.csv
|
|
|
174
182
|
td template import-id "Roadmap" --template-id product-launch --locale fr
|
|
175
183
|
\`\`\`
|
|
176
184
|
|
|
185
|
+
### Backups
|
|
186
|
+
\`\`\`bash
|
|
187
|
+
td backup list
|
|
188
|
+
td backup download "2024-01-15_12:00" --output-file backup.zip
|
|
189
|
+
\`\`\`
|
|
190
|
+
|
|
177
191
|
### Settings, Stats, And Utilities
|
|
178
192
|
\`\`\`bash
|
|
179
193
|
td stats
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/lib/skills/content.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAA;AACvC,MAAM,CAAC,MAAM,iBAAiB,GAC1B,2EAA2E,CAAA;AAE/E,MAAM,CAAC,MAAM,aAAa,GAAG
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/lib/skills/content.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAA;AACvC,MAAM,CAAC,MAAM,iBAAiB,GAC1B,2EAA2E,CAAA;AAE/E,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuN5B,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@doist/todoist-cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.42.0",
|
|
4
4
|
"description": "TypeScript CLI for Todoist",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"CHANGELOG.md"
|
|
52
52
|
],
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"@doist/todoist-sdk": "
|
|
54
|
+
"@doist/todoist-sdk": "9.0.0",
|
|
55
55
|
"@napi-rs/keyring": "1.2.0",
|
|
56
56
|
"@pnpm/tabtab": "0.5.4",
|
|
57
57
|
"chalk": "5.6.2",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"completed.d.ts","sourceRoot":"","sources":["../../src/commands/completed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA0BnC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyI/D"}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { getApi } from '../lib/api/core.js';
|
|
3
|
-
import { CollaboratorCache, formatAssignee } from '../lib/collaborators.js';
|
|
4
|
-
import { CURSOR_DESCRIPTION } from '../lib/constants.js';
|
|
5
|
-
import { formatNextCursorFooter, formatPaginatedJson, formatPaginatedNdjson, formatTaskRow, } from '../lib/output.js';
|
|
6
|
-
import { LIMITS, paginate } from '../lib/pagination.js';
|
|
7
|
-
import { resolveProjectId } from '../lib/refs.js';
|
|
8
|
-
function getLocalDate(daysOffset = 0) {
|
|
9
|
-
const date = new Date();
|
|
10
|
-
date.setDate(date.getDate() + daysOffset);
|
|
11
|
-
return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;
|
|
12
|
-
}
|
|
13
|
-
export function registerCompletedCommand(program) {
|
|
14
|
-
program
|
|
15
|
-
.command('completed')
|
|
16
|
-
.description('Show completed tasks')
|
|
17
|
-
.option('--since <date>', 'Start date (YYYY-MM-DD), default: today')
|
|
18
|
-
.option('--until <date>', 'End date (YYYY-MM-DD), default: tomorrow')
|
|
19
|
-
.option('--project <name>', 'Filter by project')
|
|
20
|
-
.option('--limit <n>', 'Limit number of results (default: 300)')
|
|
21
|
-
.option('--cursor <cursor>', CURSOR_DESCRIPTION)
|
|
22
|
-
.option('--all', 'Fetch all results (no limit)')
|
|
23
|
-
.option('--json', 'Output as JSON')
|
|
24
|
-
.option('--ndjson', 'Output as newline-delimited JSON')
|
|
25
|
-
.option('--full', 'Include all fields in JSON output')
|
|
26
|
-
.option('--show-urls', 'Show web app URLs for each task')
|
|
27
|
-
.action(async (options) => {
|
|
28
|
-
const api = await getApi();
|
|
29
|
-
const since = options.since ?? getLocalDate(0);
|
|
30
|
-
const until = options.until ?? getLocalDate(1);
|
|
31
|
-
let projectId;
|
|
32
|
-
if (options.project) {
|
|
33
|
-
projectId = await resolveProjectId(api, options.project);
|
|
34
|
-
}
|
|
35
|
-
const targetLimit = options.all
|
|
36
|
-
? Number.MAX_SAFE_INTEGER
|
|
37
|
-
: options.limit
|
|
38
|
-
? parseInt(options.limit, 10)
|
|
39
|
-
: LIMITS.tasks;
|
|
40
|
-
const { results: tasks, nextCursor } = await paginate(async (cursor, limit) => {
|
|
41
|
-
const resp = await api.getCompletedTasksByCompletionDate({
|
|
42
|
-
since,
|
|
43
|
-
until,
|
|
44
|
-
projectId,
|
|
45
|
-
cursor: cursor ?? undefined,
|
|
46
|
-
limit,
|
|
47
|
-
});
|
|
48
|
-
return { results: resp.items, nextCursor: resp.nextCursor };
|
|
49
|
-
}, { limit: targetLimit, startCursor: options.cursor });
|
|
50
|
-
if (tasks.length === 0) {
|
|
51
|
-
if (options.json) {
|
|
52
|
-
console.log(formatPaginatedJson({ results: [], nextCursor }, 'task', options.full, options.showUrls));
|
|
53
|
-
}
|
|
54
|
-
else if (options.ndjson) {
|
|
55
|
-
console.log(formatPaginatedNdjson({ results: [], nextCursor }, 'task', options.full, options.showUrls));
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
console.log('No completed tasks in this period.');
|
|
59
|
-
console.log(formatNextCursorFooter(nextCursor));
|
|
60
|
-
}
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
const { results: allProjects } = await api.getProjects();
|
|
64
|
-
const projects = new Map(allProjects.map((p) => [p.id, p]));
|
|
65
|
-
const collaboratorCache = new CollaboratorCache();
|
|
66
|
-
await collaboratorCache.preload(api, tasks, projects);
|
|
67
|
-
// Helper to get assignee name for a task
|
|
68
|
-
const getAssigneeName = (task) => {
|
|
69
|
-
return formatAssignee({
|
|
70
|
-
userId: task.responsibleUid,
|
|
71
|
-
projectId: task.projectId,
|
|
72
|
-
projects,
|
|
73
|
-
cache: collaboratorCache,
|
|
74
|
-
});
|
|
75
|
-
};
|
|
76
|
-
if (options.json) {
|
|
77
|
-
const tasksWithAssignee = tasks.map((task) => ({
|
|
78
|
-
...task,
|
|
79
|
-
responsibleName: getAssigneeName(task),
|
|
80
|
-
}));
|
|
81
|
-
console.log(formatPaginatedJson({ results: tasksWithAssignee, nextCursor }, 'task', options.full, options.showUrls));
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
if (options.ndjson) {
|
|
85
|
-
const tasksWithAssignee = tasks.map((task) => ({
|
|
86
|
-
...task,
|
|
87
|
-
responsibleName: getAssigneeName(task),
|
|
88
|
-
}));
|
|
89
|
-
console.log(formatPaginatedNdjson({ results: tasksWithAssignee, nextCursor }, 'task', options.full, options.showUrls));
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
const dateRange = since === until ? since : `${since} to ${until}`;
|
|
93
|
-
console.log(chalk.bold(`Completed (${tasks.length}) - ${dateRange}`));
|
|
94
|
-
console.log('');
|
|
95
|
-
for (const task of tasks) {
|
|
96
|
-
const projectName = projects.get(task.projectId)?.name;
|
|
97
|
-
console.log(formatTaskRow({
|
|
98
|
-
task,
|
|
99
|
-
projectName,
|
|
100
|
-
assignee: getAssigneeName(task) ?? undefined,
|
|
101
|
-
showUrl: options.showUrls,
|
|
102
|
-
}));
|
|
103
|
-
console.log('');
|
|
104
|
-
}
|
|
105
|
-
console.log(formatNextCursorFooter(nextCursor));
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
//# sourceMappingURL=completed.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"completed.js","sourceRoot":"","sources":["../../src/commands/completed.ts"],"names":[],"mappings":"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"}
|