@kyaukyuai/linear-cli 2.7.1 → 2.8.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
@@ -2,6 +2,20 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [2.8.0] - 2026-03-24
6
+
7
+ ### Added
8
+
9
+ - added a shared `--dry-run` contract and preview output for automation-safe write workflows
10
+ - added `--dry-run` support to issue, project, milestone, document, and webhook write commands
11
+ - added Automation Contract v2 coverage for `project list/view --json`
12
+ - added Automation Contract v2 coverage for `cycle list/view/current/next --json`
13
+ - added Automation Contract v2 coverage for `milestone list/view --json`
14
+
15
+ ### Changed
16
+
17
+ - structured `issue create-batch --json` partial-failure responses with created identifiers, retry hints, and failure-step metadata for safer retries
18
+
5
19
  ## [2.7.1] - 2026-03-23
6
20
 
7
21
  ### Added
package/README.md CHANGED
@@ -100,15 +100,18 @@ compared to upstream, this fork adds and maintains several capabilities aimed at
100
100
  - workspace-aware auth management with keyring migration and default workspace support
101
101
  - generated AI-agent skill docs, Claude plugin metadata, npm publishing, and Homebrew tap release plumbing
102
102
 
103
- ## automation contract v1
103
+ ## automation contract
104
104
 
105
105
  for bot and org-wide automation use cases, `linear-cli` defines a stable JSON contract for a focused automation tier.
106
106
 
107
- - in scope: `issue list/view/create/update --json`, `issue relation add/delete/list --json`, `issue comment add --json`, `team members --json`, `issue parent/children/create-batch --json`
107
+ - v1 in scope: `issue list/view/create/update --json`, `issue relation add/delete/list --json`, `issue comment add --json`, `team members --json`, `issue parent/children/create-batch --json`
108
+ - v2 additions: `project list/view --json`, `cycle list/view/current/next --json`, `milestone list/view --json`
108
109
  - out of scope: non-JSON terminal output, `linear api`, and other `--json` commands that are not listed above
109
110
 
110
111
  the contract fixes top-level success payload shapes and requires machine-readable failure payloads for the automation tier. see [docs/json-contracts.md](docs/json-contracts.md) for the full contract, compatibility rules, and example payloads. that guarantee also covers parser and argument validation failures when `--json` is present.
111
112
 
113
+ the same document also defines the shared preview contract for future `--dry-run` write commands. those commands are not all implemented yet, but the contract now fixes the expected `stdout`, `exit code`, and `--json --dry-run` envelope shape ahead of rollout.
114
+
112
115
  ## differences from upstream
113
116
 
114
117
  this fork is intentionally diverging from upstream in a few ways:
@@ -179,13 +182,16 @@ linear issue start # create/switch to issue branch and mark as started
179
182
  linear issue create # create a new issue (interactive prompts)
180
183
  linear issue create -t "title" -d "description" # create with flags
181
184
  linear issue create -t "title" --team ENG --json # emit machine-readable created issue data
185
+ linear issue create -t "title" --team ENG --dry-run --json # preview the created issue payload
182
186
  linear issue create-batch --file ./issue-batch.json --json # create a parent issue and child issues from JSON
187
+ linear issue create-batch --file ./issue-batch.json --dry-run --json # preview a batch without creating issues
183
188
  linear issue create --project "My Project" --milestone "Phase 1" # create with milestone
184
189
  linear issue update # update an issue (interactive prompts)
185
190
  linear issue update ENG-123 --due-date 2026-03-31 # set an issue due date
186
191
  linear issue update ENG-123 --clear-due-date # clear an issue due date
187
192
  linear issue update ENG-123 --assignee self --json # emit machine-readable updated issue data
188
193
  linear issue update ENG-123 --state started --comment "Work has started" # update and comment in one command
194
+ linear issue update ENG-123 --state started --comment "Work has started" --dry-run # preview issue updates
189
195
  linear issue update ENG-123 --milestone "Phase 2" # set milestone on existing issue
190
196
  linear issue delete # delete an issue
191
197
  linear issue comment list # list comments on current issue
@@ -193,8 +199,11 @@ linear issue comment add # add a comment to current issue
193
199
  linear issue comment add ENG-123 "follow-up" # add a comment with positional body
194
200
  linear issue comment add -p <id> # reply to a specific comment
195
201
  linear issue comment add ENG-123 --body "follow-up" --json # emit created comment data
202
+ linear issue comment add ENG-123 --body "follow-up" --dry-run --json # preview comment creation
196
203
  linear issue relation add ENG-123 blocked-by ENG-100 --json # emit machine-readable relation creation data
204
+ linear issue relation add ENG-123 blocked-by ENG-100 --dry-run --json # preview relation creation
197
205
  linear issue relation delete ENG-123 blocked-by ENG-100 --json # emit machine-readable relation deletion data
206
+ linear issue relation delete ENG-123 blocked-by ENG-100 --dry-run --json # preview relation deletion
198
207
  linear issue relation list ENG-123 --json # emit dependency graph for an issue
199
208
  linear issue comment update <id> # update a comment
200
209
  linear issue commits # show all commits for an issue (jj only)
@@ -220,6 +229,8 @@ linear issue children ENG-123 --json # emit child issues for decomposition work
220
229
  }
221
230
  ```
222
231
 
232
+ `issue create-batch` creates the parent first and then creates each child in order. If a later child fails, already created issues are not rolled back. Use `--dry-run --json` to preview the plan first. In `--json` mode, partial failures include `error.details.createdIdentifiers` and `error.details.failedStep` so automation can resume from the remaining work instead of rerunning the same batch unchanged.
233
+
223
234
  ### team commands
224
235
 
225
236
  ```bash
