@doist/todoist-cli 1.26.0 → 1.28.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 ADDED
@@ -0,0 +1,365 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [1.28.0](https://github.com/Doist/todoist-cli/compare/v1.27.0...v1.28.0) (2026-03-21)
9
+
10
+
11
+ ### Features
12
+
13
+ * add changelog command and post-update hint ([#171](https://github.com/Doist/todoist-cli/issues/171)) ([c5aa3c2](https://github.com/Doist/todoist-cli/commit/c5aa3c2ec92ee97a503c38f69b141730aab6d387))
14
+
15
+ ## [1.27.0](https://github.com/Doist/todoist-cli/compare/v1.26.0...v1.27.0) (2026-03-19)
16
+
17
+
18
+ ### Features
19
+
20
+ * **attachment:** add `td attachment view` command ([#168](https://github.com/Doist/todoist-cli/issues/168)) ([15ef686](https://github.com/Doist/todoist-cli/commit/15ef686ca7ed4e348e1025cb11607747031a3090))
21
+
22
+ ## [1.26.0](https://github.com/Doist/todoist-cli/compare/v1.25.1...v1.26.0) (2026-03-17)
23
+
24
+
25
+ ### Features
26
+
27
+ * **activity:** remove --all flag to prevent unbounded fetches ([#165](https://github.com/Doist/todoist-cli/issues/165)) ([2342e1c](https://github.com/Doist/todoist-cli/commit/2342e1ce6940061cf1c521b54b10247f3ad02622))
28
+
29
+
30
+ ### Bug Fixes
31
+
32
+ * **deps:** update dependency @doist/todoist-api-typescript to v7.1.1 ([#167](https://github.com/Doist/todoist-cli/issues/167)) ([e3831c0](https://github.com/Doist/todoist-cli/commit/e3831c0e166d0b27019e0d8b91db88d360dc0b6c))
33
+
34
+ ## [1.25.1](https://github.com/Doist/todoist-cli/compare/v1.25.0...v1.25.1) (2026-03-17)
35
+
36
+
37
+ ### Bug Fixes
38
+
39
+ * align skill name with install directory ([#158](https://github.com/Doist/todoist-cli/issues/158)) ([5cffb20](https://github.com/Doist/todoist-cli/commit/5cffb2051d7e4943b167bb06c634118e5fc9083c))
40
+
41
+ ## [1.25.0](https://github.com/Doist/todoist-cli/compare/v1.24.1...v1.25.0) (2026-03-15)
42
+
43
+
44
+ ### Features
45
+
46
+ * add task reschedule command ([#151](https://github.com/Doist/todoist-cli/issues/151)) ([6ac1d69](https://github.com/Doist/todoist-cli/commit/6ac1d6975b06fbe55690d35e7e995852f2d24cf6))
47
+
48
+ ## [1.24.1](https://github.com/Doist/todoist-cli/compare/v1.24.0...v1.24.1) (2026-03-15)
49
+
50
+
51
+ ### Bug Fixes
52
+
53
+ * show all subcommands in help for filter, label, and project ([#149](https://github.com/Doist/todoist-cli/issues/149)) ([f72bf1c](https://github.com/Doist/todoist-cli/commit/f72bf1c0bd23a53d79063be7aa35464854e49aae))
54
+
55
+ ## [1.24.0](https://github.com/Doist/todoist-cli/compare/v1.23.0...v1.24.0) (2026-03-14)
56
+
57
+
58
+ ### Features
59
+
60
+ * add --json support to mutating commands ([#147](https://github.com/Doist/todoist-cli/issues/147)) ([7a8d116](https://github.com/Doist/todoist-cli/commit/7a8d11624f09deb8e8974d530c4a92ab6d18f907))
61
+ * add --stdin flag to comment add, task add, and task update ([#145](https://github.com/Doist/todoist-cli/issues/145)) ([149d560](https://github.com/Doist/todoist-cli/commit/149d560542e0691edfcb4742f454d1992a2a5bc8))
62
+
63
+ ## [1.23.0](https://github.com/Doist/todoist-cli/compare/v1.22.1...v1.23.0) (2026-03-13)
64
+
65
+
66
+ ### Features
67
+
68
+ * **task:** add --order flag to task add and update ([#143](https://github.com/Doist/todoist-cli/issues/143)) ([51e6428](https://github.com/Doist/todoist-cli/commit/51e6428ff24dd57d16d34a57d661d21bf56df58c))
69
+ * **task:** add --uncompletable/--completable flags to task add and update ([#142](https://github.com/Doist/todoist-cli/issues/142)) ([545c931](https://github.com/Doist/todoist-cli/commit/545c9315bd24d262e8713801fb32873ff1bafbfd))
70
+
71
+
72
+ ### Bug Fixes
73
+
74
+ * **deps:** update dependency @doist/todoist-api-typescript to v6.10.0 ([#127](https://github.com/Doist/todoist-cli/issues/127)) ([b537201](https://github.com/Doist/todoist-cli/commit/b53720185535172490018e6019ddab04d093f4e1))
75
+ * **deps:** update dependency @doist/todoist-api-typescript to v7.0.0 ([#134](https://github.com/Doist/todoist-cli/issues/134)) ([9ac38c1](https://github.com/Doist/todoist-cli/commit/9ac38c1e762be7c883b3ec574abf67488856f259))
76
+ * **deps:** update dependency commander to v14.0.3 ([#131](https://github.com/Doist/todoist-cli/issues/131)) ([75b23f8](https://github.com/Doist/todoist-cli/commit/75b23f8b6a798828be2377136112f7f70de4dba8))
77
+ * **deps:** update dependency yocto-spinner to v1.1.0 ([#136](https://github.com/Doist/todoist-cli/issues/136)) ([b77f479](https://github.com/Doist/todoist-cli/commit/b77f4793d4612c90fbc86baf83be28a28e08d268))
78
+
79
+ ## [1.22.1](https://github.com/Doist/todoist-cli/compare/v1.22.0...v1.22.1) (2026-03-11)
80
+
81
+
82
+ ### Bug Fixes
83
+
84
+ * address PR [#121](https://github.com/Doist/todoist-cli/issues/121) review feedback for auth status --json ([#123](https://github.com/Doist/todoist-cli/issues/123)) ([7de6e08](https://github.com/Doist/todoist-cli/commit/7de6e081652f82b319ccb40dc753375ee2afeb74))
85
+
86
+ ## [1.22.0](https://github.com/Doist/todoist-cli/compare/v1.21.0...v1.22.0) (2026-03-11)
87
+
88
+
89
+ ### Features
90
+
91
+ * **activity:** add markdown output mode for activity logs ([#85](https://github.com/Doist/todoist-cli/issues/85)) ([fb55786](https://github.com/Doist/todoist-cli/commit/fb55786b6b5eabe8d93d60fe2baeba5a5332b69a))
92
+ * add --json output to auth status command ([#121](https://github.com/Doist/todoist-cli/issues/121)) ([7a0e437](https://github.com/Doist/todoist-cli/commit/7a0e437671e650d58be177a8a96d0a41432bbc8a))
93
+ * store auth tokens in OS credential storage ([#120](https://github.com/Doist/todoist-cli/issues/120)) ([efafcfe](https://github.com/Doist/todoist-cli/commit/efafcfef6857fd9c042172fe46acdc71f9c9bfb3))
94
+
95
+
96
+ ### Bug Fixes
97
+
98
+ * address PR [#112](https://github.com/Doist/todoist-cli/issues/112) review feedback ([#115](https://github.com/Doist/todoist-cli/issues/115)) ([6e5a0ff](https://github.com/Doist/todoist-cli/commit/6e5a0ffb746797ced326f17af626ad6b7eebf8a7))
99
+
100
+
101
+ ### Performance Improvements
102
+
103
+ * reduce CLI startup cost by deferring markdown loads and unnecessary project fetches ([#118](https://github.com/Doist/todoist-cli/issues/118)) ([fa9a660](https://github.com/Doist/todoist-cli/commit/fa9a660028a790b6641157868e112075491e9c43))
104
+
105
+ ## [1.21.0](https://github.com/Doist/todoist-cli/compare/v1.20.0...v1.21.0) (2026-03-05)
106
+
107
+
108
+ ### Features
109
+
110
+ * add assignee display to completed tasks command ([#112](https://github.com/Doist/todoist-cli/issues/112)) ([863fe8b](https://github.com/Doist/todoist-cli/commit/863fe8b3f42b8528d2302ba69db7992a3ed70484))
111
+
112
+ ## [1.20.0](https://github.com/Doist/todoist-cli/compare/v1.19.0...v1.20.0) (2026-02-25)
113
+
114
+
115
+ ### Features
116
+
117
+ * suppress package manager output during update ([#104](https://github.com/Doist/todoist-cli/issues/104)) ([06030b8](https://github.com/Doist/todoist-cli/commit/06030b80917875228ead96973edc6a7782143329))
118
+
119
+ ## [1.19.0](https://github.com/Doist/todoist-cli/compare/v1.18.0...v1.19.0) (2026-02-25)
120
+
121
+
122
+ ### Features
123
+
124
+ * replace OAuth page logo with td-cli icon ([#102](https://github.com/Doist/todoist-cli/issues/102)) ([61f0975](https://github.com/Doist/todoist-cli/commit/61f09753611a92695e25a5c19acf6bbed4a79505))
125
+
126
+ ## [1.18.0](https://github.com/Doist/todoist-cli/compare/v1.17.0...v1.18.0) (2026-02-21)
127
+
128
+
129
+ ### Features
130
+
131
+ * add --accessible flag for screen reader and color-blind users ([#95](https://github.com/Doist/todoist-cli/issues/95)) ([d1cd90d](https://github.com/Doist/todoist-cli/commit/d1cd90d824c8c5a01f75fce3433a35c456ea3262))
132
+ * add Gemini CLI skill ([#96](https://github.com/Doist/todoist-cli/issues/96)) ([ad85fe3](https://github.com/Doist/todoist-cli/commit/ad85fe31ed1b576bc1d793badf356033bb28d899))
133
+
134
+
135
+ ### Bug Fixes
136
+
137
+ * use pnpm add instead of pnpm install for global updates ([#92](https://github.com/Doist/todoist-cli/issues/92)) ([eacbbb7](https://github.com/Doist/todoist-cli/commit/eacbbb7bce9c47f98661309c7c77d8cf4c4b2e04))
138
+
139
+ ## [1.17.0](https://github.com/Doist/todoist-cli/compare/v1.16.0...v1.17.0) (2026-02-20)
140
+
141
+
142
+ ### Features
143
+
144
+ * add `td update` self-update command ([#88](https://github.com/Doist/todoist-cli/issues/88)) ([3f9fe80](https://github.com/Doist/todoist-cli/commit/3f9fe80743b195874b437c795ffc38989c832c9e))
145
+
146
+ ## [1.16.0](https://github.com/Doist/todoist-cli/compare/v1.15.0...v1.16.0) (2026-02-18)
147
+
148
+
149
+ ### Features
150
+
151
+ * add `td project move` command ([#72](https://github.com/Doist/todoist-cli/issues/72)) ([f71206d](https://github.com/Doist/todoist-cli/commit/f71206d0bb412f360ef7f0728ec14bc69a5ea11d))
152
+ * **view:** improve URL routing passthrough and lazy loading ([#79](https://github.com/Doist/todoist-cli/issues/79)) ([aff25df](https://github.com/Doist/todoist-cli/commit/aff25df1badc536ccf283881bdc4117f71a6f1fb))
153
+
154
+ ## [1.15.0](https://github.com/Doist/todoist-cli/compare/v1.14.0...v1.15.0) (2026-02-17)
155
+
156
+
157
+ ### Features
158
+
159
+ * auto-update agent skills on npm package update ([#76](https://github.com/Doist/todoist-cli/issues/76)) ([cb12178](https://github.com/Doist/todoist-cli/commit/cb1217856e9b45769fee9fb7df016f192c6b0604))
160
+
161
+ ## [1.14.0](https://github.com/Doist/todoist-cli/compare/v1.13.0...v1.14.0) (2026-02-17)
162
+
163
+
164
+ ### Features
165
+
166
+ * accept Todoist web app task and project URLs as CLI parameters ([#64](https://github.com/Doist/todoist-cli/issues/64)) ([4c637c1](https://github.com/Doist/todoist-cli/commit/4c637c1cc0da85c84020ba3461803596ef0a4943))
167
+ * enhance Todoist URL support for labels, filters, and add view router ([#69](https://github.com/Doist/todoist-cli/issues/69)) ([109ab08](https://github.com/Doist/todoist-cli/commit/109ab0858638ec27b066080d60d5d353db7679da))
168
+
169
+ ## [1.13.0](https://github.com/Doist/todoist-cli/compare/v1.12.0...v1.13.0) (2026-02-16)
170
+
171
+
172
+ ### Features
173
+
174
+ * shell completion support (bash, zsh, fish) ([#66](https://github.com/Doist/todoist-cli/issues/66)) ([994e603](https://github.com/Doist/todoist-cli/commit/994e60386f1b467ffc0440f84b212aa17db87b87))
175
+
176
+ ## [1.12.0](https://github.com/Doist/todoist-cli/compare/v1.11.0...v1.12.0) (2026-02-13)
177
+
178
+
179
+ ### Features
180
+
181
+ * add verbose/trace output for API latency debugging (-v to -vvvv) ([#56](https://github.com/Doist/todoist-cli/issues/56)) ([8d43e99](https://github.com/Doist/todoist-cli/commit/8d43e9913de2add12345ab34fdd98053669cf3d0))
182
+ * lenient CLI ergonomics (raw IDs, implicit view, flag aliases) ([#60](https://github.com/Doist/todoist-cli/issues/60)) ([46236b3](https://github.com/Doist/todoist-cli/commit/46236b3290569fbc9bba2d92ab4569ba13d8c87e))
183
+
184
+
185
+ ### Performance Improvements
186
+
187
+ * lazy-load commands and show early spinner for instant feedback ([#65](https://github.com/Doist/todoist-cli/issues/65)) ([9a9b79a](https://github.com/Doist/todoist-cli/commit/9a9b79a8f08dd20baba1c66385a1c9fbf8bc8899))
188
+
189
+ ## [1.11.0](https://github.com/Doist/todoist-cli/compare/v1.10.0...v1.11.0) (2026-02-11)
190
+
191
+
192
+ ### Features
193
+
194
+ * positional content arg for `td task add` ([#55](https://github.com/Doist/todoist-cli/issues/55)) ([3f94899](https://github.com/Doist/todoist-cli/commit/3f9489984ce8e7e2f2e461dcfb50fff737613811))
195
+
196
+
197
+ ### Performance Improvements
198
+
199
+ * server-side assignee scoping and parallel project fetching in today/upcoming ([#59](https://github.com/Doist/todoist-cli/issues/59)) ([94a24b0](https://github.com/Doist/todoist-cli/commit/94a24b08a7c8de127417228bb5a17f5f74f63dc4))
200
+
201
+ ## [1.10.0](https://github.com/Doist/todoist-cli/compare/v1.9.0...v1.10.0) (2026-02-10)
202
+
203
+
204
+ ### Features
205
+
206
+ * auto-retry id-like task refs as direct ID lookups ([#53](https://github.com/Doist/todoist-cli/issues/53)) ([bcdb7f3](https://github.com/Doist/todoist-cli/commit/bcdb7f3772f603a7a99f1f0577012ad835ee46e2))
207
+
208
+
209
+ ### Bug Fixes
210
+
211
+ * use server-side API calls for task list (parent id) and task ref (name search) resolution ([#52](https://github.com/Doist/todoist-cli/issues/52)) ([a2f7776](https://github.com/Doist/todoist-cli/commit/a2f777685c6120e95a84ce8491913513a9bb6d77))
212
+
213
+ ## [1.9.0](https://github.com/Doist/todoist-cli/compare/v1.8.1...v1.9.0) (2026-02-09)
214
+
215
+
216
+ ### Features
217
+
218
+ * redesign OAuth success and error pages ([#47](https://github.com/Doist/todoist-cli/issues/47)) ([08c463a](https://github.com/Doist/todoist-cli/commit/08c463a5a6e34cebfad71f6aa737a6461825553a))
219
+
220
+
221
+ ### Bug Fixes
222
+
223
+ * clarify id: prefix requirement in error messages ([#49](https://github.com/Doist/todoist-cli/issues/49)) ([317a20a](https://github.com/Doist/todoist-cli/commit/317a20a92c29fb03339efc5135b9c1cd4109649e))
224
+ * normalize dates to UTC midnight for timezone-independent comparisons ([#50](https://github.com/Doist/todoist-cli/issues/50)) ([4d29ef7](https://github.com/Doist/todoist-cli/commit/4d29ef7800f6866cbba255a6919e378b40773ba7))
225
+
226
+ ## [1.8.1](https://github.com/Doist/todoist-cli/compare/v1.8.0...v1.8.1) (2026-02-06)
227
+
228
+
229
+ ### Bug Fixes
230
+
231
+ * add loading spinner to settings view ([#44](https://github.com/Doist/todoist-cli/issues/44)) ([9829519](https://github.com/Doist/todoist-cli/commit/9829519e677df5916609064d1f990d4bccc9c627))
232
+
233
+ ## [1.8.0](https://github.com/Doist/todoist-cli/compare/v1.7.0...v1.8.0) (2026-02-06)
234
+
235
+
236
+ ### Features
237
+
238
+ * resolve entity names in settings view start page ([#43](https://github.com/Doist/todoist-cli/issues/43)) ([b87e034](https://github.com/Doist/todoist-cli/commit/b87e0346cfb8b37cd8f0a962fa4fc38299b4e46a))
239
+
240
+
241
+ ### Bug Fixes
242
+
243
+ * add all missing commands to agent skill and add skill update command ([#42](https://github.com/Doist/todoist-cli/issues/42)) ([c824675](https://github.com/Doist/todoist-cli/commit/c8246750cc16014896c39a3eb56620b66a0b32c0))
244
+ * use server-side filtering for task list commands ([#39](https://github.com/Doist/todoist-cli/issues/39)) ([abd2993](https://github.com/Doist/todoist-cli/commit/abd29934d1a2b31cc144585147d45fae974c3f54))
245
+
246
+ ## [1.7.0](https://github.com/Doist/todoist-cli/compare/v1.6.1...v1.7.0) (2026-02-03)
247
+
248
+
249
+ ### Features
250
+
251
+ * expose workspaceId in project JSON output ([#37](https://github.com/Doist/todoist-cli/issues/37)) ([a833dba](https://github.com/Doist/todoist-cli/commit/a833dba64df417468b3526ea07f9ffa84cf8a992))
252
+
253
+ ## [1.6.1](https://github.com/Doist/todoist-cli/compare/v1.6.0...v1.6.1) (2026-02-02)
254
+
255
+
256
+ ### Bug Fixes
257
+
258
+ * use server-side filtering for today command ([#34](https://github.com/Doist/todoist-cli/issues/34)) ([d9430aa](https://github.com/Doist/todoist-cli/commit/d9430aab1fe407a988ae9a96db5d010af621937f))
259
+ * use server-side filtering for upcoming command and fix date formatting ([#35](https://github.com/Doist/todoist-cli/issues/35)) ([9f5c98e](https://github.com/Doist/todoist-cli/commit/9f5c98e613a59d49eafb839f52dfb97d9ed9c3ef))
260
+
261
+ ## [1.6.0](https://github.com/Doist/todoist-cli/compare/v1.5.0...v1.6.0) (2026-01-29)
262
+
263
+
264
+ ### Features
265
+
266
+ * add --progress-jsonl flag for machine-readable progress reporting ([#32](https://github.com/Doist/todoist-cli/issues/32)) ([d89adc5](https://github.com/Doist/todoist-cli/commit/d89adc5f9546167b8c7cf8783cab2be275e66f8e))
267
+
268
+
269
+ ### Bug Fixes
270
+
271
+ * resolve td today missing tasks with specific times ([#30](https://github.com/Doist/todoist-cli/issues/30)) ([06debf4](https://github.com/Doist/todoist-cli/commit/06debf47f3042a403cc78f1bfafad0905347e7a2))
272
+
273
+ ## [1.5.0](https://github.com/Doist/todoist-cli/compare/v1.4.0...v1.5.0) (2026-01-25)
274
+
275
+
276
+ ### Features
277
+
278
+ * add hidden interactive prompt for auth token input ([#25](https://github.com/Doist/todoist-cli/issues/25)) ([aff75a6](https://github.com/Doist/todoist-cli/commit/aff75a6cf51b7dcac137adecb87d095a2a34bbaf))
279
+
280
+
281
+ ### Bug Fixes
282
+
283
+ * migrate sync API from v9 to v1 ([#23](https://github.com/Doist/todoist-cli/issues/23)) ([74fb4bf](https://github.com/Doist/todoist-cli/commit/74fb4bf6b78470276a18947fd61b4d23698be254))
284
+
285
+ ## [1.4.0](https://github.com/Doist/todoist-cli/compare/v1.3.0...v1.4.0) (2026-01-23)
286
+
287
+
288
+ ### Features
289
+
290
+ * add codex and cursor agent skill support ([#20](https://github.com/Doist/todoist-cli/issues/20)) ([6420afa](https://github.com/Doist/todoist-cli/commit/6420afa5f51cf987802dd6ad15da1bff3214a257))
291
+
292
+ ## [1.3.0](https://github.com/Doist/todoist-cli/compare/v1.2.0...v1.3.0) (2026-01-23)
293
+
294
+
295
+ ### Features
296
+
297
+ * add skill install command for coding agent integrations ([#16](https://github.com/Doist/todoist-cli/issues/16)) ([5c544c0](https://github.com/Doist/todoist-cli/commit/5c544c011178a390fadca82d1faf58c375bb8855))
298
+
299
+
300
+ ### Bug Fixes
301
+
302
+ * add UTF-8 charset to OAuth callback HTML responses ([#17](https://github.com/Doist/todoist-cli/issues/17)) ([488fe4b](https://github.com/Doist/todoist-cli/commit/488fe4b2f91de52c0669fb4f42a1b16b888e57b2))
303
+ * prevent task creation in archived projects ([#19](https://github.com/Doist/todoist-cli/issues/19)) ([838cdf5](https://github.com/Doist/todoist-cli/commit/838cdf5dbb27181c1763ff3a1d89581a0dea1daa))
304
+
305
+ ## [1.2.0](https://github.com/Doist/todoist-cli/compare/v1.1.2...v1.2.0) (2026-01-19)
306
+
307
+
308
+ ### Features
309
+
310
+ * restore provenance publishing after initial publication ([#14](https://github.com/Doist/todoist-cli/issues/14)) ([8afde59](https://github.com/Doist/todoist-cli/commit/8afde593a2584b452c4e55a823e4834d1e08323b))
311
+
312
+ ## [1.1.2](https://github.com/Doist/todoist-cli/compare/v1.1.1...v1.1.2) (2026-01-19)
313
+
314
+
315
+ ### Bug Fixes
316
+
317
+ * use NPM_TOKEN for initial package publication ([#12](https://github.com/Doist/todoist-cli/issues/12)) ([75cf675](https://github.com/Doist/todoist-cli/commit/75cf6750067ef0227b7f92e658eaee57e95ec8d5))
318
+
319
+ ## [1.1.1](https://github.com/Doist/todoist-cli/compare/v1.1.0...v1.1.1) (2026-01-16)
320
+
321
+
322
+ ### Bug Fixes
323
+
324
+ * exclude CHANGELOG.md from Prettier formatting ([c989d18](https://github.com/Doist/todoist-cli/commit/c989d18f4e62b76df68b3e3c82e127635e10055b))
325
+
326
+ ## [1.1.0](https://github.com/Doist/todoist-cli/compare/v1.0.0...v1.1.0) (2026-01-16)
327
+
328
+
329
+ ### Features
330
+
331
+ * Add Biome linting, upgrade to Node 20, and improve CI/CD pipeline ([#9](https://github.com/Doist/todoist-cli/issues/9)) ([5dc98a5](https://github.com/Doist/todoist-cli/commit/5dc98a5c8f750b16ce9c23df546abee14ce473ec))
332
+
333
+ ## 1.0.0 (2026-01-16)
334
+
335
+ ### Features
336
+
337
+ - add loading animations with global API proxy integration ([#6](https://github.com/Doist/todoist-cli/issues/6)) ([f8f5db0](https://github.com/Doist/todoist-cli/commit/f8f5db0df5adf1a0d1624ebadb2a9ea6fa422bee))
338
+ - add release-please automation with npm publishing ([#7](https://github.com/Doist/todoist-cli/issues/7)) ([4e3f2c5](https://github.com/Doist/todoist-cli/commit/4e3f2c55d33a1268563fed200c0a3bb504b133e5))
339
+
340
+ ### Bug Fixes
341
+
342
+ - ensure OAuth server cleanup on error before callback resolves ([#5](https://github.com/Doist/todoist-cli/issues/5)) ([ac38547](https://github.com/Doist/todoist-cli/commit/ac38547223710d0708bd8bc440b93dae596307f7))
343
+
344
+ ## [Unreleased]
345
+
346
+ ### Features
347
+
348
+ - Add comprehensive CLI commands for Todoist task management
349
+ - OAuth authentication with PKCE flow
350
+ - JSON/NDJSON output formats for AI/LLM integration
351
+ - Loading animations with global API proxy support
352
+ - Notification management commands
353
+
354
+ ### Bug Fixes
355
+
356
+ - Ensure OAuth server cleanup on error before callback resolves
357
+
358
+ ### Code Refactoring
359
+
360
+ - Split api.ts into modular api/ directory structure
361
+ - Refactor login command to auth with status/logout subcommands
362
+
363
+ ## [0.1.0] - 2024-XX-XX
364
+
365
+ Initial release of the Todoist CLI.
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerAttachmentCommand(program: Command): void;
3
+ //# sourceMappingURL=attachment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment.d.ts","sourceRoot":"","sources":["../../src/commands/attachment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA0KnC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAchE"}
@@ -0,0 +1,156 @@
1
+ import { getApi } from '../lib/api/core.js';
2
+ import { formatFileSize } from '../lib/output.js';
3
+ const MAX_FILE_SIZE = 10 * 1024 * 1024; // 10MB
4
+ const IMAGE_MIME_TYPES = new Set([
5
+ 'image/png',
6
+ 'image/jpeg',
7
+ 'image/gif',
8
+ 'image/webp',
9
+ 'image/svg+xml',
10
+ ]);
11
+ const TEXT_MIME_TYPES = new Set([
12
+ 'text/plain',
13
+ 'text/csv',
14
+ 'text/html',
15
+ 'text/markdown',
16
+ 'application/json',
17
+ 'application/xml',
18
+ 'text/xml',
19
+ ]);
20
+ const EXTENSION_TO_MIME = {
21
+ '.png': 'image/png',
22
+ '.jpg': 'image/jpeg',
23
+ '.jpeg': 'image/jpeg',
24
+ '.gif': 'image/gif',
25
+ '.webp': 'image/webp',
26
+ '.svg': 'image/svg+xml',
27
+ '.txt': 'text/plain',
28
+ '.csv': 'text/csv',
29
+ '.html': 'text/html',
30
+ '.md': 'text/markdown',
31
+ '.json': 'application/json',
32
+ '.xml': 'application/xml',
33
+ '.pdf': 'application/pdf',
34
+ };
35
+ function parseMimeType(contentType) {
36
+ const base = contentType.split(';')[0];
37
+ return (base ?? contentType).trim().toLowerCase();
38
+ }
39
+ function parseCharset(contentType) {
40
+ const match = contentType.match(/charset\s*=\s*"?([^";,\s]+)"?/i);
41
+ return match?.[1]?.toLowerCase();
42
+ }
43
+ function getMimeTypeFromUrl(url) {
44
+ try {
45
+ const pathname = new URL(url).pathname;
46
+ const lastDot = pathname.lastIndexOf('.');
47
+ if (lastDot === -1)
48
+ return undefined;
49
+ const ext = pathname.slice(lastDot).toLowerCase();
50
+ return EXTENSION_TO_MIME[ext];
51
+ }
52
+ catch {
53
+ return undefined;
54
+ }
55
+ }
56
+ function getFileNameFromUrl(url) {
57
+ try {
58
+ const pathname = new URL(url).pathname;
59
+ const lastSlash = pathname.lastIndexOf('/');
60
+ if (lastSlash === -1)
61
+ return undefined;
62
+ const name = pathname.slice(lastSlash + 1);
63
+ return name ? decodeURIComponent(name) : undefined;
64
+ }
65
+ catch {
66
+ return undefined;
67
+ }
68
+ }
69
+ function getContentCategory(mimeType) {
70
+ if (IMAGE_MIME_TYPES.has(mimeType))
71
+ return 'image';
72
+ if (TEXT_MIME_TYPES.has(mimeType) || mimeType.startsWith('text/'))
73
+ return 'text';
74
+ return 'binary';
75
+ }
76
+ async function viewAttachment(url, options) {
77
+ const api = await getApi();
78
+ const response = await api.viewAttachment(url);
79
+ if (!response.ok) {
80
+ throw new Error(`Failed to fetch attachment: ${response.status} ${response.statusText}`);
81
+ }
82
+ const fileName = getFileNameFromUrl(url) ?? 'unknown';
83
+ // Determine MIME type from Content-Type header, fall back to URL extension
84
+ const rawContentType = response.headers['content-type'];
85
+ const headerMime = rawContentType ? parseMimeType(rawContentType) : undefined;
86
+ const mimeType = headerMime && headerMime !== 'application/octet-stream'
87
+ ? headerMime
88
+ : (getMimeTypeFromUrl(url) ?? headerMime ?? 'application/octet-stream');
89
+ // Check content-length header before reading body
90
+ const contentLength = response.headers['content-length'];
91
+ const headerFileSize = contentLength ? Number.parseInt(contentLength, 10) : undefined;
92
+ if (headerFileSize && headerFileSize > MAX_FILE_SIZE) {
93
+ throw new Error(`Attachment "${fileName}" is too large (${formatFileSize(headerFileSize)}, limit is ${formatFileSize(MAX_FILE_SIZE)})`);
94
+ }
95
+ const category = getContentCategory(mimeType);
96
+ // Always read as arrayBuffer for accurate size and charset-aware decoding
97
+ const buffer = Buffer.from(await response.arrayBuffer());
98
+ const fileSize = buffer.byteLength;
99
+ if (fileSize > MAX_FILE_SIZE) {
100
+ throw new Error(`Attachment "${fileName}" is too large (${formatFileSize(fileSize)}, limit is ${formatFileSize(MAX_FILE_SIZE)})`);
101
+ }
102
+ let content;
103
+ let encoding;
104
+ if (category === 'text') {
105
+ const charset = (rawContentType ? parseCharset(rawContentType) : undefined) ?? 'utf-8';
106
+ try {
107
+ const decoder = new TextDecoder(charset, { fatal: true });
108
+ content = decoder.decode(buffer);
109
+ encoding = charset;
110
+ }
111
+ catch {
112
+ // Unsupported or invalid charset — fall back to base64
113
+ content = buffer.toString('base64');
114
+ encoding = 'base64';
115
+ }
116
+ }
117
+ else {
118
+ content = buffer.toString('base64');
119
+ encoding = 'base64';
120
+ }
121
+ if (options.json) {
122
+ console.log(JSON.stringify({
123
+ fileName,
124
+ fileSize,
125
+ contentType: mimeType,
126
+ contentCategory: category,
127
+ encoding,
128
+ content,
129
+ }, null, 2));
130
+ return;
131
+ }
132
+ // Default mode: metadata to stderr, content to stdout
133
+ process.stderr.write(`Attachment: ${fileName} (${mimeType}, ${formatFileSize(fileSize)})\n`);
134
+ if (encoding === 'base64') {
135
+ process.stderr.write('Encoding: base64\n');
136
+ console.log(content);
137
+ }
138
+ else {
139
+ process.stdout.write(content);
140
+ }
141
+ }
142
+ export function registerAttachmentCommand(program) {
143
+ const attachment = program.command('attachment').description('Manage file attachments');
144
+ attachment
145
+ .command('view [url]', { isDefault: true })
146
+ .description('View/download a file attachment by URL')
147
+ .option('--json', 'Output as JSON with metadata and content')
148
+ .action((url, options) => {
149
+ if (!url) {
150
+ attachment.help();
151
+ return;
152
+ }
153
+ return viewAttachment(url, options);
154
+ });
155
+ }
156
+ //# sourceMappingURL=attachment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment.js","sourceRoot":"","sources":["../../src/commands/attachment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Command } from 'commander';
2
+ interface ChangelogOptions {
3
+ count: string;
4
+ }
5
+ export declare function changelogAction(options: ChangelogOptions): Promise<void>;
6
+ export declare function registerChangelogCommand(program: Command): void;
7
+ export {};
8
+ //# sourceMappingURL=changelog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changelog.d.ts","sourceRoot":"","sources":["../../src/commands/changelog.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAqEnC,UAAU,gBAAgB;IACtB,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB9E;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAM/D"}
@@ -0,0 +1,92 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { dirname, join } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import chalk from 'chalk';
5
+ import packageJson from '../../package.json' with { type: 'json' };
6
+ const CHANGELOG_PATH = join(dirname(fileURLToPath(import.meta.url)), '..', '..', 'CHANGELOG.md');
7
+ const CHANGELOG_URL = `https://github.com/Doist/todoist-cli/blob/v${packageJson.version}/CHANGELOG.md`;
8
+ function formatInline(text) {
9
+ return text
10
+ .replace(/\*\*([^*]+)\*\*/g, (_, content) => chalk.bold(content))
11
+ .replace(/`([^`]+)`/g, (_, code) => chalk.cyan(code));
12
+ }
13
+ function formatForTerminal(text) {
14
+ return text
15
+ .split('\n')
16
+ .map((line) => {
17
+ // Version headers: ## 1.25.0 (date) → bold green
18
+ if (line.startsWith('## ')) {
19
+ return chalk.green.bold(line.slice(3));
20
+ }
21
+ // Section headers: ### Features → bold
22
+ if (line.startsWith('### ')) {
23
+ return chalk.bold(line.slice(4));
24
+ }
25
+ // Bullet items: * description → dimmed bullet + text
26
+ if (line.startsWith('* ')) {
27
+ return ` ${chalk.dim('•')} ${formatInline(line.slice(2))}`;
28
+ }
29
+ return formatInline(line);
30
+ })
31
+ .join('\n');
32
+ }
33
+ function cleanChangelog(text) {
34
+ return (text
35
+ // Version headers: ## [1.25.0](https://...) (date) → ## 1.25.0 (date)
36
+ .replace(/## \[([^\]]+)\]\([^)]*\)/g, '## $1')
37
+ // Remove commit hash links: ([abc1234](https://...))
38
+ .replace(/ \([a-f0-9]{7}\)/g, '')
39
+ .replace(/ \(\[[a-f0-9]{7}\]\([^)]*\)\)/g, '')
40
+ // Issue/PR links: [#151](https://...) → #151
41
+ .replace(/\[#(\d+)\]\([^)]*\)/g, '#$1')
42
+ // Remove **deps:** dependency update lines (not useful to end users)
43
+ .replace(/^\* \*\*deps:\*\*.*$/gm, '')
44
+ // Remove **scope:** prefixes but keep the text: **task:** foo → foo
45
+ .replace(/\*\*[\w-]+:\*\* /g, '')
46
+ // Clean up blank lines left by removed dep lines
47
+ .replace(/\n{3,}/g, '\n\n')
48
+ // Remove section headers left empty after filtering (e.g. ### Bug Fixes with no items)
49
+ .replace(/### [\w ]+\n\n(?=##|$)/gm, ''));
50
+ }
51
+ function parseChangelog(content, count) {
52
+ const sections = content.split(/\n(?=## \[)/);
53
+ const versionSections = sections.slice(1);
54
+ const selected = versionSections.slice(0, count);
55
+ if (selected.length === 0) {
56
+ return { text: 'No changelog entries found.', hasMore: false };
57
+ }
58
+ return {
59
+ text: cleanChangelog(selected.join('\n').trimEnd()),
60
+ hasMore: versionSections.length > count,
61
+ };
62
+ }
63
+ export async function changelogAction(options) {
64
+ const count = parseInt(options.count, 10);
65
+ if (isNaN(count) || count < 1) {
66
+ console.error(chalk.red('Error:'), 'Count must be a positive number');
67
+ process.exitCode = 1;
68
+ return;
69
+ }
70
+ let content;
71
+ try {
72
+ content = await readFile(CHANGELOG_PATH, 'utf-8');
73
+ }
74
+ catch {
75
+ console.error(chalk.red('Error:'), 'Could not read changelog file');
76
+ process.exitCode = 1;
77
+ return;
78
+ }
79
+ const { text, hasMore } = parseChangelog(content, count);
80
+ console.log(formatForTerminal(text));
81
+ if (hasMore) {
82
+ console.log(chalk.dim(`\nView full changelog: ${CHANGELOG_URL}`));
83
+ }
84
+ }
85
+ export function registerChangelogCommand(program) {
86
+ program
87
+ .command('changelog')
88
+ .description('Show recent changelog entries')
89
+ .option('-n, --count <number>', 'Number of versions to show', '5')
90
+ .action(changelogAction);
91
+ }
92
+ //# sourceMappingURL=changelog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changelog.js","sourceRoot":"","sources":["../../src/commands/changelog.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA2CnC,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+D9E;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAM5D"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA2CnC,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgE9E;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAM5D"}
@@ -78,6 +78,7 @@ export async function updateAction(options) {
78
78
  return;
79
79
  }
80
80
  console.log(chalk.green('✓'), `Updated to v${latestVersion}`);
81
+ console.log(chalk.dim(' Run'), chalk.cyan('td changelog'), chalk.dim('to see what changed'));
81
82
  }
82
83
  export function registerUpdateCommand(program) {
83
84
  program
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -23,6 +23,10 @@ const commands = {
23
23
  'Quick add task with natural language (e.g., "Buy milk tomorrow p1 #Shopping")',
24
24
  async () => (await import('./commands/add.js')).registerAddCommand,
25
25
  ],
26
+ changelog: [
27
+ 'Show recent changelog entries',
28
+ async () => (await import('./commands/changelog.js')).registerChangelogCommand,
29
+ ],
26
30
  today: [
27
31
  'Show tasks due today and overdue',
28
32
  async () => (await import('./commands/today.js')).registerTodayCommand,
@@ -52,6 +56,10 @@ const commands = {
52
56
  'Manage comments',
53
57
  async () => (await import('./commands/comment.js')).registerCommentCommand,
54
58
  ],
59
+ attachment: [
60
+ 'Manage file attachments',
61
+ async () => (await import('./commands/attachment.js')).registerAttachmentCommand,
62
+ ],
55
63
  section: [
56
64
  'Manage project sections',
57
65
  async () => (await import('./commands/section.js')).registerSectionCommand,
@@ -142,7 +150,9 @@ else {
142
150
  // Preload markdown renderer in parallel with the command module
143
151
  // when output will be pretty-printed (not JSON/NDJSON/raw)
144
152
  const args = process.argv.slice(2);
145
- const needsMarkdown = !args.some((a) => a === '--json' || a === '--ndjson' || a === '--raw');
153
+ const noMarkdownCommands = new Set(['changelog', 'update', 'completion']);
154
+ const needsMarkdown = !noMarkdownCommands.has(commandName) &&
155
+ !args.some((a) => a === '--json' || a === '--ndjson' || a === '--raw');
146
156
  const markdownReady = needsMarkdown ? preloadMarkdown() : undefined;
147
157
  const register = await loader();
148
158
  await markdownReady;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/lib/api/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,eAAe,EACf,OAAO,EACP,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,gBAAgB,EAChB,KAAK,OAAO,EACf,MAAM,+BAA+B,CAAA;AAkItC,wBAAsB,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,CAOlD;AAED,MAAM,MAAM,OAAO,GAAG,eAAe,GAAG,gBAAgB,CAAA;AAExD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,gBAAgB,CAEhF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,eAAe,CAE9E;AAID,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAMxD;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUvE;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,MAAM,CAOnF;AAED,wBAAsB,cAAc,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,GACrB,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEjF;AAED,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/lib/api/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,eAAe,EACf,OAAO,EACP,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,gBAAgB,EAChB,KAAK,OAAO,EACf,MAAM,+BAA+B,CAAA;AAmItC,wBAAsB,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,CAOlD;AAED,MAAM,MAAM,OAAO,GAAG,eAAe,GAAG,gBAAgB,CAAA;AAExD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,gBAAgB,CAEhF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,eAAe,CAE9E;AAID,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAMxD;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUvE;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,MAAM,CAOnF;AAED,wBAAsB,cAAc,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,GACrB,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEjF;AAED,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA"}
@@ -31,6 +31,7 @@ const API_SPINNER_MESSAGES = {
31
31
  moveProjectToWorkspace: { text: 'Moving project to workspace...', color: 'yellow' },
32
32
  moveProjectToPersonal: { text: 'Moving project to personal...', color: 'yellow' },
33
33
  sync: { text: 'Syncing...', color: 'blue' },
34
+ viewAttachment: { text: 'Fetching attachment...', color: 'blue' },
34
35
  };
35
36
  function createSpinnerWrappedApi(api) {
36
37
  return new Proxy(api, {
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/lib/api/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/lib/api/core.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  export declare const SKILL_NAME = "todoist-cli";
2
2
  export declare const SKILL_DESCRIPTION = "Manage Todoist tasks, projects, labels, comments, and more via the td CLI";
3
- export declare const SKILL_CONTENT = "# Todoist CLI (td)\n\nUse this skill when the user wants to interact with their Todoist tasks.\n\n## Quick Reference\n\n- `td today` - Tasks due today and overdue\n- `td inbox` - Inbox tasks\n- `td upcoming` - Tasks due in next N days\n- `td completed` - Recently completed tasks\n- `td auth login` - Authenticate and store the token securely\n- `td task add \"content\"` - Add a task\n- `td task list` - List tasks with filters\n- `td task complete <ref>` - Complete a task\n- `td project list` - List projects\n- `td label list` - List labels\n- `td filter list/view` - Manage and use saved filters\n- `td workspace list` - List workspaces\n- `td activity` - Activity logs\n- `td notification list` - Notifications\n- `td reminder add` - Task reminders\n- `td auth status` - Authentication status\n- `td stats` - Productivity stats\n- `td settings view` - User settings\n- `td completion install` - Install shell completions\n- `td view <url>` - View supported Todoist entities/pages by URL\n- `td update` - Self-update the CLI to the latest version\n\n## Output Formats\n\nAll list commands support:\n- `--json` - JSON output (essential fields)\n- `--ndjson` - Newline-delimited JSON (streaming)\n- `--full` - Include all fields in JSON\n- `--raw` - Disable markdown rendering\n\nThe following mutating commands also support `--json` to return the created or updated entity as machine-readable JSON instead of plain-text confirmation:\n- `task add`, `task update`\n- `project create`, `project update`\n- `label create`, `label update`\n- `comment add`, `comment update`\n- `section create`, `section update`\n- `filter create`\n- `reminder add`\n\nAll mutating commands support `--dry-run` to preview what would happen without executing:\n- Shows a preview of the action and parameters\n- The mutating action is skipped; read-only API calls may still be made to resolve references\n- On destructive commands (delete, project move) that use `--yes`, `--dry-run` takes precedence: even with `--yes`, the action will not execute\n\n## Shared List Options\n\nMost list commands also support:\n- `--limit <n>` - Limit number of results\n- `--all` - Fetch all results (no limit, not available on `activity`)\n- `--cursor <cursor>` - Continue from pagination cursor\n- `--show-urls` - Show web app URLs for each item\n\n## Global Options\n\n- `--no-spinner` - Disable loading animations\n- `--progress-jsonl` - Machine-readable progress events (JSONL to stderr)\n- `-v, --verbose` - Verbose output to stderr (repeat: -v info, -vv detail, -vvv debug, -vvvv trace)\n- `--accessible` - Add text labels to color-coded output (due:/deadline:/~ prefixes, \u2605 for favorites). Also: `TD_ACCESSIBLE=1`\n\n## Authentication\n\n```bash\ntd auth login # OAuth login; stores token in OS credential manager\ntd auth token \"your-token\" # Save a manual API token\ntd auth status # Check whether auth works\ntd auth logout # Remove the saved token\nexport TODOIST_API_TOKEN=\"your-token\" # Highest priority; overrides stored token\n```\n\nIf OS credential storage is unavailable, `td` warns and falls back to `~/.config/todoist-cli/config.json`. Legacy plaintext config tokens are migrated automatically when secure storage becomes available.\n\n## References\n\nTasks, projects, labels, and filters can be referenced by:\n- Name (fuzzy matched within context)\n- `id:xxx` - Explicit ID\n- Todoist URL - Paste directly from the web app (e.g., `https://app.todoist.com/app/task/buy-milk-8Jx4mVr72kPn3QwB` or `https://app.todoist.com/app/project/work-2pN7vKx49mRq6YhT`)\n\n## Priority Mapping\n\n- p1 = Highest priority (API value 4)\n- p2 = High priority (API value 3)\n- p3 = Medium priority (API value 2)\n- p4 = Lowest priority (API value 1, default)\n\n## Commands\n\n### Today\n```bash\ntd today # Due today + overdue\ntd today --json # JSON output\ntd today --workspace \"Work\" # Filter to workspace\ntd today --personal # Personal projects only\ntd today --any-assignee # Include tasks assigned to others\n```\n\n### Inbox\n```bash\ntd inbox # Inbox tasks\ntd inbox --priority p1 # Filter by priority\ntd inbox --due today # Filter by due date\n```\n\n### Upcoming\n```bash\ntd upcoming # Next 7 days\ntd upcoming 14 # Next 14 days\ntd upcoming --workspace \"Work\" # Filter to workspace\ntd upcoming --personal # Personal projects only\ntd upcoming --any-assignee # Include tasks assigned to others\n```\n\n### Completed\n```bash\ntd completed # Completed today\ntd completed --since 2024-01-01 --until 2024-01-31\ntd completed --project \"Work\" # Filter by project\n```\n\n### Task Management\n```bash\n# List with filters\ntd task list --project \"Work\"\ntd task list --label \"urgent\" --priority p1\ntd task list --due today\ntd task list --filter \"today | overdue\"\ntd task list --assignee me\ntd task list --assignee \"john@example.com\"\ntd task list --unassigned\ntd task list --workspace \"Work\"\ntd task list --personal\ntd task list --parent \"Parent task\"\n\n# View, complete, uncomplete\ntd task view \"task name\"\ntd task complete \"task name\"\ntd task complete id:123456\ntd task complete \"task name\" --forever # Stop recurrence\ntd task uncomplete id:123456 # Reopen completed task\n\n# Add tasks\ntd task add \"New task\" --due \"tomorrow\" --priority p2\ntd task add \"Task\" --deadline \"2024-03-01\" --project \"Work\"\ntd task add \"Task\" --duration 1h --section \"Planning\" --project \"Work\"\ntd task add \"Task\" --labels \"urgent,review\" --parent \"Parent task\"\ntd task add \"Task\" --description \"Details here\" --assignee me\ntd task add \"My task\" --stdin < description.md # Read description from file\ncat notes.md | td task add \"My task\" --stdin\ntd task add \"Reference header\" --uncompletable # Non-actionable reference/header task\ntd task add \"Reference header\" --order 0 # Pin task to top of project\ntd task add \"New task\" --json # Return created task as JSON\n\n# Update\ntd task update \"task name\" --due \"next week\"\ntd task update \"task name\" --deadline \"2024-06-01\"\ntd task update \"task name\" --no-deadline\ntd task update \"task name\" --duration 2h\ntd task update \"task name\" --assignee \"john@example.com\"\ntd task update \"task name\" --unassign\ntd task update \"task name\" --stdin < description.md # Read description from file\ntd task update \"task name\" --uncompletable # Mark as non-completable reference item\ntd task update \"task name\" --completable # Revert to completable (undo --uncompletable)\ntd task update \"Reference header\" --order 0 # Move task to top of project\ntd task update \"task name\" --content \"New\" --json # Return updated task as JSON\n\n# Reschedule (preserves recurrence patterns, unlike update --due)\ntd task reschedule \"task name\" 2026-03-20 # Date only (YYYY-MM-DD)\ntd task reschedule id:123456 2026-03-20T14:00:00 # With time\ntd task reschedule \"task name\" 2026-03-20 --json # Return as JSON\n\n# Move\ntd task move \"task name\" --project \"Personal\"\ntd task move \"task name\" --section \"In Progress\"\ntd task move \"task name\" --parent \"Parent task\"\ntd task move \"task name\" --no-parent # Move to project root\ntd task move \"task name\" --no-section # Remove from section\n\n# Dry run (preview any mutating command without executing)\ntd task add \"New task\" --due \"tomorrow\" --dry-run # Preview task creation\ntd task delete \"task name\" --dry-run # Preview deletion\n\n# Delete and browse\ntd task delete \"task name\" --yes\ntd task browse \"task name\" # Open in browser\n```\n\n### Projects\n```bash\ntd project list\ntd project list --personal # Personal projects only\ntd project view \"Project Name\"\ntd project collaborators \"Project Name\"\ntd project create --name \"New Project\" --color \"blue\"\ntd project create --name \"New Project\" --json # Return created project as JSON\ntd project update \"Project Name\" --favorite\ntd project update \"Project Name\" --name \"New Name\" --json # Return updated project as JSON\ntd project archive \"Project Name\"\ntd project unarchive \"Project Name\"\ntd project delete \"Project Name\" --yes\ntd project browse \"Project Name\" # Open in browser\ntd project move \"Project Name\" --to-workspace \"Acme\"\ntd project move \"Project Name\" --to-workspace \"Acme\" --folder \"Engineering\"\ntd project move \"Project Name\" --to-workspace \"Acme\" --visibility team\ntd project move \"Project Name\" --to-personal\n# move requires --yes to confirm (without it, shows a dry-run preview)\ntd project create --name \"New Project\" --dry-run # Preview project creation\ntd project delete \"Project Name\" --dry-run # Preview deletion\n```\n\n### Labels\n```bash\ntd label list # Lists personal + shared labels\ntd label view \"urgent\" # View label details and tasks\ntd label view \"team-review\" # Works for shared labels too\ntd label create --name \"urgent\" --color \"red\"\ntd label create --name \"urgent\" --json # Return created label as JSON\ntd label update \"urgent\" --color \"orange\"\ntd label update \"urgent\" --color \"orange\" --json # Return updated label as JSON\ntd label delete \"urgent\" --yes\ntd label create --name \"urgent\" --dry-run # Preview label creation\ntd label browse \"urgent\" # Open in browser\n```\n\nNote: Shared labels (from collaborative projects) appear in `list` and can be viewed, but cannot be deleted/updated via the standard label commands since they have no ID.\n\n### Comments\n```bash\ntd comment list \"task name\"\ntd comment list \"Project Name\" -P # Project comments\ntd comment add \"task name\" --content \"Comment text\"\ntd comment add \"task name\" --content \"Note\" --json # Return created comment as JSON\ntd comment add \"task name\" --stdin < note.md # Read content from file\ncat note.md | td comment add \"task name\" --stdin\ntd comment add \"task name\" --content \"See attached\" --file ./report.pdf\ntd comment view id:123 # View full comment\ntd comment update id:123 --content \"Updated text\"\ntd comment update id:123 --content \"Updated text\" --json # Return updated comment as JSON\ntd comment delete id:123 --yes\ntd comment add \"task name\" --content \"Note\" --dry-run # Preview comment creation\ntd comment browse id:123 # Open in browser\n```\n\n### Sections\n```bash\ntd section list \"Work\" # List sections in project (or --project \"Work\")\ntd section list --project \"Work\" # Same, using named flag\ntd section create --project \"Work\" --name \"In Progress\"\ntd section create --project \"Work\" --name \"In Progress\" --json # Return created section as JSON\ntd section update id:123 --name \"Done\"\ntd section update id:123 --name \"Done\" --json # Return updated section as JSON\ntd section delete id:123 --yes\ntd section create --project \"Work\" --name \"In Progress\" --dry-run # Preview section creation\ntd section browse id:123 # Open in browser\n```\n\n### Filters\n```bash\ntd filter list\ntd filter create --name \"Urgent work\" --query \"p1 & #Work\"\ntd filter create --name \"Urgent work\" --query \"p1 & #Work\" --json # Return created filter as JSON\ntd filter view \"Urgent work\" # Show tasks matching filter (alias: show)\ntd filter update \"Urgent work\" --query \"p1 & #Work & today\"\ntd filter delete \"Urgent work\" --yes\ntd filter create --name \"Urgent work\" --query \"p1 & #Work\" --dry-run # Preview filter creation\ntd filter browse \"Urgent work\" # Open in browser\n```\n\n### Workspaces\n```bash\ntd workspace list\ntd workspace view \"Workspace Name\"\ntd workspace projects \"Workspace Name\" # or --workspace \"Workspace Name\"\ntd workspace users \"Workspace Name\" --role ADMIN,MEMBER # or --workspace \"...\"\n```\n\n### Activity\n```bash\ntd activity # Recent activity\ntd activity --since 2024-01-01 --until 2024-01-31\ntd activity --type task --event completed\ntd activity --project \"Work\"\ntd activity --by me\ntd activity --markdown # LLM-friendly Markdown output\n```\n\n### Notifications\n```bash\ntd notification list\ntd notification list --unread\ntd notification list --type \"item_assign\"\ntd notification view id:123\ntd notification read --all --yes # Mark all as read\ntd notification accept id:123 # Accept share invitation\ntd notification reject id:123 # Reject share invitation\n```\n\n### Reminders\n```bash\ntd reminder list \"task name\" # or --task \"task name\"\ntd reminder add \"task name\" --before 30m # or --task \"task name\" --before 30m\ntd reminder add \"task name\" --before 30m --json # Return created reminder as JSON\ntd reminder add \"task name\" --at \"2024-01-15 10:00\"\ntd reminder update id:123 --before 1h\ntd reminder add \"task name\" --before 30m --dry-run # Preview reminder creation\ntd reminder delete id:123 --yes\n```\n\n### Auth\n```bash\ntd auth status # Check authentication\ntd auth status --json # JSON: { id, email, fullName }\ntd auth login # OAuth login\ntd auth token <token> # Save API token\ntd auth logout # Remove saved token\n```\n\n### Stats\n```bash\ntd stats # View karma and productivity\ntd stats --json\ntd stats goals --daily 10 --weekly 50\ntd stats vacation --on # Enable vacation mode\ntd stats vacation --off # Disable vacation mode\n```\n\n### Settings\n```bash\ntd settings view\ntd settings view --json\ntd settings update --timezone \"America/New_York\"\ntd settings update --time-format 24 --date-format intl\ntd settings themes # List available themes\n```\n\n### Shell Completions\n```bash\ntd completion install # Install tab completions (prompts for shell)\ntd completion install bash # Install for specific shell\ntd completion install zsh\ntd completion install fish\ntd completion uninstall # Remove completions\n```\n\n### View (URL Router)\n```bash\ntd view <todoist-url> # Auto-route to appropriate view by URL type\ntd view https://app.todoist.com/app/task/buy-milk-abc123\ntd view https://app.todoist.com/app/project/work-def456\ntd view https://app.todoist.com/app/label/urgent-ghi789\ntd view https://app.todoist.com/app/filter/work-tasks-jkl012\ntd view https://app.todoist.com/app/today\ntd view https://app.todoist.com/app/upcoming\ntd view <url> --json # JSON output for entity views\ntd view <url> --limit 25 --ndjson # Passthrough list options where supported\n```\n\n### Update\n```bash\ntd update # Update CLI to latest version\ntd update --check # Check for updates without installing\n```\n\n## Examples\n\n### Daily workflow\n```bash\ntd today --json | jq '.results | length' # Count today's tasks\ntd inbox --limit 5 # Quick inbox check\ntd upcoming # What's coming this week\ntd completed # What I finished today\n```\n\n### Filter by multiple criteria\n```bash\ntd task list --project \"Work\" --label \"urgent\" --priority p1\ntd task list --filter \"today & #Work\"\ntd task list --workspace \"Work\" --due today\n```\n\n### Complete tasks efficiently\n```bash\ntd task complete \"Review PR\"\ntd task complete id:123456789\ntd task uncomplete id:123456789 # Reopen if needed\n```\n";
3
+ export declare const SKILL_CONTENT = "# Todoist CLI (td)\n\nUse this skill when the user wants to interact with their Todoist tasks.\n\n## Quick Reference\n\n- `td today` - Tasks due today and overdue\n- `td inbox` - Inbox tasks\n- `td upcoming` - Tasks due in next N days\n- `td completed` - Recently completed tasks\n- `td auth login` - Authenticate and store the token securely\n- `td task add \"content\"` - Add a task\n- `td task list` - List tasks with filters\n- `td task complete <ref>` - Complete a task\n- `td project list` - List projects\n- `td label list` - List labels\n- `td filter list/view` - Manage and use saved filters\n- `td workspace list` - List workspaces\n- `td activity` - Activity logs\n- `td notification list` - Notifications\n- `td reminder add` - Task reminders\n- `td auth status` - Authentication status\n- `td stats` - Productivity stats\n- `td settings view` - User settings\n- `td completion install` - Install shell completions\n- `td attachment view <url>` - View/download a file attachment\n- `td view <url>` - View supported Todoist entities/pages by URL\n- `td update` - Self-update the CLI to the latest version\n- `td changelog` - Show recent changelog entries\n\n## Output Formats\n\nAll list commands support:\n- `--json` - JSON output (essential fields)\n- `--ndjson` - Newline-delimited JSON (streaming)\n- `--full` - Include all fields in JSON\n- `--raw` - Disable markdown rendering\n\nThe following mutating commands also support `--json` to return the created or updated entity as machine-readable JSON instead of plain-text confirmation:\n- `task add`, `task update`\n- `project create`, `project update`\n- `label create`, `label update`\n- `comment add`, `comment update`\n- `section create`, `section update`\n- `filter create`\n- `reminder add`\n\nAll mutating commands support `--dry-run` to preview what would happen without executing:\n- Shows a preview of the action and parameters\n- The mutating action is skipped; read-only API calls may still be made to resolve references\n- On destructive commands (delete, project move) that use `--yes`, `--dry-run` takes precedence: even with `--yes`, the action will not execute\n\n## Shared List Options\n\nMost list commands also support:\n- `--limit <n>` - Limit number of results\n- `--all` - Fetch all results (no limit, not available on `activity`)\n- `--cursor <cursor>` - Continue from pagination cursor\n- `--show-urls` - Show web app URLs for each item\n\n## Global Options\n\n- `--no-spinner` - Disable loading animations\n- `--progress-jsonl` - Machine-readable progress events (JSONL to stderr)\n- `-v, --verbose` - Verbose output to stderr (repeat: -v info, -vv detail, -vvv debug, -vvvv trace)\n- `--accessible` - Add text labels to color-coded output (due:/deadline:/~ prefixes, \u2605 for favorites). Also: `TD_ACCESSIBLE=1`\n\n## Authentication\n\n```bash\ntd auth login # OAuth login; stores token in OS credential manager\ntd auth token \"your-token\" # Save a manual API token\ntd auth status # Check whether auth works\ntd auth logout # Remove the saved token\nexport TODOIST_API_TOKEN=\"your-token\" # Highest priority; overrides stored token\n```\n\nIf OS credential storage is unavailable, `td` warns and falls back to `~/.config/todoist-cli/config.json`. Legacy plaintext config tokens are migrated automatically when secure storage becomes available.\n\n## References\n\nTasks, projects, labels, and filters can be referenced by:\n- Name (fuzzy matched within context)\n- `id:xxx` - Explicit ID\n- Todoist URL - Paste directly from the web app (e.g., `https://app.todoist.com/app/task/buy-milk-8Jx4mVr72kPn3QwB` or `https://app.todoist.com/app/project/work-2pN7vKx49mRq6YhT`)\n\n## Priority Mapping\n\n- p1 = Highest priority (API value 4)\n- p2 = High priority (API value 3)\n- p3 = Medium priority (API value 2)\n- p4 = Lowest priority (API value 1, default)\n\n## Commands\n\n### Today\n```bash\ntd today # Due today + overdue\ntd today --json # JSON output\ntd today --workspace \"Work\" # Filter to workspace\ntd today --personal # Personal projects only\ntd today --any-assignee # Include tasks assigned to others\n```\n\n### Inbox\n```bash\ntd inbox # Inbox tasks\ntd inbox --priority p1 # Filter by priority\ntd inbox --due today # Filter by due date\n```\n\n### Upcoming\n```bash\ntd upcoming # Next 7 days\ntd upcoming 14 # Next 14 days\ntd upcoming --workspace \"Work\" # Filter to workspace\ntd upcoming --personal # Personal projects only\ntd upcoming --any-assignee # Include tasks assigned to others\n```\n\n### Completed\n```bash\ntd completed # Completed today\ntd completed --since 2024-01-01 --until 2024-01-31\ntd completed --project \"Work\" # Filter by project\n```\n\n### Task Management\n```bash\n# List with filters\ntd task list --project \"Work\"\ntd task list --label \"urgent\" --priority p1\ntd task list --due today\ntd task list --filter \"today | overdue\"\ntd task list --assignee me\ntd task list --assignee \"john@example.com\"\ntd task list --unassigned\ntd task list --workspace \"Work\"\ntd task list --personal\ntd task list --parent \"Parent task\"\n\n# View, complete, uncomplete\ntd task view \"task name\"\ntd task complete \"task name\"\ntd task complete id:123456\ntd task complete \"task name\" --forever # Stop recurrence\ntd task uncomplete id:123456 # Reopen completed task\n\n# Add tasks\ntd task add \"New task\" --due \"tomorrow\" --priority p2\ntd task add \"Task\" --deadline \"2024-03-01\" --project \"Work\"\ntd task add \"Task\" --duration 1h --section \"Planning\" --project \"Work\"\ntd task add \"Task\" --labels \"urgent,review\" --parent \"Parent task\"\ntd task add \"Task\" --description \"Details here\" --assignee me\ntd task add \"My task\" --stdin < description.md # Read description from file\ncat notes.md | td task add \"My task\" --stdin\ntd task add \"Reference header\" --uncompletable # Non-actionable reference/header task\ntd task add \"Reference header\" --order 0 # Pin task to top of project\ntd task add \"New task\" --json # Return created task as JSON\n\n# Update\ntd task update \"task name\" --due \"next week\"\ntd task update \"task name\" --deadline \"2024-06-01\"\ntd task update \"task name\" --no-deadline\ntd task update \"task name\" --duration 2h\ntd task update \"task name\" --assignee \"john@example.com\"\ntd task update \"task name\" --unassign\ntd task update \"task name\" --stdin < description.md # Read description from file\ntd task update \"task name\" --uncompletable # Mark as non-completable reference item\ntd task update \"task name\" --completable # Revert to completable (undo --uncompletable)\ntd task update \"Reference header\" --order 0 # Move task to top of project\ntd task update \"task name\" --content \"New\" --json # Return updated task as JSON\n\n# Reschedule (preserves recurrence patterns, unlike update --due)\ntd task reschedule \"task name\" 2026-03-20 # Date only (YYYY-MM-DD)\ntd task reschedule id:123456 2026-03-20T14:00:00 # With time\ntd task reschedule \"task name\" 2026-03-20 --json # Return as JSON\n\n# Move\ntd task move \"task name\" --project \"Personal\"\ntd task move \"task name\" --section \"In Progress\"\ntd task move \"task name\" --parent \"Parent task\"\ntd task move \"task name\" --no-parent # Move to project root\ntd task move \"task name\" --no-section # Remove from section\n\n# Dry run (preview any mutating command without executing)\ntd task add \"New task\" --due \"tomorrow\" --dry-run # Preview task creation\ntd task delete \"task name\" --dry-run # Preview deletion\n\n# Delete and browse\ntd task delete \"task name\" --yes\ntd task browse \"task name\" # Open in browser\n```\n\n### Projects\n```bash\ntd project list\ntd project list --personal # Personal projects only\ntd project view \"Project Name\"\ntd project collaborators \"Project Name\"\ntd project create --name \"New Project\" --color \"blue\"\ntd project create --name \"New Project\" --json # Return created project as JSON\ntd project update \"Project Name\" --favorite\ntd project update \"Project Name\" --name \"New Name\" --json # Return updated project as JSON\ntd project archive \"Project Name\"\ntd project unarchive \"Project Name\"\ntd project delete \"Project Name\" --yes\ntd project browse \"Project Name\" # Open in browser\ntd project move \"Project Name\" --to-workspace \"Acme\"\ntd project move \"Project Name\" --to-workspace \"Acme\" --folder \"Engineering\"\ntd project move \"Project Name\" --to-workspace \"Acme\" --visibility team\ntd project move \"Project Name\" --to-personal\n# move requires --yes to confirm (without it, shows a dry-run preview)\ntd project create --name \"New Project\" --dry-run # Preview project creation\ntd project delete \"Project Name\" --dry-run # Preview deletion\n```\n\n### Labels\n```bash\ntd label list # Lists personal + shared labels\ntd label view \"urgent\" # View label details and tasks\ntd label view \"team-review\" # Works for shared labels too\ntd label create --name \"urgent\" --color \"red\"\ntd label create --name \"urgent\" --json # Return created label as JSON\ntd label update \"urgent\" --color \"orange\"\ntd label update \"urgent\" --color \"orange\" --json # Return updated label as JSON\ntd label delete \"urgent\" --yes\ntd label create --name \"urgent\" --dry-run # Preview label creation\ntd label browse \"urgent\" # Open in browser\n```\n\nNote: Shared labels (from collaborative projects) appear in `list` and can be viewed, but cannot be deleted/updated via the standard label commands since they have no ID.\n\n### Comments\n```bash\ntd comment list \"task name\"\ntd comment list \"Project Name\" -P # Project comments\ntd comment add \"task name\" --content \"Comment text\"\ntd comment add \"task name\" --content \"Note\" --json # Return created comment as JSON\ntd comment add \"task name\" --stdin < note.md # Read content from file\ncat note.md | td comment add \"task name\" --stdin\ntd comment add \"task name\" --content \"See attached\" --file ./report.pdf\ntd comment view id:123 # View full comment\ntd comment update id:123 --content \"Updated text\"\ntd comment update id:123 --content \"Updated text\" --json # Return updated comment as JSON\ntd comment delete id:123 --yes\ntd comment add \"task name\" --content \"Note\" --dry-run # Preview comment creation\ntd comment browse id:123 # Open in browser\n```\n\n### Attachments\n```bash\ntd attachment view \"https://files.todoist.com/...\" # Fetch and display attachment content\ntd attachment view \"https://files.todoist.com/...\" --json # JSON output with metadata + content\n```\n\nText files are output directly to stdout. Images and binary files are output as base64.\nWith `--json`, returns: `fileName`, `fileSize`, `contentType`, `contentCategory`, `encoding` (`utf-8` or `base64`), `content`.\nThe file URL comes from a comment's `fileAttachment.fileUrl` field (visible in `td comment list --json` output).\n10MB file size limit.\n\n### Sections\n```bash\ntd section list \"Work\" # List sections in project (or --project \"Work\")\ntd section list --project \"Work\" # Same, using named flag\ntd section create --project \"Work\" --name \"In Progress\"\ntd section create --project \"Work\" --name \"In Progress\" --json # Return created section as JSON\ntd section update id:123 --name \"Done\"\ntd section update id:123 --name \"Done\" --json # Return updated section as JSON\ntd section delete id:123 --yes\ntd section create --project \"Work\" --name \"In Progress\" --dry-run # Preview section creation\ntd section browse id:123 # Open in browser\n```\n\n### Filters\n```bash\ntd filter list\ntd filter create --name \"Urgent work\" --query \"p1 & #Work\"\ntd filter create --name \"Urgent work\" --query \"p1 & #Work\" --json # Return created filter as JSON\ntd filter view \"Urgent work\" # Show tasks matching filter (alias: show)\ntd filter update \"Urgent work\" --query \"p1 & #Work & today\"\ntd filter delete \"Urgent work\" --yes\ntd filter create --name \"Urgent work\" --query \"p1 & #Work\" --dry-run # Preview filter creation\ntd filter browse \"Urgent work\" # Open in browser\n```\n\n### Workspaces\n```bash\ntd workspace list\ntd workspace view \"Workspace Name\"\ntd workspace projects \"Workspace Name\" # or --workspace \"Workspace Name\"\ntd workspace users \"Workspace Name\" --role ADMIN,MEMBER # or --workspace \"...\"\n```\n\n### Activity\n```bash\ntd activity # Recent activity\ntd activity --since 2024-01-01 --until 2024-01-31\ntd activity --type task --event completed\ntd activity --project \"Work\"\ntd activity --by me\ntd activity --markdown # LLM-friendly Markdown output\n```\n\n### Notifications\n```bash\ntd notification list\ntd notification list --unread\ntd notification list --type \"item_assign\"\ntd notification view id:123\ntd notification read --all --yes # Mark all as read\ntd notification accept id:123 # Accept share invitation\ntd notification reject id:123 # Reject share invitation\n```\n\n### Reminders\n```bash\ntd reminder list \"task name\" # or --task \"task name\"\ntd reminder add \"task name\" --before 30m # or --task \"task name\" --before 30m\ntd reminder add \"task name\" --before 30m --json # Return created reminder as JSON\ntd reminder add \"task name\" --at \"2024-01-15 10:00\"\ntd reminder update id:123 --before 1h\ntd reminder add \"task name\" --before 30m --dry-run # Preview reminder creation\ntd reminder delete id:123 --yes\n```\n\n### Auth\n```bash\ntd auth status # Check authentication\ntd auth status --json # JSON: { id, email, fullName }\ntd auth login # OAuth login\ntd auth token <token> # Save API token\ntd auth logout # Remove saved token\n```\n\n### Stats\n```bash\ntd stats # View karma and productivity\ntd stats --json\ntd stats goals --daily 10 --weekly 50\ntd stats vacation --on # Enable vacation mode\ntd stats vacation --off # Disable vacation mode\n```\n\n### Settings\n```bash\ntd settings view\ntd settings view --json\ntd settings update --timezone \"America/New_York\"\ntd settings update --time-format 24 --date-format intl\ntd settings themes # List available themes\n```\n\n### Shell Completions\n```bash\ntd completion install # Install tab completions (prompts for shell)\ntd completion install bash # Install for specific shell\ntd completion install zsh\ntd completion install fish\ntd completion uninstall # Remove completions\n```\n\n### View (URL Router)\n```bash\ntd view <todoist-url> # Auto-route to appropriate view by URL type\ntd view https://app.todoist.com/app/task/buy-milk-abc123\ntd view https://app.todoist.com/app/project/work-def456\ntd view https://app.todoist.com/app/label/urgent-ghi789\ntd view https://app.todoist.com/app/filter/work-tasks-jkl012\ntd view https://app.todoist.com/app/today\ntd view https://app.todoist.com/app/upcoming\ntd view <url> --json # JSON output for entity views\ntd view <url> --limit 25 --ndjson # Passthrough list options where supported\n```\n\n### Update\n```bash\ntd update # Update CLI to latest version\ntd update --check # Check for updates without installing\n```\n\n### Changelog\n```bash\ntd changelog # Show last 5 versions\ntd changelog -n 3 # Show last 3 versions\ntd changelog --count 10 # Show last 10 versions\n```\n\n## Examples\n\n### Daily workflow\n```bash\ntd today --json | jq '.results | length' # Count today's tasks\ntd inbox --limit 5 # Quick inbox check\ntd upcoming # What's coming this week\ntd completed # What I finished today\n```\n\n### Filter by multiple criteria\n```bash\ntd task list --project \"Work\" --label \"urgent\" --priority p1\ntd task list --filter \"today & #Work\"\ntd task list --workspace \"Work\" --due today\n```\n\n### Complete tasks efficiently\n```bash\ntd task complete \"Review PR\"\ntd task complete id:123456789\ntd task uncomplete id:123456789 # Reopen if needed\n```\n";
4
4
  //# sourceMappingURL=content.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/content.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,gBAAgB,CAAA;AACvC,eAAO,MAAM,iBAAiB,8EACiD,CAAA;AAE/E,eAAO,MAAM,aAAa,kigBAuYzB,CAAA"}
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/content.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,gBAAgB,CAAA;AACvC,eAAO,MAAM,iBAAiB,8EACiD,CAAA;AAE/E,eAAO,MAAM,aAAa,88hBA2ZzB,CAAA"}
@@ -25,8 +25,10 @@ Use this skill when the user wants to interact with their Todoist tasks.
25
25
  - \`td stats\` - Productivity stats
26
26
  - \`td settings view\` - User settings
27
27
  - \`td completion install\` - Install shell completions
28
+ - \`td attachment view <url>\` - View/download a file attachment
28
29
  - \`td view <url>\` - View supported Todoist entities/pages by URL
29
30
  - \`td update\` - Self-update the CLI to the latest version
31
+ - \`td changelog\` - Show recent changelog entries
30
32
 
31
33
  ## Output Formats
32
34
 
@@ -248,6 +250,17 @@ td comment add "task name" --content "Note" --dry-run # Preview comment creatio
248
250
  td comment browse id:123 # Open in browser
249
251
  \`\`\`
250
252
 
253
+ ### Attachments
254
+ \`\`\`bash
255
+ td attachment view "https://files.todoist.com/..." # Fetch and display attachment content
256
+ td attachment view "https://files.todoist.com/..." --json # JSON output with metadata + content
257
+ \`\`\`
258
+
259
+ Text files are output directly to stdout. Images and binary files are output as base64.
260
+ With \`--json\`, returns: \`fileName\`, \`fileSize\`, \`contentType\`, \`contentCategory\`, \`encoding\` (\`utf-8\` or \`base64\`), \`content\`.
261
+ The file URL comes from a comment's \`fileAttachment.fileUrl\` field (visible in \`td comment list --json\` output).
262
+ 10MB file size limit.
263
+
251
264
  ### Sections
252
265
  \`\`\`bash
253
266
  td section list "Work" # List sections in project (or --project "Work")
@@ -368,6 +381,13 @@ td update # Update CLI to latest version
368
381
  td update --check # Check for updates without installing
369
382
  \`\`\`
370
383
 
384
+ ### Changelog
385
+ \`\`\`bash
386
+ td changelog # Show last 5 versions
387
+ td changelog -n 3 # Show last 3 versions
388
+ td changelog --count 10 # Show last 10 versions
389
+ \`\`\`
390
+
371
391
  ## Examples
372
392
 
373
393
  ### Daily workflow
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuY5B,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2Z5B,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@doist/todoist-cli",
3
- "version": "1.26.0",
3
+ "version": "1.28.0",
4
4
  "description": "TypeScript CLI for Todoist",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -44,10 +44,11 @@
44
44
  "node": ">=20"
45
45
  },
46
46
  "files": [
47
- "dist"
47
+ "dist",
48
+ "CHANGELOG.md"
48
49
  ],
49
50
  "dependencies": {
50
- "@doist/todoist-api-typescript": "7.1.1",
51
+ "@doist/todoist-api-typescript": "7.2.0",
51
52
  "@napi-rs/keyring": "1.2.0",
52
53
  "@pnpm/tabtab": "0.5.4",
53
54
  "chalk": "5.6.2",