From 46cec1c12e1b9452acc4eae54e2e287bca4244d1 Mon Sep 17 00:00:00 2001 From: igurielidze Date: Mon, 30 Mar 2026 23:32:00 +0400 Subject: [PATCH] Add SHA-256 lastModificationSignature to resource.json Ignition requires this signature to validate resource integrity. Without it, the Designer fails with "Error reading updated project". Co-Authored-By: Claude Opus 4.6 (1M context) --- svelte-app/src/lib/export.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/svelte-app/src/lib/export.ts b/svelte-app/src/lib/export.ts index 0c86c5f..50a27c0 100644 --- a/svelte-app/src/lib/export.ts +++ b/svelte-app/src/lib/export.ts @@ -569,6 +569,12 @@ export async function deployToIgnition() { }, }, null, 2); + // Compute SHA-256 signature of view.json for Ignition resource integrity + const viewBytes = new TextEncoder().encode(viewJson); + const hashBuffer = await crypto.subtle.digest('SHA-256', viewBytes); + const hashArray = Array.from(new Uint8Array(hashBuffer)); + const signature = hashArray.map(b => b.toString(16).padStart(2, '0')).join(''); + const resourceJson = JSON.stringify({ scope: 'G', version: 1, @@ -576,8 +582,9 @@ export async function deployToIgnition() { overridable: true, files: ['view.json'], attributes: { + lastModificationSignature: signature, lastModification: { - actor: 'scada-layout-tool', + actor: 'admin', timestamp: new Date().toISOString(), }, },