@@ -231,11 +242,26 @@ linear team create # create a new team
231
242
  linear team autolinks # configure GitHub repository autolinks for Linear issues
232
243
  ```
233
244
 
245
+ ### cycle commands
246
+
247
+ ```bash
248
+ linear cycle list --team ENG
249
+ linear cycle list --team ENG --json # emit cycle summaries for automation
250
+ linear cycle view "Sprint 42" --team ENG --json # emit detailed cycle payload
251
+ linear cycle current --team ENG --json # emit active cycle or null
252
+ linear cycle next --team ENG --json # emit next cycle or null
253
+ ```
254
+
234
255
  ### project commands
235
256
 
236
257
  ```bash
237
258
  linear project list # list projects
238
- linear project view # view project details
259
+ linear project list --json # emit contract-stable project summaries
260
+ linear project view <projectIdOrSlug> # view project details
261
+ linear project view <projectIdOrSlug> --json # emit contract-stable project details
262
+ linear project create --name "Platform Refresh" --team ENG --dry-run --json # preview a project create
263
+ linear project update <projectIdOrSlug> --name "Platform Refresh" --dry-run # preview a project update
264
+ linear project delete <projectIdOrSlug> --dry-run # preview a project deletion
239
265
  linear project label add <projectIdOrSlug> <labelNameOrId> # attach a project label
240
266
  linear project label remove <projectIdOrSlug> <labelNameOrId> # detach a project label
241
267
  ```
@@ -244,14 +270,19 @@ linear project label remove <projectIdOrSlug> <labelNameOrId> # detach a projec
244
270
 
245
271
  ```bash
246
272
  linear milestone list --project <projectId> # list milestones for a project
273
+ linear milestone list --project <projectId> --json # emit contract-stable milestone summaries
247
274
  linear m list --project <projectId> # list milestones (alias)
248
275
  linear milestone view <milestoneId> # view milestone details
276
+ linear milestone view <milestoneId> --json # emit contract-stable milestone details
249
277
  linear m view <milestoneId> # view milestone (alias)
250
278
  linear milestone create --project <projectId> --name "Q1 Goals" --target-date "2026-03-31" # create a milestone
279
+ linear milestone create --project <projectId> --name "Q1 Goals" --dry-run # preview a milestone create
251
280
  linear m create --project <projectId> # create a milestone (interactive)
252
281
  linear milestone update <milestoneId> --name "New Name" # update milestone name
282
+ linear milestone update <milestoneId> --name "New Name" --dry-run # preview a milestone update
253
283
  linear m update <milestoneId> --target-date "2026-04-15" # update target date
254
284
  linear milestone delete <milestoneId> # delete a milestone
285
+ linear milestone delete <milestoneId> --dry-run # preview a milestone delete
255
286
  linear m delete <milestoneId> --force # delete without confirmation
256
287
  ```
257
288
 
@@ -278,17 +309,20 @@ linear document create --title "My Doc" --content "# Hello" # inline c
278
309
  linear document create --title "Spec" --content-file ./spec.md # from file
279
310
  linear document create --title "Doc" --project <projectId> # attach to project
280
311
  linear document create --title "Notes" --issue TC-123 # attach to issue
312
+ linear document create --title "Spec" --content "# Draft" --dry-run # preview a document create
281
313
  cat spec.md | linear document create --title "Spec" # from stdin
282
314
 
283
315
  # update a document
284
316
  linear document update <slug> --title "New Title" # update title
285
317
  linear document update <slug> --content-file ./updated.md # update content
286
318
  linear document update <slug> --edit # open in $EDITOR
319
+ linear document update <slug> --title "New Title" --dry-run # preview a document update
287
320
 
288
321
  # delete a document
289
322
  linear document delete <slug> # soft delete (move to trash)
290
323
  linear document delete <slug> --permanent # permanent delete
291
324
  linear document delete --bulk <slug1> <slug2> # bulk delete
325
+ linear document delete <slug> --dry-run # preview a document delete
292
326
  ```
293
327
 
294
328
  ### notification commands
@@ -313,8 +347,11 @@ linear webhook list
313
347
  linear webhook list --team ENG
314
348
  linear webhook view <webhookId>
315
349
  linear webhook create --url https://example.com/linear --resource-types Issue,Comment
350
+ linear webhook create --url https://example.com/linear --resource-types Issue,Comment --dry-run --json
316
351
  linear webhook update <webhookId> --disabled
352
+ linear webhook update <webhookId> --disabled --dry-run --json
317
353
  linear webhook delete <webhookId> --yes
354
+ linear webhook delete <webhookId> --dry-run --json
318
355
  linear webhook list --json
319
356
  ```
320
357
 
@@ -23,7 +23,7 @@
23
23
  "hasInstallScript": true,
24
24
  "license": "MIT",
25
25
  "name": "@kyaukyuai/linear-cli",
26
- "version": "2.7.1"
26
+ "version": "2.8.0"
27
27
  },
28
28
  "node_modules/@isaacs/cliui": {
29
29
  "engines": {
@@ -542,5 +542,5 @@
542
542
  }
543
543
  },
544
544
  "requires": true,
545
- "version": "2.7.1"
545
+ "version": "2.8.0"
546
546
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "artifactDownloadUrls": [
3
- "https://github.com/kyaukyuai/linear-cli/releases/download/v2.7.1"
3
+ "https://github.com/kyaukyuai/linear-cli/releases/download/v2.8.0"
4
4
  ],
5
5
  "bin": {
6
6
  "linear": "run-linear.js"
@@ -85,7 +85,7 @@
85
85
  "zipExt": ".tar.xz"
86
86
  }
87
87
  },
88
- "version": "2.7.1",
88
+ "version": "2.8.0",
89
89
  "volta": {
90
90
  "node": "18.14.1",
91
91
  "npm": "9.5.0"