Une nouvelle version de Trivabble, un jeu de Scrabble en réseau présenté ici‑même, vient de sortir.
Sommaire
- Petit historique
- Cible de Trivabble
-
Alors, quoi de neuf ?
- Bogues corrigés
-
Nouveautés visibles
- Montrer son jeu aux autres joueurs
- À qui le tour ?
- Incrémenter le score
- Interface en roumain
- Disponibilité du jeu dans plus de trente langues
- Vérification orthographique des mots qui viennent d’êtres posés
- Pointeur laser
- Boîte de messages d’aide
- Boîte de dialogue pour les paramètres
- Petit raffinage du style et ergonomie
- Identité graphique
- Nouveautés côté développement et mise en production
- Et la suite ?
- Autour de Trivabble
- Conclusion
Petit historique
J’ai démarré ce projet en 2016 pour que ma famille éparpillée aux quatre coins de la France puisse jouer ensemble. La philosophie du projet est simple :
- il faut que ça soit facile et agréable à utiliser pour des gens qui n’y connaissent rien à l’informatique (ce qui ne l’empêche d’ailleurs pas d’être agréable pour des gens qui s’y connaissent !) ;
- le jeu n’impose pas de règles et ne vérifie rien — pour caricaturer, il fournit un sac de pièces, un plateau, des chevalets et les gens font ce qu’ils veulent avec —, comme dans le monde physique : pas de limite artificielle, ça reste simple à comprendre, et si vous jouez au Scrabble ou comptez les points à votre manière, personne n’ira vous juger.
J’ai fait mon petit journal ici pour présenter le projet, j’ai mis ça en ligne, j’ai reçu une première contribution (traduction en breton), puis ça s’est débrouillé tout seul, à tel point que j’avais plus ou moins oublié que j’avais ça qui tournait sur mon serveur…
… jusqu’à mars 2020, où j’ai commencé à recevoir des courriels de remerciements, et quelques rapports de bogues aussi. Oui, à cette période, les gens ont dû chercher des solutions pour jouer à distance avec leurs connaissances… Et j’ai vu qu’effectivement, il y avait pas mal de connexions au jeu. Devant cet état de fait, je me suis motivé pour stabiliser Trivabble. Ça a bien occupé mon temps libre pendant les mois de mars et avril. Et j’ai soumis cette dépêche, que je vous laisse (re)lire si vous voulez vous (r)afraîchir la mémoire.
Il y a eu pas mal de suggestions dans les commentaires de la dépêche, et j’ai aussi vu des tickets apparaître sur la forge du projet. Puis une requête de fusion. Puis une autre. Et d’autres. Puis, j’ai ouvert un ticket formulant le souhait d’avoir une vraie prise en charge de l’international, que je comptais traiter plus tard. Mais le lendemain, j’ai reçu une requête de fusion pour ce ticket. Et d’autres contributions se sont enchaînées, si bien que je n’ai pas écrit la majorité du code qui forme cette version… Vous l’aurez compris, il y a plein de nouvelles fonctionnalités sympathiques, mais le plus gros changement pour moi, c’est l’arrivée d’autres personnes contribuant au projet, au point que je ne prends plus les décisions seul. Et aussi, des retours de gens qui l’ont installé sur leurs serveurs.
Cible de Trivabble
En fait, la cible de Trivabble est assez large, et s’est élargie ces derniers mois. Trivabble cible les gens qui souhaitent jouer au Scrabble en famille et avec leurs ami·e·s. Cela représente une variété d’âges importante, de gens un peu plus jeunes que moi, nés avec un smartphone dans la main, jusqu’à assez vieux pour avoir découvert l’informatique il y a cinq ans, après avoir vécu l’apparition du vinyle, l’avènement du téléphone à cadran dans les foyers et la naissance de Michel Drucker. Et maintenant, il attire aussi les gens qui aiment bidouiller, et c’est cool de leur faire plaisir aussi (à condition de ne pas dévier le projet de sa cible initiale).
Alors, quoi de neuf ?
Si la précédente version ne contenait que des améliorations sous‑marines, cette version vient avec plein de choses visibles ! Des bogues corrigés, fonctionnalités à destination des utilisateurs finaux, des gens installant Trivabble sur leurs serveurs et des gens bidouillant le code.
Bogues corrigés
Trivabble avait des problèmes de pièces qui disparaissent. Ça a donné des échanges sympathiques par courriels et on sent que ça a causé des fous rires. Malgré tout, pas super‐fan de cette « fonctionnalité », on a finalement réussi, grâce à certaines observations d’utilisateurs, à reproduire, et du coup, corriger, les multiples causes de ces bogues qui sont, je l’espère, maintenant corrigés.
Autre point, il y avait un dysfonctionnement lors de la première utilisation de Trivabble lorsque les WebSockets sont utilisés. Impossible de remplir son chevalet en cliquant sur le sac parce que le numéro de partie n’était pas bien enregistré côté serveur. Recharger la page permettait de contourner le problème. Les WebSockets sont activés par défaut sur Trivabble, y compris en environnement de développement, mais je ne les avais pas activés sur l’instance principale, frileux que j’étais de changer un truc qui fonctionnait (avoir des utilisateurs qui ne se débrouillent pas bien en informatique, ça met un peu la pression ! Il faut que ça marche !). Du coup, ce bogue n’a probablement pas été vu par beaucoup de monde.
Dernier point, en cas de message d’erreur avant toute utilisation de la messagerie instantanée, le panneau de gauche devenait énorme: il s’élargissait pour prendre le plus de place possible. Surtout vu en environnement de développement, quand on redémarre tout le temps le serveur et qu’on ne commence pas une partie sans s’envoyer des messages instantanés, c’est quand même mieux sans.
C’est tout pour les bogues corrigés. De toute façon, Trivabble ça fonctionne plutôt bien, hein ! Hé hé.
Nouveautés visibles
Montrer son jeu aux autres joueurs
Ça m’a été demandé par courriel, et peut‑être aussi suggéré dans les commentaires de la dépêche précédente. On peut maintenant montrer son jeu aux autres joueurs en cliquant sur un bouton. Ça permet aux autres d’aider un joueur en difficulté. Si ce n’est pas nécessairement du Scrabble dans les règles de l’art, c’est bien du Scrabble tel que pratiqué concrètement par les gens. Une fonctionnalité « accessoirement indispensable » comme on dit chez moi (pas du tout).
À qui le tour ?
On m’a remonté la difficulté à savoir à qui le tour. Dans le monde physique, il est facile de demander à qui c’est de jouer, de s’entendre répondre « c’est toujours à celui qui demande », et on sait vite à qui c’est le tour. En réseau, pas si simple ! Il y a donc maintenant un bouton pour indiquer le tour. Le nom de la personne concernée sera en gras. N’importe qui peut « donner » le tour à n’importe qui. Ce qui permet, d’une part, de coller à la philosophie « on ne fournit que les outils, pas les règles » et, d’autre part, à une personne à l’aise avec la fonctionnalité de gérer les tours pour tout le monde. Ou, à chacun de passer le tour. Aux joueurs et aux joueuses de décider.
Incrémenter le score
Il est maintenant possible d’ajouter une valeur à un score, au lieu de devoir faire l’addition soi‑même. Ça ne mange pas de pain, mais c’est plus pratique, et ça augmente grandement la qualité de vie d’une personne utilisant Trivabble. Merci à Nico Nucor, qui a à la fois ouvert le ticket et fait une requête de fusion, s’annonçant lui‑même débutant en JavaScript. Et, ça, je suis content de le lire, ça veut dire que des gens apprennent des choses grâce à ce projet.
Ces trois fonctionnalités sont en fait en production avec une version étiquetée dans le dépôt, depuis avril, mais je me voyais mal envoyer une dépêche ou même un journal ici pour ces trois fonctionnalités si peu de temps après la précédente dépêche. Maintenant, pour les nouveautés en production ce week‑end :
Interface en roumain
Cosmin Humeniuc a envoyé une traduction en roumain de Trivabble, et en a profité pour ajouter une clef manquante dans le modèle de traduction. Malheureusement, comme pour le breton, l’interface a un peu évolué depuis rendant certaines traductions obsolètes, et ajoutant des parties non traduites au projet. Il sera peut‑être bientôt temps de mettre en place un système pour contribuer facilement à la traduction de l’interface de Trivabble.
Disponibilité du jeu dans plus de trente langues
Laurent Mazet y va fort pour sa deuxième contribution à Trivabble. Vous n’êtes pas sans savoir que les langues entre elles n’ont pas les mêmes fréquences de lettres, et le Scrabble adapte par conséquent le nombre de fois qu’une lettre apparaît dans le sac, et le nombre de points associés. Il a écrit un extracteur pour la page Wikipédia Lettres du Scrabble, ce qui permet d’ajouter la prise en charge des langues de cette page dans Trivabble. Il en a aussi ajouté un certain nombre à la main, et a écrit le mécanisme dans Trivabble permettant de changer la langue du plateau. Donc, si vous voulez jouer en Klingon, eh bien, faites‑vous plaisir. J’ai également tenu à ce que le breton soit pris en charge, vu que c’est une langue dans laquelle Trivabble est (maintenant partiellement) traduit.
Vérification orthographique des mots qui viennent d’êtres posés
Laurent continue dans sa lancée, avec un énorme boulot pour ajouter la vérification orthographique des mots posés sur Trivabble. La fonctionnalité est optionnelle et nécessite une action de la personne installant Trivabble. Un Makefile
avec des scripts bash et awk téléchargent des dictionnaires Aspell et produisent des listes de mots (dictionnaires) avec toutes les formes fléchies (conjuguées et accordées, quoi !). Ces dictionnaires seront téléchargés lors de la première utilisation au cours d’une partie.
Pour que ça ne soit pas trop horrible, on compte vraiment sur la compression côté serveur pour envoyer les dictionnaires. Cela dit, non compressé, le dictionnaire pour le français fait autour de 3 Mio, donc c’est gérable. En revanche, pour certaines langues, cette approche ne fonctionne pas : des dictionnaires de plusieurs dizaines de gigaoctets sont générés pour ces langues qui permettent un très grand nombre de formes fléchies, donc on a désactivé ces langues. On pourra améliorer ça plus tard, on pourrait imaginer faire tourner Aspell directement dans le navigateur en le compilant en WebAssembly ou en asm.js par exemple. Si ça semble fun à faire, n’hésitez pas à ouvrir un ticket et discuter avec nous. :-)
Pointeur laser
Une suggestion qui a été faite dans les commentaires de la dépêche précédente a fait son petit chemin dans un ticket, et a terminé dans une requête de fusion de Laurent. Il est maintenant possible de pointer un endroit précis du plateau en double cliquant ou double tapotant dessus. La case s’éclaire sur le plateau de tous les joueurs et un message apparaît dans la messagerie instantanée. Et comme Laurent aime bien pouvoir paramétrer les choses aux petits ognons, il a même ajouté la possibilité de configurer la couleur !
Je lui ai dit : c’est bien gentil, mais comment on va faire pour que les gens découvrent cette superbe fonctionnalité ? On ne peut pas ajouter des messages d’aide à l’infini dans l’interface, ça va noyer les gens et de toute façon on manque de place pour cela. Et puis, c’est pareil, tes paramètres, c’est cool, mais si on remplit l’interface de paramètres, ça va noyer les gens. Ce à quoi il m’a répondu par deux requêtes de fusions :
Boîte de messages d’aide
Les messages d’aides sont consultables dans une petite boîte à droite de l’écran, avec une flèche pour passer au suivant. Le premier étant celui indiquant comment tirer des pièces, le deuxième comment affecter des points aux gens, jusqu’au dernier permettant de découvrir la fonctionnalité laser. Et ensuite, on table sur le bouche‐à‐oreille ! Il suffit peut‑être de quelques personnes découvrant la fonctionnalité pour qu’elle se répande si les gens l’apprécient.
Boîte de dialogue pour les paramètres
Cette boîte permet d’alléger l’interface de Trivabble en la libérant de tous les paramètres pas totalement essentiels pour jouer : ceux qui permettent de désactiver les sons, celui pour paramétrer la couleur du « laser », celui pour désactiver la vérification orthographique (pour éviter de mis‑cliquer sur le bouton et déclencher un téléchargement de dictionnaire sur une connexion mobile limitée).
Petit raffinage du style et ergonomie
La touche échappe ferme maintenant toutes les boîtes de dialogue, en répondant non à la question si la boîte de dialogue pose une question en oui/non, ou en annulant l’action si la boîte de dialogue demandait confirmation. De plus, le vert criard des boutons de Trivabble me donnait des boutons, alors je l’ai adouci un peu. J’ai arrondi les angles des boutons juste ce qu’il faut pour rendre les angles plus doux, mais sans que ça ne se remarque vraiment (je ne suis pas super fan des arrondis trop visibles. Les arrondis, c’est so 2010, n’est‑ce pas ? La mode c’est à nouveau celle de Windows 3.1 avec ses boutons on ne peut plus carrés).
Identité graphique
Ysabeau a proposé un nouveau sac, suite à une remarque sur l’apparence du sac dans les commentaires de la dépêche précédente. J’ai beaucoup apprécié l’initiative mais le style du sac qu’elle a proposé ne m’a pas complètement emballé (vous l’avez celle‑là ? 😜). Cependant, elle a aussi fait un logo qui est devenu le logo et la favicon de Trivabble. J’aime également beaucoup l’idée des pièces Trivabble au fond du sac, et j’espère pouvoir en faire un élément de l’identité visuelle de Trivabble et l’intégrer sur le site.
Nouveautés côté développement et mise en production
Organisation des fichiers
La séparation du client et du serveur est maintenant propre, avec un dossier public pouvant être servi avec un serveur HTTP statique sans crainte, et un serveur pouvant être placé bien au chaud ailleurs dans l’arborescence du système. Avant, il fallait mettre des règles pour bloquer le téléchargement du fichier de sauvegarde du serveur, par exemple. Ce changement semble aussi simplifier l’installation de Trivabble avec YunoHost d’après les retours, mais je n’ai pas essayé. Merci à Vincent Danjean pour le ticket et les réflexions initiales et à Laurent pour l’implémentation.
Gestion des paramètres
Laurent nous a ajouté un système de gestion de paramètres utilisateur dans le code du client, bien agréable à utiliser. Les paramètres sont sauvegardés, comme depuis toujours, dans le localStorage
(et on a pris soin de garder la compatibilité avec les anciennes versions pour ne pas perdre les paramètres des gens lors de la mise à jour). Mais maintenant, le fait que localStorage
enregistre des chaînes est abstrait. On a une belle fonction getSetting(clef)
qui récupère une valeur placée par setSetting(clef, valeur)
avec le même type d’origine. Si le paramètre n’a jamais été posé, on tente de récupérer la valeur dans un objet Conf
rempli avec la configuration fournie par l’administrateur, et sinon une valeur par défaut.
Conversion des let
et const
en var
Le code de Trivabble est écrit en JavaScript pur, et aucun transpileur ou système d’empaquetage tel que Babel ou webpack n’est utilisé. C’est un choix d’ignorant devenu délibéré : cela permet d’avoir un processus de développement et de mise en production aussi simple que possible, et de ne pas dépendre de l’écosystème NPM que je trouve… complexe et chaotique, et surtout overkill pour Trivabble. Mais vu que Trivabble doit fonctionner sur l’iPad 2, coincé en 2015, impossible d’utiliser les fonctionnalités récentes de JavaScript du coup. Cependant, c’était quand même un peu pénible de ne pas pouvoir utiliser let
et const
pour déclarer les variables, un petit bout de code [fr]agile et pragmatique :
code.replace(
/(?<before>^|\s|\()(?:const|let)(?<after>\s)/gu,
"$1var$2"
)
Cela permet de faire la conversion lors de la mise en production et quand on utilise le serveur de développement. Alors, oui, on analyse du JavaScript à la manière Cthulhu avec une expression rationnelle illisible, et ce code ne marche pas dans le cas général. Mais il marche sur le code client de Trivabble, et serait simple à remplacer par une solution propre si le besoin s’en faisait sentir. Ça fait le job ® avec une vitesse d’exécution imbattable et ça a pris dix minutes à écrire, tests de non‑régression inexistants inclus.
Sécurité
Les bonnes pratiques actuelles consistent à utiliser des en‑têtes HTTP de plus en plus sévères pour contrôler la sécurité et mitiger les failles de type Cross Site Scripting — de l’injection de code exploitant les failles des applications Web. Imaginons par exemple qu’il y ait une faille dans Trivabble et qu’envoyer un message bien spécifique dans la messagerie instantanée permette d’exécuter du code sur les navigateurs des destinataires. Ces en‑têtes permettent de limiter la casse en interdisant certains mécanismes. Il s’agit notamment de l’en‑tête Content-Security-Policy
. Il est maintenant possible d’appliquer une politique de sécurité super stricte, bloquant même les styles « inline » (balises <style>
et attributs style=""
) sans casser Trivabble. Les versions précédentes de Trivabble utilisaient des styles inline, ce qui n’est plus le cas maintenant, et le serveur de développement envoie plus ou moins cet en‑tête pour vérifier pendant le développement qu’on ne casse pas les installations l’utilisant :
Content-Security-Policy:
default-src 'none';
script-src 'self';
style-src 'self';
img-src 'self';
connect-src 'self';
media-src 'self'
Ce qui veut dire que les navigateurs n’essaieront pas de charger des scripts ou styles inline, ni de se connecter ou charger des scripts, styles ou média ailleurs que sur le serveur d’origine. Et ils n’essaieront pas d’accéder à tout autre type de données.
On pourrait faire mieux, en restreignant la liste des scripts, styles et médias autorisés aux cinq fichiers JavaScript, deux fichiers CSS et deux médias utilisés par Trivabble. Et ça ne semble pas insurmontable, surtout qu’ils sont statiques. À creuser…
Documentation
La mise en production est maintenant bien documentée, aussi bien en utilisant un frontal Apache 2 qu’en utilisant un frontal Nginx (l’instance principale est d’ailleurs passée à Nginx dans le plus grand silence). Trivabble est actuellement testé sur les deux configurations, mais j’ai tendance à recommander Nginx maintenant. Trivabble utilisant des connexions longues et n’ayant besoin que d’un serveur mandataire (proxy) léger, Nginx est plus adapté pour ce cas.
Et la suite ?
On a deux requêtes de fusions implémentant respectivement un minuteur et un comptage automatique des points (cette dernière s’appuyant sur ce qui a été fait pour le vérificateur orthographique). Ces deux fonctionnalités pourraient suffire à justifier une nouvelle version.
Le mode duplicate a été demandé plusieurs fois, alors si quelqu’un a la motivation, ça sera implémenté aussi.
On n’a pas du tout travaillé à généraliser le code de Trivabble pour servir de base à d’autres jeux, mais ça pourrait venir. N’hésitez pas à venir ! Plus on est de fous, plus on rit, et surtout, ça permet au projet de ne plus dépendre de moi.
Des réflexions sont en cours pour ajouter des tests automatiques (unitaires et fonctionnels). Si le sujet vous intéresse, n’hésitez pas à venir donner votre avis ou partager votre expérience.
Des réflexions sont également en cours pour améliorer la gestion des dictionnaires, avec peut‑être une intégration d’Aspell lui‑même pour vérifier les mots.
Et sinon… À vous de jouer !
Autour de Trivabble
Amic a fait un dérivé de Trivabble pour faire un jeu de Coinche, et ça c’est trop cool !
Conclusion
Merci aux gens qui ont trouvé un intérêt pour Trivabble, à celles et ceux qui ont contribué à cette version (notamment Laurent, Ysabeau, Nico, Cosmin et Philippe) et aux gens qui ont donné des retours par courriel ou dans les commentaires de la dépêche précédente. Sans ces personnes, je n’aurais pas continué à travailler autant sur Trivabble, et la plupart de ces évolutions n’auraient probablement pas vu le jour, en tout cas aussi rapidement.
J’espère que cette nouvelle version va vous plaire et vous permettre de passer de bons moments.
Aller plus loin
- Site Web de Trivabble (500 clics)
- Dépôt du projet (120 clics)
- Dépêche précédente (25 clics)
# Gaffe au cease and desist
Posté par damaki . Évalué à 9. Dernière modification le 18 octobre 2020 à 12:02.
Attention, Hasbro est pointilleux et interdit formellement d'utiliser un plateau identique dans un autre jeu que le Scrabble officiel. Il y en a plusieurs qui ont déjà été torpillés. Mais certains irréductibles que je ne citerai pas arrivent à se maintenir dans l'ombre depuis des années.
[^] # Re: Gaffe au cease and desist
Posté par lolop (site web personnel) . Évalué à 9.
…faire du layout du plateau un paramètre du jeu, et fournir par défaut un exemple différent. Libre aux joueurs d'en adopter un autre (mais ce ne sont pas les développeurs qui en sont responsables).
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Gaffe au cease and desist
Posté par raphj . Évalué à 5. Dernière modification le 18 octobre 2020 à 20:26.
Pour les personnes intéressées par le sujet, je vous invite à consulter les fils de commentaires :
[^] # Re: Gaffe au cease and desist
Posté par raphj . Évalué à 5. Dernière modification le 18 octobre 2020 à 21:43.
Et hop, deux tickets pour traiter ce "bug" :-)
[^] # Re: Gaffe au cease and desist
Posté par gUI (Mastodon) . Évalué à 5.
Et toujours en cas de réception d'une lettre d'avocat se référer à l'article de Maître Eolas.
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Gaffe au cease and desist
Posté par gUI (Mastodon) . Évalué à 4.
Et ce doit être idem pour les probas d'apparition de lettre ainsi que leur score non ? Parce que je me doute que là réside une bonne partie de la compétence du (bon) joueur de
ScrTrivabble.En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Gaffe au cease and desist
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 3.
Il se trouve que ça ne peut pas être privatisé ; c'est l'utilisation de résultats dans le domaine public. → cf. wikipedia
Il y a plusieurs variations autour du sujet ; voir par exemple les archives HAL
Il y a d'autres usages que le scrable de cette analyse fréquentielle ; par exemple pour le bépo
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: Gaffe au cease and desist
Posté par raphj . Évalué à 3. Dernière modification le 18 novembre 2020 à 22:46.
Le choix précis du nombre de lettres et de leur score est dérivé d'une analyse fréquentielle, mais n'est-il pas, lui, spécifique au Scrabble ? Qu'est-ce qui, au regard de la loi / du droit d'auteur / des marques le différencie-t-il de la disposition des lettres/mots compte double/triple sur le plateau ?
[^] # Re: Gaffe au cease and desist
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 2.
On se rejoint un peu : les lettres les moins utilisées rapportent plus (double) et les plus rare encore plus (triple). De ce point de vue, on arrive quasiment à la même chose en partant de zéro (donc sans chercher à plagier leur scoring ; mais je dis quasiment car en fait les différences vont être au niveau de là où on place les 2 curseurs…)
Pour la valuation des mots, je pense que c'est juste dicté par le placement diagonal, et j'ai déjà vu des choses similaires dans d'autres jeux. Mais comme suggéré, rien n'empêche de tester d'autres répartitions qui pour le coup feront qu'on aura un plateau différent…
Ces éléments pris séparément, ne tombent pas sous le coup de la loi, pour ce que j'en sais. Par contre, il peut y avoir un droit d'auteur qui s'appliquerait au jeu ; c'est à dire :
Il faut bien entendu que tous ces éléments soient réunis pour qu'un délit soit constitué : si j'ai exactement les mêmes caractéristiques de plateau (mais pas exactement le même plateau en terme de design qui peut être une œuvre d'artiste et protégée) mais avec des règles de jeu différentes alors c'est juste un autre jeu. Il se trouve que c'est le cas ici, puisqu'on n'impose pas les règles officielles (et il faudrait que la configuration par défaut ne se rapproche pas trop du jeu existant… même si les joueurs peuvent adapter pour se retrouver à jouer au jeu officiel.)
Bien entendu, les noms (comme Scrabble ici) et les marques associées sont protégées (et on espère pour eux déposés.) Raison pour laquelle on lui a conseillé de les retirer tant qu'il n'a pas quelque accord pour les mentionner.
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
# Typo
Posté par eltoniodelavega . Évalué à 1.
P'tite typo :
s/nativageurs/navigateurs/
Merci pour l'article :)
[^] # Re: Typo
Posté par Benoît Sibaud (site web personnel) . Évalué à 3.
Corrigé, merci.
[^] # Re: Typo
Posté par raphj . Évalué à 2.
Elle est impressionnante celle là. J'ai permuté trois consonnes ! (et cette permutation est une rotation)
els lettrse n'arrivetn psa toujousr dasn el bno orrde.
Merci à vous deux.
[^] # Re: Typo
Posté par Benoît Sibaud (site web personnel) . Évalué à 4.
Ça brouille la lecture à défaut de l'écoute ?
[^] # Re: Typo
Posté par raphj . Évalué à 3.
J'ai beau chercher, je ne sais pas quoi faire de « la lecture » dans cette phrase.
:-)
# Plateau rectangulaire
Posté par Bernez . Évalué à 1.
Bonjour. Sur mon ordi, le plateau est un rectangle bien allongé (en largeur). C'est vraiment laid. Je remarque que le problème ne disparaît pas en redimensionnant la fenêtre de Firefox. Une idée ?
[^] # Re: Plateau rectangulaire
Posté par raphj . Évalué à 2.
Serait-ce possible d'avoir une capture d'écran ?
Il ne faut pas hésiter à rapporter le bug sur la forge du projet ou par mail :-)
# Sac
Posté par HL . Évalué à 1.
On dirait qu'il y a pas mal de sacs SVG dans le domaine public ou en licence CC en faisant une petite recherche (money bag svg common)…
Que penser de celui-là, avec une petite retouche ?
[^] # Re: Sac
Posté par Ysabeau 🧶 (site web personnel, Mastodon) . Évalué à 5.
Sinon on peut arrondir la forme du sac et garder le reste. Du coup on reste près du sac d'origine.
« Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.
[^] # Re: Sac
Posté par raphj . Évalué à 3.
J'aime beaucoup cette version :-)
[^] # Re: Sac
Posté par Ysabeau 🧶 (site web personnel, Mastodon) . Évalué à 2.
Je t’envoie le svg.
« Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.