← EnergyView

Fase 1 — structuur en leesbaarheid

Referentie: gepubliceerde v266, commit c2d0742, met 172 tests. De audit noemde 171; de extra idle-batterijregressie stond al in deze bronversie. Geen bestaande test is verwijderd. Drie nieuwe controles brengen deze fase op 175 tests.

Wijzigingen staan apart in commits voor bron/bouwuitvoer, formattering en CI, gedeelde escaping, en verwijdering van een oud gegenereerd uploadarchief. src/ is canoniek; dist/ en build-pages/ zijn genegeerde bouwuitvoer. De standalone Worker wordt nog steeds naar dist/server/index.js gebouwd. De HA-build bevat exact dezelfde maandhistorie als de bron, los per maand.

Prettier heeft een vaste configuratie en een CI-controle. De uitvoerbare, gecanonicaliseerde JS van 151 bestaande modules was vóór/na formattering identiek. Lange letterlijke HTML-strings blijven soms lang: ze zijn bewust niet opgesplitst of van inhoud veranderd. De README ging van circa 106 kB naar 2,4 kB; de oude tekst staat in docs/history.

28 lokale esc-functies zijn vervangen door één helper. De variant met parameter v in plaats van s leverde dezelfde gecanonicaliseerde functie op; er was geen afwijkend escape-gedrag. De nieuwe html-tag escaped iedere interpolatie en wordt apart getest. De standaardweergave is niet gewijzigd.

Veel oudere tests namen aan dat iedere handler/functie op één regel stond of dat alle broncode exact dezelfde spaties had. Die controles lezen nu tokens of de volledige AST-functie/statement. Dezelfde operators, literals, callbacks, DOM-IDs en gedragsasserties blijven vereist. Een nieuwe test bewijst dat gewijzigde operators, returnwaarden en identifiers nog steeds worden afgewezen. HTML/CSS- broncontroles negeren uitsluitend formatteringsverschillen.

Validatie: npm test 175 geslaagd, 0 mislukt; npm run perf:golden groen voor alle acht oorspronkelijke scenario's (maximaal €0,01, identieke ranglijsten/IDs). Formatcontrole, Pages-, Worker- en HA-build slagen. deployment-source controleert herhaalbare Pages-uitvoer en alle HA-historiemaanden tegen de canonieke bron.

ESLint en checkJs zijn toegevoegd als zichtbare regressiepoorten, niet als claim dat alle bestaande code foutvrij getypeerd is. De initiële baseline bevat 496 checkJs-meldingen en 751 lintmeldingen: 749 conservatieve HTML-interpolaties en twee dubbele sleutels in de bestaande configuratie. De laatste twee hebben ook een bewuste override na settings.report; die rekeninstellingen zijn niet gewijzigd. HTML-interpolatiemeldingen betekenen niet automatisch een injectielek: veel zijn bestaande samengestelde markup of gecontroleerde numerieke waarden. De volledige meldingen zijn vastgelegd; iedere nieuwe groep of extra melding faalt CI. Dit is een expliciete beperking van deze fase, geen stilzwijgende uitschakeling van checks.

De ongebundelde uitvoer is groter door formattering: app.js 179.253 → 218.548 B, CSS 103.730 → 128.775 B, HTML 45.159 → 65.016 B. De tarieven blijven exact gelijk: data.json verzonden representatie 1.989.352 B, gas-data.json 1.976.696 B. Dit is geen laadsnelheidsverbetering; bundelen volgt in fase 2. Browser-FCP/TTI en een echte Home Assistant-installatie zijn in deze fase niet gemeten.