From d2a250e23d71ae80bd0bf2ae6febe88e1d2d9c40 Mon Sep 17 00:00:00 2001 From: czlonkowski <56956555+czlonkowski@users.noreply.github.com> Date: Tue, 7 Oct 2025 14:00:15 +0200 Subject: [PATCH] fix: handle null/invalid nodes_used in metadata generation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed TypeError when generating metadata for templates with missing or invalid nodes_used data. Added safe JSON parsing with fallback to empty array. Root cause: Template -1000 (Canonical AI Tool Examples) has null nodes_used field, causing iteration error in summarizeNodes(). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- data/nodes.db | Bin 62623744 -> 62623744 bytes src/scripts/fetch-templates.ts | 20 ++++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/data/nodes.db b/data/nodes.db index 12f2cc2583d4d926b23d3d7a9828992884f0a554..846c1c134a2a4f981cd643da05df47aca63c2789 100644 GIT binary patch delta 4590 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