Releases: superplanehq/superplane
SuperPlane v0.16.0
What's new since v0.15.0
17 new components and triggers
- Grafana: Create Alert Rule, Delete Alert Rule, Get Alert Rule, List Alert Rules, Update Alert Rule, Create Annotation, List Annotations, Delete Annotation, Create Silence, Delete Silence, Get Silence, List Silences
- DigitalOcean: Create Knowledge Base, Attach Knowledge Base, Detach Knowledge Base, Delete Knowledge Base, Run Evaluation
Agent groundwork
Much of the work in this release is groundwork for canvas agents, a built-in AI assistant that helps you build and debug canvases. It is still experimental, and not available on self-hosted installations. A future release will announce when that status changes.
- Agents: Canvas-level shared long-term memory so agents keep context across the same canvas.
- Agents: A validate-and-repair loop helps the agent fix invalid proposals before they are applied.
- Agents: Prompt caching improves responsiveness and efficiency for agent conversations.
- Agents: The thinking section collapses when the reply is complete so the thread stays easy to scan.
- Agents: The agent can use tools to inspect node details, runs, and events while helping you edit a canvas.
Improvements
- CLI:
canvases initgenerates starter canvas YAML for new projects. - CLI: List-style commands default to compact summary JSON or YAML output.
- Wait and Time Gate: Push-through actions use the same custom-field pattern as approvals for a clearer configuration flow.
Bug Fixes
- Fixed: Canvas nodes jumped during autosave while dragging.
- Fixed: Single-host tarball environment template now documents
ENABLE_PASSWORD_LOGIN. - Fixed: The building blocks sidebar could not be closed when the rest of the panel was disabled.
- Fixed: CLI described missing components and triggers with raw 404s
- Fixed:
root_eventpayload size raised to 64 KiB for larger trigger payloads. - Fixed: Smoother animations for agent tool calls in the chat UI.
Merged Pull-Requests
- chore: Remove code paths in Group Membership that could never be executed by @shiroyasha in #3930
- fix: Re-add missing htmlFor tags by @shiroyasha in #3931
- chore: Better specify several any types by @shiroyasha in #3936
- chore: Simplify and split up the sidebar component by @shiroyasha in #3937
- fix: Canvas nodes teleporting during autosave + dragging by @forestileao in #3938
- fix: draft resetting on tab switch by @forestileao in #3939
- fix: merge realtime updates not working by @lucaspin in #3940
- chore: cleanup expression execution inside of components by @lucaspin in #3941
- chore: cleanup mappers for if / filter by @lucaspin in #3942
- chore: Introduce BUGBOT rules by @shiroyasha in #3947
- chore: remove CanvasNodeExecution.input field by @lucaspin in #3951
- chore: update API listing limits by @lucaspin in #3952
- chore: remove __type=semaphoreBlocks from ChainItem by @lucaspin in #3953
- chore: do not use ApprovalTimelineEntry in merge mapper by @lucaspin in #3954
- chore: Dev Image for SuperPlane by @shiroyasha in #3959
- chore: Use dev image in development, CI and release building by @shiroyasha in #3962
- chore: Use caching and split into two base dev images by @shiroyasha in #3964
- chore: include user permissions in /me response by @lucaspin in #3967
- chore: remove ListUserRoles endpoint by @lucaspin in #3969
- fix: harden canvas editor runtime and add frontend regression coverage by @forestileao in #3971
- fix: 503 error on agent chat endpoints due to gRPC connection leak by @forestileao in #3974
- fix: 500 error on list group users for non-existent groups by @forestileao in #3977
- chore(ui): rm pages/custom-component by @lucaspin in #3978
- fix: 500 error on list integration resources for missing integrations by @forestileao in #3975
- chore: Refresh readme by @markoa in #3981
- chore(ui): rm pages/node-run by @lucaspin in #3980
- chore(ui): remove unused props from component sidebar by @lucaspin in #3985
- chore(deps): bump lodash from 4.17.23 to 4.18.1 in /web_src by @dependabot[bot] in #3984
- chore: Re-add npm run build to CI by @shiroyasha in #3986
- fix: revert Monaco bootstrap introduced in #3971 by @forestileao in #3988
- fix: 500 error on canvas version update when canvas is deleted by @forestileao in #3976
- chore: Avoid gracefull shutdown of agents in dev and test by @shiroyasha in #3989
- fix: reduce UI build memory usage by narrowing tree-shaking icon resolution by @forestileao in #3987
- fix: cli usage get inconsistencies by @Vukotije in #3979
- chore: Reduce total duration of flaky test runs by @shiroyasha in #3993
- fix: unable to edit notes by @forestileao in #3992
- chore: ListUsers returns roles only when include_roles is used by @lucaspin in #3990
- chore: remove ListUserRoles messages from API by @lucaspin in #3994
- fix: translate raw HTTP status errors into actionable CLI messages by @Vukotije in #3991
- fix: change request description is not shown by @forestileao in #3995
- chore: Set up a semaphore YAML for releasing the app image by @shiroyasha in #4000
- fix: be able to close building blocks sidebar when rest of it is disabled by @forestileao in #4004
- chore: refactor approval to not rely on ComponentAdditionalDataBuilder by @lucaspin in #3996
- feat: add DigitalOcean Gradient AI components by @gaga1307 in #3896
- fix: add missing icons to registry by @forestileao in #4007
- fix: TypeError: z.substring is not a function by @forestileao in #4005
- chore: rm IssueListEntry and PagerDutyIncidentEntry from ChainItem by @lucaspin in #4009
- chore(ui): use ExecutionInfo on state functions by @lucaspin in #4010
- feat: CLI list commands default to summary JSON/YAML output by @Vukotije in #4006
- fix: increase root_event size to 64KiB by @forestileao in #4011
- chore(ui): remove DetailValue and ErrorValue from ChainItem by @lucaspin in #4013
- chore: Introduce agent health check endpoint by @shiroyasha in #4015
- chore: Introduce docker-entrypoint for agents by @shiroyasha in #4014
- fix: integration resource listing causing error 5xx by @forestileao in #4012
- feat: Add CI lint for example payloads and enforce event envelope format by @forestileao in #4020
- feat: use custom field for push-through action by @lucaspin in #4021
- chore(ui): remove unused props from CanvasPage and sub-components by @lucaspin in #4024
- chore: Transition from VITE_ to AGENT_ENABLED env var by @shiroyasha in #4029
- feat: allow running a subset of agent evals by case name by @re-pixel in #4032
- fix: casbin rule index name by @forestileao in #4037
- fix: 404s when describing component/trigger that does not exist by @lucaspin in #4038
- feat: add go coverage checker by @forestileao in #4040
- fix: improve index lookup error by @Vukotije in #3999
- chore: add logs to semaphore run workflow state and result by @forestileao in #4044
- feat: add agent tools for in...
v0.15.0
What's new since v0.14.0
Canvas and editor stability
This release includes a broad set of canvas quality improvements focused on reliability and UX. Autosave behavior was refined and stabilized across blur/change flows, local save refetches were suppressed, crashes from undefined labels and HTML error payloads were prevented, and mapper hardening plus error boundaries reduced the risk of canvas-wide failures. Additional UI cleanup and polish also landed across the canvas experience.
CLI improvements
The CLI became more capable and more predictable. New commands were added for managing organizations and deleting canvases, connect gained a success output, and several error cases now fail more clearly instead of exiting silently. We also added tests around canvas creation flows and improved empty-state UX.
Security and installation controls
Installation-level private network access control was added, and related configuration UX was improved in the UI. Other changes tightened auth- and policy-related workflows, including policy bot setup and review-gating behavior for core development flows.
Performance and backend work
Under the hood, this release improves execution and serialization paths, including faster node execution serialization, more efficient user lookups when serializing multiple canvases, leaner canvas event payloads, and better event invalidation behavior. There were also improvements to SSE stream draining during shutdown and CI/test environment stability.
Developer experience
We continued cleanup and maintainability work across the codebase with dead file removal, lint rule fixes, TypeScript cleanup, policy automation, better Storybook coverage, README updates, and CI additions for formatting, linting, and type checks. Integration and docs improvements also landed, including Grafana refactoring and Swagger HTTPS prioritization.
Bug fixes
- Fixed canvas autosave race conditions and related save-state inconsistencies.
- Fixed crashes from undefined workflow parameter tooltip labels.
- Fixed SSH component exit code handling.
- Fixed incorrect optional secret key “none” state normalization.
- Fixed versioningEnabled handling in canvas updates.
- Fixed DB schema alignment for Casbin.
- Fixed mapper-related failures by adding safe wrappers and error boundaries.
- Fixed CLI error handling around redirects and empty canvas creation responses.
Merged Pull-Requests
- cleanup unused functions in src/lib + add unit tests by @lucaspin in #3784
- Add agent readme by @markoa in #3809
- Add success output to connect command by @Vukotije in #3739
- Use root tmp to store eval report output by @shiroyasha in #3812
- Switch from rich.console -> print by @shiroyasha in #3813
- AI builder component misconfiguration by @re-pixel in #3814
- prioritize HTTPS on swagger by @forestileao in #3769
- Update readme to include new integrations by @AleksandarCole in #3822
- Introduce evaluation log by @shiroyasha in #3823
- Extract and extend system prompt by @shiroyasha in #3826
- Update agent/README.md for factuality by @shiroyasha
- add Storybook coverage for configuration field renderers by @forestileao in #3821
- add CLI command to get and update organizations by @Vukotije in #3763
- canvas ui cleanup by @ropsii in #3825
- Agent Image Building by @shiroyasha in #3829
- Add panic-safe wrapper around integration/component/trigger mappers to prevent canvas-wide failures by @cursor[bot] in #3727
- refine canvas autosave triggers on blur/change by @ropsii in #3830
- prevent workflow parameter tooltip crash on undefined labels by @forestileao in #3840
- UI autosave race condition by @forestileao in #3835
- CLI canvases create fails loudly on http to https redirect instead of silent exit 0 by @Vukotije in #3849
- Remove server1, server2, server3 endpoints by @shiroyasha in #3852
- add installation-level private network access control by @forestileao in #3847
- Reduce agent token use and costs associated with running evals by @re-pixel in #3855
- improve error message for empty canvas creation response in CLI by @Vukotije in #3853
- Change to httpbin urls in health check example by @AleksandarCole in #3854
- Remove building block preview by @shiroyasha in #3856
- add unit tests for CLI canvases create command by @Vukotije in #3851
- Update eslint budget by @shiroyasha
- Teach agent how to use datetime expressions by @re-pixel in #3859
- remove incorrect "events" alias from whoami command by @Vukotije in #3857
- sanitize workflow auto-save errors when upstream returns HTML by @forestileao in #3858
- Set up knip and remove dead files by @shiroyasha in #3865
- move private network checkbox in separate section by @forestileao in #3867
- speed up node executions serialization by @lucaspin in #3870
- http.route metric attribute for HTTP requests by @lucaspin in #3871
- Fix a small batch of eslint issues by @shiroyasha in #3868
- Fix eqeqeq issues in Typescript by @shiroyasha in #3875
- Eliminate all @typescript-esline/no-empty-object-types by @shiroyasha in #3876
- use limit properly when listing executions by @lucaspin in #3872
- Eliminate all unused vars warnings by @shiroyasha in #3877
- stabilize workflow canvas autosave and suppress local save refetches by @forestileao in #3874
- Set up policy bot by @shiroyasha in #3878
- Policy Bot should gate + auto-request reviews by @shiroyasha in #3880
- Don't require approvals on other folders by @shiroyasha in #3881
- recognize SSH component exit codes correctly by @forestileao in #3882
- refactor grafana integration by @WashingtonKK in #3831
- improve empty-state UX and add canvases delete command by @Vukotije in #3863
- normalize optional secret key none state by @forestileao in #3889
- ListCanvasEvents should not return full execution information by @lucaspin in #3890
- Allow self-approval for core team by @shiroyasha in #3893
- move RunsConsoleContent into page-specific components folder by @lucaspin in #3894
- standardize duration formatting by @lucaspin in #3898
- Fix no constant binary expressions by @shiroyasha in #3892
- update db to correct casbin schema by @forestileao in #3906
- drain active SSE streams before agent shutdown by @0vertake in #3900
- add visual success indicator to api token copy button by @vasicm4 in #3869
- Separate dev and test rabbitmq to stabilize E2E tests by @shiroyasha in #3912
- apply versioningEnabled in canvases update by @forestileao in #3903
- harden mappers with safe wrappers by @forestileao in #3916
- run agent service unit tests in CI by @0vertake in #3913
- improve canvas root events invalidation on WebSocket events by @lucaspin in #3922
- single query for users when serializing multiple canvases by @lucaspin in #3923
- extract node preparation into dedicated lib files by @forestileao in #3917
- refactor Block component and add error boundaries by @forestileao in #3918
- add agent format/lint/type checks to CI by @0vertake in https://github.com/...
SuperPlane v0.14.0
What's new since v0.13.0
Node groups
You can now group nodes together on the canvas to organize them into logical groups.
Select multiple nodes and click the group button in the selection toolbar to group them together.
Canvas runs
A new canvas runs view is available for inspecting executions. It lists all executed runs for a canvas
and allows you to filter and search through them.
Component configuration information
In the component sidebar, you can now see information about the component configuration including the
configuration fields and the example payload.
1 new integrations
- Sentry
18 new components and triggers
- Sentry: Create Alert, Update Alert, Delete Alert, List Alerts, Get Alert, Get Issue, Create Release, Create Deploy, Update Issue, On Issue Event
- DigitalOcean: Create App, Get App, Update App, Delete App, Get Object, Put Object, Copy Object, Delete Object
Improvements
- Canvas runs: New canvas runs view for inspecting executions.
- Run configuration: Run configuration is available in the UI and can be referenced in expressions.
- Versioning UX: Clearer versioning workflows when saving and editing canvases.
- CLI updates:
--versionflag, update warnings, and improved canvas update output. - SSH: Multi-line commands are supported in the SSH component.
- Templates: Templates page improvements for faster discovery and setup.
Bug Fixes
- Fixed: Passwordless email sign-in and sign-up via magic link or access code.
- Fixed: Canvas auto-save could stay disabled on a fresh browser when versioning was enabled.
- Fixed: Conflict resolution "Accept Both Changes" could invalidate an entire canvas instead of only the affected node.
- Fixed: Invalid IDs on canvas event, execution, and queue routes no longer cause 500/501 errors.
- Fixed: CanvasCreated events are published correctly for quick starts on fresh organizations.
- Fixed: Stale canvas events no longer appear when switching between canvases without a page refresh.
- Fixed: Integration configuration updates are reflected correctly in the sidebar.
- Fixed: Node info tab no longer misses description and output details.
- Fixed: Component Settings tab auto-saves even when configuration is invalid.
- Fixed: HTTP execution subtitles handle undefined response statuses.
- Fixed: DigitalOcean Delete Droplet handles droplet IDs consistently and avoids invalid input conversions.
Merged Pull-Requests
- chore: Simplify agent request logs by @shiroyasha in #3576
- feat: Support multi-line inputs for Agent input by @shiroyasha in #3578
- chore: Update ESBuild issue baseline 2486 -> 1655 by @shiroyasha in #3579
- fix: Add passwordless email sign-in/sign-up via magic link or access code by @cursor[bot] in #3560
- feat: Node grouping by @AleksandarCole in #3570
- chore: Simplify evaluation output to make it easy to use by @shiroyasha in #3584
- feat: Missing integrations list by @AleksandarCole in #3585
- feat: Agents building ephemeral machines by @shiroyasha in #3574
- fix: Stale canvas events shown when switching between canvases without page refresh by @cursor[bot] in #3506
- fix: CanvasCreated event not published to RabbitMQ when using Health Check Monitor quick start on a fresh organization by @cursor[bot] in #3590
- fix: Integration config in sidebar by @AleksandarCole in #3586
- feat: Versioning UX by @ropsii in #3575
- chore: Header UI improvements by @ropsii in #3609
- chore: Verify the config before applying it in the agent sidebar by @shiroyasha in #3611
- feat: Pattern for auto-resolving issues with Daytona by @shiroyasha in #3626
- feat: installation admin + impersonation by @forestileao in #3616
- chore: visual improvements on canvases and organizations page by @ropsii in #3632
- fix(ui): annotation markdown heading sizes by @forestileao in #3502
- fix: Impersonation badge jumps to center during org page loading transition by @cursor[bot] in #3631
- fix: approval emails share context by @forestileao in #3628
- chore(deps-dev): bump flatted from 3.3.3 to 3.4.2 in /web_src by @dependabot[bot] in #3571
- chore(deps): bump pyasn1 from 0.6.2 to 0.6.3 in /agent by @dependabot[bot] in #3572
- feat: add daily build semaphore release file by @felixgateru in #3623
- fix: Fix 500/501 errors on canvas event, execution, and queue routes with invalid IDs by @cursor[bot] in #3647
- feat: Templates page improvements by @AleksandarCole in #3656
- feat: Additional component info (docs) by @AleksandarCole in #3657
- feat: Steer AI builder toward root() for run-start payloads by @re-pixel in #3659
- feat: add scoped auth for agent chat sessions by @lucaspin in #3633
- feat: create canvas flow update by @AleksandarCole in #3670
- fix: DigitalOcean delete droplet hint expects droplet ID by @markoa in #3678
- chore: Expose CLI on Canvas page by @AleksandarCole in #3672
- fix: DigitalOcean delete droplet converts input to number by @markoa in #3681
- feat: add cli version flag and update warning by @forestileao in #3690
- fix: skip background release update check for local-only commands by @forestileao in #3693
- feat: add DigitalOcean createApp, updateApp and deleteApp components by @felixgateru in #3593
- feat: Add sentry base integration by @WashingtonKK in #3580
- feat: add digitalocean getObject component by @gaga1307 in #3691
- feat: support multi-line SSH commands by @markoa in #3683
- feat: handling save by @ropsii in #3679
- fix: broken integrations flow by @AleksandarCole in #3688
- chore: Fix TimeGate and Wait flaky tests by @AleksandarCole in #3697
- chore: Set up the same JWT token as on the app docker by @shiroyasha in #3694
- feat: Steer AI Builder toward using $[node-name] statements when refering to upstream nodes by @re-pixel in #3686
- chore: Switch to property based testing when evaluating output by @shiroyasha in #3718
- chore: Add eslint rule for max line count in a file by @shiroyasha in #3721
- fix: handle undefined response.status in HTTP execution subtitle by @AleksandarCole in #3719
- feat: add next usage decrease time in UI by @forestileao in #3733
- feat: extend /api/v1/agents API by @lucaspin in #3735
- fix: Accept Both Changes during conflict resolution invalidates entire canvas instead of the node by @cursor[bot] in #3729
- feat: canvas runs view by @AleksandarCole in #3725
- feat: add sentry createDeploy, createRelease, and getIssue components by @WashingtonKK in #3692
- feat: add sentry listAlerts and getAlert by @WashingtonKK in #3695
- feat: bootstrap internal agents gRPC service by @lucaspin in #3737
- feat: add sentry create alert, delete alert and update alert components by @WashingtonKK in #3696
- feat: add digitalOcean getApp component by @felixgateru in #3699
- feat: add digitalocean Object components by @gaga1307 in #3722
- feat: update issue number type to string on
github.updateIssuecomponent by @WashingtonKK in #3734 - feat: CLI canvas update output by @Vukotije in #3741
- fix: Description and output missing from info tab by @AleksandarCole in #3743
- feat: Track and display costs of running Agent eval tests by ...
SuperPlane v0.13.0
What's new since v0.12.0
3 new integrations
- Microsoft Azure
- Elastic
- Perplexity
38 new components and triggers
- Microsoft Azure: Create Virtual Machine, Delete Virtual Machine, Start Virtual Machine, Stop Virtual Machine, Deallocate Virtual Machine, Restart Virtual Machine, On VM Deleted, On Blob Created, On Blob Deleted, On Image Pushed, On Image Deleted, On VM Started, On VM Stopped, On VM Deallocated, On VM Restarted
- Elastic: Index Document, Create Case, Get Case, Update Case, Get Document, Update Document, When Alert Fires, When Case Status Changes, On Document Indexed
- Perplexity: Run Agent
- DigitalOcean: Create DNS Record, Upsert DNS Record, Delete DNS Record, Create Load Balancer, Delete Load Balancer, Assign Reserved IP, Create Alert Policy, Update Alert Policy, Get Alert Policy, Delete Alert Policy, Get Droplet Metrics
- Discord: Get Last Mention
- Core: Send Email Notification
Improvements
- Onboarding: New onboarding screens guide first-time setup and reduce time to first canvas.
- CLI: The
canvas get --draftoption makes it easier to inspect draft versions before publishing.
Bug Fixes
- Fixed: Import YAML UX issues, including inaccessible actions for large files and missing preview fields.
- Fixed: Loading states were added to API-triggering UI buttons to prevent accidental duplicate actions.
- Fixed: GitHub integration resource pagination during validation.
- Fixed: Missing HTML titles on Settings pages.
- Fixed: Organization page 404 handling in the UI.
- Fixed: Canvas update SQL 500 error path.
- Fixed:
exprruntimedate()behavior when compiled withexpr.Timezone("UTC").
Merged Pull-Requests
- fix: canvas update 500 SQL errors by @forestileao in #3457
- feat: Draft live versioning error by @cursor[bot] in #3418
- chore(deps-dev): bump hono from 4.12.5 to 4.12.8 in /web_src by @dependabot[bot] in #3464
- feat: Azure Integration by @e-todorovski-bm in #3230
- feat: add the Perplexity Search and Agent APIs as integrations by @kesku in #3438
- feat: add discord.getLastMention action by @forestileao in #3465
- feat: add DigitalOcean createDNSRecord, upsertDNSRecord and deleteDNSRecord components by @felixgateru in #3444
- feat: Add elastic base integration by @WashingtonKK in #3467
- fix: add perplexity docs by @forestileao in #3476
- feat: add DigitalOcean createLoadBalancer, deleteLoadBalancer and assignReserverdIP components by @felixgateru in #3473
- fix: UI organization 404 by @forestileao in #3478
- feat: Azure ACR Triggers by @alabro-bm in #3469
- fix: Missing HTML titles for Settings pages by @cursor[bot] in #3481
- fix: GitHub integration resource pagination during validation by @forestileao in #3480
- fix: only show canvas border in edit/version preview by @forestileao in #3500
- fix: expr runtime
date()breaks when compiled with expr.Timezone("UTC") by @forestileao in #3499 - feat: add
--draftflag to canvasgetfor versioned canvases by @forestileao in #3503 - fix: Add loading states to buttons that trigger API calls in the UI by @cursor[bot] in #3501
- fix: Add "Import YAML" functionality in the UI and fix YAML preview missing apiVersion/kind fields by @cursor[bot] in #3508
- chore: rename canvasVersioningEnabled to versioningEnabled across orgs, canvases, docs, and skills by @forestileao in #3507
- chore: Create a single COMPOSE shortcut by @shiroyasha in #3510
- chore: Bootstrap Agent in the main repository by @shiroyasha in #3511
- chore: Re-enable the agent console by @shiroyasha in #3513
- feat: Agent event streaming by @shiroyasha in #3514
- feat: add SSH key as ResourceType for DigitalOcean droplet creation by @felixgateru in #3487
- feat: Connect agent builder UI with python Agent by @shiroyasha in #3516
- chore: Remove old AI builder from Go by @shiroyasha in #3518
- feat: Implement Azure VM components by @e-todorovski-bm in #3470
- fix: remove unused configuration fields + use camel case on json tags by @lucaspin in #3523
- feat: Streamed markdown support in the Agent by @shiroyasha in #3528
- fix: Azure List Resources fail from stale OIDC by @e-todorovski-bm in #3512
- fix: Fix import YAML modal: large YAML content not scrollable and import button inaccessible by @cursor[bot] in #3525
- chore: Remove the term repl from the api and ui by @shiroyasha in #3529
- fix: Remove legacy YAML dropdown and related dev-only env vars from Canvas top-right corner by @cursor[bot] in #3524
- fix: Fix
openapi.web.client.genMakefile target still using undefinedDOCKER_COMPOSE_OPTSafter compose refactor by @cursor[bot] in #3531 - chore: Simplify tools in the Agent by @shiroyasha in #3536
- feat: Azure Blob Events (OnBlobCreated and OnBlobDeleted) by @alabro-bm in #3535
- chore: Use OpenAPI for Agent <-> Core communication by @shiroyasha in #3537
- chore: prepare events for usage by @forestileao in #3532
- feat: Expand available tools in the Agent by @shiroyasha in #3541
- feat: Send email notification component by @AleksandarCole in #3542
- feat: Tools for editing a canvas by @shiroyasha in #3544
- feat: integrate with usage + limits by @forestileao in #3545
- chore: better limits error in ui by @forestileao in #3546
- fix: usage page not appearing by @forestileao in #3547
- fix: api limits naming by @forestileao in #3548
- chore: Introduce agent evaluations by @shiroyasha in #3551
- feat: onboarding screen by @AleksandarCole in #3543
- feat: add Elastic getDocument, updateDocument and onDocumentIndexed components by @WashingtonKK in #3475
- feat: add DigitalOcean createAlertPolicy, updateAlertPolicy, getAlertPolicy, deleteAlertPolicy and getDropletMetrics components by @felixgateru in #3534
- feat: update Elastic integration to use API key authentication and enhance documentation by @WashingtonKK in #3485
- feat: Expand elastic integration to add case management components by @WashingtonKK in #3474
- chore(deps): bump google.golang.org/grpc from 1.78.0 to 1.79.3 by @dependabot[bot] in #3556
- chore: Rename repl_web -> web by @shiroyasha in #3555
- chore: Add budgeted complexity gate for frontend by @shiroyasha in #3557
- chore: Improve integration component usage in the Agent by @shiroyasha in #3559
- feat: add usage event retention policy worker by @forestileao in #3561
- fix: 500 message is telling a lie by @cursor[bot] in #3461
- fix: Create a self-updating TimeAgo React component that avoids unnecessary re-renders by @cursor[bot] in #3564
New Contributors
Full Changelog: v0.12.0...v0.13.0
SuperPlane v0.12.0
What's new since v0.11.0
Canvas change requests
Canvas versioning adds support for creating change requests. Similar to pull-requests on GitHub,
change requests in SuperPlane allow your team to propose changes to a canvas, review them, and
publish the changes when approved by the canvas maintainers.
1 new integration
- New Relic
26 new components and triggers
- New Relic: Report Metric, Run NRQL Query, On Issue
- Google Cloud Artifact Registry: Get Artifact, Get Artifact Analysis, On Artifact Push, On Artifact Analysis
- Google Cloud Pub/Sub: Publish Message, Create Topic, Delete Topic, Create Subscription, Delete Subscription, On Message
- Google Cloud DNS: Create Record, Update Record, Delete Record
- DigitalOcean: Get Droplet, Delete Droplet, Manage Droplet Power, Create Snapshot, Delete Snapshot
- Dash0: Create Check Rule, Get Check Rule, Update Check Rule, Delete Check Rule, Send Log Event
Improvements
- Canvas Settings: Configure canvas-level settings from a dedicated page instead of relying on scattered controls.
- YAML Viewer: The YAML version of the canvas is now viewable in the UI, not just via the CLI.
- CLI Discovery: Use a widgets discovery command in the CLI index to find available widgets faster.
Security
- Fixed: Signature validation now uses constant-time comparison to reduce timing attack risk.
- Fixed: Default blocked host and IP range protections were re-enabled for safer outbound HTTP handling.
Bug Fixes
- Fixed: Reverted a mutation update that could break GitHub integration setup in organization settings.
- Fixed: Removed stale webhooks reliably during cleanup to avoid orphaned webhook records.
- Fixed: Auto-layout now handles multi-select, disconnected segments, and nodes without output channels more reliably.
- Fixed: Duplicating multiple nodes now preserves their existing connections.
- Fixed: Long node names in canvas search render correctly in the UI.
- Fixed: Cancelling wait executions no longer emits extra events.
Merged Pull-Requests
- feat: Add New Relic integration by @vukasin-djuricic in #3322
- feat: Add widgets discovery command to CLI index by @manasa-bhagwat in #3351
- feat: Canvas Settings Page by @forestileao in #3397
- fix: uncomment default blocked ip ranges and hosts by @forestileao in #3403
- fix: use constant-time comparison for signatures by @lucaspin in #3406
- feat: yaml editor by @AleksandarCole in #3400
- chore(deps-dev): bump hono from 4.12.3 to 4.12.5 in /web_src by @dependabot[bot] in #3404
- chore(deps-dev): bump @hono/node-server from 1.19.9 to 1.19.11 in /web_src by @dependabot[bot] in #3417
- chore(deps): bump tar from 7.5.9 to 7.5.11 in /web_src by @dependabot[bot] in #3420
- fix: do not emit when cancelling wait execution by @lucaspin in #3421
- fix: improve worker processing speed by @lucaspin in #3419
- fix: events callback not working for subscription messages by @lucaspin in #3422
- feat: add change request approvals and conflicts resolving by @forestileao in #3431
- fix: fix empty payload on dash0 getHTTPSyntheticCheck by @felixgateru in #3430
- feat: add dash0 createCheckRule, getCheckRule, updateCheckRule and deleteCheckRule components by @felixgateru in #3399
- feat: introduce webhook response body by @e-todorovski-bm in #3428
- feat: add dash0 send log event action by @felixgateru in #3388
- feat: add gcp artifact registry integration by @WashingtonKK in #3401
- feat: add gcp pub sub integration by @WashingtonKK in #3414
- chore: remove Header versioning off label by @shiroyasha in #3412
- chore: readd previous save undo buttons when versioning is off by @forestileao in #3436
- feat(gcp/cloud-dns): add gcp cloud dns integration by @WashingtonKK in #3433
- fix: auto layout behavior by @forestileao in #3437
- fix: selection toolbar movement + icons size by @cursor[bot] in #3432
- fix: Remove Deleted Webhooks by @e-todorovski-bm in #3426
- fix: preserve connections when duplicating multiple selected nodes. by @samuel-asleep in #3429
- feat: add DigitalOcean getDroplet, deleteDroplet and manageDropletPower actions by @felixgateru in #3439
- fix: Auto-layout multi select by @forestileao in #3447
- fix: use X-Github-Delivery header for log messages on triggers by @lucaspin in #3448
- fix: elk auto layout error for nodes that doesn't specify output channels by @forestileao in #3449
- fix: Canvas search long names rendering (#2809) by @masicaaa in #3402
- fix: align create/update auto-layout behavior and stabilize backend horizontal layout by @forestileao in #3455
- fix: make frontend autolayouy to stack vertically disconnected segments by @forestileao in #3452
- fix: refactor HTTP component by @lucaspin in #3459
- feat: add DigitalOcean createSnapshot and deleteSnapshot actions by @felixgateru in #3440
- fix: Revert updateMutation that breaks github integration by @shiroyasha in #3462
New Contributors
- @vukasin-djuricic made their first contribution in #3322
- @cursor[bot] made their first contribution in #3432
- @masicaaa made their first contribution in #3402
Full Changelog: v0.11.0...v0.12.0
SuperPlane v0.11.0
What's new since v0.10.0
Canvas Versioning
Canvas versioning adds support for versioned edits to your workflow and lays the
groundwork for a built-in review system. It is available now as an early
capability and will expand with future updates.
New Integrations
This release adds 2 new integrations:
- Microsoft Teams
- FireHydrant
17 new components and triggers
- Microsoft Teams: Send Text Message, On Mention, On Message
- FireHydrant: Create Incident, On Incident
- Google Cloud: Cloud Build Create Build, Cloud Build Get Build, Cloud Build Run Trigger, Cloud Build On Build Complete, Cloud Functions Invoke Function
- Dash0: Get HTTP Synthetic Check, On Alert Notification, On Synthetic Check Notification
- Hetzner: Create Snapshot, Delete Snapshot
- GitHub: Add Reaction
- Core: Upsert Memory
Improvements
- Memory Components: New dedicated section for all memory components.
- Hetzner Machine Creation: Browse firewall resources while configuring Hetzner server components.
- Canvas minimap: Every canvas now has a minimap for easier navigation.
Bug Fixes
- Fixed: SSH component details now show the correct user.
- Fixed: SSH components handle missing connection retry values without nil dereference errors.
- Fixed: Secret passphrase fields allow empty selection when intended.
- Fixed: CLI
whoamioutput now aligns with versioning behavior.
Merged Pull-Requests
- feat: Agent is able to remove an edge by @shiroyasha in #3324
- feat: Github action for adding a reaction to comments by @shiroyasha in #3325
- feat: Add FireHydrant integration by @felixgateru in #3255
- fix: nil deference if connection retry is not set in the SSH component by @shiroyasha in #3333
- feat: Allow passing environment variables to SSH commands by @shiroyasha in #3334
- fix: Show the correct user in the SSH component details by @shiroyasha in #3343
- chore: add cli default auto-layout strategy + UI autolayout toggle by @forestileao in #3344
- fix: Allow selecting no passphrase by @shiroyasha in #3345
- feat: Canvas minimap by @shiroyasha in #3346
- feat: Give a hint that memory is not empty by showing a count by @shiroyasha in #3347
- feat: Accept AI actions with cmd+enter by @shiroyasha in #3348
- fix: daytona.executeCode syntax error by @forestileao in #3349
- feat: Add what is selected to the agents context by @shiroyasha in #3353
- feat: Show additional metadata on hetzner nodes by @shiroyasha in #3354
- feat: Hetzner components for creating and destroying server snapshots by @shiroyasha in #3355
- feat: Store minimap toggle state in localstorage by @shiroyasha in #3356
- chore: Scripts for booting up ephemeral ready dev env by @shiroyasha in #3360
- feat: multi node selection menu by @AleksandarCole in #3368
- chore: Reduced min zoom level to 10% by @AleksandarCole in #3369
- feat: Allow listing firewalls when connecting to Hetzner by @shiroyasha in #3366
- feat: add simple versioning + sandbox mode by @forestileao in #3373
- fix: publish requiring two clicks to work by @forestileao in #3383
- feat: Add GCP run cloud function by @WashingtonKK in #3377
- feat: GCP Cloud Build Integration by @WashingtonKK in #3357
- feat: Add dash0 get synthetic check component by @felixgateru in #3359
- feat: separate dash0 onNotification trigger into onAlertNotification trigger and onSyntheticCheckNotification trigger by @felixgateru in #3336
- feat: Introduce a dedicated memory category in the sidebar by @shiroyasha in #3385
- feat: Teams Integration by @e-todorovski-bm in #3378
- fix: Minimap toggle persistence by @shiroyasha in #3389
- feat: Upsert memory component by @shiroyasha in #3391
- fix: update cli whoami for versioning by @forestileao in #3392
New Contributors
- @felixgateru made their first contribution in #3255
Full Changelog: v0.10.0...v0.11.0
SuperPlane v0.10.0
What's new since v0.9.0
4 new integrations
- Honeycomb
- incident.io
- LaunchDarkly
- Octopus Deploy
34 new components and triggers
- Core: Add Memory, Read Memory, Update Memory, Delete Memory
- Honeycomb: Create Event, On Alert Fired
- incident.io: Create Incident, On Incident
- LaunchDarkly: Get Feature Flag, Delete Feature Flag, On Feature Flag Change
- Octopus Deploy: Deploy Release, On Deployment Event
- AWS: CodePipeline • Get Pipeline, CodePipeline • Get Pipeline Execution, CodePipeline • Retry Stage Execution, CodePipeline • On Pipeline
- CircleCI: Get Workflow, Get Last Workflow, Get Recent Workflow Runs, Get Test Metrics, Get Flaky Tests
- Daytona: Create Repository Sandbox, Get Preview URL
- GitHub: Get Repository Permission, On PR Review Comment
- Prometheus: Create Silence, Expire Silence, Get Silence, Query, Query Range
- Rootly: On Incident Timeline Event
- Semaphore: Get Pipeline
- Telegram: Wait for Button Click
Improvements
- Canvas auto-layout: Automatically arrange nodes on the canvas.
- Realtime canvas updates: Canvas updates via the CLI are streamed to the UI.
- Daytona secrets: Inject secrets into Daytona sandboxes for bootstrap and command execution.
- AI canvas builder: Build canvases by chatting with an agent.
- CLI discovery output: More helpful agent guidance when using discovery commands with
output=text. - Canvas memory: Canvas-scoped data storage. Used by components to persist and retrieve values across different paths and executions of the same canvas.
Bug Fixes
- Fixed: HTTP requests now read the response body before context cancellation to avoid losing error details.
- Fixed: HTTP timeout errors no longer expose internal error details, but instead show user-friendly error messages.
- Fixed: Organization scoping failures return 404 instead of 401.
- Fixed: Nested invisible fields are filtered correctly in the UI.
- Fixed: Payload modal is now larger and easier to read.
- Fixed: CLI
whoamioutput includes the organization name.
Merged Pull-Requests
- feat: Add prometheus.createSilence and prometheus.expireSilence by @samuel-asleep in #3219
- feat: Add semaphore.getPipeline action by @Suraj-kumar00 in #2973
- feat: Add AWS CodePipeline Get Pipeline component by @manasa-bhagwat in #3220
- feat: Add AWS CodePipeline Get Pipeline Execution component by @manasa-bhagwat in #3225
- feat: Add rootly.onIncidentTimelineEvent component by @devroy10 in #3150
- feat: add prometheus.getSilence ,prometheus.query and prometheus.queryRange action components by @samuel-asleep in #3229
- fix: return 404 for organization-scoping failures instead of 401 by @forestileao in #3234
- feat: Add incident.io integration by @Vukotije in #3136
- feat: stream canvas updates through websocket by @lucaspin in #3245
- feat: Add AWS CodePipeline On Pipeline trigger by @manasa-bhagwat in #3242
- chore: Integrations ux improvements by @ropsii in #3244
- feat: add daytona.getPreviewUrl action by @forestileao in #3254
- feat: Enable agent mode in the organization settings by @shiroyasha in #3258
- feat: Build a canvas by chatting with an AI agent by @shiroyasha in #3259
- feat: Every component has a skill and the built in agent is able to discover them via tool calling by @shiroyasha in #3262
- feat: Resume previous conversations with the agent by @shiroyasha in #3263
- feat: Introduce /clear command to start a new conversation with the agent by @shiroyasha in #3264
- feat: AI builder is able to intelligently layout stuff on the canvas by @shiroyasha in #3265
- feat: AI builder is able to deduce which output channels to use for connections by @shiroyasha in #3267
- feat: Provide AI skill for the Wait and SSH component by @shiroyasha in #3269
- chore: add env variables and output channels to daytona component by @forestileao in #3270
- fix: update webhook trigger's code example and custom UI on auth change by @devroy10 in #3135
- fix: split pr comment trigger in PR review comment and PR comment by @forestileao in #3272
- fix(http): make timeout errors easier to understand by @SaurabhCodesAI in #3214
- feat: Add Octopus Deploy integration + 2 components by @zakaneki in #3221
- fix: allow expressions in GitHub comment repository by @hadzija7 in #3227
- fix: unable to do password login after setup by @usernamenenad in #3233
- feat: Add CircleCI Get Workflow, Get Last Workflow, Get Recent Workflow Runs, Get Test Metrics, Get Flaky Tests by @vikramships in #3240
- feat: more information on discovery commands when output=text by @lucaspin in #3277
- fix: use 80% of screen for payload modal size by @lucaspin in #3280
- fix: update daytona sandbox naming by @forestileao in #3282
- feat: new daytona.createRepositorySandbox component by @lucaspin in #3283
- fix(ui): filter nested invisible fields by @lucaspin in #3285
- feat: Canvas Auto-Layout (Frontend + Backend + CLI) by @forestileao in #3286
- feat: github.getRepositoryPermission component by @lucaspin in #3287
- fix: Daytona execute command ui by @forestileao in #3288
- fix: timeout handling for daytona.createRepositorySandbox by @lucaspin in #3289
- feat: add telegram.waitForButtonClick by @samuel-asleep in #3253
- feat: Add AWS CodePipeline Retry Stage Execution component by @manasa-bhagwat in #3266
- feat: Introduce canvas data storage by @shiroyasha in #3293
- feat: Add unique entry ID and timestamps for canvas memory by @shiroyasha in #3294
- feat: Memory view for canvases by @shiroyasha in #3295
- feat: Add Honeycomb integration by @gaga1307 in #3149
- feat: add filters on semaphore.onPipelineDone trigger by @lucaspin in #3296
- feat: Add Launchdarkly integration by @WashingtonKK in #3256
- feat: inject secrets into daytona sandbox by @lucaspin in #3297
- fix: CLI show organization name in whoami output by @manasa-bhagwat in #3292
- fix: Improve CodePipeline resource field UX consistency across components by @manasa-bhagwat in #3279
- feat: Access memory from expressions by @shiroyasha in #3299
- feat: Introduce a dedicated component for accessing memory elements by @shiroyasha in #3300
- feat: Components for deleting data from memory by @shiroyasha in #3301
- feat: Components for updating memory by @shiroyasha in #3302
- fix: read HTTP response body before context cancellation by @clarabennettdev in #3146
- chore(deps): bump rollup from 4.40.2 to 4.59.0 in /web_src by @dependabot[bot] in #3303
- chore(deps): bump minimatch in /web_src by @dependabot[bot] in #3304
- chore(deps): bump go.opentelemetry.io/otel/sdk from 1.39.0 to 1.40.0 by @dependabot[bot] in #3305
- chore(deps-dev): bump storybook from 9.1.17 to 9.1.19 in /web_src by @dependabot[bot] in #3306
- chore(deps-dev): bump hono from 4.12.0 to 4.12.3 in /web_src by @dependabot[bot] in #3307
- feat: AI Builder is able to pick up existing integrations + add Daytona skills by @shiroyasha in #3271
- chore: Cleanup AI code structure by @shiroyasha in #3309
- chore: Use new auto-layouting when adding nodes to the canvas by @Shiroy...
SuperPlane v0.9.0
What's new since v0.8.0
9 new integrations
- Bitbucket
- DigitalOcean
- GCP
- Grafana
- Harness
- JFrog Artifactory
- ServiceNow
- Statuspage
- Telegram
53 new components
- AWS: Describe Service, Run Task, Stop Task, Create Service, Update Service, Execute Command, Create Image, Get Image, On Image, Copy Image, Deregister Image, Enable Image, Disable Image, Enable Image Deprecation, Disable Image Deprecation, Create Queue, Get Queue, Send Message, Purge Queue, Delete Queue, Create Record, Upsert Record, Delete Record, Run Pipeline
- Bitbucket: On Push
- Dash0: Create HTTP Synthetic Check, Update HTTP Synthetic Check, Delete HTTP Synthetic Check, On Notification
- DigitalOcean: Create Droplet, On Droplet Event
- GCP: Create VM, On VM Instance
- GitHub: Get Workflow Usage, Add Issue Label, Remove Issue Label, Add Issue Assignee, Remove Issue Assignee
- Grafana: Query Data Source, On Alert Firing
- Harness: Run Pipeline, On Pipeline Completed
- Hetzner: Create Load Balancer, Delete Load Balancer
- JFrog Artifactory: Get Artifact Info, Delete Artifact, On Artifact Uploaded
- PagerDuty: Acknowledge Incident, Resolve Incident, Escalate Incident
- Rootly: Get Incident
- ServiceNow: Create Incident, Get Incident
- Slack: Wait For Button Click
- Statuspage: Create Incident, Get Incident, Update Incident
- Telegram: Send Message, On Mention
Improvements
- Service Accounts: Create and use service accounts for automation that should not depend on individual user credentials.
- CLI Secrets Management: Create, update, and delete organization secrets directly from the CLI.
- CLI Contexts: Connect one CLI setup to multiple organizations and switch contexts more easily.
- CLI Execution Controls: Manage executions, inspect root events, and operate node queues from the CLI.
- CLI Discovery UX: Use grouped discovery commands under a dedicated
indexcommand for faster lookup. - CLI Canvas Management: Configure the active canvas from the CLI for quicker environment switching.
- OpenAI Configuration: Set an optional custom base URL for proxy, gateway, or OpenAI-compatible endpoints.
- Webhook Trigger Authentication: Use a header token option to verify inbound webhook trigger requests.
Bug Fixes
- Fixed: HTTP component retries now use exponential backoff correctly, improving resilience under transient network failures.
- Fixed: OIDC webhook flows now consistently use the configured webhook base URL, including signer paths.
- Fixed: AWS EventBridge-based triggers and rules handle region filtering and multi-region provisioning more reliably.
- Fixed: Daytona command execution avoids endless-running states and uses a more stable session API flow.
- Fixed: Long filter values now wrap correctly in UI tooltips, improving readability in dense specs.
Merged Pull-Requests
- chore: Add new integrations to Readme by @AleksandarCole in #3125
- feat: manage secrets through CLI by @lucaspin in #3126
- docs: Eliminated naming inconcistency in the itegration guide by @kkomelin in #3127
- chore: Fix generated integration filenames by @shiroyasha in #3128
- feat(cli): group discovery-related commands under index command by @lucaspin in #3131
- feat: Introduce service accounts by @shiroyasha in #3133
- feat: AWS ECS integration + 3 components by @forestileao in #3118
- feat: Add AWS Route53 DNS record management components by @yinebebt in #3085
- feat: Add Rootly Get Incident action by @Manideepchopperla in #2974
- fix: Use webhook base url for OIDC by @shiroyasha in #3145
- feat: Add slack.waitForButtonClick action by @samuel-asleep in #3031
- fix: Use webhook base url for oidc signer as well by @shiroyasha in #3148
- feat: Add Bitbucket integration by @ishaksebsib in #3039
- feat(cli): commands for managing node queue by @lucaspin in #3151
- feat(cli): new root events command by @lucaspin in #3152
- feat(cli): manage executions by @lucaspin in #3153
- feat(cli): connect to multiple organizations through contexts by @lucaspin in #3154
- feat(cli): configure active canvas by @lucaspin in #3156
- feat: Add github.getWorkflowUsage component for Actions billing by @samuel-asleep in #3158
- fix(ci): use go mod download in test.setup by @lucaspin in #3181
- feat: bootstrap EC2 integration by @lucaspin in #3170
- fix: Switch to Daytona SessionAPI for commands by @AleksandarCole in #3178
- feat: Dash0 Synthetic Events 3 Components by @alabro-bm in #3183
- feat: Dash0 Webhook Integration and On Notification Component by @alabro-bm in #3184
- fix: Fix daytona endless running command issue by @AleksandarCole in #3186
- feat: Add Grafana integration by @mfuzailzubari in #3040
- feat: statuspage integration + 3 components by @re-pixel in #3117
- fix: multi-region EventBridge rule provisioning by @lucaspin in #3188
- feat: Added pooling for Daytona Create Sandbox by @alabro-bm in #3187
- fix: filter AWS EventBridge events by region by @lucaspin in #3189
- fix: Revert "feat: Dash0 Webhook Integration and On Notification Component" by @AleksandarCole in #3190
- fix: rule provisioning check for AWS ECS by @lucaspin in #3191
- feat: add DigitalOcean integration with droplet trigger and action by @aldoabellto235 in #2983
- feat: Add Create & Delete Hetzner Load Balancer integrations by @usernamenenad in #3169
- feat: remaining EC2 AMI operations by @lucaspin in #3182
- chore: add _target blank and noreferrer to markdown renderer anchors by @forestileao in #3192
- fix: grafana docs tags by @forestileao in #3199
- chore: HTML sanitizer for docs generation by @shiroyasha in #3201
- feat: add header token for webhook trigger by @forestileao in #3202
- feat: Add ServiceNow integration by @ConeDjordjic in #3113
- feat: dash0.onNotification trigger by @lucaspin in #3204
- chore(deps): bump tar from 7.5.7 to 7.5.9 in /web_src by @dependabot[bot] in #3203
- feat: Add Harness integration starter components by @0vertake in #3120
- chore(deps-dev): bump qs from 6.14.1 to 6.15.0 in /web_src by @dependabot[bot] in #3206
- chore(deps-dev): bump hono from 4.11.9 to 4.12.0 in /web_src by @dependabot[bot] in #3208
- chore(deps): bump filippo.io/edwards25519 from 1.1.0 to 1.1.1 by @dependabot[bot] in #3209
- feat: Aws Sqs Components by @tinhuynh1 in #3167
- feat: [WIP] ecs create,update service and execute command by @forestileao in #3144
- feat: Add AWS CodePipeline Run Pipeline action by @manasa-bhagwat in #3174
- feat: Add GCP base and components by @harxhist in #3138
- feat: Acknowledge, Resolve and Escalate incidents on PagerDuty by @shiroyasha in #3212
- fix: Enhance SpecsTooltip to support long filter value wrapping by @PrashantIndurkar in #2874
- feat: add optional base URL config to OpenAI integration by @kkomelin in #2929
- fix: Apply exponential backoff to retry delay instead of request timeout in HTTP component by @shiroyasha in #3213
- feat: add telegram integration by @samuel-asleep in #3210
- feat: Jfrog Artifactory Base by @alabro-bm in #3165
- feat: Add github components for adding, removing issue labels and assignees by @shiroyasha in #3216
- chore: New integratio...
SuperPlane v0.8.0
What's new since v0.7.0
7 new integrations
- CircleCI
- Cursor
- DockerHub
- GitLab
- Hetzner
- Prometheus
- Render
53 new components and triggers
- AWS CloudWatch (On Alarm)
- AWS CodeArtifact (Create Repository, Delete Repository, Get Package Version, On Package Version, Copy Package Versions, Delete Package Versions, Dispose Package Versions, Update Package Versions Status)
- AWS SNS (Create Topic, Delete Topic, Get Topic, Get Subscription, Publish Message, On Topic Message)
- CircleCI (Run Pipeline, On Workflow Completed)
- Cursor (Launch Cloud Agent, Get Last Message, Get Daily Usage Data)
- DockerHub (Get Image Tag, On Image Push)
- GitLab (Run Pipeline, On Pipeline, Get Pipeline, Get Latest Pipeline, Get Test Report Summary, On Merge Request, On Milestone, On Tag, On Release, On Vulnerability, Create Issue, On Issue)
- Hetzner (Create Server, Delete Server)
- Prometheus (Get Alert, On Alert)
- Render (Get Service, Get Deploy, Deploy, Cancel Deploy, Rollback Deploy, Purge Cache, Update Env Var, On Deploy, On Build)
- Rootly (Update Incident, Create Event)
- GitHub (Create Review, Create Issue Comment)
- PagerDuty (List Log Entries, List Notes)
Improvements
- Snap-to-grid toggle: Nodes will snap to a grid when moving or creating them if the toggle is enabled.
- SSH connection retries: Specify the number of retries and the delay between them in case of connection failure.
- Integrations:
- Support for multiple integrations of the same type. e.g. You can have multiple GitHub organizations connected at the same time.
- Integration names are editable.
- Error messages from integrations are now shown in the configuration sidebar.
- CLI:
integrations list- List integrations.integrations list-resources- List resources for a given integration.components list- List all available components.triggers list- List all available triggers.- Global
--outputflag (json / yaml / text) for command output.
Merged Pull Requests
What's Changed
- docs: Building an integration by @shiroyasha in #2980
- feat: integration state and configuration should be on the same page by @lucaspin in #2982
- feat: render integration base + 2 components by @forestileao in #2905
- feat: Implement initial GitLab integration (OAuth + PAT) by @dimbaja in #2696
- chore: add Logger to WebhookRequestContext by @lucaspin in #2988
- fix: infinite redirect due to invalid org ID by @forestileao in #2992
- chore: Update changelog skill for cursor by @AleksandarCole in #2993
- fix: prevent option selection reset in AutoCompleteSelect by @kkomelin in #2931
- feat: PagerDuty list notes by @e-todorovski-bm in #2857
- chore: Fix frontend mappers to use new format by @shiroyasha in #2996
- feat: add snap-to-grid toggle to workflow canvas by @prudh-vi in #2925
- chore: Overhaul of the researcher skill by @AleksandarCole in #3007
- feat: Add github.createIssueComment component by @Manideepchopperla in #2967
- feat(github): Add createReview component by @energypantry in #2940
- feat: PagerDuty list log entries by @shiroyasha in #3012
- fix: allow integrations of the same type + allow editing integration name by @forestileao in #3019
- fix: show integration error on the sidebar by @forestileao in #3020
- feat: Add rootly.createEvent component by @devroy10 in #2979
- feat: DockerHub base integration by @lucaspin in #2969
- chore: Hide run button by @AleksandarCole in #3028
- chore: Integrations list in readme by @AleksandarCole in #3037
- feat: AWS CodeArtifact expansion - repos + package version operations by @yinebebt in #2944
- feat: Add CircleCI integration by @vikramships in #2916
- feat: Add render.getService and render.getDeploy components by @vikramships in #3016
- feat: Add render.cancelDeploy and render.rollbackDeploy components by @vikramships in #3017
- feat: Add Render Purge Cache and Update Env Var components by @vikramships in #3018
- chore: Multi step integrations setup UI improvement by @ropsii in #3062
- chore: WebhookContext is now available for action components in the Setup and Execute callback function by @shiroyasha in #3072
- feat: Add Cursor Integration by @harxhist in #2991
- feat: Add new cursor.getLastMessage component by @shiroyasha in #3075
- feat: aws.cloudwatch.onAlarm trigger by @lucaspin in #3023
- feat: Add rootly.updateIncident action by @Manideepchopperla in #2978
- feat: Prometheus Base integration by @forestileao in #3068
- feat: GitLab triggers for merge requests, milestones, tags, releases and vulnerabilities by @lucaspin in #3084
- chore: Multi instance integrations UI by @ropsii in #3094
- fix: ignore integration with serialization issues when listing them by @lucaspin in #3111
- feat: bootstrap AWS SNS integration components by @fadhilijuma in #2963
- feat: new components for GitLab pipelines by @lucaspin in #3109
- feat: gitlab.runPipeline and gitlab.onPipeline by @lucaspin in #3115
- feat: Connection retries for SSH component by @shiroyasha in #3112
- feat: Hetzner integration with createServer and deleteServer by @shiroyasha in #3116
- feat: include discovery commands on CLI by @lucaspin in #3119
New Contributors
- @dimbaja made their first contribution in #2696
- @kkomelin made their first contribution in #2931
- @prudh-vi made their first contribution in #2925
- @Manideepchopperla made their first contribution in #2967
- @energypantry made their first contribution in #2940
- @devroy10 made their first contribution in #2979
- @yinebebt made their first contribution in #2944
- @vikramships made their first contribution in #2916
- @fadhilijuma made their first contribution in #2963
Full Changelog: v0.7.0...v0.8.0
SuperPlane v0.7.0
What's new since v0.6.0
3 new integrations
- Claude
- SendGrid
- Jira
15 new components
- SSH (Run Command) – standalone component to run commands on remote hosts
- AWS ECR (Get Image, Scan Image, Get Image Scan Findings, On Image Push, On Image Scan)
- AWS CodeArtifact (Get Package Version, On Package Version)
- GitHub (Get Release)
- Claude (Text Prompt)
- SendGrid (Send Email, On Email Event, Create Contact, Update Contact)
- Jira (Create Issue)
Improvements
- RBAC: Role-based access control. Define roles and permissions and control what each user can do in your organization.
- Secrets: Create, update, and delete organization secrets. Secrets can be used in the SSH component to store private keys. More components will support secrets in the future.
- Integrations UI/UX: Clearer flows when browsing and configuring integrations, and a fix for the duplicate integration banner.
Security Updates
- SSRF protection for HTTP requests
- Enforce payload limit on HTTP responses
- Security updates for dependencies
Merged Pull Requests
- fix: add dialog descriptions and keep canvas websocket reconnecting by @forestileao in #2695
- feat: Cleanup() for Component and Trigger by @lucaspin in #2783
- feat: Allow, creating, updating and deleting secrets from the organization menu by @shiroyasha in #2790
- chore: Allow running multiple Superplane instances at once by @shiroyasha in #2792
- chore: migrate RBAC prefixes to route-style + casbin_rule usage reduced by @forestileao in #2805
- chore: Instructions for Bounties by @AleksandarCole in #2802
- chore: Cursor skill - log issues by @AleksandarCole in #2814
- fix: webhoook trigger reset key not working by @forestileao in #2817
- feat: AWS ECR components and triggers by @lucaspin in #2806
- fix: missing Cleanup() on AWS components by @lucaspin in #2819
- chore: Remove InstallationID from contexts by @lucaspin in #2838
- feat: Enable RBAC UI with permission guard by @forestileao in #2839
- feat: initial AWS CodeArtifact blocks for package versions by @lucaspin in #2841
- fix: show correct number of permissions by @forestileao in #2842
- chore: reduce flakyness of tests + better test performance by @forestileao in #2844
- chore: improved integrations ux by @ropsii in #2823
- feat: list assets as part of aws.codeArtifact.getPackageVersion by @lucaspin in #2863
- fix: duplication for integration banner by @AleksandarCole in #2868
- fix: new common.FloatTime for AWS API timestamps by @lucaspin in #2864
- fix: missing auth guard in some places by @forestileao in #2876
- chore: getTriggerProps and CustomFieldRenderer signatures should not use API types by @lucaspin in #2877
- chore: update UI mappers signatures by @lucaspin in #2878
- chore: use BUILDKIT_PROGRESS = plain by @lucaspin in #2880
- chore: Dedicated API operations for keys in secrets + E2E tests for secrets by @shiroyasha in #2866
- fix: always fallback to defaultTriggerRenderer by @lucaspin in #2883
- feat: add GitHub Get Release component by @sangokp in #2832
- chore: update bounty program documentation by @AleksandarCole in #2889
- feat: use additional parameters when listing integration resources by @lucaspin in #2891
- feat: Jira Base Integration by @alabro-bm in #2890
- feat: SSH component by @shiroyasha in #2892
- feat: sendgrid integration base + components by @forestileao in #2893
- chore: improve sendgrid component designs by @forestileao in #2900
- chore(sendgrid): update event filtering to use predicate list by @forestileao in #2902
- fix: add SSRF protection to HTTP requests by @cchristous in #2804
- chore: Support up to 5 running instances by @shiroyasha in #2907
- Cursor can create changelog now by @AleksandarCole in #2912
- feat: Add Claude integration and Create Message component by @harxhist in #2909
- docs: update component-review.rules.md by @lucaspin in #2917
- fix: enforce limit on HTTP responses by @lucaspin in #2918
- docs: include security considerations on component review rules by @lucaspin in #2919
- fix: Component docs sync by @shiroyasha in #2935
- chore: Rename claude.createMessage -> claude.textPrompt by @shiroyasha in #2948
- chore: Add docs how to submit PRs for integrations by @shiroyasha in #2949
- chore(deps): bump tar and @hey-api/openapi-ts in /web_src by @dependabot[bot] in #2950
- chore(deps): bump react-router and react-router-dom in /web_src by @dependabot[bot] in #2951
- chore(deps): bump vite in /web_src by @dependabot[bot] in #2952
- chore(deps-dev): bump @modelcontextprotocol/sdk from 1.11.2 to 1.26.0 in /web_src by @dependabot[bot] in #2953
- chore(deps): bump glob from 10.4.5 to 10.5.0 in /web_src by @dependabot[bot] in #2955
- chore(deps-dev): bump storybook from 9.1.7 to 9.1.17 in /web_src by @dependabot[bot] in #2956
- chore(deps): bump golang.org/x/crypto from 0.37.0 to 0.45.0 by @dependabot[bot] in #2958
- chore(deps): bump esbuild, @vitest/ui and vitest in /web_src by @dependabot[bot] in #2960
- chore(deps): bump github.com/go-chi/chi/v5 from 5.1.0 to 5.2.2 by @dependabot[bot] in #2962
- chore: add WebhookHandler interface by @lucaspin in #2937
- chore: Use standard unit tests without explicit mocks by @shiroyasha in #2968
- fix: regen api files for TS due to updated lib by @forestileao in #2970
- feat: restrict event payload size emitted by components by @lucaspin in #2971
- chore: refactor NodeRef structure in Integrations API by @lucaspin in #2972
New Contributors
- @sangokp made their first contribution in #2832
- @cchristous made their first contribution in #2804
- @harxhist made their first contribution in #2909
Full Changelog: v0.6.0...v0.7.0