Skip to content

Releases: VidGuiCode/plane-cli

v0.4.1

06 May 11:26

Choose a tag to compare

Bug fixes

  • Fixed cycle issue membership commands to use Plane's cycle-issues endpoint for cycle current, cycle issues, cycle add, and cycle remove.
  • Improved the 404 hint for cycle membership endpoint failures so a resolved cycle is not reported as missing.

Testing

  • Added command tests for cycle issue listing and removal through the cycle-issues endpoint.

v0.4.0

06 May 07:46

Choose a tag to compare

Features

  • Added plane module ensure <name> and plane cycle ensure <name> for idempotent automation workflows.
  • Added bulk module and cycle assignment with comma-separated issue refs, e.g. plane module add ROADMAP-157,158,159 "Website Deployment".
  • Added plane page search <query> and name-based plane page get <page> lookup.
  • Updated discover issue-inputs to advertise comma-separated issue refs, ensure commands, and bulk assignment commands.

Reliability

  • Added runtime round-trip assertions for issue update so the CLI exits non-zero if Plane silently ignores requested fields.
  • Fixed cycle create to include project_id in the request body.
  • Improved page endpoint compatibility errors when a Plane instance/API version returns 404 for project pages.

Testing

  • Added command-level tests for cycle/module ensure, bulk assignment, and issue update round-trip validation.

v0.3.2 — fix --due silent no-op on issue update

24 Apr 09:25

Choose a tag to compare

Bug fixes

  • Fixed --due flag silently dropped on issue create, issue update, and issue move — the request body sent due_date: "..." but Plane's API expects target_date and silently ignored the wrong key, leaving the due date unset despite the CLI printing Updated and exiting zero. Same class of bug as the v0.3.1 --label fix.
  • Fixed issue get never displaying the due date — the Due: line read issue.due_date (the wrong field) so it was always skipped.
  • Fixed --json output field dueDate always returning null — the normalizer was reading the wrong source field.

Testing

  • Added tests/smoke/due-date-roundtrip.test.ts — live regression test gated on PLANE_CLI_LIVE_TESTS=1 + PLANE_TEST_PROJECT, round-trips --due on create, update, and clear (--due none), verifies both raw target_date and normalized dueDate alias.
  • Added tests/smoke/issue-update-audit.test.ts — silent-drop audit for other issue update flags: --priority, --description, --assignee me, --state (opt-in), --parent (opt-in). Live run against the reporter's instance found no other silent drops.

Install

npm install -g https://github.com/VidGuiCode/plane-cli/releases/download/v0.3.2/plane-cli-0.3.2.tgz

v0.3.1 — fix --label silent drop, add --label-id

17 Apr 22:18

Choose a tag to compare

Bug fixes

  • --label flag silently dropped on issue create, issue update, label add, label remove — the request body was sending label_ids: [...] but Plane's v1 API silently ignores that key and expects labels: [...]. Issues were created with no labels attached despite the CLI exiting zero. All four call sites now send the correct field name. (fixes #19)

Features

  • --label-id <uuid> on issue create and issue update — alternative to --label <name> that skips name resolution (no extra GET /labels/ call) and validates the UUID format up front.

Polish

  • --label help text now says case-insensitive, so security, Security, and SECURITY are all accepted.
  • discover issue-inputs now lists labels (not label_ids) as an optional field, matching the actual API payload key.
  • New live round-trip integration test (tests/smoke/label-roundtrip.test.ts) gated on PLANE_CLI_LIVE_TESTS=1 — round-trips --label against a real workspace and asserts the labels array is non-empty, preventing this exact silent regression from returning.

Install / upgrade

npm install -g github:VidGuiCode/plane-cli

Or if already installed: plane upgrade.

v0.3.0

03 Apr 21:59

Choose a tag to compare

What's new

plane project create

Create projects from the CLI without leaving the terminal:
```
plane project create "My Project" --identifier PROJ --network 2
```
Prompts to set as active project in interactive mode.

plane project update

Update the active project's name, description, or network visibility:
```
plane project update --name "Renamed" --description "New description"
```

plane issue move

Move (or copy) an issue to a different project. State is mapped by group (e.g. started → started):
```
plane issue move PROJ-42 --to-project OTHER
plane issue move PROJ-42 --to-project OTHER --copy # skip delete
```

Bulk issue update

Update multiple issues in one call using comma-separated refs:
```
plane issue update PROJ-1,2,3 --state Done
plane issue update PROJ-5,PROJ-6 --priority high --assignee me
```
All refs are resolved before any API calls are sent (fail-fast). Patches run in parallel.

Multi-filter on issue list / issue mine

--state, --priority, and --assignee now accept comma-separated values:
```
plane issue list --state Todo,InProgress
plane issue list --assignee me,alice --priority high,urgent
```

