@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.
Files changed (113) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/commands/activity.d.ts.map +1 -1
  3. package/dist/commands/activity.js +4 -7
  4. package/dist/commands/activity.js.map +1 -1
  5. package/dist/commands/auth/index.js +1 -1
  6. package/dist/commands/auth/index.js.map +1 -1
  7. package/dist/commands/auth/status.js +1 -1
  8. package/dist/commands/auth/status.js.map +1 -1
  9. package/dist/commands/backup/download.d.ts +6 -0
  10. package/dist/commands/backup/download.d.ts.map +1 -0
  11. package/dist/commands/backup/download.js +28 -0
  12. package/dist/commands/backup/download.js.map +1 -0
  13. package/dist/commands/backup/helpers.d.ts +3 -0
  14. package/dist/commands/backup/helpers.d.ts.map +1 -0
  15. package/dist/commands/backup/helpers.js +12 -0
  16. package/dist/commands/backup/helpers.js.map +1 -0
  17. package/dist/commands/backup/index.d.ts +3 -0
  18. package/dist/commands/backup/index.d.ts.map +1 -0
  19. package/dist/commands/backup/index.js +30 -0
  20. package/dist/commands/backup/index.js.map +1 -0
  21. package/dist/commands/backup/list.d.ts +7 -0
  22. package/dist/commands/backup/list.d.ts.map +1 -0
  23. package/dist/commands/backup/list.js +25 -0
  24. package/dist/commands/backup/list.js.map +1 -0
  25. package/dist/commands/comment/list.js +1 -1
  26. package/dist/commands/comment/list.js.map +1 -1
  27. package/dist/commands/{completed.d.ts → completed/index.d.ts} +1 -1
  28. package/dist/commands/completed/index.d.ts.map +1 -0
  29. package/dist/commands/completed/index.js +28 -0
  30. package/dist/commands/completed/index.js.map +1 -0
  31. package/dist/commands/completed/list.d.ts +10 -0
  32. package/dist/commands/completed/list.d.ts.map +1 -0
  33. package/dist/commands/completed/list.js +109 -0
  34. package/dist/commands/completed/list.js.map +1 -0
  35. package/dist/commands/label/helpers.d.ts +1 -0
  36. package/dist/commands/label/helpers.d.ts.map +1 -1
  37. package/dist/commands/label/helpers.js +12 -0
  38. package/dist/commands/label/helpers.js.map +1 -1
  39. package/dist/commands/label/index.d.ts.map +1 -1
  40. package/dist/commands/label/index.js +32 -2
  41. package/dist/commands/label/index.js.map +1 -1
  42. package/dist/commands/label/list.d.ts +4 -1
  43. package/dist/commands/label/list.d.ts.map +1 -1
  44. package/dist/commands/label/list.js +8 -2
  45. package/dist/commands/label/list.js.map +1 -1
  46. package/dist/commands/label/remove-shared.d.ts +5 -0
  47. package/dist/commands/label/remove-shared.d.ts.map +1 -0
  48. package/dist/commands/label/remove-shared.js +21 -0
  49. package/dist/commands/label/remove-shared.js.map +1 -0
  50. package/dist/commands/label/rename-shared.d.ts +5 -0
  51. package/dist/commands/label/rename-shared.d.ts.map +1 -0
  52. package/dist/commands/label/rename-shared.js +16 -0
  53. package/dist/commands/label/rename-shared.js.map +1 -0
  54. package/dist/commands/notification/helpers.d.ts +1 -1
  55. package/dist/commands/notification/helpers.d.ts.map +1 -1
  56. package/dist/commands/notification/helpers.js +1 -2
  57. package/dist/commands/notification/helpers.js.map +1 -1
  58. package/dist/commands/notification/view.d.ts.map +1 -1
  59. package/dist/commands/notification/view.js +1 -2
  60. package/dist/commands/notification/view.js.map +1 -1
  61. package/dist/commands/project/archived-count.js +1 -1
  62. package/dist/commands/project/archived-count.js.map +1 -1
  63. package/dist/commands/project/archived.d.ts +3 -0
  64. package/dist/commands/project/archived.d.ts.map +1 -0
  65. package/dist/commands/project/archived.js +94 -0
  66. package/dist/commands/project/archived.js.map +1 -0
  67. package/dist/commands/project/collaborators.d.ts.map +1 -1
  68. package/dist/commands/project/collaborators.js +1 -2
  69. package/dist/commands/project/collaborators.js.map +1 -1
  70. package/dist/commands/project/index.d.ts.map +1 -1
  71. package/dist/commands/project/index.js +14 -1
  72. package/dist/commands/project/index.js.map +1 -1
  73. package/dist/commands/project/list.d.ts +1 -0
  74. package/dist/commands/project/list.d.ts.map +1 -1
  75. package/dist/commands/project/list.js +11 -1
  76. package/dist/commands/project/list.js.map +1 -1
  77. package/dist/commands/section/index.d.ts.map +1 -1
  78. package/dist/commands/section/index.js +3 -2
  79. package/dist/commands/section/index.js.map +1 -1
  80. package/dist/commands/section/list.d.ts +6 -1
  81. package/dist/commands/section/list.d.ts.map +1 -1
  82. package/dist/commands/section/list.js +12 -2
  83. package/dist/commands/section/list.js.map +1 -1
  84. package/dist/commands/workspace/insights.js +1 -1
  85. package/dist/commands/workspace/insights.js.map +1 -1
  86. package/dist/commands/workspace/users.d.ts.map +1 -1
  87. package/dist/commands/workspace/users.js +1 -2
  88. package/dist/commands/workspace/users.js.map +1 -1
  89. package/dist/index.js +12 -2
  90. package/dist/index.js.map +1 -1
  91. package/dist/lib/api/core.d.ts.map +1 -1
  92. package/dist/lib/api/core.js +19 -3
  93. package/dist/lib/api/core.js.map +1 -1
  94. package/dist/lib/api/notifications.d.ts +1 -1
  95. package/dist/lib/api/notifications.d.ts.map +1 -1
  96. package/dist/lib/collaborators.d.ts.map +1 -1
  97. package/dist/lib/collaborators.js +2 -4
  98. package/dist/lib/collaborators.js.map +1 -1
  99. package/dist/lib/oauth.d.ts +2 -2
  100. package/dist/lib/oauth.d.ts.map +1 -1
  101. package/dist/lib/oauth.js +2 -2
  102. package/dist/lib/oauth.js.map +1 -1
  103. package/dist/lib/permissions.d.ts.map +1 -1
  104. package/dist/lib/permissions.js +8 -0
  105. package/dist/lib/permissions.js.map +1 -1
  106. package/dist/lib/skills/content.d.ts +1 -1
  107. package/dist/lib/skills/content.d.ts.map +1 -1
  108. package/dist/lib/skills/content.js +18 -4
  109. package/dist/lib/skills/content.js.map +1 -1
  110. package/package.json +2 -2
  111. package/dist/commands/completed.d.ts.map +0 -1
  112. package/dist/commands/completed.js +0 -108
  113. 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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyM5B,CAAA"}
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.40.0",
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": "8.4.0",
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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"}