Compare commits

...
119 Commits
Author SHA1 Message Date
manzolo cfe7cb7fd6 Versione 0.1.68
test / release (push) Successful in 9s
test / test (push) Successful in 52s
2026-11-01 11:07:36 +01:00
manzoloandClaude Opus 5.5 9499c7792b Le Gitea Actions: test unitari a ogni push su main e sui tag, e sul tag vX.Y.Z la release con i commit dal tag prima (.gitea/workflows/test.yml); il runner sul PC si crea o riavvia con make runner (tools/gitea-runner, scripts/runner.sh, token di registrazione chiesto a Gitea con le credenziali di git); hook pre-push con check-public (make hooks) (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-11-01 10:58:38 +01:00
manzoloandClaude Opus 5.5 3a9db6d109 Il deploy passa dal registry di Gitea: make deploy costruisce l'immagine dal tag della versione, la spinge su git.manzolo.it/manzolo/leggenda-regolo:vX.Y.Z e :latest, scrive il tag nel compose del VPS e lì fa pull e up; tolto docker save/load. Il compose di produzione si chiama docker-compose.deploy.yml. Nel README il download dagli zip dei tag, in CLAUDE.md il nuovo flusso (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-11-01 10:44:58 +01:00
manzolo 797eb80980 Versione 0.1.67 2026-11-01 00:31:17 +01:00
manzoloandClaude Fable 5.1 00e9f7c4d7 Il flipper: chiuso il canale dietro la Pieve fra la parete e il dorso dei bersagli, dove la pallina scendeva dritta nell'uscita sinistra (Andrea: «a sinistra esce troppo facile»); due raccordi inclinati, disegnati come le altre sponde; test (Andrea)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-11-01 00:21:49 +01:00
manzoloandClaude Fable 5.1 77a8777dcd Il flipper alleggerito senza cambiarne l'aspetto: il mobile statico sullo sfondo CSS della tela invece di una copia a tutto schermo per fotogramma, estremità e giunti arrotondati solo nei livelli in cache; arretrato grafico da 4,2 s a 0,03 s per 150 fotogrammi; la misura dell'arretrato nella prova nel browser al posto dell'intervallo fra frame, che non misurava nulla (Andrea)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-11-01 00:14:31 +01:00
manzoloandClaude Fable 5.1 b660bbeb96 Il flipper rifatto da Codex: tavola ad alta risoluzione con lacca, cromature e luci animate; due LOCK (tre passaggi sulla stessa rampa in venti secondi, Fortezza e Trebbio), la SUPER SPECIAL al centro che si apre con entrambi i lock e dà pallina premio e multiball a tre; jackpot fino a x3 coi bersagli, nuove fanfare; la valvola contro il rientro nella molla; display del punteggio e pannello della caccia al jackpot ai lati; test unitari e nel browser (lock, super, multiball) (Andrea)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 23:47:51 +01:00
manzoloandClaude Fable 5.1 bbce40b014 Test del tabellone: quanto manca al traguardo sta nella riga in basso, non più nel pannello
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 23:18:09 +01:00
manzoloandClaude Fable 5.1 0ec45c8745 Il flipper col LOCK (idea di Andrea, fatto da Codex e completato): lo stesso ponte tre volte trattiene la pallina e ne dà una nuova, l'altro ponte SPECIAL vale il JACKPOT e il MULTIBALL a due palline; serratura, seconde palline e SPECIAL nel disegno, suoni, aiuto, test; imbocchi delle rampe al centro e uscite laterali più strette (Codex); pallina premio al traguardo; la barra del traguardo sotto la finestra invece del pannello sul Trebbio; il Boccino prudente in curva
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 23:17:36 +01:00
manzoloandClaude Fable 5.1 dfa70a9620 Il Boccino (Gabriele Chiesi, consenso del 31 ottobre) corre il GP di Fortezza col suo NRG bianco e rosso numero 1 (motorino e ritratto di Codex dalle sue foto) (Andrea)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 22:52:53 +01:00
manzoloandClaude Fable 5.1 3079c6ea8a Il tabellone del flipper è un vero backglass: il fondale di Codex col Castello del Trebbio, la Fortezza, il Regolo e i fuochi dei rioni; le cifre nella finestra nera, le lampadine sui bordi, i dischi delle palline e dei rioni, i ponti ai lati, il fondale che lampeggia ai colpi grossi (Andrea)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 22:10:55 +01:00
manzoloandClaude Fable 5.1 4d4aa8aeea Il flipper più spettacolare: anelli e scintille, coriandoli dei rioni, luci che corrono sui ponti, punti che volano, lampo e scossa, scia della pallina, regia e fanfare sul tabellone; ponti, sponde e griglia dei punti in cache (niente arretrato grafico) (Andrea)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 22:06:26 +01:00
manzoloandClaude Fable 5.1 721b6de930 Test della combo: la pallina persa è in gioco, non sulla molla
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 21:47:50 +01:00
manzoloandClaude Fable 5.1 7d419be27a Test dei ponti: la pallina persa parte da sotto i flipper
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 21:46:58 +01:00
manzoloandClaude Fable 5.1 07b6a381c1 Il flipper dopo la seconda revisione di Codex: flipper vivi anche sul ponte, imbocco solo in salita, ponti con la stessa energia su e giù e uscita nelle corsie di ritorno, combo che scade, scritte in coda col traguardo davanti, tabellone con l'esito giusto e le cifre che corrono in tempo fisso, tasti del mouse dalla maschera, glifi rifatti
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 21:43:57 +01:00
manzoloandClaude Fable 5.1 45b8c3d98e STATO.md: i ponti, i punti ×10, il tabellone luminoso e l'ingresso al flipper con un clic
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 21:21:31 +01:00
manzoloandClaude Fable 5.1 0a8b0310d3 Il flipper coi due ponti (le rampe che si incrociano sopra la tavola, i PONTI se fatti di fila), i punti ×10 come sui flipper degli anni 2000, il tabellone a punti luminosi con le cifre che corrono e le scritte che lampeggiano, e un clic sul River che entra e va al flipper (Andrea)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 21:20:53 +01:00
manzolo a50847da2b Versione 0.1.66 2026-10-31 20:32:52 +01:00
manzoloandClaude Fable 5.1 1fc446d02a Il flipper rivisto con la revisione di Codex: punti solo a un urto nuovo, sottopassi contro gli attraversamenti, molla che arriva sempre in campo (senza cancelletto), salvataggio col tempo della simulazione e in vista, corsie che contano attraversando la riga, traguardo acquisito appena raggiunto, annullare non lancia, due dita e tasto destro, pulsanti dei flipper sempre attivi
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 20:24:01 +01:00
manzoloandClaude Fable 5.1 7076123fcf Il flipper del River: la tavola di Codex con San Piero dipinto (Fortezza, Pieve, torre, la Sieve fra i flipper, il Regolo con la corona, le bandiere dei rioni) e sopra le parti meccaniche del gioco: molla, arco, corsie dei rioni (tutte e quattro: PALIO), funghi, bersagli a caduta, Regolo, sponde elastiche, due flipper; fisica a passo fisso, tre palline, tre livelli (Andrea)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 18:53:04 +01:00
manzolo 449c9511e1 Versione 0.1.65 2026-10-31 18:00:32 +01:00
manzoloandClaude Opus 5.5 0ec49c4fe7 Lo zio Mario: «Menomale tu ci sei te, Zio!» / «Alla terza tu capisci subito, al volo!» alla Ghiacciomobile, e nell'orto la California «sopra Firenzola» (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 17:11:01 +01:00
manzoloandClaude Opus 5.5 b41cadd95b Lo zio Mario alla Ghiacciomobile: «Siamo a cavallo al ciuco!» e «Tu sei sveglio: alla terza volta tutta capisci subito!» (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 17:06:19 +01:00
manzoloandClaude Opus 5.5 0bd3e2255f Il gioco sta solo sul VPS: make deploy spedisce dritto lì e controlla la versione sull'indirizzo pubblico; tolti deploy-vps e la copia di home-server (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 16:21:56 +01:00
manzoloandClaude Opus 5.5 dc17a7f963 Il sito pubblico è sul VPS: make deploy-vps controlla che https://50037.manzolo.it serva la versione appena spedita (VPS_URL); STATO.md aggiornato
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 16:16:24 +01:00
manzolo 995ad09cca Versione 0.1.64 2026-10-31 15:49:24 +01:00
manzoloandClaude Opus 5.5 b9e9976d34 La hardcore techno di Andrea (Suno) alla console del campo da basket di Via Cipriani, portata al volume del gioco; da lontano la house della Piazza e la tecno (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 15:38:29 +01:00
manzoloandClaude Opus 5.5 d37dafd58c Il test delle bruciate rovescia a cottura piena: al limite, con certe castagne, una volta su cento ne restavano crude troppe
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 15:34:22 +01:00
manzoloandClaude Opus 5.5 4d1611c6eb All'Ingorgo anche l'inizio di Via Cipriani: sfondo di notte di Codex, la console sul campo da basket con le casse in cima alle scale, laser rossi e strobo, la folla che poga a 180 battiti; la folla davanti ad Andrea senza fessure fra le due fasce (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 15:33:17 +01:00
manzoloandClaude Opus 5.5 7268585ed9 La musica anni '90 di Andrea (Suno) alla console del giardino di Via Calimara, portata al volume del gioco; da lontano la house della Piazza e il latino del Comune (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 15:27:06 +01:00
manzoloandClaude Opus 5.5 1b929f1333 All'Ingorgo anche Via Calimara: sfondo di notte di Codex, la console nel giardino sotto i cedri con la palla a specchi, la strada piena e la folla che salta (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 15:24:16 +01:00
manzoloandClaude Opus 5.5 3ba108cf88 All'Ingorgo Andrea ha la sua birra (foglio di Codex): camminando la tiene davanti al petto, parlando pure, e fermo alza il bicchiere schiumante a tempo con la folla (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 15:20:22 +01:00
manzoloandClaude Opus 5.5 70f4e641dc All'Ingorgo Andrea sta dentro la folla: dalla vita in giù la gente dello sfondo gli passa davanti, a strisce che saltano a tempo con la folla e col bordo a teste (Andrea: «sembra di volare fra le persone»)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 15:17:01 +01:00
manzoloandClaude Opus 5.5 23aa9c4788 In cima a Via dell'Antica Posta si arriva sotto la console dell'underground (il marciapiede di destra, fino in fondo); sotto una console le altre calano fino al loro filo, così lì si sente la sola musica di quella (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 15:09:45 +01:00
manzoloandClaude Opus 5.5 04f9a5cb12 Il minigioco delle bruciate alla Smarronata: coi volontari della Misericordia si gira a mano la manovella del cilindro sul fuoco, facendo giri col dito o col mouse; troppo piano si carbonizzano sotto e restano crude sopra, troppo forte volano nel fuoco; cotte, nel sacco (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 15:03:55 +01:00
manzolo 6b833341c5 Versione 0.1.63 2026-10-31 13:52:01 +01:00
manzoloandClaude Fable 5.1 4fe6bf4649 All'Ingorgo la folla dipinta salta a tempo: la fascia della gente tagliata in strisce che sobbalzano sul battito, due fasce per scena, dietro piano e davanti forte (Andrea)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 13:42:55 +01:00
manzoloandClaude Fable 5.1 b10f031133 Il risveglio leggero per davvero: palpebre disegnate su una tela piccola e allargate con l'interpolazione (bordo morbido senza filtri né passate), tutto sulla tela principale, una versione sola; l'arretrato grafico dopo il risveglio passa da 24 secondi a un decimo. «Fanfara» si legge senza accenti (Andrea)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 13:40:43 +01:00
manzoloandClaude Opus 5.5 4d2278a8f8 La musica della Smarronata, di Andrea con Suno: il liscio nello spiazzo, più forte vicino alle coppie che ballano, e la mazurca dentro il tendone (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 12:45:01 +01:00
manzoloandClaude Opus 5.5 5a38e0eafe La Smarronata piena di gente com'era: i volontari della Misericordia alle bruciate, la fanfara degli alpini, la polenta, il vino, la gente coi cartocci e le coppie del liscio; il fuoco vivo sotto il cilindro delle bruciate; nei Ringraziamenti la dedica allo zio Mario (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 12:39:56 +01:00
manzoloandClaude Opus 5.5 4f2ee45abf Il tendone della Smarronata col tetto a botte, fuori e dentro, come nel video del 1993, con la fascia tricolore (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 12:26:33 +01:00
manzoloandClaude Opus 5.5 09b031dc2e Nel tendone della Smarronata i cartelli dipinti della polenta e del vino gratis, da guardare ingranditi; «fanfara» si legge fanfàra (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 12:22:34 +01:00
manzoloandClaude Opus 5.5 616d514fc5 Il cartello della Smarronata sul lampione si clicca: stava sotto la Sieve, che lo copriva (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 12:15:01 +01:00
manzoloandClaude Opus 5.5 b07a1e4941 La Smarronata del 1993: dal vecchio cartello sul lampione del Ponte sulla Sieve, coi ricordi di Andrea, la macchina del tempo porta alla festa delle castagne degli alpini sotto il ponte, col bruciatore delle bruciate, gli stand e il tendone giallo con le tavolate; dalle scene del viaggio la mappa non porta più via; tolte le battute sull'altezza del Taglia (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 12:13:55 +01:00
manzoloandClaude Opus 5.5 f57a91ca74 Il risveglio di nuovo come prima sul computer, con la sfocatura vera, e leggero sul telefono, senza filtri; tutte e due su una tela a parte che c'è solo finché il risveglio dura, così la scena non ne risente (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 11:57:26 +01:00
manzoloandClaude Opus 5.5 f7ca286066 Le palpebre del risveglio di nuovo sfumate, senza filtri: sedici passate trasparenti che sporgono verso l'occhio aperto (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 11:29:45 +01:00
manzolo 5b64292ec9 Versione 0.1.62 2026-10-31 11:08:32 +01:00
manzoloandClaude Opus 5.5 b9bd50c8c3 Il risveglio non rallenta più il gioco: la nebbia è lo sfondo sfocato disegnato sopra, senza filtri (ctx.filter e il filter CSS sulla tela facevano andare a passo d'uomo tutto, anche dopo), e l'iframe del muro c'è solo a muro aperto; le prove nel browser aspettano la fine del risveglio e l'avvio del gioco
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 10:59:03 +01:00
manzoloandClaude Opus 5.5 c5953f04c0 Si comincia svegliandosi sulla panchina dei vecchietti dopo una notte brava: gli occhi che si aprono a fatica, la piazza sfocata e doppia; e dal Barone il telefonino col sito di San Piero, che si apre a tutto schermo, e il Muro del Sanpierino vero coi messaggi del 2007, «Aggiorna» compreso (Andrea)
- Il risveglio (src/engine/risveglio.js): primo piano sopra la scena, con le battute mentre le palpebre si aprono e
  i vecchietti che danno la notizia del palio; «Salta» lo salta.
- Il telefonino del Barone (src/engine/telefono.js): sale dal basso come il libro, la home di sanpiero50037.it dalla
  Wayback Machine nello schermo, il mattone del muro apre il muro.
- Il muro (assets/muro, tools/muro.py): la pagina vera rifatta statica dal muro riesumato, coi 24 messaggi del dump
  (senza email né IP) e quelli del gioco, che arrivano con la storia; «Scrivi» spento.
- Il gioco sgancia i service worker di altre app rimasti sul suo indirizzo (la Bussola su localhost:8080).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
2026-10-31 09:52:34 +01:00
manzoloandClaude Opus 5.5 1ea78161d1 Segnato il minigioco della birra all'Ingorgo: spillare e bere (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9Quo9nEdXyjXYF8ma
2026-10-31 00:01:11 +01:00
manzolo 5c0f4856bd Versione 0.1.61 2026-10-30 23:45:42 +01:00
manzoloandClaude Opus 5.5 d4b472119d All'underground dell'Ingorgo le luci di Codex: la palla a specchi appesa e colpita dal faro, i riflessi a tempo sui muri e sulla folla, le lampade a inseguimento; altrove restano le nostre, esagerate (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9Quo9nEdXyjXYF8ma
2026-10-30 23:38:56 +01:00
manzolo aba2e7a0aa Versione 0.1.60 2026-10-30 23:18:43 +01:00
manzoloandClaude Opus 5.5 94902edc57 Più emozione all'arrivo della festa: «Mahhh... è l'INGORGOOOO!!!», da sola, e la voce che lo grida due volte (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9Quo9nEdXyjXYF8ma
2026-10-30 23:11:51 +01:00
manzolo 721df30937 Versione 0.1.59 2026-10-30 23:06:42 +01:00
manzoloandClaude Opus 5.5 40d5780255 L'Ingorgo più da discoteca: fasci più forti e numerosi, colpo di colore a ogni battuta, strobo a raffica, macchie di luce sulla folla, laser anche in piazza, palla a specchi su tutta la scena; alla festa si clicca solo per spostarsi; il manifesto più facile da toccare col dito; il video breve dell'Ingorgo (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9Quo9nEdXyjXYF8ma
2026-10-30 22:59:54 +01:00
manzolo 9f2b045ab0 Versione 0.1.58 2026-10-30 22:31:40 +01:00
manzoloandClaude Opus 5.5 187b4c48cb Le luci da palco dell'Ingorgo: fasci colorati che spazzano dalle teste mobili, bagliore a tempo, strobo, laser verdi alla tecno di Cambray Digny, palla a specchi all'underground; solo alla festa (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9Quo9nEdXyjXYF8ma
2026-10-30 22:24:52 +01:00
manzoloandClaude Opus 5.5 c132e94ed8 L'Ingorgo Sonoro: dal manifesto in piazza, ingrandito e toccato, «Quanto darei per essere all'Ingorgo stasera?!?» e l'effetto speciale; il centro di notte pieno zeppo di gente (sfondi di Codex), le console di Andrea (Suno) che si mescolano camminando, Andrea più grande alla festa, uscendo si torna a maggio. Baldoria al campo sportivo col bandierone della Sampdoria (Codex) (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9Quo9nEdXyjXYF8ma
2026-10-30 22:17:21 +01:00
manzoloandClaude Opus 5.5 9cd8027256 Il trailer extended rifatto senza dire dove sta il Regolo: la notte prima del Palio è la piazza scurita, nel finale solo due occhi gialli nel buio, il titolo sopra il panorama; in più Condor, campana, pesca, basket e pokerino giocati da soli (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9Quo9nEdXyjXYF8ma
2026-10-30 22:17:21 +01:00
manzolo 9f0f60d186 Versione 0.1.57 2026-10-30 11:27:15 +01:00
manzoloandClaude Opus 5.5 5135689293 La campana al campone delle poste col Taglia: il sassolino tirato con mira e forza, i salti a tempo con la lancetta dell'equilibrio, le caselle tinte coi gessi colorati e in cima la CAMPANA, sfondo del vialetto di Codex (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9Quo9nEdXyjXYF8ma
2026-10-30 11:20:33 +01:00
manzolo 8693bff0c7 Versione 0.1.56 2026-10-30 00:59:08 +01:00
manzoloandClaude Opus 5.5 c6812db291 La macchina del tempo da fuori: la partenza giù per Via Liguri Magelli col fulmine e le sgommate di fuoco, e l'arrivo al ritorno dal 1997 (macchina da dietro e davanti di Codex) (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-30 00:52:20 +01:00
manzolo 670626afa5 Versione 0.1.55 2026-10-30 00:44:15 +01:00
manzoloandClaude Opus 5.5 9bf41d01af Lo zio Mario nell'orto: «Zio, a me mi garba Michael Jackson!» «Mai col gesso!» (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-30 00:36:34 +01:00
manzoloandClaude Opus 5.5 16252fb04a Lo zio Mario nell'orto: la vitella di maiale, il Falcione e «No, dormo!» (battute di Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-30 00:34:21 +01:00
manzoloandClaude Opus 5.5 99d4dede80 Lo zio Mario al tramonto nel suo orto; negli orti le nuvole restano fuori dalle fronde che ondeggiano (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-30 00:29:38 +01:00
manzoloandClaude Opus 5.5 36eda83fe4 Vannino, se vinci il pokerino: «Tu m'ha pelato. La prossima volta porta il Barone.» (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-30 00:24:34 +01:00
manzolo 58174e68d2 Versione 0.1.54 2026-10-30 00:17:03 +01:00
manzoloandClaude Opus 5.5 ff770af3b5 Voci: «mancano» si legge «màncano» (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-30 00:08:37 +01:00
manzoloandClaude Opus 5.5 41e5fe2f6b Il Taglia (Andrea Tagliaferri, col suo consenso) al campone delle poste, più alto di Andrea, sprite di Codex dalla sua foto: si gareggia con la Condor parlandogli (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-30 00:04:38 +01:00
manzoloandClaude Opus 5.5 9d823375aa La Condor al campone delle poste: la gara col Taglia con la pistola ad aria compressa coi pallini gialli (fiato trattenuto, il pallino che cala con la distanza, cartone, lattine, bottigliette, palloncino e la lattina in aria), sfondo di Codex (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 23:57:08 +01:00
manzolo 00f9f15370 Versione 0.1.53 2026-10-29 23:48:11 +01:00
manzoloandClaude Opus 5.5 9fe6e8d0ff Voci: «Libici» si legge «Lìbici» (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 23:39:07 +01:00
manzoloandClaude Opus 5.5 0f8081d8f0 Voce dell'Arcu rifatta
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 23:36:48 +01:00
manzoloandClaude Opus 5.5 500885ffe0 L'Arcu: «stavano arrivando i Libici» (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 23:36:48 +01:00
manzoloandClaude Opus 5.5 259be2c8b0 La macchina del tempo: dopo «Bei tempi…» il discorso con l'Arcu finisce e si è pronti a partire; il plutonio l'ha trovato da Alvarino, prima dei libici; «Imposto» si legge «Impòsto» (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 23:34:27 +01:00
manzoloandClaude Opus 5.5 1706592b81 Voci: «bluffo», «bluffare» e «bluffava» si leggono «bleffo», «bleffare», «bleffava» (Pierino e l'Arcu; Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 23:30:33 +01:00
manzoloandClaude Opus 5.5 6758e6287e Il 1997: l'Arcu viene anche lui al Barrettino, e il pulsante «Torna al 2007» (come la porta) riporta in Via Liguri Magelli e fa sparire la macchina del tempo; per rifare il viaggio si richiede all'Arcu (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 23:25:17 +01:00
manzoloandClaude Opus 5.5 a699115a03 La macchina del tempo: dall'Arcu («Bei tempi quando qui si faceva i pokerini…») al Barrettino del 10 luglio 1997 col viaggio sul cruscotto, Vannino e Pierino Parigi, e il pokerino a cinque carte col cambio; l'Arcu in Via Liguri Magelli più grande (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 20:30:05 +01:00
manzolo bb8e6a8885 Versione 0.1.52 2026-10-29 19:11:43 +01:00
manzoloandClaude Opus 5.5 81a1dd1bc3 Video: la partita completa rigirata sul gioco di oggi, il trailer e la versione extended (copioni, prova locale, montaggio --trailer) (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 18:47:44 +01:00
manzoloandClaude Opus 5.5 0f1740a7ad Effetti nei posti nuovi: nuvole, uccelli, la Carza che scorre e luccica alla cascatella e sotto il ponte, fronde, ombre, farfalle e libellule, lampioni la sera; i panorami del terrazzo e di Via Cafaggio con le ombre delle nuvole sulle colline (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 17:34:37 +01:00
manzolo 3d61fc3954 Versione 0.1.51 2026-10-29 17:30:42 +01:00
manzoloandClaude Opus 5.5 6226de3795 La voce di «Di chi è quell'Audi lì?» (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 17:23:59 +01:00
manzoloandClaude Opus 5.5 17824963aa Sotto il ponte delle poste: il viottolo passa sotto l'arco verso gli orti dello zio Mario, alla stazione si sale dalla parte destra del ponte (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 17:19:16 +01:00
manzoloandClaude Opus 5.5 75cbe8250f Via della Compagnia: l'arco porta al forno, alla Pieve si scende fra le due case gialle (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 17:16:40 +01:00
manzoloandClaude Opus 5.5 6b17288962 Via Liguri Magelli: «Di chi è quell'Audi lì?» (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 17:14:59 +01:00
manzolo 262c774718 Versione 0.1.50 2026-10-29 16:54:13 +01:00
manzoloandClaude Opus 5.5 4a2c88f0e3 Passeggiata sulla Carza: avanti si va a sinistra, dietro il grande albero (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 16:47:33 +01:00
manzolo c395b4e890 Versione 0.1.49 2026-10-29 16:46:30 +01:00
manzoloandClaude Opus 5.5 818af5b36f Villa Adami: a destra si scende in Via della Compagnia, in basso a destra alla scuola e in Via Cafaggio; in Via Cafaggio alla scuola si va dalla stradina dopo il cancello della palestra (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 16:39:42 +01:00
manzoloandClaude Opus 5.5 a080c0ea56 Via Liguri Magelli: l'uscita verso il campo del Giannini copre di nuovo la strada dietro la Ghiacciomobile (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 16:32:33 +01:00
manzolo fbeef76f01 Versione 0.1.48 2026-10-29 16:25:09 +01:00
manzoloandClaude Opus 5.5 45d310b9b4 Gli orti dello zio Mario lungo la Carza e la strada fra il bivio della Provinciale e la stazione (Codex dalle foto di Andrea) (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 16:17:35 +01:00
manzoloandClaude Opus 5.5 481e4a9514 Nuovi posti dalle foto di Andrea (Codex): Via della Compagnia, Via Cafaggio in tre tratti fino alla rotonda, la Provinciale sotto i platani, la passeggiata sulla Carza con la cascatella, gli orti, dietro le poste e sotto il ponte delle poste fino alla stazione (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 16:03:40 +01:00
manzolo fde68603cb Versione 0.1.47 2026-10-29 15:27:10 +01:00
manzoloandClaude Opus 5.5 686fee043e La cerbottana: dalla bottega di Pierin di Frilli in piazza lo stucco verde, poi i pallini contro il muro della piazza (fiato, respiro, tosse, bersaglio di gesso, lattine, barattolo appeso; muro di Codex) (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 15:16:40 +01:00
manzoloandClaude Opus 5.5 4b709ffd80 Il terrazzo di casa a Cardetole: la vista di Andrea dalla finestra col paese e la Fortezza (Codex dalla sua foto, col terrazzo davanti); ci si sale da casa di Andrea (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 14:52:06 +01:00
manzoloandClaude Opus 5.5 733680301c Lo zio Mario: «I problemi io gli avevo quando andavo a scuola!» (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 13:57:32 +01:00
manzoloandClaude Opus 5.5 0ba8cfc800 Lo zio Mario: il primo scambio («Zio, hai problemi?» / «I problemi io gli avevo a scuola!») (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 13:47:48 +01:00
manzolo 84ad19a47e Versione 0.1.46 2026-10-29 13:43:52 +01:00
manzoloandClaude Opus 5.5 058acd6325 Macchinine: la loro musica, di Andrea con Suno (al posto di quella del GP in prestito) (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 13:35:47 +01:00
manzolo 497209fc9a Versione 0.1.45 2026-10-29 13:22:28 +01:00
manzoloandClaude Opus 5.5 2289480812 Lo zio Mario davanti alla Ghiacciomobile nel muro, che si gratta la testa (sprite di Codex dalla foto di Andrea); Via Liguri Magelli con le persone in proporzione (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 13:12:17 +01:00
manzolo de418c0da8 Versione 0.1.44 2026-10-29 12:50:32 +01:00
manzoloandClaude Opus 5.5 713e328138 La Ghiacciomobile schiantata nel muro giallo di Via Liguri Magelli, coi mattoni rotti e senza targa (ritocco di Codex), fino al tramonto; poi il muro rifatto con la targa. Non è più al circolino. Il motore ha le varianti di sfondo per scena (backdrops) (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 12:44:00 +01:00
manzolo 6a5a80d7af Versione 0.1.43 2026-10-29 11:28:23 +01:00
manzoloandClaude Opus 5.5 88f0439f79 GP di Fortezza: la presentazione dei piloti a tutto schermo (i comandi arrivano col semaforo); nella guida semplice il pulsante Gas si tiene premuto, più alto e con la scritta fissa (sul telefono prendeva male) (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 11:18:46 +01:00
manzolo c244424af9 Versione 0.1.42 2026-10-29 10:45:40 +01:00
manzoloandClaude Opus 5.5 c26d888263 GP di Fortezza, Seria semplice più difficile (parere di Codex, simulato): sopra il limite in curva si esce di sicuro, la curva pulita dà una spinta, rivali a 0,81; CURVA! e LASCIA! sopra il motorino (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 10:38:10 +01:00
manzolo f8dbd01358 Versione 0.1.41 2026-10-29 10:27:45 +01:00
manzoloandClaude Opus 5.5 e3d5d8b0d3 Macchinine: primo e secondo accanto ai nomi mentre si va; nel risultato il perché (chi è arrivato a quale spinta, e se ci arrivano tutti e due vince chi va più in là, di quanti centimetri) (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 10:20:46 +01:00
manzoloandClaude Opus 5.5 1b7511f6ca GP di Fortezza: guida semplice alla bona e Seria (si tiene premuto per il gas, lasciando si frena, lo sterzo va da solo e troppo forte in curva si scivola nella paglia), per il telefono; Ginocchio in terra resta con lo sterzo vero; prova nel browser del GP (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 10:18:22 +01:00
manzolo 9d2cc2fcb3 Versione 0.1.40 2026-10-29 10:11:22 +01:00
manzoloandClaude Opus 5.5 44480221db Macchinine: si sceglie la macchinina, la forza sale da zero tenendo premuto e la spinta parte lasciando; il saluto col Chiaru («un girino alle case rosse» / «Vorrai dire un giochino!» / «Ciao Mattè»), «Si fa una gara alle macchinine?!?!», Andrea chiama Bertovo «Fabri»; musica del GP in prestito (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 10:04:46 +01:00
manzolo 4d13a4ef25 Versione 0.1.39 2026-10-29 09:24:43 +01:00
manzoloandClaude Opus 5.5 22f408cc60 Il clic sul Chiaru è suo: stava sotto ai riquadri del parcheggio e della casa (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9KMfjthRUnujCGSzZ
2026-10-29 09:18:13 +01:00
514 changed files with 11799 additions and 368 deletions
+45
View File
@@ -0,0 +1,45 @@
# Le Gitea Actions del gioco: girano sul runner del PC di Andrea (make runner; label ubuntu-latest = node:22-bookworm).
# A ogni push su main e a ogni tag i test unitari; su un tag vX.Y.Z, se passano, la release con i commit dal tag prima.
# Il controllo dei file pubblicabili non sta qui (a pipeline partita il push è già pubblico): è l'hook pre-push.
name: test
on:
push:
branches: [main]
tags: ['v*']
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Test unitari
run: node --version && node --test tests/*.test.mjs
release:
needs: test
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Release del tag
env:
TOKEN: ${{ secrets.GITEA_TOKEN }}
TAG: ${{ github.ref_name }}
API: ${{ github.server_url }}/api/v1/repos/${{ github.repository }}
run: |
prev=$(git describe --tags --abbrev=0 "$TAG^" 2>/dev/null || true)
{
echo "Si gioca su https://50037.manzolo.it; qui sotto lo zip di questa versione."
echo
echo "Cosa cambia${prev:+ da $prev}:"
echo
git log --no-merges --format='- %s' ${prev:+$prev..}"$TAG" | grep -v -e '^- Versione [0-9]' | cut -c1-400
} > note.md
node -e 'const fs=require("fs");process.stdout.write(JSON.stringify({tag_name:process.env.TAG,name:"Versione "+process.env.TAG.slice(1),body:fs.readFileSync("note.md","utf8")}))' > release.json
code=$(curl -s -o risposta.json -w '%{http_code}' -X POST -H "Authorization: token $TOKEN" -H 'Content-Type: application/json' --data @release.json "$API/releases")
cat risposta.json | head -c 400; echo
[ "$code" = 201 ] || [ "$code" = 409 ]
+4
View File
@@ -22,3 +22,7 @@ i suoi ricordi: non inventare persone, luoghi o fatti del paese al posto suoi; p
- Prompt delle immagini in `prompts/` e fogli grezzi in `assets/raw/`: esclusi da git. - Prompt delle immagini in `prompts/` e fogli grezzi in `assets/raw/`: esclusi da git.
- Sfondi nuovi: li genera **Codex** con il suo strumento immagini integrato, gratis e senza chiave API - Sfondi nuovi: li genera **Codex** con il suo strumento immagini integrato, gratis e senza chiave API
(`codex exec`, ricetta in `docs/GENERAZIONE_SFONDI.md`, «Generare con Codex»). Si lancia da qui, senza chiedere la chiave ad Andrea. (`codex exec`, ricetta in `docs/GENERAZIONE_SFONDI.md`, «Generare con Codex»). Si lancia da qui, senza chiedere la chiave ad Andrea.
- **Pubblicare (dal 2026-11-01)**: origin è https://git.manzolo.it/manzolo/leggenda-del-regolo, pubblico: prima `make check-public`, poi `git push origin main --tags`, solo se Andrea lo chiede.
`make deploy` costruisce l'immagine dal tag della versione, la spinge su `git.manzolo.it/manzolo/leggenda-regolo:vX.Y.Z` (e `:latest`); sul VPS il compose fissa quel tag e fa `docker compose pull && up -d`.
Per tornare indietro: sul VPS (`Workspaces/docker/leggenda-regolo/docker-compose.yml`) si rimette il tag precedente e si rifà pull e up.
Hook pre-push (`make hooks`, una volta per clone) lancia check-public; le Gitea Actions (`.gitea/workflows/test.yml`: test, e release sui tag) girano sul runner del PC, che si crea o riavvia con `make runner`.
+1
View File
@@ -13,6 +13,7 @@ COPY assets/voices /usr/share/nginx/html/assets/voices
COPY assets/credits /usr/share/nginx/html/assets/credits COPY assets/credits /usr/share/nginx/html/assets/credits
COPY assets/effects /usr/share/nginx/html/assets/effects COPY assets/effects /usr/share/nginx/html/assets/effects
COPY assets/closeups /usr/share/nginx/html/assets/closeups COPY assets/closeups /usr/share/nginx/html/assets/closeups
COPY assets/muro /usr/share/nginx/html/assets/muro
COPY assets/favicon /usr/share/nginx/html/assets/favicon COPY assets/favicon /usr/share/nginx/html/assets/favicon
COPY assets/video /usr/share/nginx/html/assets/video COPY assets/video /usr/share/nginx/html/assets/video
+40 -30
View File
@@ -23,8 +23,8 @@ DST ?= assets/scenes/$(notdir $(SRC))
CROP ?= CROP ?=
COLORS ?= 64 COLORS ?= 64
.PHONY: help serve open test browser verify check-public bump voci voci-elenco sfondi sfondi-genera sfondi-confronto background character \ .PHONY: help serve open test browser verify check-public hooks bump voci voci-elenco sfondi sfondi-genera sfondi-confronto background character \
build up down restart logs ps shell image-size deploy deploy-vps deploy-logs clean distclean build up down restart logs ps shell image-size deploy deploy-logs runner clean distclean
## ------------------------------------------------------------ sviluppo ## ------------------------------------------------------------ sviluppo
@@ -55,6 +55,10 @@ verify: test browser check-public ## Tutti i controlli
check-public: ## Prima di pubblicare: niente prompt, fogli grezzi, segreti o nomi della rete di casa (tutta la storia) check-public: ## Prima di pubblicare: niente prompt, fogli grezzi, segreti o nomi della rete di casa (tutta la storia)
bash scripts/check-public.sh bash scripts/check-public.sh
hooks: ## Attiva gli hook del repo (pre-push: check-public prima di ogni push)
git config core.hooksPath scripts/git-hooks
@echo "hook attivi da scripts/git-hooks: $$(ls scripts/git-hooks | tr '\n' ' ')"
bump: ## Nuova versione (PARTE=patch|minor|major): verifica, commit e tag v<versione>; poi make deploy bump: ## Nuova versione (PARTE=patch|minor|major): verifica, commit e tag v<versione>; poi make deploy
scripts/bump.sh $(or $(PARTE),patch) scripts/bump.sh $(or $(PARTE),patch)
@@ -87,11 +91,11 @@ background: ## Porta uno sfondo a 640x360 nel gioco (SRC=..., DST=..., CROP=x,y,
@test -n "$(SRC)" || { echo "uso: make background SRC=assets/generated/nome.png [CROP=x,y,w,h]"; exit 2; } @test -n "$(SRC)" || { echo "uso: make background SRC=assets/generated/nome.png [CROP=x,y,w,h]"; exit 2; }
$(PYTHON) tools/prepare_background.py $(SRC) $(DST) $(if $(CROP),--crop $(CROP)) --colors $(COLORS) $(PYTHON) tools/prepare_background.py $(SRC) $(DST) $(if $(CROP),--crop $(CROP)) --colors $(COLORS)
character: ## Ritaglia un foglio sprite 4x2 e prepara il personaggio (NAME=andrea, SHEET=..., HEIGHT=120, FRAMES=..., REF=stand) character: ## Ritaglia un foglio sprite 4x2 e prepara il personaggio (NAME=andrea, SHEET=..., HEIGHT=120, FRAMES=..., REF=stand, FIX=wave=1.3)
$(PYTHON) tools/slice_sprites.py --sheet $(SHEET) --out /tmp/regolo-$(NAME) --cols 4 --rows 2 \ $(PYTHON) tools/slice_sprites.py --sheet $(SHEET) --out /tmp/regolo-$(NAME) --cols 4 --rows 2 \
--despill --names $(FRAMES) --prefix $(NAME)_ --despill --names $(FRAMES) --prefix $(NAME)_
$(PYTHON) tools/prepare_character.py /tmp/regolo-$(NAME) $(NAME) assets/characters --height $(HEIGHT) \ $(PYTHON) tools/prepare_character.py /tmp/regolo-$(NAME) $(NAME) assets/characters --height $(HEIGHT) \
--frames $(FRAMES) --ref $(REF) --frames $(FRAMES) --ref $(REF) $(if $(FIX),--fix $(FIX))
## ------------------------------------------------------------ docker ## ------------------------------------------------------------ docker
@@ -121,47 +125,53 @@ image-size: ## Dimensione dell'immagine
## ------------------------------------------------------------ deploy su un server proprio ## ------------------------------------------------------------ deploy su un server proprio
# Host e indirizzo stanno in deploy.local.mk, fuori da git, per esempio: # Host e cartella stanno in deploy.local.mk, fuori da git, per esempio:
# DEPLOY_HOST = root@mio-server # DEPLOY_HOST = root@mio-server
# DEPLOY_URL = https://gioco.esempio # DEPLOY_URL = https://gioco.esempio
# VPS_HOST = mio-vps (facoltativo: una seconda copia, con make deploy-vps) # DEPLOY_DIR = docker/leggenda-regolo (la cartella del compose sul server)
# VPS_DIR = docker/leggenda-regolo # DEPLOY_IMAGE = registry.esempio/utente/leggenda-regolo
-include deploy.local.mk -include deploy.local.mk
DEPLOY_DIR ?= /root/leggenda-regolo DEPLOY_DIR ?= /root/leggenda-regolo
DEPLOY_IMAGE ?= git.manzolo.it/manzolo/leggenda-regolo
DEPLOY_TMP := $(shell mktemp -d -u /tmp/regolo-deploy.XXXXXX) DEPLOY_TMP := $(shell mktemp -d -u /tmp/regolo-deploy.XXXXXX)
# La versione dell'ultimo commit (non della cartella di lavoro): il tag git, dell'immagine e del compose.
DEPLOY_VER := v$(shell git show HEAD:src/version.js 2>/dev/null | sed -n "s/.*VERSION = '\([^']*\)'.*/\1/p")
# Si pubblica l'ultimo commit (git archive HEAD), mai la cartella di lavoro: un'altra sessione può avere modifiche a # Si pubblica il tag della versione dichiarata dall'ultimo commit (git archive vX.Y.Z, quello di make bump), mai la
# metà. Test su quella copia, immagine costruita e provata qui, poi spedita già pronta (docker save | docker load): # cartella di lavoro: un'altra sessione può avere modifiche a metà, e i commit dopo il tag aspettano la versione dopo.
# sul server non si compila niente. # Test su quella copia, immagine costruita e provata qui, spinta sul registry di Gitea come :vX.Y.Z e :latest; il
# VPS la scarica con il tag scritto nel suo compose (preso da HEAD, docker-compose.deploy.yml).
SMOKE_PORT ?= 18737 SMOKE_PORT ?= 18737
deploy: ## Pubblica l'ultimo commit: test, immagine costruita e provata qui, spedita al server e riavviata deploy: ## Pubblica la versione dell'ultimo commit: test, immagine provata qui, push sul registry, pull e riavvio sul server
@test -n "$(DEPLOY_HOST)" || { echo "manca DEPLOY_HOST: scrivilo in deploy.local.mk"; exit 2; } @test -n "$(DEPLOY_HOST)" || { echo "manca DEPLOY_HOST: scrivilo in deploy.local.mk"; exit 2; }
mkdir -p $(DEPLOY_TMP) && git archive HEAD | tar -x -C $(DEPLOY_TMP) @git rev-parse -q --verify 'refs/tags/$(DEPLOY_VER)' >/dev/null || { echo "manca il tag $(DEPLOY_VER): prima make bump"; exit 2; }
mkdir -p $(DEPLOY_TMP) && git archive $(DEPLOY_VER) | tar -x -C $(DEPLOY_TMP)
cd $(DEPLOY_TMP) && $(NODE) --test tests/*.test.mjs cd $(DEPLOY_TMP) && $(NODE) --test tests/*.test.mjs
docker build -q -t $(IMAGE):latest -t $(IMAGE):$$(git rev-parse --short HEAD) $(DEPLOY_TMP) docker build -q -t $(DEPLOY_IMAGE):$(DEPLOY_VER) -t $(DEPLOY_IMAGE):latest $(DEPLOY_TMP)
@docker rm -f $(IMAGE)-prova >/dev/null 2>&1 || true @docker rm -f $(IMAGE)-prova >/dev/null 2>&1 || true
docker run -d --rm --name $(IMAGE)-prova -p 127.0.0.1:$(SMOKE_PORT):80 $(IMAGE):latest >/dev/null docker run -d --rm --name $(IMAGE)-prova -p 127.0.0.1:$(SMOKE_PORT):80 $(DEPLOY_IMAGE):$(DEPLOY_VER) >/dev/null
@ok=1; sleep 1; for u in / /src/main.js /assets/voices/index.json /assets/audio/cartello.mp3; do \ @ok=1; sleep 1; for u in / /src/main.js /assets/voices/index.json /assets/audio/cartello.mp3; do \
c=$$(curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:$(SMOKE_PORT)$$u); echo " prova $$u → $$c"; [ "$$c" = 200 ] || ok=0; done; \ c=$$(curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:$(SMOKE_PORT)$$u); echo " prova $$u → $$c"; [ "$$c" = 200 ] || ok=0; done; \
docker rm -f $(IMAGE)-prova >/dev/null; [ $$ok = 1 ] || { echo "l'immagine non risponde come deve: non la spedisco"; exit 1; } docker rm -f $(IMAGE)-prova >/dev/null; [ $$ok = 1 ] || { echo "l'immagine non risponde come deve: non la spedisco"; exit 1; }
ssh $(DEPLOY_HOST) 'mkdir -p $(DEPLOY_DIR)' docker push -q $(DEPLOY_IMAGE):$(DEPLOY_VER)
scp -q $(DEPLOY_TMP)/docker-compose.homeserver.yml $(DEPLOY_HOST):$(DEPLOY_DIR)/docker-compose.yml docker push -q $(DEPLOY_IMAGE):latest
docker save $(IMAGE):latest | gzip | ssh $(DEPLOY_HOST) 'gunzip | docker load -q && cd $(DEPLOY_DIR) && docker compose up -d && docker image prune -f >/dev/null' git show HEAD:docker-compose.deploy.yml | sed 's|$(DEPLOY_IMAGE):VERSIONE|$(DEPLOY_IMAGE):$(DEPLOY_VER)|' | \
ssh $(DEPLOY_HOST) 'mkdir -p $(DEPLOY_DIR) && cat > $(DEPLOY_DIR)/docker-compose.yml'
ssh $(DEPLOY_HOST) 'cd $(DEPLOY_DIR) && docker compose pull -q && docker compose up -d && \
docker image ls $(DEPLOY_IMAGE) --format "{{.Repository}}:{{.Tag}}" | grep -v -x -e $(DEPLOY_IMAGE):$(DEPLOY_VER) | xargs -r docker image rm >/dev/null; \
docker image prune -f >/dev/null'
rm -rf $(DEPLOY_TMP) rm -rf $(DEPLOY_TMP)
@# Sul server il prune toglie l'immagine vecchia; qui restano solo latest e quella appena pubblicata. @# Qui restano solo latest e la versione appena pubblicata.
@docker image ls $(IMAGE) --format '{{.Tag}}' | grep -v -x -e latest -e $$(git rev-parse --short HEAD) | \ @docker image ls $(DEPLOY_IMAGE) --format '{{.Tag}}' | grep -v -x -e latest -e $(DEPLOY_VER) | \
xargs -r -I{} docker image rm -f $(IMAGE):{} >/dev/null xargs -r -I{} docker image rm -f $(DEPLOY_IMAGE):{} >/dev/null
@echo "→ $(DEPLOY_URL) ($$(git log -1 --format='%h %s'))" @# L'indirizzo pubblico deve servire la versione appena spedita.
@v=$$(git show $(DEPLOY_VER):src/version.js | grep -o "VERSION = '[^']*'"); \
for i in 1 2 3 4 5; do curl -s $(DEPLOY_URL)/src/version.js | grep -qF "$$v" && break; sleep 2; done; \
curl -s $(DEPLOY_URL)/src/version.js | grep -qF "$$v" || { echo "$(DEPLOY_URL) non serve $$v"; exit 1; }
@echo "→ $(DEPLOY_URL) ($(DEPLOY_IMAGE):$(DEPLOY_VER), $$(git log -1 --format='%h %s' $(DEPLOY_VER)))"
deploy-vps: ## Spedisce al VPS (VPS_HOST, VPS_DIR in deploy.local.mk) l'immagine dell'ultimo commit già provata da make deploy runner: ## Crea (se manca) e avvia sul PC il runner delle Gitea Actions (tools/gitea-runner, scripts/runner.sh)
@test -n "$(VPS_HOST)" -a -n "$(VPS_DIR)" || { echo "mancano VPS_HOST e VPS_DIR: scrivili in deploy.local.mk"; exit 2; } bash scripts/runner.sh
@docker image inspect $(IMAGE):$$(git rev-parse --short HEAD) >/dev/null 2>&1 || \
{ echo "manca l'immagine dell'ultimo commit ($$(git rev-parse --short HEAD)): prima make deploy"; exit 1; }
ssh $(VPS_HOST) 'mkdir -p $(VPS_DIR)'
git show HEAD:docker-compose.homeserver.yml | ssh $(VPS_HOST) 'cat > $(VPS_DIR)/docker-compose.yml'
docker save $(IMAGE):$$(git rev-parse --short HEAD) $(IMAGE):latest | gzip | \
ssh $(VPS_HOST) 'gunzip | docker load -q && cd $(VPS_DIR) && docker compose up -d && docker image prune -f >/dev/null'
@ssh $(VPS_HOST) "docker exec $(IMAGE) grep -o \"VERSION = '[^']*'\" /usr/share/nginx/html/src/version.js" | sed 's/^/→ $(VPS_HOST): /'
deploy-logs: ## Log del container sul server di deploy deploy-logs: ## Log del container sul server di deploy
@test -n "$(DEPLOY_HOST)" || { echo "manca DEPLOY_HOST: scrivilo in deploy.local.mk"; exit 2; } @test -n "$(DEPLOY_HOST)" || { echo "manca DEPLOY_HOST: scrivilo in deploy.local.mk"; exit 2; }
+4 -2
View File
@@ -23,7 +23,9 @@ Si gioca online su **https://50037.manzolo.it** (50037 è il CAP di San Piero),
## Giocare in locale ## Giocare in locale
Niente da installare e niente da compilare: HTML, CSS e moduli JavaScript ES. Il gioco si scarica da **https://git.manzolo.it/manzolo/leggenda-del-regolo**: nella pagina dei
[tag](https://git.manzolo.it/manzolo/leggenda-del-regolo/tags) c'è lo zip di ogni versione (l'ultima è quella online).
Niente da installare e niente da compilare: HTML, CSS e moduli JavaScript ES. Dentro la cartella scompattata:
```zsh ```zsh
python3 -m http.server 8000 # poi http://localhost:8000 python3 -m http.server 8000 # poi http://localhost:8000
@@ -49,7 +51,7 @@ Oppure `make up` (Docker, su http://localhost:8080). Non aprire `index.html` con
make verify # sintassi, test, prova nel browser: quello che gira prima di ogni versione make verify # sintassi, test, prova nel browser: quello che gira prima di ogni versione
make voci # le voci delle battute nuove (XTTS-v2 su GPU) make voci # le voci delle battute nuove (XTTS-v2 su GPU)
make bump # nuova versione: verifica, commit e tag make bump # nuova versione: verifica, commit e tag
make deploy # pubblica l'ultimo commit (immagine Docker spedita al server) make deploy # pubblica la versione: immagine sul registry di Gitea, il server la scarica
``` ```
## Chi ha fatto cosa ## Chi ha fatto cosa
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+70
View File
@@ -0,0 +1,70 @@
{
"image": "alpino_vino.png",
"height": 120,
"frames": {
"stand": {
"x": 0,
"y": 0,
"w": 69,
"h": 120,
"ax": 28.2,
"ay": 120
},
"blink": {
"x": 71,
"y": 0,
"w": 69,
"h": 120,
"ax": 28.0,
"ay": 120
},
"talk": {
"x": 142,
"y": 0,
"w": 72,
"h": 120,
"ax": 29.4,
"ay": 120
},
"explain": {
"x": 216,
"y": 0,
"w": 71,
"h": 116,
"ax": 29.3,
"ay": 116
},
"pour": {
"x": 289,
"y": 0,
"w": 72,
"h": 122,
"ax": 30.5,
"ay": 122
},
"pour2": {
"x": 363,
"y": 0,
"w": 73,
"h": 122,
"ax": 30.3,
"ay": 122
},
"give": {
"x": 438,
"y": 0,
"w": 66,
"h": 118,
"ax": 24.5,
"ay": 118
},
"cheers": {
"x": 506,
"y": 0,
"w": 72,
"h": 120,
"ax": 33.4,
"ay": 120
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

+70
View File
@@ -0,0 +1,70 @@
{
"image": "andrea-birra.png",
"height": 120,
"frames": {
"walk_1": {
"x": 0,
"y": 0,
"w": 68,
"h": 114,
"ax": 40.2,
"ay": 114
},
"walk_2": {
"x": 70,
"y": 0,
"w": 41,
"h": 114,
"ax": 20.7,
"ay": 114
},
"walk_3": {
"x": 113,
"y": 0,
"w": 67,
"h": 114,
"ax": 38.4,
"ay": 114
},
"walk_4": {
"x": 182,
"y": 0,
"w": 46,
"h": 114,
"ax": 25.3,
"ay": 114
},
"cheer_1": {
"x": 230,
"y": 0,
"w": 51,
"h": 133,
"ax": 21.1,
"ay": 133
},
"cheer_2": {
"x": 283,
"y": 0,
"w": 55,
"h": 130,
"ax": 24.5,
"ay": 130
},
"cheer_3": {
"x": 340,
"y": 0,
"w": 62,
"h": 130,
"ax": 23.8,
"ay": 130
},
"talk": {
"x": 404,
"y": 0,
"w": 58,
"h": 120,
"ax": 21.7,
"ay": 120
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

+70
View File
@@ -0,0 +1,70 @@
{
"image": "baldoria.png",
"height": 120,
"frames": {
"stand": {
"x": 0,
"y": 0,
"w": 59,
"h": 120,
"ax": 28.6,
"ay": 120
},
"blink": {
"x": 61,
"y": 0,
"w": 59,
"h": 120,
"ax": 28.4,
"ay": 120
},
"talk": {
"x": 122,
"y": 0,
"w": 59,
"h": 120,
"ax": 28.6,
"ay": 120
},
"explain": {
"x": 183,
"y": 0,
"w": 67,
"h": 122,
"ax": 29.4,
"ay": 122
},
"wave": {
"x": 252,
"y": 0,
"w": 101,
"h": 156,
"ax": 48.9,
"ay": 156
},
"wave2": {
"x": 355,
"y": 0,
"w": 127,
"h": 156,
"ax": 81.8,
"ay": 156
},
"cheer": {
"x": 484,
"y": 0,
"w": 70,
"h": 120,
"ax": 33.6,
"ay": 120
},
"laugh": {
"x": 556,
"y": 0,
"w": 78,
"h": 113,
"ax": 31.1,
"ay": 113
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

+70
View File
@@ -0,0 +1,70 @@
{
"image": "cuochi.png",
"height": 120,
"frames": {
"stand": {
"x": 0,
"y": 0,
"w": 95,
"h": 120,
"ax": 41.9,
"ay": 120
},
"blink": {
"x": 97,
"y": 0,
"w": 95,
"h": 120,
"ax": 42.6,
"ay": 120
},
"talk": {
"x": 194,
"y": 0,
"w": 96,
"h": 120,
"ax": 44.4,
"ay": 120
},
"explain": {
"x": 292,
"y": 0,
"w": 95,
"h": 120,
"ax": 44.5,
"ay": 120
},
"work": {
"x": 389,
"y": 0,
"w": 101,
"h": 120,
"ax": 46.7,
"ay": 120
},
"work2": {
"x": 492,
"y": 0,
"w": 101,
"h": 119,
"ax": 45.9,
"ay": 119
},
"give": {
"x": 595,
"y": 0,
"w": 104,
"h": 121,
"ax": 43.1,
"ay": 121
},
"laugh": {
"x": 701,
"y": 0,
"w": 92,
"h": 117,
"ax": 43.7,
"ay": 117
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

+70
View File
@@ -0,0 +1,70 @@
{
"image": "fanfara.png",
"height": 120,
"frames": {
"stand": {
"x": 0,
"y": 0,
"w": 107,
"h": 120,
"ax": 47.1,
"ay": 120
},
"blink": {
"x": 109,
"y": 0,
"w": 106,
"h": 120,
"ax": 47.1,
"ay": 120
},
"talk": {
"x": 217,
"y": 0,
"w": 110,
"h": 120,
"ax": 50.3,
"ay": 120
},
"laugh": {
"x": 329,
"y": 0,
"w": 107,
"h": 120,
"ax": 47.0,
"ay": 120
},
"play": {
"x": 438,
"y": 0,
"w": 112,
"h": 113,
"ax": 50.3,
"ay": 113
},
"play2": {
"x": 552,
"y": 0,
"w": 114,
"h": 118,
"ax": 51.8,
"ay": 118
},
"play3": {
"x": 668,
"y": 0,
"w": 111,
"h": 115,
"ax": 51.6,
"ay": 115
},
"bow": {
"x": 781,
"y": 0,
"w": 110,
"h": 104,
"ax": 51.2,
"ay": 104
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

+70
View File
@@ -0,0 +1,70 @@
{
"image": "gente.png",
"height": 115,
"frames": {
"stand": {
"x": 0,
"y": 0,
"w": 126,
"h": 115,
"ax": 62.9,
"ay": 115
},
"blink": {
"x": 128,
"y": 0,
"w": 125,
"h": 115,
"ax": 62.8,
"ay": 115
},
"talk": {
"x": 255,
"y": 0,
"w": 126,
"h": 115,
"ax": 62.9,
"ay": 115
},
"talk2": {
"x": 383,
"y": 0,
"w": 126,
"h": 115,
"ax": 63.9,
"ay": 115
},
"eat": {
"x": 511,
"y": 0,
"w": 128,
"h": 117,
"ax": 62.9,
"ay": 117
},
"eat2": {
"x": 641,
"y": 0,
"w": 128,
"h": 117,
"ax": 63.0,
"ay": 117
},
"laugh": {
"x": 771,
"y": 0,
"w": 127,
"h": 117,
"ax": 62.0,
"ay": 117
},
"toast": {
"x": 900,
"y": 0,
"w": 127,
"h": 116,
"ax": 62.5,
"ay": 116
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 271 KiB

+70
View File
@@ -0,0 +1,70 @@
{
"image": "liscio.png",
"height": 115,
"frames": {
"stand": {
"x": 0,
"y": 0,
"w": 108,
"h": 115,
"ax": 54.5,
"ay": 115
},
"blink": {
"x": 110,
"y": 0,
"w": 108,
"h": 115,
"ax": 54.3,
"ay": 115
},
"talk": {
"x": 220,
"y": 0,
"w": 111,
"h": 115,
"ax": 57.2,
"ay": 115
},
"laugh": {
"x": 333,
"y": 0,
"w": 110,
"h": 115,
"ax": 55.6,
"ay": 115
},
"dance1": {
"x": 445,
"y": 0,
"w": 117,
"h": 112,
"ax": 57.2,
"ay": 112
},
"dance2": {
"x": 564,
"y": 0,
"w": 115,
"h": 111,
"ax": 57.0,
"ay": 111
},
"dance3": {
"x": 681,
"y": 0,
"w": 115,
"h": 112,
"ax": 56.5,
"ay": 112
},
"dance4": {
"x": 798,
"y": 0,
"w": 113,
"h": 113,
"ax": 54.4,
"ay": 113
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

+70
View File
@@ -0,0 +1,70 @@
{
"image": "pierino_parigi.png",
"height": 120,
"frames": {
"explain": {
"x": 0,
"y": 0,
"w": 61,
"h": 120,
"ax": 29.3,
"ay": 120
},
"talk": {
"x": 63,
"y": 0,
"w": 69,
"h": 120,
"ax": 26.6,
"ay": 120
},
"blink": {
"x": 134,
"y": 0,
"w": 44,
"h": 120,
"ax": 25.0,
"ay": 120
},
"stand": {
"x": 180,
"y": 0,
"w": 44,
"h": 120,
"ax": 24.9,
"ay": 120
},
"cheer": {
"x": 226,
"y": 0,
"w": 66,
"h": 128,
"ax": 34.6,
"ay": 128
},
"shrug": {
"x": 294,
"y": 0,
"w": 89,
"h": 120,
"ax": 43.8,
"ay": 120
},
"cards": {
"x": 385,
"y": 0,
"w": 50,
"h": 120,
"ax": 26.2,
"ay": 120
},
"laugh": {
"x": 437,
"y": 0,
"w": 54,
"h": 123,
"ax": 24.4,
"ay": 123
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

+70
View File
@@ -0,0 +1,70 @@
{
"image": "taglia.png",
"height": 120,
"frames": {
"stand": {
"x": 0,
"y": 0,
"w": 54,
"h": 120,
"ax": 27.7,
"ay": 120
},
"blink": {
"x": 56,
"y": 0,
"w": 54,
"h": 120,
"ax": 27.7,
"ay": 120
},
"talk": {
"x": 112,
"y": 0,
"w": 75,
"h": 120,
"ax": 32.2,
"ay": 120
},
"explain": {
"x": 189,
"y": 0,
"w": 64,
"h": 120,
"ax": 33.6,
"ay": 120
},
"laugh": {
"x": 255,
"y": 0,
"w": 59,
"h": 121,
"ax": 25.2,
"ay": 121
},
"aim": {
"x": 316,
"y": 0,
"w": 97,
"h": 114,
"ax": 55.6,
"ay": 114
},
"shrug": {
"x": 415,
"y": 0,
"w": 91,
"h": 117,
"ax": 44.2,
"ay": 117
},
"throw": {
"x": 508,
"y": 0,
"w": 71,
"h": 120,
"ax": 30.3,
"ay": 120
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

+70
View File
@@ -0,0 +1,70 @@
{
"image": "vannino.png",
"height": 120,
"frames": {
"explain": {
"x": 0,
"y": 0,
"w": 56,
"h": 120,
"ax": 28.6,
"ay": 120
},
"talk": {
"x": 58,
"y": 0,
"w": 64,
"h": 120,
"ax": 25.6,
"ay": 120
},
"blink": {
"x": 124,
"y": 0,
"w": 45,
"h": 120,
"ax": 25.0,
"ay": 120
},
"stand": {
"x": 171,
"y": 0,
"w": 46,
"h": 120,
"ax": 25.3,
"ay": 120
},
"cheer": {
"x": 219,
"y": 0,
"w": 52,
"h": 120,
"ax": 26.8,
"ay": 120
},
"shrug": {
"x": 273,
"y": 0,
"w": 80,
"h": 120,
"ax": 40.7,
"ay": 120
},
"cards": {
"x": 355,
"y": 0,
"w": 45,
"h": 121,
"ax": 22.7,
"ay": 121
},
"laugh": {
"x": 402,
"y": 0,
"w": 46,
"h": 121,
"ax": 22.7,
"ay": 121
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

+70
View File
@@ -0,0 +1,70 @@
{
"image": "volontari.png",
"height": 120,
"frames": {
"stand": {
"x": 0,
"y": 0,
"w": 102,
"h": 120,
"ax": 48.3,
"ay": 120
},
"blink": {
"x": 104,
"y": 0,
"w": 102,
"h": 120,
"ax": 48.3,
"ay": 120
},
"talk": {
"x": 208,
"y": 0,
"w": 101,
"h": 121,
"ax": 47.4,
"ay": 121
},
"explain": {
"x": 311,
"y": 0,
"w": 100,
"h": 120,
"ax": 47.4,
"ay": 120
},
"work": {
"x": 413,
"y": 0,
"w": 107,
"h": 112,
"ax": 49.0,
"ay": 112
},
"work2": {
"x": 522,
"y": 0,
"w": 104,
"h": 111,
"ax": 47.4,
"ay": 111
},
"give": {
"x": 628,
"y": 0,
"w": 100,
"h": 121,
"ax": 47.8,
"ay": 121
},
"laugh": {
"x": 730,
"y": 0,
"w": 100,
"h": 119,
"ax": 48.2,
"ay": 119
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

+70
View File
@@ -0,0 +1,70 @@
{
"image": "zio_mario.png",
"height": 120,
"frames": {
"explain": {
"x": 0,
"y": 0,
"w": 67,
"h": 120,
"ax": 33.8,
"ay": 120
},
"talk": {
"x": 69,
"y": 0,
"w": 79,
"h": 120,
"ax": 44.8,
"ay": 120
},
"blink": {
"x": 150,
"y": 0,
"w": 57,
"h": 120,
"ax": 28.1,
"ay": 120
},
"stand": {
"x": 209,
"y": 0,
"w": 57,
"h": 120,
"ax": 27.8,
"ay": 120
},
"shrug": {
"x": 268,
"y": 0,
"w": 94,
"h": 120,
"ax": 48.1,
"ay": 120
},
"point": {
"x": 364,
"y": 0,
"w": 87,
"h": 120,
"ax": 51.0,
"ay": 120
},
"think": {
"x": 453,
"y": 0,
"w": 58,
"h": 121,
"ax": 29.2,
"ay": 121
},
"laugh": {
"x": 513,
"y": 0,
"w": 59,
"h": 121,
"ax": 30.1,
"ay": 121
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

+57
View File
@@ -0,0 +1,57 @@
<html>
<head>
<meta http-equiv="Content-Language" content="it">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Responsabilità degli Iscritti</title>
</head>
<body>
<div align="center">
<center>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="600">
<tr>
<td width="100%">
<p align="center" style="margin-top: 0; margin-bottom: 0"><b>
<font size="6" face="Arial">Responsabilità degli Iscritti</font></b></p>
<p align="center" style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
<p align="justify" style="margin-top: 0; margin-bottom: 0">
<font face="Arial">Si fa presente che lo <b>Staff di WWW.SANPIERO50037.IT</b>,
non effettuerà controllo preventivo sul contenuto dei commenti e degli
interventi sul &quot;MURO DEL SANPIERINO&quot;, ma, <b><u>vista la possibilità di
risalire agli autori degli stessi</u></b>, si sentirà autorizzato alla
comunicazione di tali dati ai <b>Soggetti Interessati e all'Autorità
Giudiziaria</b> in caso di violazione di qualsiasi articolo del C.C. e del
C.P., si invita pertanto a prendere coscienza delle<b> responsabilità
civili e penali </b>che l'utente si assume in prima persona per il
contenuto di ciò che scrive.</font></p>
<p align="justify" style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
<p align="justify" style="margin-top: 0; margin-bottom: 0"><b>
<font face="Arial">E' pertanto necessario che tutti gli utenti garantiscano il contenuto:</font></b></p>
<p align="justify" style="margin-top: 0; margin-bottom: 0">
<font face="Arial"><b>1 -</b> Non sia volgare, diffamatorio e
pregiudizievole;</font></p>
<p align="justify" style="margin-top: 0; margin-bottom: 0">
<font face="Arial"><b>2 -</b> Non violi in alcun modo i diritti di terzi;</font></p>
<p align="justify" style="margin-top: 0; margin-bottom: 0">
<font face="Arial"><b>3 -</b> Non violi i diritti stabiliti dal
<a href="Privacy.htm">D.Lgs. 30.06.2003 n°196</a> e ogni altra normativa
in</font></p>
<p align="justify" style="margin-top: 0; margin-bottom: 0">
<font face="Arial">&nbsp;materia di Privacy;</font></p>
<p align="justify" style="margin-top: 0; margin-bottom: 0">
<font face="Arial"><b>4 -</b> Non violi la vigente normativa in materia di
Pubblica Sicurezza e Buon Costume e/o altre norme imperative;</font></p>
<p align="justify" style="margin-top: 0; margin-bottom: 0">
<font face="Arial"><b>5 -</b> Non venga inserito per fini di &quot;Spamming&quot;.</font></td>
</tr>
</table>
</center>
</div>
<p align="center"><a href="index.html" style="font: bold 14px Tahoma; color: #800000">&laquo; Torna al Muro</a></p></body>
</html>
@@ -0,0 +1,97 @@
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Guida al Muro del Sanpierino</title>
</head>
<body>
<div align="center">
<center>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="1024">
<tr>
<td width="100%">
<p class="MsoNormal" align="center" style="text-align: center; margin-top: 0; margin-bottom: 0">
<b><span style="font-size: 22.0pt">Guida al Muro del Sanpierino</span></b></p>
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
<b><u><span style="text-decoration: none; font-size: 18.0pt">&nbsp;</span></u></b></p>
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
<b><u><span style="font-size: 18.0pt">1 – Iscrizione</span></u></b></p>
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
<span style="font-size: 14.0pt">Se vuoi scrivere un messaggio sul Muro del
Sanpierino adesso dovrai prima essere iscritto. Iscriversi è gratuito e
semplicissimo, sarà sufficiente andare sul Muro e cliccare sull’icona
“Scrivi”, da lì verrai inviato nella pagina di “Login” dove troverai il
tasto “Iscriviti”,&nbsp; cliccandolo ti troverai direttamente nella pagina
d’Iscrizione. Appena riceveremo la tua richiesta attiveremo il tuo account
e riceverai una mail, all’indirizzo inserito, a conferma dell’attivazione.
A quel punto potrai scrivere sempre e in qualunque momento sul Muro.</span></p>
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
<span style="font-size: 14.0pt">&nbsp;</span></p>
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
<b><u><span style="font-size: 18.0pt">2 – Scrivere</span></u></b></p>
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
<span style="font-size: 14.0pt">Per scrivere sul Muro sarà sufficiente
cliccare sul tasto “Scrivi” e inserire il proprio Nickname e Password (se
non si è iscritti segui le istruzioni al paragrafo 1- Iscrizione). Vi
troverete nella pagina di scrittura vera e propria dove potrete scegliere
se mantenere il vostro Nickname d’iscrizione o variarlo, se rendere
visibile il vostro indirizzo e-mail oppure no e ancora scegliere fra le
oltre 470 smiles disponibili e ancora variare l’aspetto grafico del vostro
messaggio consultando la pagiana di aiuto per la personalizzazione… tante
alternative che sicuramente saranno di vostro gradimento!</span></p>
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
<span style="font-size: 14.0pt">&nbsp;</span></p>
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
<b><u><span style="font-size: 18.0pt">3 – Privacy &amp; Responsabilità</span></u></b></p>
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
<span style="font-size: 14.0pt">L’aspetto più importante di questo Nuovo
Muro del Sanpierino è proprio quello relativo alle Resposabilità che ogni
utente si assume nei post inseriti. Ogni Utente, pur facendo salva la
propria Privacy, non dovrà in alcun modo ledere gli altrui diritti e
quindi:</span></p>
<p style="text-align: justify; margin: 0 0cm">
<span style="font-size: 14.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>1 -</b> Non dovrà essere
volgare, diffamatorio e pregiudizievole;</span></p>
<p style="text-align: justify; text-indent: 35.4pt; margin: 0 0cm"><b>
<span style="font-size: 14.0pt">2 -</span></b><span style="font-size: 14.0pt">
Non dovrà violare in alcun modo i diritti di terzi;</span></p>
<p style="text-align: justify; text-indent: 35.4pt; margin: 0 0cm"><b>
<span style="font-size: 14.0pt">3 -</span></b><span style="font-size: 14.0pt">
Non dovrà violare i diritti stabiliti dal
<a href="http://www.sanpiero50037.it/spswall/Privacy.htm" style="color: blue; text-decoration: underline; text-underline: single">
D.Lgs. 30.06.2003 n°196</a> e ogni altra </span></p>
<p style="text-align: justify; text-indent: 35.4pt; margin: 0 0cm">
<span style="font-size: 14.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; normativa in materia di Privacy;</span></p>
<p style="text-align: justify; margin-left: 35.4pt; margin-right: 0cm; margin-top: 0; margin-bottom: 0">
<b><span style="font-size: 14.0pt">4 -</span></b><span style="font-size: 14.0pt">
Non dovrà violare la vigente normativa in materia di Pubblica Sicurezza e
</span></p>
<p style="text-align: justify; margin-left: 35.4pt; margin-right: 0cm; margin-top: 0; margin-bottom: 0">
<b><span style="font-size: 14.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></b>
<span style="font-size: 14.0pt">Buon Costume e/o altre norme imperative;</span></p>
<p style="text-align: justify; text-indent: 35.4pt; margin: 0 0cm"><b>
<span style="font-size: 14.0pt">5 -</span></b><span style="font-size: 14.0pt">
Non dovrà inserire post per fini di &quot;Spamming&quot;.</span></p>
<p style="text-align: justify; margin: 0 0cm">
<span style="font-size: 14.0pt">In caso di violazione di una delle regole
descritte qui sopra il messaggio verrà cancellato quanto prima e, in caso
di richiesta da parte del Soggetto interessato o dell’Autorità
Giudiziaria, verranno comunicati i suoi dati oltre, naturalmente, al
blocco dell’Utente che si renderà responsabile di tale messaggio. Per
tutti gli altri messaggi la Privacy dei nostri Utenti sarà tutelata come
descritto dal
<a href="http://www.sanpiero50037.it/spswall/Privacy.htm" style="color: blue; text-decoration: underline; text-underline: single">
D.Lgs. 30.06.2003 n°196</a>, tranne nei caso di violazione dei nostri Data
Base da attacchi esterni.</span></td>
</tr>
</table>
</center>
</div>
<p align="center"><a href="index.html" style="font: bold 14px Tahoma; color: #800000">&laquo; Torna al Muro</a></p></body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 484 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 904 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 610 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 758 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 605 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 B

Some files were not shown because too many files have changed in this diff Show More