Skip to content

Commit a1f6f07

Browse files
committed
fix(workflows): mask message text, count all block columns, reset selection per comparison
- Agent message bodies go through the same masking as other text fields. - The sync change check's size guard counts block outputs and data, not only sub-blocks. - Picking another version clears the block selection.
1 parent 2a3e35f commit a1f6f07

3 files changed

Lines changed: 17 additions & 3 deletions

File tree

‎apps/sim/app/workspace/[workspaceId]/w/components/workflow-diff/components/change-list/field-change-row.tsx‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,10 @@ function MessagesDiff({ oldValue, newValue }: MessagesDiffProps) {
129129
{!slot.old && ' (added)'}
130130
{!slot.next && ' (removed)'}
131131
</span>
132-
<TextDiff oldText={slot.old?.content ?? ''} newText={slot.next?.content ?? ''} />
132+
<TextDiff
133+
oldText={toDiffText(slot.old?.content)}
134+
newText={toDiffText(slot.next?.content)}
135+
/>
133136
</div>
134137
))}
135138
</div>

‎apps/sim/app/workspace/[workspaceId]/w/components/workflow-diff/workflow-diff-view.tsx‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,12 @@ export function WorkflowDiffView({
6262
environmentBindings = false,
6363
}: WorkflowDiffViewProps) {
6464
const [selectedBlockId, setSelectedBlockId] = useState<string | null>(null)
65+
/* A selection belongs to one comparison; picking another version starts unselected. */
66+
const [selectionFor, setSelectionFor] = useState({ baseState, targetState })
67+
if (selectionFor.baseState !== baseState || selectionFor.targetState !== targetState) {
68+
setSelectionFor({ baseState, targetState })
69+
setSelectedBlockId(null)
70+
}
6571
const [listElement, setListElement] = useState<HTMLDivElement | null>(null)
6672
const listEdges = useScrollEdges(listElement)
6773

‎apps/sim/ee/workspace-forking/lib/copy/deploy-bridge.ts‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -391,15 +391,20 @@ export async function loadTargetDraftState(
391391
}
392392

393393
/**
394-
* Serialized size of the blocks in these workflows' drafts, from one query, so
394+
* Serialized size of the blocks in these workflows' drafts (sub-blocks, outputs
395+
* and data, the block columns a draft load materializes), from one query, so
395396
* a caller can decide whether reading the drafts in full is affordable before
396397
* it reads any of them.
397398
*/
398399
export async function measureTargetDraftBytes(workflowIds: string[]): Promise<number> {
399400
if (workflowIds.length === 0) return 0
400401
const [row] = await db
401402
.select({
402-
bytes: sql<string>`coalesce(sum(octet_length(${workflowBlocks.subBlocks}::text)), 0)`,
403+
bytes: sql<string>`coalesce(sum(
404+
octet_length(${workflowBlocks.subBlocks}::text) +
405+
octet_length(${workflowBlocks.outputs}::text) +
406+
coalesce(octet_length(${workflowBlocks.data}::text), 0)
407+
), 0)`,
403408
})
404409
.from(workflowBlocks)
405410
.where(inArray(workflowBlocks.workflowId, workflowIds))

0 commit comments

Comments
 (0)