From f39ebf3446de537ce42722f7bad16fa7d30acc49 Mon Sep 17 00:00:00 2001
From: baxyz
Date: Mon, 29 Jun 2026 01:25:39 +0200
Subject: [PATCH 1/6] Rework anecdotes page with checkboxes and localStorage
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Move anecdotes data to src/data/anecdotes.txt (one per line, easy to edit on mobile)
- Render list from .txt via Vite ?raw import
- Add checkbox per anecdote with hash-based ID (djb2 on text content)
- Persist checked state in localStorage, sort checked items last on page load
- Show progress counter "X% cochés (reste Y)" with a reset button
Co-Authored-By: Claude Sonnet 4.6
---
src/data/anecdotes.txt | 26 +++++
src/markdown/anecdotes.md | 51 ---------
src/pages/anecdotes.astro | 233 +++++++++++++++++++++++++++++++++++++-
3 files changed, 254 insertions(+), 56 deletions(-)
create mode 100644 src/data/anecdotes.txt
delete mode 100644 src/markdown/anecdotes.md
diff --git a/src/data/anecdotes.txt b/src/data/anecdotes.txt
new file mode 100644
index 0000000..cee6d7c
--- /dev/null
+++ b/src/data/anecdotes.txt
@@ -0,0 +1,26 @@
+Notre boss est parti en vacances l'été dernier et à son retour personne le reconnaissait
+L'un de nos collègues mange la raclette avec ... de l'ananas ! Et pourtant, on l'accepte quand même dans l'équipe !
+Chaque newcomer a son propre memoji et une photo pro retravaillée créés par l'équipe marketing à son arrivée
+Nous avons créé un Serious Game pour « refactorer » en jouant
+Notre président est un ancien stagiaire
+On a réussi à oublier de préparer des anecdotes jusqu'au jour de la conférence
+On a commencé en vendant un module hardware.
+A la base, le produit n'avait (presque) rien à voir avec ce que l'on fait aujourd'hui, heureusement qu'on a vite pivoté !
+On joue à Mario Kart tous les midis au bureau
+Véronique SANSOM et Julien CLERC sont salariés chez nous
+Nous sommes connus à SunnyTech pour nos canards et d'avoir tenté l'aventure Jumanji. Jamais 2 sans 3, cette année, qu'avons nous prévus ?
+Des fois on nous demande si on est une boite de textile
+Indice plus difficile... Seulement 4 lettres : PV-IA
+Un sanglier est entré dans nos locaux.
+Chaque membre de notre équipe a son mug de geek avec un Tux personnalisé (et pas que les devs)
+Nos chers devs qui travaillent dans la pub ont pour la plupart des ad blockers sur leurs ordis
+En plus d'avoir un logo ou un slogan, nous avons un parfum d'entreprise
+Notre nom est en fait la contraction de "Smile at Work"
+Nous sommes répartis entre Montpellier Paris et la Pologne
+Nous sommes très connus pour notre produit phare, mais proposons aussi une agence de voyage d'affaires en ligne entre autres.
+Notre égérie a un nom de fruit.
+Notre directeur d'agence fait des paquitos à chaque soirées
+Notre podcast "IA pas que la Data" a failli s'appeler "Je danse avec l'IA" ("Je danse avec le mia".. pour la référence !)
+Le tigre pour nous, c'est plus qu'un animal, c'est notre coupe du monde
+Notre entreprise est née en 1989.
+Ya pas plus "chouette" que notre entreprise.
diff --git a/src/markdown/anecdotes.md b/src/markdown/anecdotes.md
deleted file mode 100644
index 2e979a3..0000000
--- a/src/markdown/anecdotes.md
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-_Voici les anecdotes qui ont été partagées par les sponsors, à toi de trouver à qui elles correspondent !_ 🕵
-
-Dernière mise à jour : 27/06/25 09:26
-
-### Liste des anecdotes
-
-
-
Notre boss est parti en vacances l'été dernier et à son retour personne le reconnaissait
-
L'un de nos collègues mange la raclette avec ... de l'ananas ! Et pourtant, on l'accepte quand même dans l'équipe !
-
Chaque newcomer a son propre memoji et une photo pro retravaillée créés par l'équipe marketing à son arrivée
-
Nous avons créé un Serious Game pour « refactorer » en jouant
-
Notre président est un ancien stagiaire
-
On a réussi à oublier de préparer des anecdotes jusqu'au jour de la conférence
-
On a commencé en vendant un module hardware.
-
A la base, le produit n'avait (presque) rien à voir avec ce que l'on fait aujourd'hui, heureusement qu'on a vite pivoté !
-
On joue à Mario Kart tous les midis au bureau
-
Véronique SANSOM et Julien CLERC sont salariés chez nous
-
Nous sommes connus à SunnyTech pour nos canards et d'avoir tenté l'aventure Jumanji. Jamais 2 sans 3, cette année, qu'avons nous prévus ?
-
Des fois on nous demande si on est une boite de textile
-
Indice plus difficile... Seulement 4 lettres : PV-IA
-
Un sanglier est entré dans nos locaux.
-
Chaque membre de notre équipe a son mug de geek avec un Tux personnalisé (et pas que les devs)
-
Nos chers devs qui travaillent dans la pub ont pour la plupart des ad blockers sur leurs ordis
-
En plus d’avoir un logo ou un slogan, nous avons un parfum d’entreprise
-
Notre nom est en fait la contraction de "Smile at Work"
-
Nous sommes répartis entre Montpellier Paris et la Pologne
-
Nous sommes très connus pour notre produit phare, mais proposons aussi une agence de voyage d'affaires en ligne entre autres.
-
Notre égérie a un nom de fruit.
-
Notre directeur d'agence fait des paquitos à chaque soirées
-
Notre podcast "IA pas que la Data" a failli s'appeler "Je danse avec l'IA" ("Je danse avec le mia".. pour la référence !)
-
Le tigre pour nous, c'est plus qu’un animal, c’est notre coupe du monde
@@ -70,9 +70,8 @@ const anecdotes = rawAnecdotes
const counter = document.getElementById('anecdotes-counter')
const resetBtn = document.getElementById('anecdotes-reset') as HTMLButtonElement | null
if (!counter) return
- const pct = total > 0 ? Math.round((checkedCount / total) * 100) : 0
const remaining = total - checkedCount
- counter.textContent = `${pct}% cochés (reste ${remaining})`
+ counter.textContent = `${remaining} à trouver (${checkedCount} / ${total})`
if (resetBtn) {
resetBtn.hidden = checkedCount === 0
}
From a735e8ab1a8af76b0bc57b34aed733d89eed6e64 Mon Sep 17 00:00:00 2001
From: baxyz
Date: Mon, 29 Jun 2026 11:34:15 +0200
Subject: [PATCH 4/6] Add date header to anecdotes.txt, display it dynamically
on the page
First line starting with # is parsed as last-update date (format: DD/MM/YYYY HH:MM).
Anecdotes list ignores comment lines.
Co-Authored-By: Claude Sonnet 4.6
---
src/data/anecdotes.txt | 1 +
src/pages/anecdotes.astro | 9 ++++-----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/data/anecdotes.txt b/src/data/anecdotes.txt
index cee6d7c..690de9b 100644
--- a/src/data/anecdotes.txt
+++ b/src/data/anecdotes.txt
@@ -1,3 +1,4 @@
+# 27/06/2025 09:26
Notre boss est parti en vacances l'été dernier et à son retour personne le reconnaissait
L'un de nos collègues mange la raclette avec ... de l'ananas ! Et pourtant, on l'accepte quand même dans l'équipe !
Chaque newcomer a son propre memoji et une photo pro retravaillée créés par l'équipe marketing à son arrivée
diff --git a/src/pages/anecdotes.astro b/src/pages/anecdotes.astro
index 936f60b..65fa3a4 100644
--- a/src/pages/anecdotes.astro
+++ b/src/pages/anecdotes.astro
@@ -2,10 +2,9 @@
import LayoutWithTitle from '../layouts/LayoutWithTitle.astro'
import rawAnecdotes from '../data/anecdotes.txt?raw'
-const anecdotes = rawAnecdotes
- .split('\n')
- .map((line) => line.trim())
- .filter(Boolean)
+const lines = rawAnecdotes.split('\n').map((line) => line.trim())
+const lastUpdated = lines[0]?.startsWith('#') ? lines[0].slice(1).trim() : null
+const anecdotes = lines.filter((line) => line && !line.startsWith('#'))
---
@@ -16,7 +15,7 @@ const anecdotes = rawAnecdotes
correspondent ! 🕵️
-
Dernière mise à jour : 27/06/25 09:26
+ {lastUpdated &&
Dernière mise à jour : {lastUpdated}
}
ℹ️ Aucune de ces anecdotes ne correspond au sponsor SMAG.
From 735c0674090a7e2fbb116c04cf84a726421a1bd8 Mon Sep 17 00:00:00 2001
From: baxyz
Date: Mon, 29 Jun 2026 11:36:25 +0200
Subject: [PATCH 5/6] Update anecdotes list and date header
Co-Authored-By: Claude Sonnet 4.6
---
src/data/anecdotes.txt | 31 ++++---------------------------
1 file changed, 4 insertions(+), 27 deletions(-)
diff --git a/src/data/anecdotes.txt b/src/data/anecdotes.txt
index 690de9b..185a3a3 100644
--- a/src/data/anecdotes.txt
+++ b/src/data/anecdotes.txt
@@ -1,27 +1,4 @@
-# 27/06/2025 09:26
-Notre boss est parti en vacances l'été dernier et à son retour personne le reconnaissait
-L'un de nos collègues mange la raclette avec ... de l'ananas ! Et pourtant, on l'accepte quand même dans l'équipe !
-Chaque newcomer a son propre memoji et une photo pro retravaillée créés par l'équipe marketing à son arrivée
-Nous avons créé un Serious Game pour « refactorer » en jouant
-Notre président est un ancien stagiaire
-On a réussi à oublier de préparer des anecdotes jusqu'au jour de la conférence
-On a commencé en vendant un module hardware.
-A la base, le produit n'avait (presque) rien à voir avec ce que l'on fait aujourd'hui, heureusement qu'on a vite pivoté !
-On joue à Mario Kart tous les midis au bureau
-Véronique SANSOM et Julien CLERC sont salariés chez nous
-Nous sommes connus à SunnyTech pour nos canards et d'avoir tenté l'aventure Jumanji. Jamais 2 sans 3, cette année, qu'avons nous prévus ?
-Des fois on nous demande si on est une boite de textile
-Indice plus difficile... Seulement 4 lettres : PV-IA
-Un sanglier est entré dans nos locaux.
-Chaque membre de notre équipe a son mug de geek avec un Tux personnalisé (et pas que les devs)
-Nos chers devs qui travaillent dans la pub ont pour la plupart des ad blockers sur leurs ordis
-En plus d'avoir un logo ou un slogan, nous avons un parfum d'entreprise
-Notre nom est en fait la contraction de "Smile at Work"
-Nous sommes répartis entre Montpellier Paris et la Pologne
-Nous sommes très connus pour notre produit phare, mais proposons aussi une agence de voyage d'affaires en ligne entre autres.
-Notre égérie a un nom de fruit.
-Notre directeur d'agence fait des paquitos à chaque soirées
-Notre podcast "IA pas que la Data" a failli s'appeler "Je danse avec l'IA" ("Je danse avec le mia".. pour la référence !)
-Le tigre pour nous, c'est plus qu'un animal, c'est notre coupe du monde
-Notre entreprise est née en 1989.
-Ya pas plus "chouette" que notre entreprise.
+# 29/06/2026 11:00
+Anecdote 1
+Anecdote 2
+Anecdote 3
From f704824eb69e40604903c53d11085621a0a0c38f Mon Sep 17 00:00:00 2001
From: baxyz
Date: Mon, 29 Jun 2026 12:13:32 +0200
Subject: [PATCH 6/6] Update jeu.md with prizes and attendance rules
Co-Authored-By: Claude Sonnet 4.6
---
src/markdown/jeu.md | 48 +++++++++++++++++++++++----------------------
1 file changed, 25 insertions(+), 23 deletions(-)
diff --git a/src/markdown/jeu.md b/src/markdown/jeu.md
index e38aa12..32367cf 100644
--- a/src/markdown/jeu.md
+++ b/src/markdown/jeu.md
@@ -1,38 +1,40 @@
## Défi des secrets
-_Associez les anecdotes aux bons sponsors, gagnez des **tickets**, et utilisez-les pour des **gourmandises** 🍿 ou pour participer à la **loterie** 🎁 !_
+Associez les anecdotes aux bons sponsors, récoltez les 🦩 **Flamy** et tentez votre chance à la **loterie** 🎁 !
## Comment jouer ?
-1. **Consultez [la liste des anecdotes](/anecdotes)**
+1. **Prenez votre collecteur à 🦩 Flamy** — fournie avec votre bracelet, sinon disponible à l'accueil.
+2. **Consultez [la liste des anecdotes](/anecdotes)** — ℹ️ elle évolue tout au long de la conférence.
+3. **Discutez avec les sponsors** pour deviner à qui correspond chaque anecdote.
+4. **Validez vos réponses** auprès du sponsor : une bonne réponse vous rapporte un 🦩 Flamy.
+5. **Échangez vos Flamy à l'accueil** : 4 🦩 = 1 ticket 🎫 (jusqu'à 4 tickets au total).
- > 📌 *[La liste](/anecdotes) peut évoluer tout au long de la conférence — pensez à la consulter régulièrement !*
+
+
-2. **Discutez avec les sponsors**
+## Loterie
- > Échangez avec eux pour deviner à qui correspond chaque anecdote.
+Deux tirages : **jeudi soir** (soirée networking) et **vendredi soir** (keynote de clôture).
-3. **Validez vos réponses**
+Les lots sont identiques pour chaque tirage :
- > Pour chaque bonne réponse, vous remportez **un ticket** 🎫.
+1. 🖨️ Une mini-imprimante 3D
+2. 🎮 Une console portable rétro
+3. 🎟️ Une place pour SunnyTech l'année prochaine
-4. **Utilisez vos tickets** comme vous le souhaitez :
- 1. 🍿 **Échangez** les contre du popcorn ou de la barbe à papa (1 ticket = 1 popcorn ou 1 barbe à papa)
- 2. 🎁 **Participez à la loterie SunnyTech**.
-
-## Points importants
+
+
+
+> ⚠️ La présence est obligatoire pour récupérer les lots physiques.
+
+
+
+
+Sur chaque ticket, notez vos **nom**, **email** et **téléphone** au dos, puis glissez-le dans l'urne à l'accueil.
-* La [liste des anecdotes](/anecdotes) peut évoluer en cours de conférence. Restez à l'affût !
-* Pour la loterie :
- * Détachez chaque ticket.
- * Inscrivez clairement vos **coordonnées** au dos :
- * Nom
- * Email
- * Numéro de téléphone
- * Glissez ensuite le ticket dans l’**urne à l'accueil**.
-* Si vous avez des questions, n'hésitez pas à demander à l'un.e des bénévoles (tee-shirt jaune)
## Bonne chance !
-Amusez-vous bien tout au long de SunnyTech, et que le plus curieux gagne ! 🦩
+Que les plus curieux gagnent ! 🦩
-Le règlement complet [est disponible ici](https://docs.google.com/document/d/16_iKaZ3iIz_SWdv_J0UHEzFao6zDDWZC6Vm71gtA-Bc/edit?usp=sharing).
+_Des questions ? Les bénévoles en tee-shirt jaune sont là pour vous aider. — Règlement complet [est disponible ici](https://docs.google.com/document/d/16_iKaZ3iIz_SWdv_J0UHEzFao6zDDWZC6Vm71gtA-Bc/edit?usp=sharing)._