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 inspecting node details, runs and events by @re-pixel in #4030
- feat: add canvases init CLI command for generating starter YAML by @Vukotije in #4043
- fix: Usage page shows stale cached data until manual refresh by @cursor[bot] in #4057
- chore: Evaluator for tool calls by @shiroyasha in #4058
- feat: set up OTEL for the python agent app by @re-pixel in #4060
- fix(ui): do not validate configuration schema when applying agent proposal by @lucaspin in #4063
- feat: Validate -> Repair inference loop for the agent by @shiroyasha in #4054
- fix: add ENABLE_PASSWORD_LOGIN to single-host tarball env config by @Vukotije in #4061
- fix: make sidebar integration errors accessible by @forestileao in #4008
- feat: track token usage per chat and per organization by @0vertake in #3972
- chore(refactor): extract AI operation logic into CanvasBuilder by @lucaspin in #4066
- fix: resolve flaky agent test for WebServer port-in-use detection by @0vertake in #4068
- chore: show event-data for unlimited too by @forestileao in #4059
- chore(refactor): use LayoutEngine in CanvasBuilder by @lucaspin in #4070
- feat: implement usage tracking queue to superplane agent by @forestileao in #4067
- feat: Agent prompt caching by @shiroyasha in #4074
- chore: Minimize system prompt by @shiroyasha in #4075
- chore: Remove validation tool and replace it with output validator by @shiroyasha in #4078
- feat: add token limit by @forestileao in #4071
- fix: Improve installation admin view: organization/user lists and fix impersonation scrollbar bug by @cursor[bot] in #4080
- fix: exchange type should be direct not topic by @forestileao in #4082
- chore(ui): cleanup BuildingBlock type by @lucaspin in #4083
- feat: Shared, canvas level long-term memory for the agents by @shiroyasha in #4087
- chore: Remove deprecated agent repl by @shiroyasha in #4089
- chore: Extract tools into dedicated files by @shiroyasha in #4090
- chore: Layered system prompt approach by @shiroyasha in #4085
- chore: Make checks faster on CI by @shiroyasha in #4091
- chore: Agent backend should decide the tool names displayed in the chat by @shiroyasha in #4092
- chore: Remove duration from the chat sidebar by @shiroyasha in #4093
- feat: Collapse thinking process when the chat reaches is conclusion by @shiroyasha in #4094
- feat: track agent related metrics by @re-pixel in #4064
- feat: add grafana annotation components by @WashingtonKK in #3909
- feat: add grafana create, update and delete alert rules by @WashingtonKK in #3873
- feat: add grafana alert control by @WashingtonKK in #3897
- fix: improve agent tool call animations for smoother UI by @0vertake in #4069
Full Changelog: v0.15.0...v0.16.0