i-plane 1.0.2 → 1.1.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.
@@ -0,0 +1,114 @@
1
+ # API coverage
2
+
3
+ Paths below are relative to `/api/v1/workspaces/{workspace_slug}/`. The command
4
+ registry defines the supported CLI surface, including value flags and aliases;
5
+ `tests/registry.test.ts` checks it against the dispatch table and exercises the
6
+ actual handlers. `tests/cli.test.ts` verifies the entry point's flag validation.
7
+
8
+ | Resource | Supported operations | CLI |
9
+ | --- | --- | --- |
10
+ | Projects | GET/POST `projects/`; PATCH/DELETE `projects/{project}/`; POST `projects/{project}/archive/` | `projects`, `project create`, `project update`, `project rm`, `project archive` |
11
+ | Work items | GET/POST `projects/{project}/issues/`; GET/PATCH/DELETE `projects/{project}/issues/{issue}/`; GET `issues/{ref}/` | `list`, `create`, `show`, `update`, `done`, `delete` |
12
+ | Work item fields | `parent`, `assignees`, `labels`, `start_date`, `target_date`, `name`, `state`, `priority`, `description_html` | `create` and `update` flags; `done` forwards update fields except state |
13
+ | Labels | GET/POST `projects/{project}/labels/`; DELETE `projects/{project}/labels/{label}/` | `labels`, `label create`, `label rm` |
14
+ | States | GET/POST `projects/{project}/states/`; PATCH/DELETE `projects/{project}/states/{state}/` | `states`, `state create`, `state update`, `state rm` |
15
+ | Comments | GET/POST `projects/{project}/issues/{issue}/comments/` | `comments`, `comment`, `show --comments` |
16
+ | Cycles | GET/POST `projects/{project}/cycles/`; PATCH `projects/{project}/cycles/{cycle}/`; GET `projects/{project}/cycles-lite/`; GET/POST `projects/{project}/cycles/{cycle}/cycle-issues/`; POST `projects/{project}/cycles/{cycle}/transfer-issues/` | `cycles`, `cycle create`, `cycle update`, `cycle add`, `cycle issues`, `cycle transfer` |
17
+ | Modules | GET/POST `projects/{project}/modules/`; GET `projects/{project}/modules-lite/`; GET/POST `projects/{project}/modules/{module}/module-issues/` | `modules`, `module create`, `module add`, `module issues` |
18
+ | Intake | GET/POST `projects/{project}/intake-issues/`; GET/PATCH/DELETE `projects/{project}/intake-issues/{issue}/` | `intake list`, `intake create`, `intake show`, `intake update`, `intake rm` |
19
+ | Project features | `cycle_view`, `module_view`, `intake_view` on project POST/PATCH | `project create` and `project update`: `--cycles`, `--modules`, `--intake` |
20
+ | Search | GET `issues/search/` | `search` |
21
+ | Members | GET `members-lite/` | `members`, named assignee resolution |
22
+ | Current user | GET `/api/v1/users/me/` | `whoami` |
23
+ | Summary | GET `projects/{project}/summary/` | `summary` |
24
+
25
+ The compatibility target uses the `issues/` routes. The current public
26
+ [work item reference](https://developers.plane.so/api-reference/issue/overview)
27
+ documents `work-items/` instead. A route migration must be verified against the
28
+ target server; do not change paths solely to match a newer documentation release.
29
+
30
+ ## What modules and intake are for
31
+
32
+ A module groups work toward a feature, milestone or other goal and may span
33
+ several cycles. A cycle is a time window. Work items can belong to multiple
34
+ modules. A module's lead and members are separate from work item assignees.
35
+ The module status describes its overall planning stage; work item states show
36
+ individual progress. See [Plane's module guide](https://docs.plane.so/core-concepts/modules).
37
+
38
+ Intake is a queue for reports and requests that have not yet been accepted into
39
+ project work. Requests start in Triage with a pending decision. They can be
40
+ accepted, rejected, snoozed or linked to an existing work item as a duplicate.
41
+ This keeps undecided requests out of committed work. See the
42
+ [intake overview](https://docs.plane.so/intake/overview).
43
+
44
+ | Resource | Plane fields | Current CLI support |
45
+ | --- | --- | --- |
46
+ | Module | Name, description, overall status, start/due dates | `module create` with name, `--description`, `--status`, `--start`, `--due` |
47
+ | Module ownership | Lead and members | Available in the API/UI; not set by this CLI |
48
+ | Module contents | Related work items | `module add`, `module issues`; membership can overlap across modules |
49
+ | Intake request | Title, description, priority | `intake create`; `intake update --name`, `--description`, `--priority` |
50
+ | Intake decision | Pending, rejected, snoozed, accepted, duplicate; snooze deadline; duplicate target | `intake update --status`, `--snooze-until`, `--duplicate-of` |
51
+ | Intake work properties | Assignees, labels, due date and other UI properties | Not exposed by intake commands; use normal `update` after acceptance |
52
+ | Intake channels | In-app submissions, public forms, email | CLI submits through the API; it does not configure forms/email |
53
+
54
+ The UI guide and API defaults are not interchangeable. The module guide says
55
+ new modules start in Backlog, while the tested API instance returned `planned`
56
+ when status was omitted. CLI examples therefore specify `--status planned`.
57
+ The UI can choose a work item state while accepting an intake request; the
58
+ current CLI/API acceptance path moves it to the default project state. A normal
59
+ `update --state` can then select a different state.
60
+
61
+ A focused check of the published CLI confirmed that adding a work item to a
62
+ second module preserves its first membership, and that intake acceptance moves
63
+ a request from pending/Triage into the normal Backlog state on the tested
64
+ instance. Temporary check data was deleted.
65
+
66
+ Field references: [module creation](https://developers.plane.so/api-reference/module/add-module),
67
+ [intake properties](https://docs.plane.so/core-concepts/intake), and
68
+ [intake updates](https://developers.plane.so/api-reference/intake-issue/update-intake-issue-detail).
69
+
70
+ ## Compatibility details
71
+
72
+ Enabling intake on project creation requires a follow-up project PATCH to create
73
+ the queue. A creation flag alone can leave `intake_view=true` without an intake
74
+ record, causing the first submission to fail with HTTP 500. The CLI initializes
75
+ the queue explicitly and reports partial setup without encouraging a duplicate
76
+ project creation.
77
+
78
+ Cycle updates explicitly preserve `owned_by` when no owner is supplied: some
79
+ servers otherwise default it to the requesting user. Calendar dates are formatted
80
+ in the project's timezone; the JSON model keeps the API timestamps.
81
+
82
+ Expired snoozes can be filtered out of intake GET and ordinary triage work item
83
+ lookup. Update and delete therefore accept underlying work item UUIDs without
84
+ requiring an intake GET. A hidden readable reference cannot be resolved by these
85
+ API endpoints; the diagnostic points to `issueId` from an earlier JSON response.
86
+
87
+ ## Remaining gaps
88
+
89
+ - Label updates and comment updates/deletions are not exposed.
90
+ - Cycle/module archive, delete and membership removal are not exposed; module
91
+ details cannot yet be edited. The planning tasks cover listing, creation,
92
+ membership and cycle transfer.
93
+ - This is an inventory of the implemented surface, not a claim to cover every
94
+ endpoint in every edition of Plane.
95
+
96
+ ## Adding a command
97
+
98
+ 1. Add the command and all options to `src/registry.ts`. The parser gets value
99
+ flags from the registry, including those of multiword commands.
100
+ 2. Add an online handler to `src/dispatch.ts`. Both missing handlers and handlers
101
+ absent from the registry fail the command-set test.
102
+ 3. Add a fixture invocation and valid option values to the registry suite. Test
103
+ the requested method, path and body, and assert observable output. Merely
104
+ accepting a flag in `--help` is insufficient.
105
+ 4. Extend the live acceptance script when the command contributes to project
106
+ setup. Verify writes by reading them back, and clean up temporary data.
107
+ 5. Update this table and README examples.
108
+
109
+ Reference: [projects](https://developers.plane.so/api-reference/project/add-project),
110
+ [labels](https://developers.plane.so/api-reference/label/add-label),
111
+ [states](https://developers.plane.so/api-reference/state/add-state),
112
+ [cycles](https://developers.plane.so/api-reference/cycle/transfer-cycle-work-items),
113
+ [modules](https://developers.plane.so/api-reference/module/add-module),
114
+ [intake](https://developers.plane.so/api-reference/intake-issue/overview).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "i-plane",
3
- "version": "1.0.2",
3
+ "version": "1.1.1",
4
4
  "description": "CLI \u0434\u043b\u044f Plane \u0441 \u043f\u043b\u043e\u0442\u043d\u044b\u043c \u0432\u044b\u0432\u043e\u0434\u043e\u043c \u043f\u043e\u0434 \u0430\u0433\u0435\u043d\u0442\u0430",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -17,6 +17,7 @@
17
17
  },
18
18
  "files": [
19
19
  "dist",
20
+ "docs/api-coverage.md",
20
21
  "AGENTS.md",
21
22
  "CLAUDE.md"
22
23
  ],