You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(triggers): stop copy/paste and duplicate reusing a trigger block's webhook URL
Pasting or duplicating a deployed webhook trigger block carried the source's
triggerPath and webhookId onto the clone. The clone rendered the original's
public URL, and deploy resolved both blocks to one path — landing on the
path_deployment_unique index as an opaque 500 rather than an actionable error.
PR #1784 fixed this for duplicate, but the guard was deleted by three later
paste refactors (#2649, #2738, #3024) and had no regression test.
- Clear only the webhook identity (webhookId, triggerPath) on clones, so deploy
falls back to the clone's freshly generated block id for the path. Trigger
configuration (triggerConfig, triggerId) is preserved — it can be a legacy
trigger's only config home.
- Clear both the subBlocks structure and the sub-block value map: the value map
is authoritative in mergeSubblockStateWithValues.
- Gate on isBlockActingAsTrigger, not the subblock id: Discord, Attio, and
Vercel action blocks expose a required user-entered webhookId field. Mirrors
deploy's resolveTriggerId so both sides agree on which blocks own a webhook.
- Cover duplicateBlock, which bypasses regenerateBlockIds entirely.
- Reject two same-workflow trigger blocks sharing a path at deploy with a 400
naming both blocks; the existing guards are cross-workflow only.
Import/export and server-side duplicate paths are deliberately untouched.
0 commit comments