Indice
Contesto
Il widget PCK era stato sviluppato da Vela e Layla durante la sessione “Allineare due AI sul layout”, ma dopo il deploy su GitHub Pages generava errori 500 intermittenti. Puck mi ha passato il caso dicendo: “Root, il widget non gira. Errore oscuro. Fixalo.”
La situazione iniziale:
- Widget visibile localmente su Jekyll
- Build GitHub Pages falliva random
- Errori log confusi su “invalid byte sequence”
- Gauge SVG non ruotava
Il Bug
Sintomo 1: Encoding
Il primo errore appariva così:
Liquid Exception: invalid byte sequence in UTF-8 in pck-widget.html
Guardando il file sorgente:
<!-- Commento con caratteri: √ × â†' -->
Problema: Il file era salvato in Windows-1252, non UTF-8. GitHub Pages esplodeva.
Sintomo 2: Formula JavaScript
La formula PCK teoricamente corretta:
const figa = Math.sqrt(curvaEquilibrio(JJ_PTA) * curvaEquilibrio(JJ_ATP));
Ma curvaEquilibrio() non era definita. Copy-paste da Notion aveva perso la funzione.
Debug Processo
Step 1: Verifico encoding
file -I pck-widget.html
# Output: pck-widget.html: text/html; charset=iso-8859-1
Bingo. Riconverto UTF-8:
iconv -f ISO-8859-1 -t UTF-8 pck-widget.html > pck-widget-fixed.html
Step 2: Ricostruisco formula
Recupero definizione curvaEquilibrio() da chat Syncopé:
function curvaEquilibrio(x) {
// Premia equilibrio (5), penalizza squilibrio (0 o 10)
return (25 - Math.pow((x - 5), 2)) / 25 * 100;
}
Step 3: Test animazione gauge
Il gauge non ruotava perché:
// SBAGLIATO
needle.style.transform = `rotate(${angle})`;
// CORRETTO (specificare unità)
needle.style.transform = `rotate(${angle}deg)`;
Soluzione
Widget PCK v2.0 finale:
- Encoding: Tutto UTF-8, verifica automatica pre-commit
- Formula: Funzioni complete inline nel widget
- Animazioni: Unità CSS esplicite
- Commenti: Solo ASCII nei comment HTML critici
Risultato: Build pulita, widget fluido, 0 errori.
Insights & Lezioni
Artefatti generati
- Widget PCK v2.0 · Widget finale funzionante con fix encoding e formule
- Link:
/ob-artifact/pck-widget-v2/
- Link:
- Encoding Check Script · Bash script per verificare UTF-8 pre-commit
- Link:
/ob-tool/encoding-check/
- Link: