## superplanehq/superplane — v0.29.0…v0.30.0

_74 commits._

### Features
- **feat: run context (#5200)** (896f1f9)
- **feat: add GitLab updateMergeRequest and updateIssueComment components (#6284)** (02719bf)
- **feat: add Linear get and update issue components (#6331)** (ca2c912)
- **feat: improve Software Factory starting-task prompts and labels (#6353)** (358a504)
- **feat: ship production Software Factory install from new-app landing (#6293)** (03196f0)
- **feat: add Software Factory console Storybook story (#6283)** (fe4fdf0)
- **feat: add environmentFrom and integration/secret field types for runners (#6288)** (eb3e8c0)
- **feat: expand gitlab.onIssue and gitlab.onMergeRequest action fileds (#6257)** (962bb57)
- **feat: add factory-first new app landing with inline setup (#6263)** (273b224)
- **feat: add GitLab addIssueLabel and markMergeRequestReadyForReview components (#6245)** (2390faf)
- **feat: update gitlab integration instructions (#6261)** (3582874)
- **feat: show waiting for logs message (#6262)** (da1e486)
- **feat(console): widget product changes for Software Factory console (#6228)** (32ef724)
- **feat: add Github updatePullRequest component (#6252)** (41fe8a9)
- **feat: add Linear create issue and on issue trigger (#6221)** (9df536c)
- **feat: add structured output to Run Claude Agent and Run Code Agent (#6172)** (ff34969)
- **feat: add gitlab.onIssueComment and gitlab.onMRDiffNote triggers (#6205)** (7652ef4)
- **feat: add GitLab create merge request and merge request reviewer components (#6207)** (ad9afc5)
- **feat: add Run Claude Code runner component (#6225)** (c02b116)
- **feat: add completed node request cleanup worker (#6223)** (5969db9)
- **feat: support broker task files on create-task (#6227)** (01ccbce)
- **feat: configure timeout when triggering runs in other apps (#6226)** (6551426)
- **feat: support named broker command_list entries (#6224)** (49c218d)
- **feat: synchronously trigger run in another app (#6218)** (1f58fc5)
- **feat: add Storybook HomePage and switch live app to Factory (#6216)** (e372f02)
- **Revert "feat: add canvas node cleanup worker for soft-deleted nodes (#6209)" (#6212)** (35bc83b)
- **feat: add canvas node cleanup worker for soft-deleted nodes (#6209)** (e533385)
- **feat: add async run cancellation (#6206)** (01f7226)
- **feat: add GitLab getIssue, updateIssue, createIssueComment components (#6064)** (7f4cd76)
- **feat: add GitLab on Push and on Branch created triggers (#6182)** (9c2d3be)
- **feat: refactor Run Claude Agent component agent and environment selection (#6177)** (70a5668)
- **feat: add ExecutionTerminator worker for async execution cancellation (#6199)** (e6c9706)
- **feat: add API key scopes and expiration (#6180)** (2a8cf62)
- **feat: canvas auto-focus toggle in zoom toolbar (#6169)** (308a362)

### Fixes
- **fix: Selected text in agent chat isn't readable in dark mode (#6373)** (a903ab1)
- **fix: use registryimports in integrations count script (#6367)** (cbc59e6)
- **fix: sanitize SMTP headers to prevent CRLF injection (#6355)** (7f96681)
- **fix: enforce organization scoping on CanvasService handlers (#6354)** (428c559)
- **fix: correlate factory kanban cards by issue number (#6352)** (a05317c)
- **fix: return metadata-only from ListCanvasVersions and load spec on selection (#6351)** (abaf24d)
- **fix: Use shared SecretsContext test double in http component tests (#6347)** (d68f352)
- **fix(ui): small UX adjustments on runApp and onRun components (#6299)** (dcbff22)
- **fix: Add unit test for crypto.HashPassword and VerifyPassword (#6337)** (5dd76c0)
- **fix: Add widget-level option to allow concurrent run submissions on node widget trigger buttons (#6307)** (276450e)
- **fix: Restore missing runs icon on Console tab of app page (#6298)** (79e8f7d)
- **fix: improve global command palette dark theme for search results (#6294)** (b4d991a)
- **fix: Improve AGENTS.md with clearer structure, setup steps, and contribution guidelines (#6286)** (2899282)
- **fix: Runners summary: task_id should be Task ID (#6279)** (036338b)
- **fix: ship Claude Code bash steps as raw user commands (#6282)** (de65915)
- **fix: Submit commit form on enter (#6278)** (2d5e1c3)
- **fix: finalize terminal runner log sections (#6277)** (5c1f93c)
- **fix: include runner task error in finished payload (#6273)** (98df849)
- **fix: only resync staged draft on See Current Version during edit session (#6251)** (bfd3d83)
- **fix: Clone notes on the canvas (#6250)** (a39b5c4)
- **fix: resync staged draft when returning to live version from history preview (#6249)** (255d28a)
- **fix: Scheduler: first run skips current hour when minute has not passed yet (#6231)** (bceeef8)
- **Revert "fix: fail stalled loop executions (#6201)" (#6208)** (fdf6706)
- **fix: fail stalled loop executions (#6201)** (ee34f3f)
- **fix: simplify owner setup (#6198)** (cae6066)
- **fix: restore dark mode surfaces (#6195)** (492f373)
- **fix: apply dark theme on owner setup pages (#6193)** (b077823)
- **fix: reclaim claude runAgent sessions when a run ends badly (#6097)** (8bfa778)
- **fix: Relatively long commit message overflows in the commit message input (#6179)** (bf195cc)
- **fix: Select/multi-select dropdown gets cut off when it is the last field in component config (#6163)** (fe8b3ce)
- **fix: Components filter should take into account subheader text (#6167)** (d9a27a4)
- **fix: UI diff view does not normalize YAML field ordering before comparison (#6158)** (81626b2)

### Docs
- **docs: add Models API shape guidance to AGENTS.md (#6210)** (6dfa0d4)

### Chore
- **chore: load canvas versions with DescribeCanvasVersion (#6350)** (2a0b3ea)
- **chore: send object-form commands to task-broker (#6255)** (54b879b)
- **chore: remove outdated runner machine types (#6259)** (faa5f12)
- **chore: add E2Es for cross-app runs (#6222)** (840b774)
- **chore: add node_id to workflow runs (#6214)** (21f0055)
- **chore: refactor cleanup workers to be run-centric (#6215)** (fe4a2d9)
- **chore: Request only one random reviewer (#6178)** (1ebb066)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/superplanehq/superplane?utm_source=github-action)._