Skip to content

feat: add Planelet API#1

Merged
ThatXliner merged 22 commits into
mainfrom
codex/plugin-api-v2
May 30, 2026
Merged

feat: add Planelet API#1
ThatXliner merged 22 commits into
mainfrom
codex/plugin-api-v2

Conversation

@EvanZhouDev
Copy link
Copy Markdown
Collaborator

No description provided.

ThatXliner and others added 20 commits May 30, 2026 08:29
PODMAN-SPECIFIC FIX. The dev compose stack failed to start under
Podman: `links` is unsupported ("link is not supported"), and the
`/tmp:/tmp` bind-mount inherited Podman rootless UID mapping so
container root could not write to /tmp, breaking `go build`.

Drop the deprecated/redundant `links` (compose DNS already resolves
services by name), drop the /tmp bind-mount (container gets its own
writable /tmp), and add `init: true` so tini reaps orphaned watcher
processes. All harmless under Docker.
PODMAN-SPECIFIC FIX. `make dev.server` launches the entrypoint via
`compose exec -d`. Under Podman, when the detached exec session
leader exits, the whole exec process group is SIGKILLed — so air,
vite, and the Go server they spawn die the moment the script returns,
leaving the app unreachable (502 from the Go proxy to a dead Vite).

Run each watcher under `setsid` so it lives in its own session and
survives the exec teardown. Redirect output to /app/tmp logs since
the detached session has no terminal. Harmless under Docker.
The SDK example installs a copy of the plugin-sdk into
sdk/example/node_modules, which itself contains example/node_modules
— an infinite recursive directory loop. Air walked it forever and
never built the server. The existing `node_modules` exclude only
matches the top level, not this nested path; exclude `sdk` outright
since it is TypeScript, not Go.
The plugin concept is branded "Planelets" in the canvas UI. Align the
backend so identifiers match the product name: package, directory,
registry key, integration type name, and the node IDs/event types
emitted on the wire (plugin.onEvent -> planelet.onEvent, etc.).

Safe to change the wire identifiers now since nothing uses the
integration yet — no existing canvases reference the old IDs.
Match the "Planelets" product branding used in the canvas UI and the
renamed backend integration. Renames the npm package
(@superplane/plugin-sdk -> @superplane/planelet-sdk), the public API
(createPlugin -> createPlanelet, PluginServer -> PlaneletServer,
PluginOptions -> PlaneletOptions), and the example that consumes it.
Follow the package and integration rename so the docs reference the
current @superplane/planelet-sdk API and "Planelets" canvas labels.
The example installs the SDK via `file:../`, which recreates the
parent (including example/node_modules) inside the install tree —
an infinite nesting that must never be committed.
"github.com/superplanehq/superplane/test/support/contexts"
)

func Test__Client__ExecuteActionUsesV2Endpoint(t *testing.T) {
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why is this called V2

@EvanZhouDev EvanZhouDev changed the title Planelet API v2 feat: add Planelet API May 30, 2026
@EvanZhouDev EvanZhouDev deleted the codex/plugin-api-v2 branch May 30, 2026 19:47
@EvanZhouDev EvanZhouDev restored the codex/plugin-api-v2 branch May 30, 2026 19:48
@EvanZhouDev EvanZhouDev reopened this May 30, 2026
@ThatXliner ThatXliner merged commit 4f2e6af into main May 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants