Found upgrading HotCRM to ObjectStack 17.0.0-rc.0 (console pinned at 4a4829d0).
Symptom
A list view declaring legacy string row actions (rowActions: ['convert_lead']) renders a menu item that, when clicked, performs zero network requests and reports success. Because object-level actions with locations:['list_item'] also inject their own (working) item, the menu shows a working and a dead duplicate of the same action side by side.
Root cause
packages/plugin-grid/src/ObjectGrid.tsx:1500-1506: the legacy string path dispatches { type: <action name>, params: { record } } — the action name lands in the type slot, never resolved against the object's action defs.packages/core/src/actions/ActionRunner.ts:438 + :542-553: unrecognized type falls to the default branch → executeActionSchema() (:887-908), which without api/endpoint/navigate/onClick returns {success:true, reload:true, close:true} — no fetch, then handlePostExecution (:625-644) fires a green "Action completed successfully" toast.
Suggested fix
Resolve string row actions against objectDef.actions by name (then dispatch the resolved def), and make executeActionSchema's empty-schema fallthrough a loud error instead of a silent success.
Found upgrading HotCRM to ObjectStack 17.0.0-rc.0 (console pinned at
4a4829d0).Symptom
A list view declaring legacy string row actions (
rowActions: ['convert_lead']) renders a menu item that, when clicked, performs zero network requests and reports success. Because object-level actions withlocations:['list_item']also inject their own (working) item, the menu shows a working and a dead duplicate of the same action side by side.Root cause
packages/plugin-grid/src/ObjectGrid.tsx:1500-1506: the legacy string path dispatches{ type: <action name>, params: { record } }— the action name lands in thetypeslot, never resolved against the object's action defs.packages/core/src/actions/ActionRunner.ts:438+:542-553: unrecognized type falls to the default branch →executeActionSchema()(:887-908), which withoutapi/endpoint/navigate/onClickreturns{success:true, reload:true, close:true}— no fetch, thenhandlePostExecution(:625-644) fires a green "Action completed successfully" toast.Suggested fix
Resolve string row actions against
objectDef.actionsby name (then dispatch the resolved def), and makeexecuteActionSchema's empty-schema fallthrough a loud error instead of a silent success.