diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/editor.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/editor.tsx
index 6d7829c17..42e88b22a 100644
--- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/editor.tsx
+++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/editor.tsx
@@ -618,6 +618,15 @@ export function Editor() {
)}
+ {hasAdvancedOnlyFields && !canEditBlock && displayAdvancedOptions && (
+
+
+
+ Additional fields
+
+
+
+ )}
{advancedOnlySubBlocks.map((subBlock, index) => {
const stableKey = getSubBlockStableKey(
diff --git a/apps/sim/socket/handlers/subblocks.ts b/apps/sim/socket/handlers/subblocks.ts
index 0c4e6e449..997f8416c 100644
--- a/apps/sim/socket/handlers/subblocks.ts
+++ b/apps/sim/socket/handlers/subblocks.ts
@@ -232,6 +232,7 @@ async function flushSubblockUpdate(
}
let updateSuccessful = false
+ let blockLocked = false
await db.transaction(async (tx) => {
const [block] = await tx
.select({
@@ -250,6 +251,7 @@ async function flushSubblockUpdate(
// Check if block is locked directly
if (block.locked) {
logger.info(`Skipping subblock update - block ${blockId} is locked`)
+ blockLocked = true
return
}
@@ -266,6 +268,7 @@ async function flushSubblockUpdate(
if (parentBlock?.locked) {
logger.info(`Skipping subblock update - parent ${parentId} is locked`)
+ blockLocked = true
return
}
}
@@ -308,6 +311,13 @@ async function flushSubblockUpdate(
serverTimestamp: Date.now(),
})
})
+ } else if (blockLocked) {
+ pending.opToSocket.forEach((socketId, opId) => {
+ io.to(socketId).emit('operation-confirmed', {
+ operationId: opId,
+ serverTimestamp: Date.now(),
+ })
+ })
} else {
pending.opToSocket.forEach((socketId, opId) => {
io.to(socketId).emit('operation-failed', {