Omit handle fields from serialization entirely

Since edges use floating calculations that ignore handle positions,
the handle IDs (like 'top-source', 'right-target') should never be
persisted. They're only used to define clickable areas for connections.

This ensures consistency: both migrated old edges and newly created
edges will have no handle fields in saved JSON files.

Addresses PR review comment about serialization inconsistency.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Jan-Henrik Bruhn 2026-01-24 16:33:17 +01:00
parent 4b865762a1
commit 93a5f38112

View file

@ -226,23 +226,16 @@ export function serializeActors(actors: Actor[]): SerializedActor[] {
*/ */
export function serializeRelations(relations: Relation[]): SerializedRelation[] { export function serializeRelations(relations: Relation[]): SerializedRelation[] {
return relations.map(relation => { return relations.map(relation => {
const serialized: SerializedRelation = { // Omit handle fields entirely - edges use floating calculations
// The handle IDs (like "top-source", "right-target") are only for defining
// clickable areas and should not be persisted
return {
id: relation.id, id: relation.id,
source: relation.source, source: relation.source,
target: relation.target, target: relation.target,
type: relation.type, type: relation.type,
data: relation.data, data: relation.data,
}; };
// Only include handles if they exist and are non-null/non-undefined
if (relation.sourceHandle != null) {
serialized.sourceHandle = relation.sourceHandle;
}
if (relation.targetHandle != null) {
serialized.targetHandle = relation.targetHandle;
}
return serialized;
}); });
} }