import { createHash } from 'node:crypto'; /** * Compute a stable fingerprint of a screen's element set. * Sorted so insertion-order changes (React re-renders) don't produce false positives. * Returns first 16 hex chars of SHA-256. */ export function computeElementHash( elements: Array<{ role: string; meaning: string }>, ): string { const pairs = elements .map((e) => `${e.role.toLowerCase()}:${e.meaning.toLowerCase().trim()}`) .sort() .join('|'); return createHash('sha256').update(pairs).digest('hex').slice(0, 16); }