linear-sdk-cli 0.8.3 → 0.9.1
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 +13 -0
- package/COVERAGE.md +26 -25
- package/MIGRATING.md +11 -3
- package/README.md +201 -41
- package/package.json +1 -1
- package/skills/linear-sdk-cli/SKILL.md +118 -21
- package/skills/linear-sdk-cli/references/auth.md +34 -9
- package/skills/linear-sdk-cli/references/config.md +13 -9
- package/skills/linear-sdk-cli/references/issue.md +3 -2
- package/skills/linear-sdk-cli/references/release-note.md +148 -0
- package/skills/linear-sdk-cli/references/release-pipeline.md +137 -0
- package/skills/linear-sdk-cli/references/release-stage.md +121 -0
- package/skills/linear-sdk-cli/references/release.md +348 -0
- package/src/cli.ts +8 -0
- package/src/commands/issue.ts +9 -3
- package/src/commands/meta.ts +145 -166
- package/src/commands/release-note.ts +90 -0
- package/src/commands/release-pipeline.ts +122 -0
- package/src/commands/release-stage.ts +100 -0
- package/src/commands/release.ts +254 -0
- package/src/config.ts +260 -12
- package/src/lib/authorization.ts +1 -1
- package/src/lib/keyring.ts +30 -2
- package/src/lib/options.ts +18 -0
- package/src/lib/output-shapes.ts +68 -3
- package/src/lib/release-input.ts +138 -0
- package/src/services/issue.ts +12 -3
- package/src/services/release.ts +691 -0
|
@@ -35,22 +35,24 @@ lin --version
|
|
|
35
35
|
|
|
36
36
|
### Authentication
|
|
37
37
|
|
|
38
|
-
The CLI supports
|
|
38
|
+
The CLI supports personal API keys, supplied access tokens, and app credentials. No client ID
|
|
39
|
+
is bundled, and new login never starts browser OAuth:
|
|
39
40
|
|
|
40
|
-
1. **
|
|
41
|
+
1. **Personal API key (default)**:
|
|
41
42
|
|
|
42
43
|
```bash
|
|
43
|
-
linear auth login #
|
|
44
|
-
linear auth login --
|
|
45
|
-
linear auth login --no-browser # prints URL; loopback callback still required
|
|
44
|
+
linear auth login # hidden API-key prompt in an interactive terminal
|
|
45
|
+
printf '%s\n' "$LINEAR_API_KEY" | linear auth login --key -
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
is
|
|
52
|
-
|
|
53
|
-
|
|
48
|
+
Create a key at https://linear.app/settings/account/security, choosing permissions and team
|
|
49
|
+
access in Linear; workspace policy may restrict member key creation. Never ask for a key in
|
|
50
|
+
chat. The CLI validates the viewer/workspace before storing it in the OS keyring. If no keyring
|
|
51
|
+
is available, login requires explicit `--plaintext` for private user-config storage (`0600`).
|
|
52
|
+
Passing `--key <value>` also works but exposes the key in argv and produces a warning.
|
|
53
|
+
JSON, `--no-input`, and redirected sessions never prompt; use explicit `--key -` for stdin.
|
|
54
|
+
Bare login does not import environment credentials. `--read-only` and `--scope` require
|
|
55
|
+
`--app`; they cannot restrict an existing personal API key.
|
|
54
56
|
|
|
55
57
|
2. **Invocation OAuth access token** via `--access-token <token>` or `LINEAR_ACCESS_TOKEN` — use
|
|
56
58
|
this for hosted Linear apps, agents, and service accounts. Prefer the environment variable so
|
|
@@ -60,6 +62,7 @@ The CLI supports distinct human, hosted-app, and personal-key lifecycles:
|
|
|
60
62
|
LINEAR_ACCESS_TOKEN=... linear whoami --json
|
|
61
63
|
```
|
|
62
64
|
|
|
65
|
+
Tokens may represent a user or app; their issuing grant determines identity and permissions.
|
|
63
66
|
The host application owns OAuth installation, token refresh/client-credentials exchange,
|
|
64
67
|
client-secret storage, and webhooks. These tokens remain invocation-scoped.
|
|
65
68
|
Long-lived hosts can import `ClientCredentialsTokenProvider` from `linear-sdk-cli`; it caches
|
|
@@ -102,16 +105,7 @@ The CLI supports distinct human, hosted-app, and personal-key lifecycles:
|
|
|
102
105
|
LINEAR_API_KEY=lin_api_... linear whoami --json
|
|
103
106
|
```
|
|
104
107
|
|
|
105
|
-
5. **
|
|
106
|
-
|
|
107
|
-
```bash
|
|
108
|
-
printf '%s\n' "$LINEAR_API_KEY" | linear auth login --key -
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
Passing `--key <value>` also works but exposes it in argv and produces a warning. API keys may
|
|
112
|
-
use `--plaintext`; browser OAuth is always keyring-only.
|
|
113
|
-
|
|
114
|
-
6. **Multiple workspaces** — store several OAuth or API-key credentials and select one per call with
|
|
108
|
+
5. **Multiple workspaces** — store several app or API-key credentials and select one per call with
|
|
115
109
|
`--workspace <slug>`; set a default with `linear auth default <slug>`:
|
|
116
110
|
|
|
117
111
|
```bash
|
|
@@ -120,8 +114,30 @@ The CLI supports distinct human, hosted-app, and personal-key lifecycles:
|
|
|
120
114
|
linear issue list --workspace acme --json
|
|
121
115
|
```
|
|
122
116
|
|
|
117
|
+
Existing stored OAuth user profiles remain supported: their own saved client ID is used for
|
|
118
|
+
refresh, scope reporting is retained, and logout revokes the grant (`--local-only` skips
|
|
119
|
+
revocation). New browser login and its `--no-browser`, `--redirect-uri`, `--timeout`, and `--admin`
|
|
120
|
+
options have been removed. Do not tell users to register or install a CLI OAuth application.
|
|
121
|
+
|
|
123
122
|
Login associates the authenticated workspace with the discovered project config, or creates `.linear.toml` at the Git root (cwd outside Git). Use `--no-project` for credential-only login; JSON reports `projectConfigPath` or null. Credentials stay global. Workspace selection is `--workspace` → `LINEAR_WORKSPACE` → project config → optional global default. A sole stored workspace is automatic; multiple unselected workspaces prompt only interactively and fail in JSON/noninteractive mode. Login/adoption/logout never assign a new default. Existing legacy defaults remain valid because their original intent is unknown; `auth default` is an explicit convenience.
|
|
124
123
|
|
|
124
|
+
When a workspace URL slug changes, use `linear auth rename <old-slug> <new-slug> --json`
|
|
125
|
+
for an existing API-key profile. It validates the exact stored key's current organization/slug,
|
|
126
|
+
ignores environment credentials, preserves storage/team/default metadata, and refuses destination
|
|
127
|
+
collisions (including unlisted keyring records). Keyring moves require atomic create-only support
|
|
128
|
+
(macOS Keychain). Linux Secret Service keyring entries are refused before changes; file-only profiles
|
|
129
|
+
remain supported. API-key profiles have no historical organization ID; the unchanged stored key proves
|
|
130
|
+
its organization, returned in `organization`. Never export the key or
|
|
131
|
+
combine login/logout to rename it. If interrupted, repeat the same command to resume its non-secret
|
|
132
|
+
recovery marker; do not log out, replace, or migrate either profile while recovery is pending.
|
|
133
|
+
Project files stay unchanged: inspect `checkedProjectConfigs`, `projectConfigUpdates`, and
|
|
134
|
+
`globalConfigUpdates`, then update the authorized selectors separately. Supply
|
|
135
|
+
`--project-config /absolute/path/.linear.toml` to inspect additional known configs. Other repositories
|
|
136
|
+
and `LINEAR_WORKSPACE` overrides require a separate check; discovery is not machine-wide.
|
|
137
|
+
OAuth user/app profiles and dormant OAuth records are explicitly unsupported and left untouched:
|
|
138
|
+
user refresh-token rotation needs coordination, and app token exchange has scope/revocation effects.
|
|
139
|
+
The command performs no OAuth refresh, exchange, browser authorization, or revocation.
|
|
140
|
+
|
|
125
141
|
An explicit credential flag overrides environment credentials. If both credential kinds occur at
|
|
126
142
|
the same precedence level, the CLI fails rather than silently choosing an actor. Inspect resolution
|
|
127
143
|
with `linear auth status`. `linear auth token` exports stored API keys only and never OAuth tokens.
|
|
@@ -135,6 +151,16 @@ forbidden errors include stable `error.details` with the required scope and reme
|
|
|
135
151
|
|
|
136
152
|
## Agent best practices
|
|
137
153
|
|
|
154
|
+
Folder defaults: `linear config set project "My Project" --path .linear.toml` associates the
|
|
155
|
+
current folder and descendants with a Linear project (name or UUID). Include `team` and
|
|
156
|
+
`workspace` in that file when needed; discovery reads the nearest config without merging
|
|
157
|
+
ancestor files. Omit `--path` to edit the discovered config, or create one at the Git root
|
|
158
|
+
(cwd outside Git). `linear config show --json` reports `project` and `origins.project`.
|
|
159
|
+
`issue create` / `issue new` uses the default; `--project` overrides it, a parent's project
|
|
160
|
+
takes precedence over it, and `--no-project` suppresses config, parent, and template defaults.
|
|
161
|
+
`LINEAR_PROJECT` overrides file defaults. List/search/update commands do not inherit this
|
|
162
|
+
project selection. Remove the config's `project` line to clear the association.
|
|
163
|
+
|
|
138
164
|
This CLI is built for non-interactive use. Follow these and it will never hang and
|
|
139
165
|
always emit parseable output.
|
|
140
166
|
|
|
@@ -318,6 +344,40 @@ Lead with these two machine-readable commands:
|
|
|
318
344
|
grep -n 'type Issue ' "${TMPDIR:-/tmp}/linear.graphql"
|
|
319
345
|
```
|
|
320
346
|
|
|
347
|
+
### Releases and CI
|
|
348
|
+
|
|
349
|
+
Use `release-pipeline list`, `release-stage list <pipeline>`, and `release list --pipeline <id|slug>`
|
|
350
|
+
to inspect releases. Pipeline/release lookups accept UUIDs or API slugs, not display names.
|
|
351
|
+
Releases require Business/Enterprise; successful schema introspection or an empty list does not
|
|
352
|
+
prove mutation permission or plan eligibility. Preserve `feature_not_accessible`/`forbidden` errors.
|
|
353
|
+
|
|
354
|
+
Native commands use ordinary CLI OAuth/API credentials. Pipeline access keys and
|
|
355
|
+
`LINEAR_ACCESS_KEY` belong to the official [linear-release](https://github.com/linear/linear-release)
|
|
356
|
+
CI tool; this CLI does not consume them or install/invoke that tool. Use the official tool for Git
|
|
357
|
+
scanning, path filtering, revert handling and PR attribution. Native `release sync` takes explicit
|
|
358
|
+
`--issue KEY-123[=FULL_SHA]` references and never scans the checkout.
|
|
359
|
+
|
|
360
|
+
For scheduled releases, prepare with `release create --pipeline <id> --name <name>
|
|
361
|
+
--release-version <version> --commit-sha <full-sha> --stage <planned-stage-id>`. Set exact membership
|
|
362
|
+
with `release add-issue <release-id> <issue>`. `release update <id> --stage <stage-id>` edits an exact
|
|
363
|
+
release; `release update-version --pipeline <id> --release-version <version> --stage <name>` can
|
|
364
|
+
also attach repeated `--link Label=URL`. Freeze a started stage with `release-stage update <id>
|
|
365
|
+
--frozen true` to exclude its releases from automated sync, while keeping one started stage unfrozen.
|
|
366
|
+
|
|
367
|
+
`sync`, `update-version` and `complete` require a pipeline AND version; no latest fallback is used.
|
|
368
|
+
Scheduled sync can label an unversioned started release or create a release; continuous sync creates
|
|
369
|
+
a completed release immediately. Synced references accumulate; omission does not remove issues.
|
|
370
|
+
Use `--reverted-issue` or `release remove-issue <id> <issue> --yes` for explicit removal.
|
|
371
|
+
Complete only after separately authorized deployment/verification/observation gates pass. Completion
|
|
372
|
+
and transitions to a completed stage may move open issues into another release according to the
|
|
373
|
+
pipeline's rollover setting. `complete --commit-sha` preserves an existing SHA when targeting a
|
|
374
|
+
version: set/verify it using create/update first. No command deploys code or proves verification.
|
|
375
|
+
|
|
376
|
+
`release-note create --pipeline <id> --release <id> --body-file <path>` supports repeated release
|
|
377
|
+
IDs or a paired `--from-release`/`--to-release` inclusive createdAt range, all in the same pipeline.
|
|
378
|
+
Use file/stdin body input, inspect `release-note view`, and keep release-note deletion confirmation
|
|
379
|
+
and exact membership removal explicit. Archive/trash and advanced operations remain under `api`.
|
|
380
|
+
|
|
321
381
|
## Available commands
|
|
322
382
|
|
|
323
383
|
Generated from `linear commands --json` (run `bun run skill:docs` to refresh):
|
|
@@ -339,6 +399,7 @@ linear auth list
|
|
|
339
399
|
linear auth login
|
|
340
400
|
linear auth logout
|
|
341
401
|
linear auth migrate
|
|
402
|
+
linear auth rename
|
|
342
403
|
linear auth status
|
|
343
404
|
linear auth token
|
|
344
405
|
linear auth whoami
|
|
@@ -498,6 +559,38 @@ linear project-update
|
|
|
498
559
|
linear project-update create
|
|
499
560
|
linear project-update list
|
|
500
561
|
|
|
562
|
+
linear release
|
|
563
|
+
linear release add-issue
|
|
564
|
+
linear release complete
|
|
565
|
+
linear release create
|
|
566
|
+
linear release issues
|
|
567
|
+
linear release links
|
|
568
|
+
linear release list
|
|
569
|
+
linear release remove-issue
|
|
570
|
+
linear release sync
|
|
571
|
+
linear release update
|
|
572
|
+
linear release update-version
|
|
573
|
+
linear release view
|
|
574
|
+
|
|
575
|
+
linear release-note
|
|
576
|
+
linear release-note create
|
|
577
|
+
linear release-note delete
|
|
578
|
+
linear release-note list
|
|
579
|
+
linear release-note update
|
|
580
|
+
linear release-note view
|
|
581
|
+
|
|
582
|
+
linear release-pipeline
|
|
583
|
+
linear release-pipeline create
|
|
584
|
+
linear release-pipeline list
|
|
585
|
+
linear release-pipeline update
|
|
586
|
+
linear release-pipeline view
|
|
587
|
+
|
|
588
|
+
linear release-stage
|
|
589
|
+
linear release-stage create
|
|
590
|
+
linear release-stage list
|
|
591
|
+
linear release-stage update
|
|
592
|
+
linear release-stage view
|
|
593
|
+
|
|
501
594
|
linear roadmap
|
|
502
595
|
linear roadmap create
|
|
503
596
|
linear roadmap delete
|
|
@@ -570,6 +663,10 @@ prints the same). These are supplementary — `--help` on any command is authori
|
|
|
570
663
|
- [project-label](references/project-label.md) — Manage project labels (distinct from issue labels)
|
|
571
664
|
- [project-status](references/project-status.md) — Manage workspace project-status definitions
|
|
572
665
|
- [project-update](references/project-update.md) — Post and list project status updates
|
|
666
|
+
- [release](references/release.md) — Track releases, lifecycle and issue membership
|
|
667
|
+
- [release-pipeline](references/release-pipeline.md) — Manage release pipelines
|
|
668
|
+
- [release-stage](references/release-stage.md) — Manage release stages and freezing
|
|
669
|
+
- [release-note](references/release-note.md) — Manage Markdown release notes
|
|
573
670
|
- [roadmap](references/roadmap.md) — Work with roadmaps
|
|
574
671
|
- [schema](references/schema.md) — Print the Linear GraphQL schema as SDL
|
|
575
672
|
- [state](references/state.md) — Inspect workflow states
|
|
@@ -69,7 +69,7 @@ storage: string
|
|
|
69
69
|
|
|
70
70
|
### `linear auth login`
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
Sign in with a personal API key (default) or app credentials
|
|
73
73
|
|
|
74
74
|
```
|
|
75
75
|
linear auth login [options]
|
|
@@ -80,16 +80,12 @@ linear auth login [options]
|
|
|
80
80
|
| `--no-project` | save credentials without changing the project workspace |
|
|
81
81
|
| `--key <key>` | use a personal API key ('-' reads it from stdin) |
|
|
82
82
|
| `--plaintext` | Store API-key or app credentials in the private user config file (0600) |
|
|
83
|
-
| `--
|
|
84
|
-
| `--read-only` | request read-only OAuth access |
|
|
85
|
-
| `--admin` | explicitly add the OAuth admin scope |
|
|
86
|
-
| `--timeout <seconds>` | seconds to wait for the loopback callback |
|
|
83
|
+
| `--read-only` | request read-only access with --app |
|
|
87
84
|
| `--app` | sign in as an app using client credentials |
|
|
88
85
|
| `--client-credentials` | alias for --app |
|
|
89
86
|
| `--scope <scopes>` | comma-separated app scopes (default: read,write) |
|
|
90
87
|
| `--client-secret <secret>` | app client secret ('-' reads stdin; defaults to LINEAR_CLIENT_SECRET) |
|
|
91
|
-
| `--client-id <id>` |
|
|
92
|
-
| `--redirect-uri <uri>` | registered HTTP loopback callback URI |
|
|
88
|
+
| `--client-id <id>` | app client ID (defaults to LINEAR_CLIENT_ID) |
|
|
93
89
|
|
|
94
90
|
**Output (`--json`)**: a receipt object
|
|
95
91
|
|
|
@@ -99,8 +95,6 @@ credentialType: string
|
|
|
99
95
|
workspace: string
|
|
100
96
|
user: {id: string, name: string, email: string}
|
|
101
97
|
storage: string
|
|
102
|
-
scopes?: string[]
|
|
103
|
-
expiresAt?: string
|
|
104
98
|
path: string
|
|
105
99
|
projectConfigPath: string | null
|
|
106
100
|
```
|
|
@@ -144,6 +138,37 @@ migrated: string[]
|
|
|
144
138
|
path: string
|
|
145
139
|
```
|
|
146
140
|
|
|
141
|
+
### `linear auth rename`
|
|
142
|
+
|
|
143
|
+
Rename a stored API-key profile after its Linear workspace URL slug changes
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
linear auth rename [options] <old-slug> <new-slug>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
| Option | Description |
|
|
150
|
+
| ----------------------------- | -------------------------------------------------------------------------- |
|
|
151
|
+
| `--project-config <paths...>` | also inspect these project configs for old workspace selectors (read-only) |
|
|
152
|
+
|
|
153
|
+
**Output (`--json`)**: a receipt object
|
|
154
|
+
|
|
155
|
+
```text
|
|
156
|
+
success: boolean
|
|
157
|
+
from: string
|
|
158
|
+
workspace: string
|
|
159
|
+
credentialType: string
|
|
160
|
+
organization: {id: string, name: string, urlKey: string}
|
|
161
|
+
path: string
|
|
162
|
+
storage: string
|
|
163
|
+
team: string | null
|
|
164
|
+
defaultWorkspace: string | null
|
|
165
|
+
referenceCredentialsPath: string | null
|
|
166
|
+
checkedProjectConfigs: string[]
|
|
167
|
+
projectConfigUpdates: Array<{path: string, key: string, from: string, to: string}>
|
|
168
|
+
globalConfigUpdates: Array<{path: string, key: string, from: string, to: string}>
|
|
169
|
+
otherProjects: string
|
|
170
|
+
```
|
|
171
|
+
|
|
147
172
|
### `linear auth status`
|
|
148
173
|
|
|
149
174
|
Show where the active credential is resolved from (value redacted)
|
|
@@ -25,8 +25,9 @@ credentialWorkspace: string | null
|
|
|
25
25
|
workspaceProfile: string | null
|
|
26
26
|
team: string | null
|
|
27
27
|
workspace: string | null
|
|
28
|
+
project: string | null
|
|
28
29
|
sort: string
|
|
29
|
-
origins: {team: {source: string, path?: string, key?: string, workspace?: string}, workspace: {source: string, path?: string, key?: string, workspace?: string}, sort: {source: string, path?: string, key?: string, workspace?: string}}
|
|
30
|
+
origins: {team: {source: string, path?: string, key?: string, workspace?: string}, workspace: {source: string, path?: string, key?: string, workspace?: string}, project: {source: string, path?: string, key?: string, workspace?: string}, sort: {source: string, path?: string, key?: string, workspace?: string}}
|
|
30
31
|
userConfigPath: string
|
|
31
32
|
projectConfigPath: string | null
|
|
32
33
|
globalConfigPath: string | null
|
|
@@ -40,12 +41,13 @@ Write a project .linear.toml (at the git root, or here outside a repository)
|
|
|
40
41
|
linear config init [options]
|
|
41
42
|
```
|
|
42
43
|
|
|
43
|
-
| Option
|
|
44
|
-
|
|
|
45
|
-
| `--team <key>`
|
|
46
|
-
| `--
|
|
47
|
-
| `--
|
|
48
|
-
| `--
|
|
44
|
+
| Option | Description |
|
|
45
|
+
| ---------------------- | ------------------------------------------------------------------ |
|
|
46
|
+
| `--team <key>` | default team key (otherwise chosen from a list) |
|
|
47
|
+
| `--project <name\|id>` | default Linear project for new issues |
|
|
48
|
+
| `--sort <order>` | default issue-list sort (priority \| manual \| updated \| created) |
|
|
49
|
+
| `--path <file>` | write this file instead of <git root>/.linear.toml |
|
|
50
|
+
| `--force` | overwrite an existing file |
|
|
49
51
|
|
|
50
52
|
**Output (`--json`)**: a receipt object
|
|
51
53
|
|
|
@@ -54,11 +56,12 @@ success: boolean
|
|
|
54
56
|
path: string
|
|
55
57
|
team: string
|
|
56
58
|
sort?: string
|
|
59
|
+
project?: string
|
|
57
60
|
```
|
|
58
61
|
|
|
59
62
|
### `linear config set`
|
|
60
63
|
|
|
61
|
-
Set one project or user setting (team, workspace, sort)
|
|
64
|
+
Set one project or user setting (team, workspace, sort, project)
|
|
62
65
|
|
|
63
66
|
```
|
|
64
67
|
linear config set [options] <key> <value>
|
|
@@ -98,8 +101,9 @@ credentialWorkspace: string | null
|
|
|
98
101
|
workspaceProfile: string | null
|
|
99
102
|
team: string | null
|
|
100
103
|
workspace: string | null
|
|
104
|
+
project: string | null
|
|
101
105
|
sort: string
|
|
102
|
-
origins: {team: {source: string, path?: string, key?: string, workspace?: string}, workspace: {source: string, path?: string, key?: string, workspace?: string}, sort: {source: string, path?: string, key?: string, workspace?: string}}
|
|
106
|
+
origins: {team: {source: string, path?: string, key?: string, workspace?: string}, workspace: {source: string, path?: string, key?: string, workspace?: string}, project: {source: string, path?: string, key?: string, workspace?: string}, sort: {source: string, path?: string, key?: string, workspace?: string}}
|
|
103
107
|
userConfigPath: string
|
|
104
108
|
projectConfigPath: string | null
|
|
105
109
|
globalConfigPath: string | null
|
|
@@ -378,8 +378,9 @@ linear issue create [options]
|
|
|
378
378
|
| `-s, --state <name>` | workflow state name or type |
|
|
379
379
|
| `-P, --priority <0-4>` | priority |
|
|
380
380
|
| `-l, --label <name>` | label (repeatable / comma-separated) |
|
|
381
|
-
| `-p, --project <name>` | project name or id
|
|
382
|
-
| `--
|
|
381
|
+
| `-p, --project <name>` | project name or id (overrides the configured default) |
|
|
382
|
+
| `--no-project` | create outside any project, ignoring configured and parent defaults |
|
|
383
|
+
| `--milestone <name>` | project milestone (requires an explicit, configured, or parent project) |
|
|
383
384
|
| `--cycle <n>` | cycle number, name, id, or 'current' |
|
|
384
385
|
| `--estimate <n>` | estimate points |
|
|
385
386
|
| `--parent <id>` | parent issue id (the sub-issue joins the parent's project unless --project says otherwise) |
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# linear release-note
|
|
2
|
+
|
|
3
|
+
> Manage Markdown notes covering one or more releases
|
|
4
|
+
|
|
5
|
+
_Generated from `linear commands --json`. `linear release-note --help` (or `<subcommand> --help`) is authoritative._
|
|
6
|
+
|
|
7
|
+
Every command also accepts the global flags `-j/--json`, `--no-input`, `-y/--yes`, `-q/--quiet`, `--workspace <slug>`, `--api-key <key>`, `--access-token <token>`, `-t/--team <key>`, `-n/--limit <n>`, `--all`, `-f/--fields <a,b,c>`, `--no-ansi` (alias `--no-color`), and `--debug`. Only command-specific options are listed below.
|
|
8
|
+
|
|
9
|
+
### `linear release-note`
|
|
10
|
+
|
|
11
|
+
Manage Markdown notes covering one or more releases
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
linear release-note [options]
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### `linear release-note create`
|
|
18
|
+
|
|
19
|
+
Create a note for explicit releases or an inclusive createdAt range
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
linear release-note create [options]
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
| Option | Description |
|
|
26
|
+
| ----------------------- | ---------------------------------------------- |
|
|
27
|
+
| `--title <title>` | release note title |
|
|
28
|
+
| `--body <text>` | release note body (Markdown) |
|
|
29
|
+
| `--body-file <path>` | read Markdown from file ('-' for stdin) |
|
|
30
|
+
| `--release <id>` | covered release UUID or slug (repeatable) |
|
|
31
|
+
| `--from-release <id>` | oldest release in an inclusive createdAt range |
|
|
32
|
+
| `--to-release <id>` | newest release in the inclusive range |
|
|
33
|
+
| `--pipeline <id\|slug>` | pipeline UUID or slug |
|
|
34
|
+
|
|
35
|
+
**Output (`--json`)**: a receipt object
|
|
36
|
+
|
|
37
|
+
```text
|
|
38
|
+
id: string
|
|
39
|
+
title: string | null
|
|
40
|
+
url: string
|
|
41
|
+
pipeline: {id: string, name: string}
|
|
42
|
+
releaseCount: number
|
|
43
|
+
firstRelease: {id: string, name: string} | null
|
|
44
|
+
lastRelease: {id: string, name: string} | null
|
|
45
|
+
generationStatus: string | null
|
|
46
|
+
archivedAt: string | null
|
|
47
|
+
content: string | null
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### `linear release-note delete`
|
|
51
|
+
|
|
52
|
+
Delete a release note by UUID or slug
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
linear release-note delete [options] <id>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Output (`--json`)**: a receipt object
|
|
59
|
+
|
|
60
|
+
```text
|
|
61
|
+
id: string
|
|
62
|
+
deleted: boolean
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### `linear release-note list`
|
|
66
|
+
|
|
67
|
+
List release notes with optional pipeline/release filters
|
|
68
|
+
|
|
69
|
+
Aliases: `ls`
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
linear release-note list [options]
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
| Option | Description |
|
|
76
|
+
| ----------------------- | -------------------------------------- |
|
|
77
|
+
| `--pipeline <id\|slug>` | filter by pipeline UUID or slug |
|
|
78
|
+
| `--release <id>` | filter by covered release UUID or slug |
|
|
79
|
+
| `--include-archived` | include archived notes |
|
|
80
|
+
|
|
81
|
+
**Output (`--json`)**: a bare array of objects
|
|
82
|
+
|
|
83
|
+
```text
|
|
84
|
+
id: string
|
|
85
|
+
title: string | null
|
|
86
|
+
url: string
|
|
87
|
+
pipeline: {id: string, name: string}
|
|
88
|
+
releaseCount: number
|
|
89
|
+
firstRelease: {id: string, name: string} | null
|
|
90
|
+
lastRelease: {id: string, name: string} | null
|
|
91
|
+
generationStatus: string | null
|
|
92
|
+
archivedAt: string | null
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### `linear release-note update`
|
|
96
|
+
|
|
97
|
+
Update a note's title, Markdown, or covered releases
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
linear release-note update [options] <id>
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
| Option | Description |
|
|
104
|
+
| --------------------- | ---------------------------------------------- |
|
|
105
|
+
| `--title <title>` | release note title |
|
|
106
|
+
| `--body <text>` | release note body (Markdown) |
|
|
107
|
+
| `--body-file <path>` | read Markdown from file ('-' for stdin) |
|
|
108
|
+
| `--release <id>` | covered release UUID or slug (repeatable) |
|
|
109
|
+
| `--from-release <id>` | oldest release in an inclusive createdAt range |
|
|
110
|
+
| `--to-release <id>` | newest release in the inclusive range |
|
|
111
|
+
|
|
112
|
+
**Output (`--json`)**: a receipt object
|
|
113
|
+
|
|
114
|
+
```text
|
|
115
|
+
id: string
|
|
116
|
+
title: string | null
|
|
117
|
+
url: string
|
|
118
|
+
pipeline: {id: string, name: string}
|
|
119
|
+
releaseCount: number
|
|
120
|
+
firstRelease: {id: string, name: string} | null
|
|
121
|
+
lastRelease: {id: string, name: string} | null
|
|
122
|
+
generationStatus: string | null
|
|
123
|
+
archivedAt: string | null
|
|
124
|
+
content: string | null
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### `linear release-note view`
|
|
128
|
+
|
|
129
|
+
Show a release note and its Markdown body by UUID or slug
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
linear release-note view [options] <id>
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**Output (`--json`)**: a bare object
|
|
136
|
+
|
|
137
|
+
```text
|
|
138
|
+
id: string
|
|
139
|
+
title: string | null
|
|
140
|
+
url: string
|
|
141
|
+
pipeline: {id: string, name: string}
|
|
142
|
+
releaseCount: number
|
|
143
|
+
firstRelease: {id: string, name: string} | null
|
|
144
|
+
lastRelease: {id: string, name: string} | null
|
|
145
|
+
generationStatus: string | null
|
|
146
|
+
archivedAt: string | null
|
|
147
|
+
content: string | null
|
|
148
|
+
```
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# linear release-pipeline
|
|
2
|
+
|
|
3
|
+
> Manage release pipelines (Business/Enterprise)
|
|
4
|
+
|
|
5
|
+
_Generated from `linear commands --json`. `linear release-pipeline --help` (or `<subcommand> --help`) is authoritative._
|
|
6
|
+
|
|
7
|
+
Every command also accepts the global flags `-j/--json`, `--no-input`, `-y/--yes`, `-q/--quiet`, `--workspace <slug>`, `--api-key <key>`, `--access-token <token>`, `-t/--team <key>`, `-n/--limit <n>`, `--all`, `-f/--fields <a,b,c>`, `--no-ansi` (alias `--no-color`), and `--debug`. Only command-specific options are listed below.
|
|
8
|
+
|
|
9
|
+
### `linear release-pipeline`
|
|
10
|
+
|
|
11
|
+
Manage release pipelines (Business/Enterprise)
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
linear release-pipeline [options]
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### `linear release-pipeline create`
|
|
18
|
+
|
|
19
|
+
Create a pipeline with default stages
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
linear release-pipeline create [options]
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
| Option | Description |
|
|
26
|
+
| -------------------------------- | -------------------------------------------------------------------------- |
|
|
27
|
+
| `--name <name>` | pipeline name |
|
|
28
|
+
| `--type <type>` | pipeline type |
|
|
29
|
+
| `--production <boolean>` | whether pipeline targets production (true\|false) |
|
|
30
|
+
| `--auto-release-notes <boolean>` | automatically generate notes on completion (true\|false) |
|
|
31
|
+
| `--rollover-issues <boolean>` | move open issues to the next scheduled release on completion (true\|false) |
|
|
32
|
+
| `--include-path <glob>` | replace path patterns with these globs (repeatable) |
|
|
33
|
+
| `--clear-paths` | clear all path filters |
|
|
34
|
+
| `--team-id <uuid>` | replace associated teams with these UUIDs (repeatable) |
|
|
35
|
+
| `--clear-teams` | clear team associations |
|
|
36
|
+
|
|
37
|
+
**Output (`--json`)**: a receipt object
|
|
38
|
+
|
|
39
|
+
```text
|
|
40
|
+
id: string
|
|
41
|
+
name: string
|
|
42
|
+
slugId: string
|
|
43
|
+
type: string
|
|
44
|
+
url: string
|
|
45
|
+
isProduction: boolean
|
|
46
|
+
autoGenerateReleaseNotesOnCompletion: boolean
|
|
47
|
+
rolloverIssuesOnCompletion: boolean
|
|
48
|
+
includePathPatterns: string[]
|
|
49
|
+
archivedAt: string | null
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### `linear release-pipeline list`
|
|
53
|
+
|
|
54
|
+
List workspace release pipelines
|
|
55
|
+
|
|
56
|
+
Aliases: `ls`
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
linear release-pipeline list [options]
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
| Option | Description |
|
|
63
|
+
| -------------------- | -------------------------- |
|
|
64
|
+
| `--include-archived` | include archived pipelines |
|
|
65
|
+
|
|
66
|
+
**Output (`--json`)**: a bare array of objects
|
|
67
|
+
|
|
68
|
+
```text
|
|
69
|
+
id: string
|
|
70
|
+
name: string
|
|
71
|
+
slugId: string
|
|
72
|
+
type: string
|
|
73
|
+
url: string
|
|
74
|
+
isProduction: boolean
|
|
75
|
+
autoGenerateReleaseNotesOnCompletion: boolean
|
|
76
|
+
rolloverIssuesOnCompletion: boolean
|
|
77
|
+
includePathPatterns: string[]
|
|
78
|
+
archivedAt: string | null
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### `linear release-pipeline update`
|
|
82
|
+
|
|
83
|
+
Update pipeline settings by UUID or slug
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
linear release-pipeline update [options] <id>
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
| Option | Description |
|
|
90
|
+
| -------------------------------- | -------------------------------------------------------------------------- |
|
|
91
|
+
| `--name <name>` | pipeline name |
|
|
92
|
+
| `--type <type>` | pipeline type |
|
|
93
|
+
| `--production <boolean>` | whether pipeline targets production (true\|false) |
|
|
94
|
+
| `--auto-release-notes <boolean>` | automatically generate notes on completion (true\|false) |
|
|
95
|
+
| `--rollover-issues <boolean>` | move open issues to the next scheduled release on completion (true\|false) |
|
|
96
|
+
| `--include-path <glob>` | replace path patterns with these globs (repeatable) |
|
|
97
|
+
| `--clear-paths` | clear all path filters |
|
|
98
|
+
| `--team-id <uuid>` | replace associated teams with these UUIDs (repeatable) |
|
|
99
|
+
| `--clear-teams` | clear team associations |
|
|
100
|
+
|
|
101
|
+
**Output (`--json`)**: a receipt object
|
|
102
|
+
|
|
103
|
+
```text
|
|
104
|
+
id: string
|
|
105
|
+
name: string
|
|
106
|
+
slugId: string
|
|
107
|
+
type: string
|
|
108
|
+
url: string
|
|
109
|
+
isProduction: boolean
|
|
110
|
+
autoGenerateReleaseNotesOnCompletion: boolean
|
|
111
|
+
rolloverIssuesOnCompletion: boolean
|
|
112
|
+
includePathPatterns: string[]
|
|
113
|
+
archivedAt: string | null
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### `linear release-pipeline view`
|
|
117
|
+
|
|
118
|
+
Show pipeline settings by UUID or slug
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
linear release-pipeline view [options] <id>
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**Output (`--json`)**: a bare object
|
|
125
|
+
|
|
126
|
+
```text
|
|
127
|
+
id: string
|
|
128
|
+
name: string
|
|
129
|
+
slugId: string
|
|
130
|
+
type: string
|
|
131
|
+
url: string
|
|
132
|
+
isProduction: boolean
|
|
133
|
+
autoGenerateReleaseNotesOnCompletion: boolean
|
|
134
|
+
rolloverIssuesOnCompletion: boolean
|
|
135
|
+
includePathPatterns: string[]
|
|
136
|
+
archivedAt: string | null
|
|
137
|
+
```
|