@crvouga/mockingbird-service-plane 2.1.0 → 2.2.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 +12 -4
- package/README.md +18 -1
- package/SUPPORT.md +8 -3
- package/dist/{chunk-4RCG3YYZ.js → chunk-EQQXMBQ4.js} +2 -2
- package/dist/{chunk-NSDJM2TL.js → chunk-ZF6D32HZ.js} +317 -14
- package/dist/chunk-ZF6D32HZ.js.map +7 -0
- package/dist/cli.js +2 -2
- package/dist/index.d.ts +66 -6
- package/dist/index.js +1 -1
- package/dist/server.d.ts +61 -1
- package/dist/server.js +2 -2
- package/openapi.yaml +445 -1
- package/package.json +1 -1
- package/dist/chunk-NSDJM2TL.js.map +0 -7
- /package/dist/{chunk-4RCG3YYZ.js.map → chunk-EQQXMBQ4.js.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog — @crvouga/mockingbird-service-plane
|
|
2
2
|
|
|
3
|
+
## 2.2.0 (2026-10-05)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- add scripted local API mock ([4a76a11](https://github.com/crvouga/mockingbird/commit/4a76a114e2efad45934e0a93cf29576fd418e15c))
|
|
8
|
+
- preserve work-item type assignments ([d25f554](https://github.com/crvouga/mockingbird/commit/d25f5549df8485cf0a577cdb7145354fc6eacac0))
|
|
9
|
+
- model cycles and work-item membership ([4186f59](https://github.com/crvouga/mockingbird/commit/4186f59ccf0cf12332a77cf95aa5c77cfe26f556))
|
|
10
|
+
|
|
11
|
+
### Fixes and improvements
|
|
12
|
+
|
|
13
|
+
- support embedded route parameters ([127cad9](https://github.com/crvouga/mockingbird/commit/127cad997ef106950c1b866070eea191ba54403f))
|
|
14
|
+
|
|
3
15
|
## 2.1.0 (2026-10-04)
|
|
4
16
|
|
|
5
17
|
### Features
|
|
@@ -12,10 +24,6 @@
|
|
|
12
24
|
- fill the embedded viewport ([c1a35a4](https://github.com/crvouga/mockingbird/commit/c1a35a4789389ee9cd06c286d09bd47c4d06c71e))
|
|
13
25
|
- make dialog cleanup immediate ([0c1a3c5](https://github.com/crvouga/mockingbird/commit/0c1a3c5b12584d50c19dcae595b951b8e5417b9c))
|
|
14
26
|
|
|
15
|
-
### Dependencies
|
|
16
|
-
|
|
17
|
-
- `@crvouga/mockingbird-service-sqlite`
|
|
18
|
-
|
|
19
27
|
## 2.0.0 (2026-10-04)
|
|
20
28
|
|
|
21
29
|
### ⚠️ Breaking changes
|
package/README.md
CHANGED
|
@@ -72,6 +72,21 @@ workspace's slug (`acme` in the examples).
|
|
|
72
72
|
| `GET` / `POST work-items/{id}/links/` | `{url, title?}` → 201 link; the same URL twice is 409 `{error, id}`. |
|
|
73
73
|
| `GET states/` | The project's workflow states (`id`, `name`, `group`, `color`, `sequence`, `default`). |
|
|
74
74
|
| `GET` / `POST labels/` | `{name, color?, description?}` → 201 label; a duplicate name is 409 `{error, id: <existing>}`. |
|
|
75
|
+
| `GET` / `POST cycles/` | Create with `{name, description?, start_date?, end_date?, external_source?, external_id?}`. Both dates must be present or null. Lists use the cursor envelope (default 20 rows); `cycle_view=current` returns a bare array. Other views: `all`, `upcoming`, `completed`, `draft`, `incomplete`. |
|
|
76
|
+
| `GET` / `POST cycles/{id}/cycle-issues/` | POST `{issues: [<work item UUID>]}` adds or moves items and returns membership rows, without duplicates. GET returns paginated work items with their latest fields. Unknown/foreign item IDs are ignored; missing cycles are 404. Completed cycles reject additions with `CYCLE_COMPLETED`. |
|
|
77
|
+
| `GET work-item-types/` | A bare array of seeded type metadata, including stable UUIDs, names, `project_ids`, default/active flags and timestamps. This endpoint has no cursor pagination. |
|
|
78
|
+
|
|
79
|
+
Seed types through `POST /__admin/work-item-types`, then send `type_id` on work-item create or
|
|
80
|
+
patch. GET returns both `type_id` and `type`, as Plane's
|
|
81
|
+
[work-item serializer](https://github.com/makeplane/plane/blob/c7a5afee6afd15f16038ebda1ec1489ebd8af67d/apps/api/plane/api/serializers/issue.py)
|
|
82
|
+
does. Unknown IDs fail with a DRF `type_id` error before any field or sequence number changes.
|
|
83
|
+
Creation inherits a seeded default type; an explicit patch `type_id: null` clears it.
|
|
84
|
+
|
|
85
|
+
Cycle dates use UTC project days and the mock clock, following Plane's
|
|
86
|
+
[cycle endpoint](https://github.com/makeplane/plane/blob/c7a5afee6afd15f16038ebda1ec1489ebd8af67d/apps/api/plane/api/views/cycle.py)
|
|
87
|
+
and [date converter](https://github.com/makeplane/plane/blob/c7a5afee6afd15f16038ebda1ec1489ebd8af67d/apps/api/plane/utils/timezone_converter.py):
|
|
88
|
+
future/past starts are 00:00:01, today's start is the creation time, and ends are 23:59:00.
|
|
89
|
+
The current filter includes both endpoints. Cycle counts follow work-item state changes.
|
|
75
90
|
|
|
76
91
|
Errors: no key 401 `{"detail": "Authentication credentials were not provided."}`, a key outside
|
|
77
92
|
`apiKeys` 401 `{"detail": "Given API token is not valid"}`, unknown item/project 404
|
|
@@ -85,6 +100,7 @@ throttled. Expected available in N seconds."}` with `x-ratelimit-*` headers.
|
|
|
85
100
|
| `POST /__admin/work-items/:id/state` | `{state: "<id or name>"}`: move an item (e.g. to `Done`) as a teammate would. |
|
|
86
101
|
| `GET /__admin/work-items` | The namespace's work items. |
|
|
87
102
|
| `POST /__admin/projects` | `{workspace, project}`: provision a project now; answers its states and labels. |
|
|
103
|
+
| `POST /__admin/work-item-types` | `{workspace, project, types: [{name, description?, is_default?}]}`: seed project type metadata with stable IDs; repeat calls update metadata and preserve creation time. Types start empty. Invalid batches do not partially write. |
|
|
88
104
|
| `GET/PUT /__admin/settings` | `{apiKeys?, rateLimitPerMinute?: number \| null, projects?: ["<slug>/<uuid>"]}`. `rateLimitPerMinute: 60` reproduces Plane's limit on the mock clock; `projects` pins which projects exist (others 404). |
|
|
89
105
|
|
|
90
106
|
Fault presets (`POST /__admin/faults {"preset": "<name>", "count"?: n}`): `rate_limited` (429),
|
|
@@ -101,9 +117,10 @@ never retried.
|
|
|
101
117
|
|
|
102
118
|
### Deliberately not modelled
|
|
103
119
|
|
|
104
|
-
- Plane webhooks (our app polls),
|
|
120
|
+
- Plane webhooks (our app polls), cycle editing/deletion and non-UTC project timezones, modules, pages, intake, attachments, members,
|
|
105
121
|
estimates, worklogs, and `expand=`.
|
|
106
122
|
- Deleting work items, comments, links or labels; archiving.
|
|
123
|
+
- Vendor work-item type administration, custom type schemas, epics and cross-project type sharing. Seed types with the admin control for this list/assignment surface.
|
|
107
124
|
- Rich-text processing: `description_stripped` / `comment_stripped` are tag-stripped text.
|
|
108
125
|
|
|
109
126
|
## API
|
package/SUPPORT.md
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Generated from `openapi.yaml`; do not edit by hand.
|
|
4
4
|
|
|
5
|
-
- operations in spec: **
|
|
6
|
-
- supported by the mock: **
|
|
7
|
-
- parity enabled: **
|
|
5
|
+
- operations in spec: **16**
|
|
6
|
+
- supported by the mock: **16**
|
|
7
|
+
- parity enabled: **16**
|
|
8
8
|
|
|
9
9
|
| operationId | route | mock | parity | notes |
|
|
10
10
|
| --- | --- | --- | --- | --- |
|
|
@@ -19,3 +19,8 @@ Generated from `openapi.yaml`; do not edit by hand.
|
|
|
19
19
|
| `ListStates` | `GET /api/v1/workspaces/{slug}/projects/{project_id}/states/` | ✅ supported | ✅ | |
|
|
20
20
|
| `ListLabels` | `GET /api/v1/workspaces/{slug}/projects/{project_id}/labels/` | ✅ supported | ✅ | |
|
|
21
21
|
| `CreateLabel` | `POST /api/v1/workspaces/{slug}/projects/{project_id}/labels/` | ✅ supported | ⚠️ unsafe (opt-in) | |
|
|
22
|
+
| `ListCycles` | `GET /api/v1/workspaces/{slug}/projects/{project_id}/cycles/` | ✅ supported | ✅ | |
|
|
23
|
+
| `CreateCycle` | `POST /api/v1/workspaces/{slug}/projects/{project_id}/cycles/` | ✅ supported | ⚠️ unsafe (opt-in) | |
|
|
24
|
+
| `ListCycleWorkItems` | `GET /api/v1/workspaces/{slug}/projects/{project_id}/cycles/{cycle_id}/cycle-issues/` | ✅ supported | ✅ | |
|
|
25
|
+
| `AddCycleWorkItems` | `POST /api/v1/workspaces/{slug}/projects/{project_id}/cycles/{cycle_id}/cycle-issues/` | ✅ supported | ⚠️ unsafe (opt-in) | |
|
|
26
|
+
| `ListWorkItemTypes` | `GET /api/v1/workspaces/{slug}/projects/{project_id}/work-item-types/` | ✅ supported | ✅ | |
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
createRuntime,
|
|
4
4
|
parseDuration,
|
|
5
5
|
resolveAdminPrefix
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-ZF6D32HZ.js";
|
|
7
7
|
|
|
8
8
|
// ../../adapters/node/dist/cli.js
|
|
9
9
|
import { readFile as readFile2 } from "node:fs/promises";
|
|
@@ -843,4 +843,4 @@ export {
|
|
|
843
843
|
createServer2 as createServer,
|
|
844
844
|
serveTarget
|
|
845
845
|
};
|
|
846
|
-
//# sourceMappingURL=chunk-
|
|
846
|
+
//# sourceMappingURL=chunk-EQQXMBQ4.js.map
|