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 - - diff --git a/src/pages/anecdotes.astro b/src/pages/anecdotes.astro index 564c235..f3a40e0 100644 --- a/src/pages/anecdotes.astro +++ b/src/pages/anecdotes.astro @@ -1,11 +1,234 @@ --- import LayoutWithTitle from '../layouts/LayoutWithTitle.astro' -import MarkdownWrapper from '../components/ui-elements/MarkdownWrapper.astro' -import { Content } from '../markdown/anecdotes.md' +import rawAnecdotes from '../data/anecdotes.txt?raw' + +const anecdotes = rawAnecdotes + .split('\n') + .map((line) => line.trim()) + .filter(Boolean) --- - - - +
+

+ 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

+ +
+ + 0% cochés (reste {anecdotes.length}) + + +
+ +
    + { + anecdotes.map((text) => ( +
  • + +
  • + )) + } +
+
+ + + + From eecfb4b5163c1ee487bc274c6f5673bfa6928fd2 Mon Sep 17 00:00:00 2001 From: baxyz Date: Mon, 29 Jun 2026 11:08:23 +0200 Subject: [PATCH 2/6] Add SMAG notice on anecdotes page Co-Authored-By: Claude Sonnet 4.6 --- src/pages/anecdotes.astro | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/pages/anecdotes.astro b/src/pages/anecdotes.astro index f3a40e0..d8d5d10 100644 --- a/src/pages/anecdotes.astro +++ b/src/pages/anecdotes.astro @@ -18,6 +18,8 @@ const anecdotes = rawAnecdotes

Dernière mise à jour : 27/06/25 09:26

+

ℹ️ Aucune de ces anecdotes ne correspond au sponsor SMAG.

+
0% cochés (reste {anecdotes.length}) @@ -153,6 +155,16 @@ const anecdotes = rawAnecdotes .last-update { font-size: var(--fs-1); + margin-bottom: 1rem; + } + + .notice { + font-size: var(--fs-1); + color: var(--text-subtle); + background: var(--component); + border-left: 3px solid var(--border); + border-radius: var(--border-radius); + padding: 0.5rem 0.75rem; margin-bottom: 1.5rem; } From 1c126d13d97cd6a5e146a42375f4a4ba38011279 Mon Sep 17 00:00:00 2001 From: baxyz Date: Mon, 29 Jun 2026 11:11:42 +0200 Subject: [PATCH 3/6] =?UTF-8?q?Update=20anecdotes=20counter=20format=20to?= =?UTF-8?q?=20"X=20=C3=A0=20trouver=20(Y=20/=20Z)"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- src/pages/anecdotes.astro | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/pages/anecdotes.astro b/src/pages/anecdotes.astro index d8d5d10..936f60b 100644 --- a/src/pages/anecdotes.astro +++ b/src/pages/anecdotes.astro @@ -22,7 +22,7 @@ const anecdotes = rawAnecdotes
- 0% cochés (reste {anecdotes.length}) + {anecdotes.length} à trouver (0 / {anecdotes.length})
@@ -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)._