From 5d3dedcc909c500ca589590726fcc3814e6238ad Mon Sep 17 00:00:00 2001 From: Pierre MARTIN Date: Tue, 3 Nov 2026 01:58:16 +0100 Subject: [PATCH] =?UTF-8?q?Ic=C3=B4nes=20et=20logo=20de=20la=20charte,=20c?= =?UTF-8?q?opi=C3=A9s=20depuis=20docs/identite/logo/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- Makefile | 14 ++++++-- scripts/make-icons.py | 73 --------------------------------------- tests/test_site.sh | 28 +++++++++++++-- web/icons/icon-192.png | Bin 2696 -> 0 bytes web/icons/icon-512.png | Bin 8278 -> 0 bytes web/icons/icon.svg | 7 ---- web/manifest.webmanifest | 13 +++---- 7 files changed, 44 insertions(+), 91 deletions(-) delete mode 100644 scripts/make-icons.py delete mode 100644 web/icons/icon-192.png delete mode 100644 web/icons/icon-512.png delete mode 100644 web/icons/icon.svg diff --git a/Makefile b/Makefile index 7746b09..3883141 100644 --- a/Makefile +++ b/Makefile @@ -115,9 +115,17 @@ deploy: site ## Sert l'application sur le réseau local (Ctrl+C pour arrêter) deploy-web: deploy ## Comme make deploy (ancien nom, étape 0b) +# Fichiers de docs/identite/logo/ publiés dans icons/ (manifeste, favicon, +# barre haute). +SITE_ICONS := icone.svg icone-192.png icone-512.png icone-maskable-192.png icone-maskable-512.png \ + apple-touch-icon-180.png favicon.svg favicon-32.png \ + logo-horizontal-couleur.svg logo-horizontal-sombre.svg symbole-couleur.svg symbole-sombre.svg + # Le site tel qu'il sera publié, reconstruit entièrement à chaque appel : -# - web/ à la racine : la page de l'application, son style, le manifeste, les -# icônes, le Web Worker du moteur, et les pages de test sous moteur/ ; +# - web/ à la racine : la page de l'application, son style, sa police, le +# manifeste, le Web Worker du moteur, et les pages de test sous moteur/ ; +# - sous icons/, le logo et les icônes de la charte, copiés depuis +# docs/identite/logo/ (une seule source, ADR 0010) ; # - l'application compilée (build/web/src/) sous app/ ; # - le moteur sous wasm/ ; # - les copies du glossaire et des scénarios sous docs/, lues par l'aide de @@ -128,6 +136,8 @@ site: engine-wasm web ## Assemble le site publié dans build/site/ rm -rf $(BUILD_DIR)/site mkdir -p $(BUILD_DIR)/site/wasm $(BUILD_DIR)/site/docs cp -r web/. $(BUILD_DIR)/site/ + mkdir -p $(BUILD_DIR)/site/icons + cp $(addprefix docs/identite/logo/,$(SITE_ICONS)) $(BUILD_DIR)/site/icons/ cp -r $(BUILD_DIR)/web/src $(BUILD_DIR)/site/app cp $(BUILD_DIR)/wasm/engine.mjs $(BUILD_DIR)/wasm/engine.wasm $(BUILD_DIR)/wasm/engine.data \ $(BUILD_DIR)/wasm/positions.json $(BUILD_DIR)/site/wasm/ diff --git a/scripts/make-icons.py b/scripts/make-icons.py deleted file mode 100644 index bd42c57..0000000 --- a/scripts/make-icons.py +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env python3 -# Produit les icônes PNG de l'application (web/icons/icon-192.png et -# icon-512.png) à partir des formes de web/icons/icon.svg : un fond de bois -# et deux pions. Icônes provisoires, en attendant l'identité définitive. -# -# Python seul, sans bibliothèque : chaque pixel est échantillonné 4 × 4 fois -# pour adoucir les bords. À relancer seulement si les formes changent, dans -# la chaîne C (Python 3) : -# docker run --rm --user "$(id -u):$(id -g)" -v "$PWD:/src" -w /src \ -# ustagammon/build-c:2 python3 scripts/make-icons.py -# -# Copyright (C) 2026 les auteurs d'Ustagammon. -# Licence : GPLv3 ou ultérieure (voir LICENSE). - -import struct -import zlib - -BACKGROUND = (0x6B, 0x44, 0x26) -# Pions dessinés dans l'ordre : (centre x, centre y, rayon, remplissage, -# bord), en unités d'une icône de 512 pixels ; bord de 10 unités. -CHECKERS = [ - (300, 300, 120, (0x2B, 0x22, 0x1C), (0x0D, 0x0A, 0x08)), - (212, 212, 120, (0xFB, 0xF6, 0xEA), (0x7D, 0x6A, 0x52)), -] -EDGE = 10 -SAMPLES = 4 - - -def color_at(x, y): - """Couleur d'un point de l'icône, en unités de 512.""" - color = BACKGROUND - for cx, cy, r, fill, edge in CHECKERS: - d2 = (x - cx) ** 2 + (y - cy) ** 2 - if d2 <= (r + EDGE / 2) ** 2: - color = fill if d2 <= (r - EDGE / 2) ** 2 else edge - return color - - -def render(size): - scale = 512 / size - rows = [] - for py in range(size): - row = bytearray([0]) # filtre PNG « aucun » - for px in range(size): - total = [0, 0, 0] - for sy in range(SAMPLES): - for sx in range(SAMPLES): - x = (px + (sx + 0.5) / SAMPLES) * scale - y = (py + (sy + 0.5) / SAMPLES) * scale - for i, c in enumerate(color_at(x, y)): - total[i] += c - row += bytes(round(t / SAMPLES**2) for t in total) - rows.append(bytes(row)) - return b"".join(rows) - - -def png(size, pixels): - def chunk(kind, data): - body = kind + data - return struct.pack(">I", len(data)) + body + struct.pack(">I", zlib.crc32(body)) - - header = struct.pack(">IIBBBBB", size, size, 8, 2, 0, 0, 0) # RVB, 8 bits - return ( - b"\x89PNG\r\n\x1a\n" - + chunk(b"IHDR", header) - + chunk(b"IDAT", zlib.compress(pixels, 9)) - + chunk(b"IEND", b"") - ) - - -for size in (192, 512): - with open(f"web/icons/icon-{size}.png", "wb") as f: - f.write(png(size, render(size))) diff --git a/tests/test_site.sh b/tests/test_site.sh index e394931..ff3b846 100755 --- a/tests/test_site.sh +++ b/tests/test_site.sh @@ -43,8 +43,28 @@ check "app/main.js" "text/javascript" check "app/ui/app.js" "text/javascript" check "app/domain/game/game.js" "text/javascript" check "manifest.webmanifest" "application/manifest\+json" -check "icons/icon-192.png" "image/png" -check "icons/icon-512.png" "image/png" +# Charte graphique (ADR 0010) : icônes et logo copiés de docs/identite/logo/, +# police Alegreya Sans et sa licence. +check "icons/favicon.svg" "image/svg\+xml" +check "icons/favicon-32.png" "image/png" +check "icons/apple-touch-icon-180.png" "image/png" +check "icons/logo-horizontal-couleur.svg" "image/svg\+xml" +check "icons/logo-horizontal-sombre.svg" "image/svg\+xml" +check "icons/symbole-couleur.svg" "image/svg\+xml" +check "icons/symbole-sombre.svg" "image/svg\+xml" +cmp -s <(curl -s "$base/icons/icone-512.png") docs/identite/logo/icone-512.png \ + || report "/icons/icone-512.png diffère de docs/identite/logo/" +for weight in Regular Italic Medium Bold ExtraBold; do + check "fonts/AlegreyaSans-$weight.woff2" "font/woff2" +done +check "fonts/OFL.txt" "text/plain" +# Chaque fichier désigné par la page (icônes, police, style) est servi. +page="$(curl -s "$base/")" +while read -r ref; do + curl -sf -o /dev/null "$base/$ref" || report "index.html : $ref introuvable" +done < <(grep -oE '(href|src|srcset)="[^"]*"' <<<"$page" | sed -E 's/^[a-z]+="(.*)"$/\1/') +grep -qF "url(\"fonts/AlegreyaSans-Regular.woff2\")" <(curl -s "$base/app.css") \ + || report "app.css : police Alegreya Sans non déclarée" check "sw.js" "text/javascript" check "engine-worker.mjs" "text/javascript" check "wasm/engine.mjs" "text/javascript" @@ -65,6 +85,8 @@ cmp -s <(curl -s "$base/docs/glossaire/videau.md") docs/glossaire/videau.md \ # Le manifeste désigne des icônes servies, et l'application à la racine. manifest="$(curl -s "$base/manifest.webmanifest")" grep -q '"start_url": "./"' <<<"$manifest" || report "manifeste : start_url absent" +grep -q '"theme_color": "#4A2E1F"' <<<"$manifest" || report "manifeste : theme_color autre que le noyer" +grep -q '"purpose": "maskable"' <<<"$manifest" || report "manifeste : pas d'icône maskable" while read -r icon; do curl -sf -o /dev/null "$base/$icon" || report "manifeste : icône $icon introuvable" done < <(grep -o '"src": "[^"]*"' <<<"$manifest" | sed 's/"src": "\(.*\)"/\1/') @@ -73,7 +95,7 @@ done < <(grep -o '"src": "[^"]*"' <<<"$manifest" | sed 's/"src": "\(.*\)"/\1/') sw="$(curl -s "$base/sw.js")" grep -qE '^const VERSION = "[0-9a-f]{16}";' <<<"$sw" || report "sw.js : version absente" for file in ./ index.html app/main.js wasm/engine.data wasm/engine.wasm moteur/ \ - docs/glossaire/videau.md version.json; do + docs/glossaire/videau.md version.json fonts/AlegreyaSans-Bold.woff2 icons/favicon.svg; do grep -qF " \"$file\"," <<<"$sw" || report "sw.js : $file absent de la liste à mettre en cache" done listed="$(grep -c '^ "' <<<"$sw")" diff --git a/web/icons/icon-192.png b/web/icons/icon-192.png deleted file mode 100644 index 82f3f1b009da6130ad16fbc531b28984a7807d92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2696 zcmaKuXEfYdAIJY>vdZX$=rbZnkVH4bD5EDbgC$r&h?c<;AzH|YF3RXJjFxy9y#$M3 zNuqZXQNm;pCCVt#GGSMCpS;-T?0H_?d(Zb*?z!il@4e>}Yl1RhWfout0D#rVP}l5q z{r&r3q(7Z!+h`^Lz>GH1)iw{9-XNgecr1mw53F?JW3x50&!^&apN~dJt={Z#^xMH)Qdj)*#k^7{vp9?bWzD6=E z><+HGJoH~`RiTDZg8MgTR8ra7$p;77Hzcb(E-qCnwP~0&%4|K^{=^B2Ku%_l zsdS!%wBR%9qD9`y+oU(l7b^%wTCz;hkFadRp^NeUAs?zW z(g$&`3D7gZtg3xlYNp_X1?~&-T1ZC2tk;GNT8))oK-_jX3xSH)+a{V1sfc2LFjqF5K2NP@63>|KGp+d zSW;DI!K8OLB#>SgJ5LYV(9v+mn3vYQBWj-p9O-znhVGPYIK%)`Y&a7rx%>_EG+YWu z4d5<@#sJPg(0X^vMaO*a>?0QN6;$rBLWlf^*Hpmq#;d4$kDp{brNgK(4}o5Q-6&#Z=O znA9Fgk1?&TGi@_DH|LpT1e`Eu-hCUUtZ`v<@PzW|pm;pr;7dfj)jf?Oi?y?)qu!b{ zz)WC#y7qh?cLfzTdT(;s$FlpSvz!LeE{|rU^i9gzcqX2KoL)dYysq|*vG)NoX!FCz znIOg13dxPF3#50`g@M!QRPgv{5UT31bi|aT;M}Fc`#IpQ!}Zp@>ZqU=dTdmSP0rbs zI5gGxrqe^2Hbt6STRkjr?ZWV}xLT9xMx;eIozF?@wqPbNSzR%oAJRl9Dd13G!pUzi zBc_`3?gdppKJwtg%Q zin`sgV#gz`dntqv%=-0BUi=;cRAOf9Vgm;k%Z4lQ(OsSqO$m+{6<*$nH)Rau0U=CQ12#S^g9By!3!Ue?$q*ADztlU88v zs;!7b8Vw6NIG2ki!V9OzlnXk_wqpn7`s%9V-s;~><1w;gD2w#;xt3Mx+JM{DYL?>) zdG4Ad3Ry6x2`N4jA$R(xx1pj&w%x^QLgU3!f0?`t#i>7Twm==azi48Tl%b7oyGy_? zdHFs#a*D*77jyVzEK8Q}!B6JWlevuCi>7pc({|2<{rau>s?5c64AUkZiNY&{tn=2^ zIUt7Z*rwlnnU#(PYB(1xYXe+M5F!#XUPVDXoJDKnq?hCsfN%up0=QdS>BA zAX@dq|KcNzQv(htN=#l6^s8@xEU@f7w4kkDdjuw1e1%WxMFXDUrcP#Hn~R{7&HdR= z5$*c;Z12uKAvj1XL*+8tOAAIrKW6E>$HoD|^l5+*1>dghKq!BpgT=Jt8@zq5mab7Y zGY-`$sfX%qkY=N#W Sso0$oCSat8(yc_^dGaS?wEO%3 diff --git a/web/icons/icon-512.png b/web/icons/icon-512.png deleted file mode 100644 index febd9a4afc8a37d79d757be6785d32f3d93fab96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8278 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 diff --git a/web/icons/icon.svg b/web/icons/icon.svg deleted file mode 100644 index d4902fc..0000000 --- a/web/icons/icon.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - diff --git a/web/manifest.webmanifest b/web/manifest.webmanifest index 18eb96d..95e0ad3 100644 --- a/web/manifest.webmanifest +++ b/web/manifest.webmanifest @@ -7,12 +7,13 @@ "scope": "./", "display": "standalone", "orientation": "any", - "background_color": "#f7f2e8", - "theme_color": "#6b4426", + "background_color": "#F5EFE5", + "theme_color": "#4A2E1F", "icons": [ - { "src": "icons/icon-192.png", "sizes": "192x192", "type": "image/png" }, - { "src": "icons/icon-512.png", "sizes": "512x512", "type": "image/png" }, - { "src": "icons/icon-512.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" }, - { "src": "icons/icon.svg", "sizes": "any", "type": "image/svg+xml" } + { "src": "icons/icone-192.png", "sizes": "192x192", "type": "image/png", "purpose": "any" }, + { "src": "icons/icone-512.png", "sizes": "512x512", "type": "image/png", "purpose": "any" }, + { "src": "icons/icone-maskable-192.png", "sizes": "192x192", "type": "image/png", "purpose": "maskable" }, + { "src": "icons/icone-maskable-512.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" }, + { "src": "icons/icone.svg", "sizes": "any", "type": "image/svg+xml", "purpose": "any" } ] }