What's new since v0.29.0
v0.30.0 is anchored by Software Factory's new app onboarding flow and a run-context expression for linking back into workflows, plus a wide GitLab expansion, a new Linear integration, and a round of reliability work for cross-app runs, runner tasks, and canvas versioning.
Run context
- Expressions gain a
run()function —run().id,run().url(a direct link to the run in the SuperPlane UI), andrun().started_at— available anywhere$,root(), andprevious()already work, so a Slack message or any other component can link straight back to the run that produced it.
Software Factory
- New apps get a factory-first landing page with inline setup, and installs can now ship straight to production from that new-app landing.
- Kanban cards now correlate to the right GitHub issue by number, and starting-task prompts and labels are clearer.
1 new integration
- Linear joins the integrations list with
createIssueand anonIssuetrigger, quickly followed bygetIssueandupdateIssuecomponents.
Improvements to existing integrations
- GitLab keeps expanding:
onPush/onBranchCreatedtriggers,getIssue/updateIssue/createIssueComment/updateIssueCommentcomponents,createMergeRequestplus a merge-request-reviewer component,updateMergeRequest,addIssueLabelandmarkMergeRequestReadyForReview, newonIssueComment/onMRDiffNotetriggers, expandedonIssue/onMergeRequestaction fields, and a refreshed setup guide. - GitHub adds an
updatePullRequestcomponent. - Claude/Cursor: a new Run Claude Code runner component, structured output support for both Run Claude Agent and Run Code Agent, a refactor of agent/environment selection on the Run Claude Agent component, and a fix so
runAgentsessions are reclaimed correctly when a run ends badly.
Workflow and execution
- Runs can now be cancelled asynchronously, backed by a new
ExecutionTerminatorworker, and cross-app runs can be triggered synchronously with a configurable timeout. - Node cleanup workers were refactored to be run-centric, with a dedicated completed-node-request cleanup worker (an earlier soft-delete cleanup worker was shipped and then reverted pending further work).
- The task-broker protocol picked up named
command_listentries, task files oncreate-task, and object-form commands, while runners gainedenvironmentFromand integration/secret field types, clearer waiting-for-logs and Task ID labeling, finalized terminal log sections, and propagated task errors in the finished payload. - A stalled-loop-execution fix (and its revert) landed, along with a scheduler fix so the first run no longer skips the current hour when the minute hasn't passed yet.
Canvas versioning and editing
- Returning to the live version from history preview, or using "See Current Version" mid-edit, now resyncs the staged draft correctly instead of leaving it stale.
ListCanvasVersionsreturns metadata only (with the spec loaded on selection), and canvas versions load through the newDescribeCanvasVersioncall.- Notes can be cloned on the canvas, the diff view normalizes YAML field ordering before comparing, and the commit form submits on enter.
Security
- API keys gain scopes and expiration,
CanvasServicehandlers now enforce organization scoping, and outgoing SMTP headers are sanitized to prevent CRLF injection.
Bug Fixes
- UI diff view does not normalize YAML field ordering before comparison (#6158) by @superplane-gh-integration-9000[bot]
- Components filter should take into account subheader text (#6167) by @superplane-gh-integration-9000[bot]
- Select/multi-select dropdown gets cut off when it is the last field in component config (#6163) by @superplane-gh-integration-9000[bot]
- Relatively long commit message overflows in the commit message input (#6179) by @superplane-gh-integration-9000[bot]
- Reclaim claude runAgent sessions when a run ends badly (#6097) by @WashingtonKK
- Apply dark theme on owner setup pages (#6193) by @lucaspin
- Restore dark mode surfaces (#6195) by @forestileao
- Simplify owner setup (#6198) by @forestileao
- Fail stalled loop executions (#6201) by @forestileao
- Scheduler: first run skips current hour when minute has not passed yet (#6231) by @superplane-gh-integration-9000[bot]
- Resync staged draft when returning to live version from history preview (#6249) by @lucaspin
- Clone notes on the canvas (#6250) by @superplane-gh-integration-9000[bot]
- Only resync staged draft on See Current Version during edit session (#6251) by @lucaspin
- Include runner task error in finished payload (#6273) by @forestileao
- Finalize terminal runner log sections (#6277) by @forestileao
- Submit commit form on enter (#6278) by @superplane-gh-integration-9000[bot]
- Ship Claude Code bash steps as raw user commands (#6282) by @shiroyasha
- Runners summary: task_id should be Task ID (#6279) by @superplane-gh-integration-9000[bot]
- Improve AGENTS.md with clearer structure, setup steps, and contribution guidelines (#6286) by @superplane-gh-integration-9000[bot]
- Improve global command palette dark theme for search results (#6294) by @lucaspin
- Restore missing runs icon on Console tab of app page (#6298) by @superplane-gh-integration-9000[bot]
- Add widget-level option to allow concurrent run submissions on node widget trigger buttons (#6307) by @superplane-gh-integration-9000[bot]
- Add unit test for crypto.HashPassword and VerifyPassword (#6337) by @superplane-gh-integration-9000[bot]
- Small UX adjustments on runApp and onRun components (#6299) by @lucaspin
- Use shared SecretsContext test double in http component tests (#6347) by @superplane-gh-integration-9000[bot]
- Return metadata-only from ListCanvasVersions and load spec on selection (#6351) by @lucaspin
- Correlate factory kanban cards by issue number (#6352) by @forestileao
- Enforce organization scoping on CanvasService handlers (#6354) by @lucaspin
- Sanitize SMTP headers to prevent CRLF injection (#6355) by @forestileao
- Use registryimports in integrations count script (#6367) by @shiroyasha
- Selected text in agent chat isn't readable in dark mode (#6373) by @superplane-gh-integration-9000[bot]
Improvements
- Request only one random reviewer (#6178) by @shiroyasha
- Revert "fix: fail stalled loop executions (#6201)" (#6208) by @forestileao
- Add Models API shape guidance to AGENTS.md (#6210) by @forestileao
- Revert "feat: add canvas node cleanup worker for soft-deleted nodes (#6209)" (#6212) by @forestileao
- Refactor cleanup workers to be run-centric (#6215) by @lucaspin
- Add node_id to workflow runs (#6214) by @lucaspin
- Add E2Es for cross-app runs (#6222) by @lucaspin
- Remove outdated runner machine types (#6259) by @re-pixel
- Send object-form commands to task-broker (#6255) by @0vertake
- Load canvas versions with DescribeCanvasVersion (#6350) by @lucaspin
New features
- Canvas auto-focus toggle in zoom toolbar (#6169) by @andrecalil
- Add API key scopes and expiration (#6180) by @forestileao
- Add ExecutionTerminator worker for async execution cancellation (#6199) by @lucaspin
- Refactor Run Claude Agent component agent and environment selection (#6177) by @WashingtonKK
- Add GitLab on Push and on Branch created triggers (#6182) by @WashingtonKK
- Add GitLab getIssue, updateIssue, createIssueComment components (#6064) by @felixgateru
- Add async run cancellation (#6206) by @lucaspin
- Add canvas node cleanup worker for soft-deleted nodes (#6209) by @forestileao
- Add Storybook HomePage and switch live app to Factory (#6216) by @AleksandarCole
- Synchronously trigger run in another app (#6218) by @lucaspin
- Support named broker command_list entries (#6224) by @shiroyasha
- Configure timeout when triggering runs in other apps (#6226) by @lucaspin
- Support broker task files on create-task (#6227) by @shiroyasha
- Add completed node request cleanup worker (#6223) by @forestileao
- Add Run Claude Code runner component (#6225) by @shiroyasha
- Add GitLab create merge request and merge request reviewer components (#6207) by @WashingtonKK
- Add gitlab.onIssueComment and gitlab.onMRDiffNote triggers (#6205) by @felixgateru
- Add structured output to Run Claude Agent and Run Code Agent (#6172) by @felixgateru
- Add Linear create issue and on issue trigger (#6221) by @WashingtonKK
- Add Github updatePullRequest component (#6252) by @felixgateru
- Widget product changes for Software Factory console (#6228) by @andrecalil
- Show waiting for logs message (#6262) by @re-pixel
- Update gitlab integration instructions (#6261) by @WashingtonKK
- Add GitLab addIssueLabel and markMergeRequestReadyForReview components (#6245) by @felixgateru
- Add factory-first new app landing with inline setup (#6263) by @ropsii
- Expand gitlab.onIssue and gitlab.onMergeRequest action fileds (#6257) by @felixgateru
- Add environmentFrom and integration/secret field types for runners (#6288) by @lucaspin
- Add Software Factory console Storybook story (#6283) by @AleksandarCole
- Ship production Software Factory install from new-app landing (#6293) by @forestileao
- Improve Software Factory starting-task prompts and labels (#6353) by @AleksandarCole
- Add Linear get and update issue components (#6331) by @WashingtonKK
- Add GitLab updateMergeRequest and updateIssueComment components (#6284) by @WashingtonKK
- Run context (#5200) by @re-pixel
Full Changelog: v0.29.0...v0.30.0