Prettier formatting fixes

Applied consistent formatting across cycle.ts, issue.ts, project.ts, html.ts, and resolvers.ts.

Install / upgrade

```
npm install -g github:VidGuiCode/plane-cli
```

v0.2.6

02 Apr 10:25

Choose a tag to compare

What's new

Bug fixes

  • Fixed issue create and page create hanging in non-interactive mode when optional fields (description, content) have no default (fixes #8)

Features

  • --name alias for --title on issue update — matches the Plane API field name (fixes #9)
  • view alias for issue get and page getplane issue view PROJ-42 now works (fixes #10)
  • stripHtml() preserves paragraph breaks, line breaks, and list structure instead of collapsing to a single line (fixes #11)
  • Richer cycle and module output: progress counters (totalIssues, completedIssues), module list shows NAME/STATUS/START/TARGET columns, and discover cycles/discover modules expose progress fields (fixes #12)

Install

npm install -g https://github.com/VidGuiCode/plane-cli/releases/download/v0.2.6/plane-cli-0.2.6.tgz

Or upgrade from an existing install:

plane upgrade

v0.2.5

02 Apr 00:03

Choose a tag to compare

What's new

Features

  • --assignee me — resolves to the current authenticated user on issue list, create, and update
  • plane issue mine — shortcut for listing issues assigned to you
  • plane cycle current — shows the active cycle and its issues
  • --updated-since <date> — filter issue list by last-updated date (YYYY-MM-DD)
  • Post-pack release verificationnpm run verify-pack smoke tests the .tgz before publishing

Output consistency

  • issue list --json, issue get --json, cycle issues --json, and module issues --json now return normalized camelCase fields (state name, identifier string, label names) instead of raw API shapes

Error messages

  • API errors now include actionable hints (401→check token, 404→verify identifiers, 429→rate limited)
  • Resolver errors include more context (e.g., which workspace was searched)

Install

npm install -g https://github.com/VidGuiCode/plane-cli/releases/download/v0.2.5/plane-cli-0.2.5.tgz

v0.2.4

30 Mar 21:18

Choose a tag to compare

Bug fixes

  • Fixed `plane issue list --fields` and `plane issue get --fields` returning `[{}, {}, ...]` for every issue — raw Plane API fields (`id`, `name`, `priority`, `assignees`, `sequence_id`, `updated_at`, etc.) are now directly accessible by their exact API name, not just via a curated alias map
  • Fixed `--fields` failing when the shell (e.g. PowerShell) splits a comma-separated list like `id,name,title` into separate arguments

Install

```bash
npm install -g https://github.com/VidGuiCode/plane-cli/releases/download/v0.2.4/plane-cli-0.2.4.tgz
```

Or upgrade from within the CLI:

```bash
plane upgrade
```

v0.2.3

30 Mar 18:17

Choose a tag to compare

Bug fixes

  • --fields producing {} empty objectsissue list and issue get with --fields now accept both the normalized camelCase names and raw Plane API field names as aliases. Previously, passing names like state_name, sequence_id, name, or updated_at produced empty objects {} because none matched the internal normalized keys.

Both of these now work:

# normalized names
plane issue list --json --fields id,sequence,title,state,updatedAt

# raw API names (same result)
plane issue list --json --fields id,sequence_id,name,state_name,updated_at

Full alias table:

Normalized Also accepts
title name
sequence sequence_id
state state_name, state_id
projectId project_id
updatedAt updated_at
createdAt created_at
dueDate due_date
startDate start_date
labels label_ids
  • Added projectId field — now available in --fields output (also accessible as project_id)

Install

npm install -g https://github.com/VidGuiCode/plane-cli/releases/download/v0.2.3/plane-cli-0.2.3.tgz

Or upgrade in-place:

plane upgrade

v0.2.2

30 Mar 18:00

Choose a tag to compare

Bug fixes

Follow-up to 0.2.1 — member name/email still blank and --assignee still failing.

Root cause: The most common Plane API layout returns workspace members with display_name and email as top-level fields, and member as a plain UUID string (not an object). The 0.2.1 fix only handled two other formats (double-underscore annotations and a nested member object), missing this third shape entirely.

The three member formats now handled:

Format Fields Plane versions
Top-level flat display_name, email, member: "uuid" Most current versions
Double-underscore member__display_name, member__email Some older versions
Nested object member: { id, display_name, email } Some versions

getMemberId also updated: when member is a string UUID, that string is returned as the user UUID for assignee filtering (instead of falling back to the membership record id).

Install

npm install -g https://github.com/VidGuiCode/plane-cli/releases/download/v0.2.2/plane-cli-0.2.2.tgz

Or upgrade in-place:

plane upgrade