monday-cli 0.6.0 → 0.7.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 CHANGED
@@ -7,6 +7,394 @@ output envelope (`{ ok, data, meta, ... }`) and 29 stable error
7
7
  codes are part of the public contract — the SemVer rules in
8
8
  [`docs/cli-design.md`](./docs/cli-design.md) §6 govern bumps.
9
9
 
10
+ ## [0.7.0] - 2026-05-20 — Bulk + create-time file `--set` carve-out folds (M42 + M43)
11
+
12
+ The "friendly file `--set` reaches every callShape" milestone —
13
+ v0.6-M38's single-item friendly file-column writer gains the two
14
+ carve-outs deferred at M38: bulk `monday item update --where ...
15
+ --set <file-col>=<path>` per-item multipart fan-out (M42, closes
16
+ D5) and create-time `monday item create --set <file-col>=<path>`
17
+ two-leg dispatch under the §5.8 orphan-warn atomicity envelope
18
+ (M43, closes D6). The friendly file-`--set` form now reaches
19
+ every CLI callShape (`item set` / `item update <iid>` / `item
20
+ update --where` / `item create`). **No breaking changes vs
21
+ `0.6.0` — every v0.7 surface is additive.** Built incrementally
22
+ across M42 + M43.
23
+
24
+ **Pivot note 2026-05-20.** The originally-planned API `2026-04`
25
+ pin (M39) + `monday item set-description` (M40) + `monday doc
26
+ block-create-bulk <did>` (M41) cluster was **DEFERRED** to a
27
+ future release pending `@mondaydotcomorg/api` SDK 15.x publishing
28
+ with `CURRENT_VERSION = '2026-04'` natively. M39's string-literal
29
+ override path was explored then abandoned after M40's empirical
30
+ probe revealed paid-tier feature gating + opaque
31
+ `INTERNAL_SERVER_ERROR { service: 'docs-api' }` on free-tier
32
+ accounts at every payload size — not worth the override-
33
+ maintenance overhead for a single user-blocked verb. Re-attempt
34
+ expected at v0.8 if Monday's SDK cadence holds (≈2 months between
35
+ major SDK bumps per the 13.0.0 / 14.0.0 / 15.0.0 trajectory) AND
36
+ a paid-tier sandbox is available for the M40 wire probe.
37
+
38
+ ### Breaking changes vs `0.6.0`
39
+
40
+ **None.** Every command, error code, envelope key, and warning
41
+ shape shipped in v0.6.0 is preserved byte-for-byte. v0.7 only adds.
42
+
43
+ ### Surface
44
+
45
+ **117 commands shipped (unchanged from v0.6).** M42 + M43 extend
46
+ two existing verbs (`monday item update` bulk dispatch leg +
47
+ `monday item create` action body) with new file-column dispatch
48
+ branches rather than introducing new noun namespaces or verbs.
49
+ The friendly translator (`translateColumnValueAsync`) stays
50
+ JSON-output-shaped for the 13 existing writable types; file-
51
+ column dispatch routes through v0.6-M38's
52
+ `executeFileColumnSet` sibling module (the new bulk + create-
53
+ time paths consume the M38 helper rather than duplicating it).
54
+
55
+ **Bulk file `--set` (M42) — `monday item update --where ...
56
+ --set <file-col>=<path>`.** Per-item multipart fan-out across
57
+ the `--where`-resolved item-id set, dispatched through the
58
+ existing v0.4-M30 `dispatchParallel` over a shared
59
+ `MultipartTransport` (per D1 closure — no new transport seam;
60
+ the parallel-multipart cross-product of M30's bulk-concurrency
61
+ + M31's multipart wire was already pinned). New helper
62
+ `runItemUpdateBulkFileDispatch` (in `src/commands/item/
63
+ update.ts`) mirrors M25's partial-success shape with `asset`
64
+ slot replacing `item` slot (per D2 closure):
65
+ `data.results[i].asset: { id, name, ... }` on success;
66
+ `data.results[i].error: { code, message }` under
67
+ `--continue-on-error`. Aggregate `data.summary` extends M25's
68
+ `partialSuccessBulkUpdateDataSchema` with three new slots
69
+ (`column_id` / `filename` / `file_size_bytes`) echoing the
70
+ dispatched file alongside `matched_count` / `applied_count` /
71
+ `failed_count` / `board_id`. New `data.operation:
72
+ 'item_update_bulk_file_set'` literal discriminator (distinct
73
+ from M25's `'item_update'`) so agents branch uniformly on
74
+ `data.operation`. `--concurrency 1..32` (default 1) opts into
75
+ bounded parallel dispatch per the v0.4-M30 range; `--continue-
76
+ on-error` partitions per-item wire failures into the partial-
77
+ success envelope while leaving whole-call-abort semantics for
78
+ the upfront local file pre-check (per D3 closure —
79
+ `precheckLocalFile` fires ONCE upfront per cli-design §5.8 "pre-
80
+ checks MUST fire BEFORE any wire round-trip" before the dispatch
81
+ loop, since the bulk shape has ONE file path shared across N
82
+ matched items).
83
+
84
+ **Create-time file `--set` (M43) — `monday item create --set
85
+ <file-col>=<path>`.** Two-leg dispatch routes through the new
86
+ `runItemCreateFileDispatch` helper (in `src/commands/item/
87
+ create.ts`): leg-1 `create_item` bundles the non-file
88
+ `column_values` atomically into the wire call; leg-2
89
+ `add_file_to_column` attaches the file to the newly-created
90
+ item. Pair is non-atomic by construction (Monday has no single-
91
+ wire create-item-with-file mutation at API `2026-01`). The atomicity
92
+ envelope shape closed at D1 to **(b) orphan-warn** rather than
93
+ (a) automatic rollback — the pre-flight rollback-viability probe
94
+ could not run empirically (the token lacked `create_item`
95
+ permission in token-created sandbox workspaces + existing-board
96
+ attempts were correctly blocked by harness modify-shared-state
97
+ guards), so defaulting to orphan-warn preserves the agent's
98
+ recovery handle without introducing a destructive `delete_item`
99
+ cleanup leg whose own failure mode is unaccounted for. Leg-2
100
+ failure surfaces `internal_error` with `details.reason:
101
+ 'create_then_file_upload_partial_failure'` + `details.
102
+ created_item_id` echoing leg-1's orphan + `details.column_id`
103
+ (the resolved file-column ID) + `details.cause` (the M31 wire-
104
+ failure JSON projection) + `details.hint` directing agents to
105
+ retry leg-2 alone (`monday item set <iid> <file-col>=<path>`)
106
+ OR rollback (`monday item delete <iid> --yes`). `--dry-run`
107
+ emits two `planned_changes` entries per D2 closure
108
+ (`operation: 'create_item'` / `'create_subitem'` with bundled
109
+ non-file `column_values`, then `operation:
110
+ 'add_file_to_column'` with the file pre-check echo); the leg-2
111
+ entry carries no `item_id` slot because the item doesn't exist
112
+ at dry-run time. **D6 mixed-set mutex SUPPRESSED on
113
+ `'item_create'`** per the asymmetry closure — `create_item`
114
+ natively bundles non-file `column_values` atomically into leg-
115
+ 1, so a multi-`--set` mix of file + non-file entries is
116
+ legitimate at create time (unlike single-item / bulk
117
+ callShapes where Monday's `change_multiple_column_values`
118
+ doesn't accept files). The universal multi-file mutex still
119
+ applies — 2+ file entries reject with `usage_error.details.
120
+ reason: 'multi_file_set_unsupported'`.
121
+
122
+ **Mutex rules at v0.7 (universal across all four callShapes
123
+ post-M42 + M43).**
124
+
125
+ - **Exactly ONE file `--set <file-col>=<path>` per call** across
126
+ every callShape (`'item_set'` / `'item_update_single'` /
127
+ `'item_update_bulk'` / `'item_create'`). 2+ file entries
128
+ reject with `usage_error.details.reason:
129
+ 'multi_file_set_unsupported'`.
130
+ - **Mixing a file `--set` with any value `--set` / `--set-raw`
131
+ / `--name`** rejects with `usage_error.details.reason:
132
+ 'mixed_file_and_value_sets'` on `'item_set'` /
133
+ `'item_update_single'` / `'item_update_bulk'`. **SUPPRESSED**
134
+ on `'item_create'` per D6 asymmetry — `create_item` bundles
135
+ non-file `column_values` atomically into leg-1, so the mix
136
+ is legitimate at create time.
137
+
138
+ Enforcement fires at the column-resolution boundary (parse-time
139
+ can't know — the column type only resolves after board metadata
140
+ loads); rejection happens BEFORE any multipart bytes get
141
+ constructed.
142
+
143
+ **`--set-raw <file-col>=<json>` STAYS REJECTED at v0.7
144
+ (unchanged from v0.6-M38 D3 — PERMANENT, not deferred).**
145
+ Monday's wire has no JSON shape for `change_column_value` on
146
+ file columns; the rejection at `src/api/raw-write.ts:
147
+ translateRawColumnValue` carries `details.hint` pointing at
148
+ the friendly `--set` form (now universal across callShapes per
149
+ M42 + M43) AND the v0.4-M31 verb-shaped `monday item upload`.
150
+
151
+ ### Output contract additions
152
+
153
+ **No new stable error codes — registry stays at 29.** Per D3
154
+ closure on M42 + D3 closure on M43, every v0.7 rejection routes
155
+ through existing codes (`usage_error` / `unsupported_column_
156
+ type` / `not_found` / `validation_failed` / `internal_error`)
157
+ with `details.reason` literal-string discriminators. **One new
158
+ discriminator literal lands at v0.7:** M43's
159
+ `'create_then_file_upload_partial_failure'` (M43 leg-2 partial-
160
+ failure orphan-warn envelope) joins the existing M38-era
161
+ discriminators (`mixed_file_and_value_sets` /
162
+ `multi_file_set_unsupported` / `file_set_on_bulk_unsupported` /
163
+ `file_set_on_create_unsupported`) under the R-v0.6-NEW-2
164
+ discriminated-union per-status-detail pattern.
165
+
166
+ **R-v0.6-NEW-2 graduates at the 5-consumer threshold post-M43.**
167
+ The discriminator pattern (4 supporting instances at v0.6 close)
168
+ crossed the threshold with M43's new discriminator literal as
169
+ the 5th. Graduation lifts the pattern from "watch-item" to
170
+ "ratified design idiom" — future milestones touching the
171
+ `details.reason` per-status-detail surface inherit the pattern
172
+ without further filing.
173
+
174
+ **New aggregate envelope slots for M42 bulk file dispatch.**
175
+ `data.summary.{column_id, filename, file_size_bytes}` extend
176
+ M25's `partialSuccessBulkUpdateDataSchema` with file-dispatch
177
+ echo slots so agents reading the success envelope see which
178
+ file was dispatched + where. `column_id` echoes the resolved
179
+ file-column ID; `filename` echoes the basename; `file_size_
180
+ bytes` echoes the `fs.stat()` size in bytes (no file bytes are
181
+ loaded into memory at envelope-time — the size is captured
182
+ pre-dispatch in the `precheckLocalFile` step).
183
+
184
+ **New M43 orphan-warn envelope on `data.operation:
185
+ 'item_create'` leg-2 failure.** Beyond the existing M38-era
186
+ `add_file_to_column` failure envelope, M43 leg-2 failure
187
+ surfaces a 5-slot details bag: `reason` (literal
188
+ `'create_then_file_upload_partial_failure'`) + `created_item_
189
+ id` (the orphaned leg-1 item ID) + `column_id` (the resolved
190
+ file-column ID) + `cause` (the M31 wire-failure JSON
191
+ projection) + `hint` (the recovery-path English string).
192
+
193
+ **No new envelope keys, no new warning shapes** outside the M42
194
+ `data.summary` extension above. M42 + M43 reuse the M31
195
+ multipart wire's success envelope shape + the post-success
196
+ eager-invalidation contract (`invalidateBoard(boardId)` fires
197
+ single-leg on multipart success across all 4 callShapes).
198
+
199
+ ### Upgrade notes
200
+
201
+ - **`unsupported_column_type` `deferred_to: "v0.6"` for the
202
+ files-shaped category on bulk + create paths is DROPPED.**
203
+ v0.7-M42 picks up the bulk path (per-item multipart fan-out
204
+ under `--concurrency` / `--continue-on-error`); v0.7-M43
205
+ picks up the create-time path (two-leg dispatch under §5.8
206
+ orphan-warn). The rejection row at `src/api/column-values.ts`
207
+ (the files-shaped row of the friendly translator) no longer
208
+ fires on `item create` or `item update --where` — those paths
209
+ now dispatch to the appropriate helper BEFORE the translator
210
+ row fires. The v0.6-M38 literals `'file_set_on_bulk_
211
+ unsupported'` and `'file_set_on_create_unsupported'` STAY
212
+ RESERVED in docstrings + regression-guarded by integration
213
+ tests; the runtime path no longer surfaces them. Agents that
214
+ branched on either literal will instead receive the success
215
+ envelopes documented above OR a leg-2 failure under M43's
216
+ orphan-warn shape.
217
+ - **`--set-raw <file-col>=<json>` STAYS REJECTED (unchanged
218
+ from v0.6-M38 D3, PERMANENT).** Monday's wire has no JSON
219
+ shape for files-shaped `change_column_value`. The rejection
220
+ hint at `src/api/raw-write.ts` names BOTH the friendly `--set`
221
+ form (now universal across callShapes) AND the v0.4-M31
222
+ `monday item upload` verb.
223
+ - **Multi-level subitem creation slips from `"v0.7"` →
224
+ `"v0.8"`.** Originally slipped from v0.3 → v0.4 → v0.5 → v0.6
225
+ → v0.7 across four prior release-preps. v0.7 didn't pick it
226
+ up (v0.7 pivoted away from API `2026-04` at 2026-05-20 so
227
+ the data-model probe gate moves to v0.8's planned `2026-07`
228
+ pin; Monday's `sub_items_board` still carries no `subtasks`
229
+ column at API `2026-01`). The `error.code: "usage_error"` +
230
+ `details.hierarchy_type: "multi_level"` keys are unchanged;
231
+ only the `deferred_to` literal flipped.
232
+ - **Cross-board `item move` value-overrides slips from `"v0.7"`
233
+ → `"v0.8"`.** Slipped across v0.3-M11 → v0.4 → v0.5 → v0.6
234
+ → v0.7 → v0.8 release-preps. Monday's `ColumnMappingInput`
235
+ still carries no value slot; the cross-leg partial-failure
236
+ envelope question stays open.
237
+ - **Cross-board resumable cursor slips from `"v0.7"` →
238
+ `"v0.8"`.** Slot remains for the per-board cursor-lifetime
239
+ under-aggregation design issue. The `cross_board_truncated`
240
+ warning's `details.hint` continues to recommend narrowing via
241
+ `--workspace` / `--favorites` / `--max-boards`.
242
+ - **Multi-file `--set` per call (v0.6-M38 D2) and file-`--set`
243
+ stdin support (v0.6-M38 D7) remain v0.7.x / future
244
+ candidates.** M42 pinned the per-item file-dispatch envelope;
245
+ multi-file would now revisit with M42's shape as the per-
246
+ item baseline.
247
+ - **`monday auth login` placeholder-guard unchanged.** The verb
248
+ is still registered and still surfaces `usage_error.details.
249
+ reason: oauth_unregistered` pointing at `MONDAY_API_TOKEN`
250
+ (unchanged from v0.6.0). The OAuth deferral revisits in
251
+ v0.7.x / v0.8 contingent on user demand.
252
+ - **Stable error-code registry stays at 29.** Existing codes'
253
+ shapes are unchanged across v0.6 → v0.7.
254
+
255
+ ### Internals worth highlighting
256
+
257
+ - **R-v0.6-NEW-1 graduates at the 5-consumer threshold post-
258
+ M43.** The `file-source.ts` two-export module (`precheck
259
+ LocalFile` + `buildBlobFromPath`) added at v0.6-M38 IMPL
260
+ kickoff (`3c2a9b0`, ahead-of-feat 3-consumer lift) scaled to
261
+ 5 consumers post-v0.7: M31 `item upload` + M31 `update
262
+ upload` + M38 single-item `executeFileColumnSet` + M42 bulk
263
+ `runItemUpdateBulkFileDispatch` + M43 create-time
264
+ `runItemCreateFileDispatch`. Helper internal shape unchanged
265
+ across all 5 consumers — graduation earned.
266
+ - **R-v0.6-NEW-2 graduates at the 5-consumer threshold post-
267
+ M43.** The `details.reason` discriminated-union per-status-
268
+ detail pattern (4 supporting instances at v0.6 close —
269
+ `mixed_file_and_value_sets` / `multi_file_set_unsupported` /
270
+ `file_set_on_create_unsupported` / `file_set_on_bulk_
271
+ unsupported`) crossed the threshold with M43's new
272
+ `create_then_file_upload_partial_failure` literal as the 5th.
273
+ - **R-NEW-82 graduated at the 5th-consecutive consumer.** The
274
+ release-prep cross-doc grep for stale `deferred_to:
275
+ "v<currently-releasing-version>"` slots fired and caught
276
+ one stale site (multi-level subitem `--parent` rejection —
277
+ slipped to `"v0.8"`) plus one ToC drift (v0.7-M42 + v0.7-M43
278
+ friendly file `--set` annotations missing from `docs/output-
279
+ shapes.md`'s `item (mutations)` row). Mirrors v0.3-M28 (1st)
280
+ / v0.4 (2nd) / v0.5 (3rd) / v0.6 (4th) / v0.7 (5th) release-
281
+ prep ratifications.
282
+ - **R-NEW-84 graduated discipline applied.** The v0.7 release-
283
+ prep cluster ships zero production `src/**/*.ts` semantic
284
+ changes (only the literal `'v0.7'` → `'v0.8'` flip in the
285
+ multi-level subitem rejection slot); gates carry verification
286
+ per the R-NEW-84 carve-out (skip Codex review on mechanical /
287
+ process-only clusters).
288
+ - **R-v0.7-NEW-4 (Pre-IMPL contract-term checklist) graduated
289
+ at v0.7-M42 IMPL R7 + refined at R8.** The discipline lives
290
+ in `.claude/rules/workflow.md` as a permanent rule. v0.7-M43
291
+ IMPL inherited the checklist + extended it with a "round-
292
+ agnostic framing" sub-rule at R3, and converged in 4 fix-up
293
+ rounds vs M42's 8 — graduation earned its keep.
294
+ - **R-NEW-76 graduated** from "stub-anchored ordering invariant"
295
+ to "wire-dispatch-anchored ordering invariant" at v0.7-M43
296
+ IMPL — post-IMPL the c8 boundary is gone but the `parseArgv`-
297
+ BEFORE-dispatch ordering itself stays load-bearing (argv-
298
+ level failures surface as `usage_error`, not
299
+ `internal_error`).
300
+ - **M42 IMPL converged in 8 fix-up rounds.** R1 closed the
301
+ behavioral surface (`foldAndRemap` + `SourceAggregator` +
302
+ fail-fast partial-success invalidate); R2-R8 were W9-prose-
303
+ only (no behavioral findings, asymptotic prose convergence
304
+ pattern that motivated the R-v0.7-NEW-4 graduation).
305
+ - **M43 IMPL converged in 4 fix-up rounds.** R1 closed the
306
+ behavioral surface; R2-R3 trailing W9 prose drift; R4
307
+ CONVERGED with zero findings. M43 inherited R-v0.7-NEW-4
308
+ from M42's graduation, short-circuiting the W9 cycle from
309
+ M42's 8 rounds down to 4.
310
+ - **Audit-fix folded into version-bump per security.md "high
311
+ = merge blocker" interpretation.** v0.6 release-prep
312
+ established the inline audit-fix precedent at version-bump;
313
+ v0.7 release-prep applied it: `npm audit` flagged
314
+ `brace-expansion@5.0.2` (moderate severity —
315
+ GHSA-jxxr-4gwj-5jf2 large-numeric-range DoS-protection
316
+ defeat); `npm audit fix` cleanly resolved via the lockfile
317
+ to `5.0.5+` (non-breaking transitive through eslint's
318
+ minimatch chain). `npm audit` reports `0 vulnerabilities`
319
+ post-fix.
320
+ - **Two-AI review** ran for v0.7-M42 pre-flight + IMPL, v0.7-
321
+ M43 pre-flight + IMPL. M42 IMPL converged in 8 fix-up rounds
322
+ (1 behavioral + 7 W9 prose); M43 IMPL converged in 4 (1
323
+ behavioral + 2 W9 + 1 zero-finding CONVERGED). The v0.7
324
+ release-prep cluster skipped Codex per R-NEW-84. Cumulative
325
+ Codex breakdowns live in the per-milestone post-mortems in
326
+ [`docs/v0.7-plan.md`](./docs/v0.7-plan.md) §3.
327
+
328
+ ### Tests + quality gates
329
+
330
+ - **4124 unit/integration + E2E tests** at v0.7.0 (+1 skipped;
331
+ was 4100 + 1 at v0.6.0; +24 net for M42 + M43 — ~15 new tests
332
+ for M42 covering bulk fan-out + `--concurrency` interaction +
333
+ partial-success projection + `data.summary` echo, ~9 net for
334
+ M43 covering two-leg happy path top-level + subitem + D6
335
+ mixed-set asymmetry + dry-run two-`planned_changes` + D1
336
+ orphan-warn envelope + leg-1 failure with/without remap +
337
+ translation reject + atomicity-before-wire ENOENT +
338
+ regression-guards across all 4 emit surfaces). All green on
339
+ Node 22 + 24.
340
+ - **Coverage at 98.79 / 95.65 / 99.16 / 99.08** (statements /
341
+ branches / functions / lines) against the floor 95 / 95.45 /
342
+ 95 / 95. Branches margin **0.20pp** at v0.7.0 (was 1.01pp at
343
+ v0.6.0; the 0.81pp drop reflects new conditional-spread arms
344
+ across M42 + M43's leg-1 / leg-2 catch arms — defensive non-
345
+ CliError re-throws + cause-details / metaSource unreachable
346
+ arms c8-ignored per testing.md preferred form). Floor unchanged
347
+ across v0.6.0 → v0.7.0.
348
+ - **Envelope-snapshot suite** — refresh probe ran clean at v0.7
349
+ release-prep (zero diff vs M43 IMPL close); per-milestone
350
+ close-docs sweeps refreshed snapshots in lockstep at M42 IMPL
351
+ close + M43 IMPL close.
352
+ - **Five test layers held**: unit, integration (in-process
353
+ `FixtureTransport` + `MultipartFixtureTransport`), E2E
354
+ (subprocess against fixture server), envelope-shape snapshot
355
+ suite, published-tarball E2E.
356
+ - **Audit-fix folded into release-prep.** `npm audit` flagged a
357
+ transitive `brace-expansion@5.0.2` (moderate severity); `npm
358
+ audit fix` cleanly resolved to `5.0.5+`. `npm audit` reports
359
+ `0 vulnerabilities` post-fix.
360
+
361
+ ### Documentation
362
+
363
+ - **[`docs/v0.7-plan.md`](./docs/v0.7-plan.md)** new — the v0.7
364
+ active plan with M42 + M43 milestones, decisions log (per-
365
+ milestone D1-D6), R-class register (R-v0.7-NEW-1 through
366
+ R-v0.7-NEW-5), per-milestone post-mortems (§3), 2026-05-20
367
+ pivot note pinning M39 / M40 / M41 as DEFERRED.
368
+ - **[`docs/cli-design.md`](./docs/cli-design.md)** §4.3
369
+ `monday item update` + `monday item create` rows annotated
370
+ with the M42 bulk + M43 create-time file-column dispatch
371
+ shapes; §5.3 "File-column dispatch leg" subsection extended
372
+ with the bulk fan-out (M42) + two-leg orphan-warn (M43)
373
+ branches; §5.8 atomicity discipline extended with the M43
374
+ two-leg orphan-warn envelope shape.
375
+ - **[`docs/output-shapes.md`](./docs/output-shapes.md)** —
376
+ `item update --where ... --set <file-col>=<path>` section at
377
+ line 2399 (M42 bulk file dispatch); `item create --set <file-
378
+ col>=<path>` integrated into the existing `item create`
379
+ section at line 2524 (M43 two-leg dispatch + orphan-warn
380
+ envelope); ToC row for `item (mutations)` updated to
381
+ enumerate the friendly file `--set v0.6-M38 single + v0.7-M42
382
+ bulk` annotation on `update` + `(friendly file --set v0.7-M43)`
383
+ annotation on `create` (caught at v0.7 release-prep ToC audit
384
+ as a v0.7-M42 + v0.7-M43 close-docs gap — 5th consecutive
385
+ R-NEW-82 graduated-discipline ratification).
386
+ - **README.md** quickstart expanded with v0.7 examples (step 13
387
+ extended to demonstrate M42 bulk file dispatch under
388
+ `--concurrency` / `--continue-on-error` + M43 create-time
389
+ file `--set` with mixed-set asymmetry). Scope section reshaped
390
+ around v0.7.0 / v0.6.0 / v0.5.0 / v0.4.0 / v0.3.0 / v0.2.0 /
391
+ v0.1.0 per-version layout. New "What v0.7 added (M42 + M43)"
392
+ per-milestone bullet block. v0.8 (next) block enumerates
393
+ carry-forward backlog + the v0.7-deferred M39 / M40 / M41
394
+ cluster pending SDK 15.x native `2026-04`.
395
+
396
+ [0.7.0]: https://github.com/Firer/monday-cli/releases/tag/v0.7.0
397
+
10
398
  ## [0.6.0] - 2026-05-18 — Files-shaped friendly `--set` writes (M38)
11
399
 
12
400
  The "agents can write to files-shaped columns inline" milestone —