Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
a1f8686
feat(v2): add the complete api_v2 surface — 120 resource groups, 406 …
Prashant-Surya Aug 22, 2026
3a244c0
feat(v2): link/unlink type properties, add/remove bridges, slug/key l…
Prashant-Surya Sep 3, 2026
611c2b4
feat(v2): reshape the kernel for the flat path shape
Prashant-Surya Sep 8, 2026
f85e889
feat(v2): add the loaded-row machinery, typed through generics
Prashant-Surya Sep 8, 2026
74ce55d
feat(v2): migrate the exemplars — states, labels, projects, work item…
Prashant-Surya Sep 8, 2026
b2ed095
test(v2): port the four rule sweeps, enumerating rather than selecting
Prashant-Surya Sep 8, 2026
4678640
test(v2): check every overload's parameter names, not just the first
Prashant-Surya Sep 8, 2026
3a6bd77
fix(v2): record which resource an owned view wraps, so the sweep can …
Prashant-Surya Sep 8, 2026
420938f
feat(v2): flat form for the read-only workspace resources
Prashant-Surya Sep 8, 2026
f26204e
feat(v2): flat form for the workspace and project CRUD leaves
Prashant-Surya Sep 8, 2026
4ba4512
feat(v2): flat form for the awkward workspace and project leaves
Prashant-Surya Sep 8, 2026
075715f
feat(v2): flat form for intakes and the project worklog summary
Prashant-Surya Sep 8, 2026
111221f
feat(v2): flat form for the work item children, and a row that reache…
Prashant-Surya Sep 8, 2026
1f373c1
docs(v2): say what the locators are for now that most of what they ho…
Prashant-Surya Sep 8, 2026
f58999b
docs: task 2 report
Prashant-Surya Sep 8, 2026
4589433
test(v2): enumerate the navigation sweep instead of selecting into it
Prashant-Surya Sep 8, 2026
fdd78f2
test(v2): tie every method name to an operations key, not just the go…
Prashant-Surya Sep 8, 2026
76e24e6
fix(v2): refuse a shadowed row field, and stop throwing in minified b…
Prashant-Surya Sep 8, 2026
1e3d059
fix(v2): stop `iterate` claiming fields the projection dropped
Prashant-Surya Sep 8, 2026
3aab31d
feat(v2): regenerate the golden from preview, and reach the filter it…
Prashant-Surya Sep 8, 2026
c508197
docs: sweep hardening and golden refresh report
Prashant-Surya Sep 8, 2026
8898120
feat(v2): sweep the query filters the golden declares
Prashant-Surya Sep 8, 2026
6519940
feat(v2): implement workspaces_retrieve and the workspace root
Prashant-Surya Sep 8, 2026
1347b3f
docs: query-filter sweep and workspace-root report
Prashant-Surya Sep 8, 2026
450720c
test(v2): sweep the sort orders the golden declares
Prashant-Surya Sep 8, 2026
c3f9d33
feat(v2): give the project band a root, and sweep both bands the same…
Prashant-Surya Sep 8, 2026
af2d205
feat(v2): flat form and navigable rows for cycles, modules, milestone…
Prashant-Surya Sep 8, 2026
48095a5
feat(v2): flat form and navigable rows for work item types and proper…
Prashant-Surya Sep 8, 2026
52f60de
feat(v2): flat form and navigable rows for workflows and both automat…
Prashant-Surya Sep 8, 2026
23bbc54
feat(v2): migrate the last nineteen classes; the opt-out list is empty
Prashant-Surya Sep 8, 2026
794b82a
fix(v2): close the one-time-secret projection, raise the floors, refr…
Prashant-Surya Sep 8, 2026
374e71a
fix(v2): make every method that takes `fields` narrow to them
Prashant-Surya Sep 8, 2026
d809f40
test(v2): derive both bands from URL templates, not from the locators
Prashant-Surya Sep 8, 2026
c913dc6
test(v2): pin what the types resolve to, three navigations deep
Prashant-Surya Sep 8, 2026
b4c5f6f
build: regenerate the export snapshot — 277 additions, 0 removals
Prashant-Surya Sep 8, 2026
ed27730
docs: rewrite README and CLAUDE.md for the finished surface, and chec…
Prashant-Surya Sep 8, 2026
8924d44
fix(v2): keep `secret_key` on a projected webhook create
Prashant-Surya Sep 8, 2026
9e87903
test(e2e): move the support layer and the small suites onto the flat …
Prashant-Surya Sep 8, 2026
0fdec94
test(e2e): run the shared behavior suites over both ways in
Prashant-Surya Sep 8, 2026
fba2d9d
test(e2e): migrate the project/workspace-scoped suites off the locato…
Prashant-Surya Sep 8, 2026
1946c3e
test(e2e): drive the cycle/module/milestone bridges three navigations…
Prashant-Surya Sep 8, 2026
149e124
test(e2e): reach the work item families from a fetched work item row
Prashant-Surya Sep 8, 2026
2c4e916
test(e2e): keep the work item type flows flat, deliberately
Prashant-Surya Sep 8, 2026
6ad46b7
test(e2e): drive customers, workflows and properties off their own rows
Prashant-Surya Sep 8, 2026
99300d6
fix(v2): route `Webhooks.create` through `load()` so a created webhoo…
Prashant-Surya Sep 8, 2026
b96522f
test(e2e): migrate releases, automations, initiatives and templates
Prashant-Surya Sep 8, 2026
5ada83c
test(e2e): finish the refresh — full scenario, type flows, and the re…
Prashant-Surya Sep 8, 2026
a6a1173
refactor(v2)!: delete the locator chain and the duplicate `v2.project…
Prashant-Surya Sep 8, 2026
8ab02b7
feat(v2): make the whole pagination envelope reachable, and sweep for it
Prashant-Surya Sep 8, 2026
7ee6e86
refactor(v2): align the naming the two SDKs disagreed on
Prashant-Surya Sep 8, 2026
230f67e
test(v2): commit the sweeps that were only ever run, and close four h…
Prashant-Surya Sep 8, 2026
a8cb0dd
docs+build: fix the samples that do not compile, and stop shipping in…
Prashant-Surya Sep 8, 2026
310a1d3
fix(v2)+test: export the cap the docs promise, and close the four hol…
Prashant-Surya Sep 8, 2026
e8b160c
ci+chore: run the tsconfig nothing ran, and clear four small stale st…
Prashant-Surya Sep 8, 2026
14e11d6
test(v2): sweep the two rules that were fixed at the point and never …
Prashant-Surya Sep 8, 2026
32320e9
fix(e2e): drop work item teardown that races the project fixture
Prashant-Surya Sep 9, 2026
39fea56
Merge origin/main into the v2 variant F branch
Prashant-Surya Sep 9, 2026
0fb7081
fix(ci): refresh the export snapshot, and restore the golden header path
Prashant-Surya Sep 9, 2026
3d54443
chore: untrack the internal implementation reports
Prashant-Surya Sep 9, 2026
d27ed7a
test(e2e): give the v1 suite the 429 retry the v2 suite already had
Prashant-Surya Sep 9, 2026
daf5f01
test(e2e): skip on 402, loudly, instead of failing on an unlicensed w…
Prashant-Surya Sep 9, 2026
e038cd2
test(e2e): assert what work-item-types enable actually returns
Prashant-Surya Sep 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
71 changes: 70 additions & 1 deletion .github/workflows/build-test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,27 @@ on:
- check-tests

jobs:
check-secrets:
runs-on: ubuntu-latest
outputs:
has_token: ${{ steps.check.outputs.has_token }}
steps:
- name: Check whether PLANE_EE_CHECKOUT_TOKEN is configured
# `secrets` isn't reliably available in a job-level `if:` on every runner
# context, so export the check as a step output here instead and gate the
# v2-golden-drift job on that output.
id: check
run: echo "has_token=${{ secrets.PLANE_EE_CHECKOUT_TOKEN != '' }}" >> "$GITHUB_OUTPUT"

build-lint:
runs-on: ubuntu-latest
defaults:
run:
working-directory: plane-node-sdk
steps:
- uses: actions/checkout@v4
with:
path: plane-node-sdk

- name: Set up Node.js
uses: actions/setup-node@v4
Expand All @@ -33,12 +50,64 @@ jobs:
- name: Run format
run: pnpm run check:format

# `pnpm build` compiles `tsconfig.json`, which is `src/**/*` only. This is the
# config that proves `src`, `tests/e2e` and `examples` type-check *together*, and
# until now nothing invoked it: `examples/` was compiled by no gate at all, so
# re-breaking it was invisible to CI. It runs before the build so a type error is
# reported as a type error rather than as a bundle failure.
- name: Type-check sources, e2e tests and examples
run: pnpm run check:types

- name: Run build
run: pnpm run build

- name: Run tests
- name: Run unit tests
run: pnpm run test:unit

- name: Run e2e tests
run: pnpm run test:e2e
env:
PLANE_API_KEY: ${{ secrets.PLANE_API_KEY }}
PLANE_BASE_URL: ${{ secrets.PLANE_BASE_URL }}
TEST_WORKSPACE_SLUG: ${{ vars.TEST_WORKSPACE_SLUG }}

v2-golden-drift:
needs: check-secrets
if: ${{ needs.check-secrets.outputs.has_token == 'true' }}
runs-on: ubuntu-latest
# Runs inside plane-node-sdk/ with plane-ee as a sibling dir: the generator records
# its golden path in the output header, so the relative spelling must match the
# committed one (`../plane-ee/apps/api/plane/api_v2/core/schema/openapi`).
defaults:
run:
working-directory: plane-node-sdk
steps:
- uses: actions/checkout@v4
with:
path: plane-node-sdk

- name: Set up Node.js
uses: actions/setup-node@v4

- name: Enable corepack
run: corepack enable pnpm

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Checkout plane-ee (api_v2 OpenAPI golden)
# PLANE_EE_CHECKOUT_TOKEN: fine-grained PAT with read access to makeplane/plane-ee.
# Without it this job is skipped (visibly), not failed.
uses: actions/checkout@v4
with:
repository: makeplane/plane-ee
ref: preview
token: ${{ secrets.PLANE_EE_CHECKOUT_TOKEN }}
sparse-checkout: apps/api/plane/api_v2/core/schema/openapi
sparse-checkout-cone-mode: false
path: plane-ee

- name: Check generated v2 constants against the api_v2 golden
run: |
pnpm codegen:v2 ../plane-ee/apps/api/plane/api_v2/core/schema/openapi
git diff --exit-code src/api/v2/generated/constants.ts
5 changes: 5 additions & 0 deletions .github/workflows/publish-node-sdk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@ jobs:
- name: Run Build
run: pnpm build

# A `workflow_dispatch` could publish a red tree: `pnpm build` gates the type
# bundle's export snapshot but runs no test at all.
- name: Run unit tests
run: pnpm test:unit

- name: Publish to npm
run: npm publish --access public

Expand Down
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ dist
.env
.env.test
env
.DS_Store
.DS_Store
.superpowers/
18 changes: 18 additions & 0 deletions .oxlintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,24 @@
"node": true
}
},
{
"files": ["scripts/**"],
"rules": {
"no-console": "off"
}
},
// Deliberately narrow: covers e2e cleanup logging only (a test-support helper
// that warns on a best-effort cleanup failure is doing the right thing). Does
// NOT extend to tests/** generally -- pre-existing `console` warnings elsewhere
// under tests/ (e.g. stray console.log calls in v1 test files) are intentionally
// left visible; a broader tests/** override would silence ~70 of them and turn
// the lint count from a tripwire into a number nobody can trust again.
{
"files": ["tests/e2e/v2/support/**"],
"rules": {
"no-console": "off"
}
},
{
"files": ["**/*.ts", "**/*.tsx", "**/*.mts", "**/*.cts"],
"rules": {
Expand Down
Loading
Loading