Holocron v1.4.4
Dashboard fixes verified end-to-end via Playwright. v1.4.3 shipped untested code that fixed Story but left People crashing on hardcoded data.characters.kira.stats (template assumed a specific protagonist key from the example data — every real project has a different protagonist key, so every real project crashed People), Workshop crashing on s.date.slice in the Velocity sparkline (data.history.wordcountSnapshots had drifted shape {at, totalWords} instead of {date, total}), and the Story tab's POV/Tense table emitting React key warnings (povTenseConsistency[] rows used {scene, pov, tense} instead of {chapterId, declaredPov, detectedPov, declaredTense, detectedTense}). Every tab now renders against the real-world drifted data with zero console errors.
Fixed
templates/dashboard/index.html— PeopleTab picks the protagonist by inspecting characters in this order: any entry whoserolematches/protagonist|pov/i, else any entry with astatsobject, else the first entry. Renders an empty-state line ("No protagonist attributes declared…") if none found. No more hardcodedkiralookup.templates/dashboard/index.html—Velocitycomponent guards against single-snapshot history ((snapshots.length - 1)was dividing by zero, producingNaNSVG coordinates), normalises missing/empty snapshots to one placeholder point, and computesmaxovers.total || 0.templates/dashboard/index.html—normalizeDataextended to cover two more drift patterns observed in real data:history.wordcountSnapshots[](at→date,totalWords→total), andpovTenseConsistency[](scene→chapterId, singlepov/tensescalars expand to declared+detected pairs with reasonable defaults). Also injects an empty 8×7writingActivitymatrix when the field is missing, so the cadence heatmap renders an empty grid instead of crashing.
Process note
This release was verified by loading index.html via python -m http.server and clicking each of the five tabs through a Playwright MCP browser, checking the console after each click. All five tabs reach zero errors. v1.4.3 should not have shipped without this check.