Summary
In the Console, pressing Submit on a screen-flow step does nothing. No network request is made, the dialog closes, and the flow stays paused forever. Every screen flow in an app is therefore un-completable from the UI.
The backend is fine — POST /api/v1/automation/:flow/runs/:runId/resume exists and works. The Console simply never calls it.
Environment
Steps to reproduce
- Define any
type: 'screen' flow with a screen node, and a type: 'flow' action targeting it.
- Open a record, click the action.
- The screen renders correctly (fields, labels, options all come through).
- Fill it in and press Submit.
Expected
The Console POSTs the collected variables to the run's resume endpoint, the flow continues past the screen node, and the downstream nodes execute.
Actual
- The dialog closes.
- Zero network requests are issued (verified in devtools; the only automation call in the whole interaction is the initial
POST /api/v1/automation/:flow/trigger).
- No records are created or updated. No console errors, no server errors.
Concrete case
HotCRM's lead_conversion flow — its flagship "convert a lead into an account/contact/opportunity" journey:
Before Submit: crm_account total = 5, lead.status = 'new', lead.is_converted = false
After Submit: crm_account total = 5, lead.status = 'new', lead.is_converted = false
The same flow completes correctly when driven over HTTP by hand:
RUN=$(curl -s -b cookies.txt -X POST \
"$HOST/api/v1/automation/schedule_followup/trigger" \
-H 'Content-Type: application/json' \
-d '{"recordId":"<leadId>","objectName":"crm_lead","params":{"recordId":"<leadId>"}}' \
| jq -r .data.runId)
curl -s -b cookies.txt -X POST \
"$HOST/api/v1/automation/schedule_followup/runs/$RUN/resume" \
-H 'Content-Type: application/json' \
-d '{"variables":{"subject":"Send proposal","dueDate":"2026-07-30","activityType":"email","priority":"high"}}'
# → {"success":true,"data":{"success":true,"output":{},"durationMs":7182}}
# → the crm_task is created, and the downstream update_record node runs too
So: engine ✅, resume route ✅, flow definition ✅ — only the Console's Submit handler is missing the call.
Notes
@objectstack/client's automation surface (dist/index.mjs) exposes getFlow, execute, listRuns, getRun — but no resume. That looks like the root cause: the SDK the Console builds on has no way to express the call.
- Impact is total for screen flows: they are the documented way to build guided, multi-step business actions, and none of them can be finished by a user.
Related
Filed alongside a second Console-side action defect (modal-typed actions submitting to meta/object/<target>), found in the same pass.
Summary
In the Console, pressing Submit on a screen-flow step does nothing. No network request is made, the dialog closes, and the flow stays paused forever. Every screen flow in an app is therefore un-completable from the UI.
The backend is fine —
POST /api/v1/automation/:flow/runs/:runId/resumeexists and works. The Console simply never calls it.Environment
@objectstack/*16.1.0objectstack dev), wasm sqliteSteps to reproduce
type: 'screen'flow with ascreennode, and atype: 'flow'action targeting it.Expected
The Console POSTs the collected variables to the run's resume endpoint, the flow continues past the screen node, and the downstream nodes execute.
Actual
POST /api/v1/automation/:flow/trigger).Concrete case
HotCRM's
lead_conversionflow — its flagship "convert a lead into an account/contact/opportunity" journey:The same flow completes correctly when driven over HTTP by hand:
So: engine ✅, resume route ✅, flow definition ✅ — only the Console's Submit handler is missing the call.
Notes
@objectstack/client'sautomationsurface (dist/index.mjs) exposesgetFlow,execute,listRuns,getRun— but noresume. That looks like the root cause: the SDK the Console builds on has no way to express the call.Related
Filed alongside a second Console-side action defect (modal-typed actions submitting to
meta/object/<target>), found in the same pass.