favicons ka2/ka4/ka6 : fallback ICO+PNG+apple-touch (Safari n'affiche pas les favicons SVG → onglet « ? ») — routes /favicon.ico /favicon.png /apple-touch-icon.png par agent + balises HTML
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
15 changed files +22 −1
modified
orchestrator/main.py
+17 −0
@@ -1073,6 +1073,23 @@ def favicon() -> FileResponse: | ||
| 1073 | 1073 | return FileResponse(BASE / "web" / f"favicon-{AGENT}.svg", media_type="image/svg+xml") |
| 1074 | 1074 | |
| 1075 | 1075 | |
| 1076 | +# Safari (macOS/iOS) ne charge pas les favicons SVG → fallback PNG/ICO obligatoire, | |
| 1077 | +# sinon l'onglet affiche un « ? ». ICO multi-tailles + PNG 32 + apple-touch 180. | |
| 1078 | +@app.get("/favicon.ico") | |
| 1079 | +def favicon_ico() -> FileResponse: | |
| 1080 | + return FileResponse(BASE / "web" / f"favicon-{AGENT}.ico", media_type="image/x-icon") | |
| 1081 | + | |
| 1082 | + | |
| 1083 | +@app.get("/favicon.png") | |
| 1084 | +def favicon_png() -> FileResponse: | |
| 1085 | + return FileResponse(BASE / "web" / f"favicon-{AGENT}-32.png", media_type="image/png") | |
| 1086 | + | |
| 1087 | + | |
| 1088 | +@app.get("/apple-touch-icon.png") | |
| 1089 | +def apple_touch() -> FileResponse: | |
| 1090 | + return FileResponse(BASE / "web" / f"apple-touch-{AGENT}.png", media_type="image/png") | |
| 1091 | + | |
| 1092 | + | |
| 1076 | 1093 | @app.get("/og.png") |
| 1077 | 1094 | def og_image() -> FileResponse: |
| 1078 | 1095 | """Bannière de partage (Open Graph) propre à l'agent.""" |
added
orchestrator/web/apple-touch-ka2.png
+0 −0
Binary file not shown.
added
orchestrator/web/apple-touch-ka4.png
+0 −0
Binary file not shown.
added
orchestrator/web/apple-touch-ka6.png
+0 −0
Binary file not shown.
modified
orchestrator/web/commander.html
+2 −0
@@ -19,7 +19,9 @@ | ||
| 19 | 19 | <meta name="twitter:title" content="Commander — ka·__NUM__ guardian"> |
| 20 | 20 | <meta name="twitter:description" content="Donner du travail à l'agent gardien — plafonds de durée et de coût."> |
| 21 | 21 | <meta name="twitter:image" content="https://__DOMAIN__/og.png"> |
| 22 | +<link rel="icon" href="/favicon.ico" sizes="48x48"> | |
| 22 | 23 | <link rel="icon" type="image/svg+xml" href="/favicon.svg"> |
| 24 | +<link rel="icon" type="image/png" sizes="32x32" href="/favicon.png"> | |
| 23 | 25 | <link rel="preconnect" href="https://fonts.googleapis.com"> |
| 24 | 26 | <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> |
| 25 | 27 | <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;700&family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;600;700&display=swap" rel="stylesheet"> |
added
orchestrator/web/favicon-ka2-32.png
+0 −0
Binary file not shown.
added
orchestrator/web/favicon-ka2-64.png
+0 −0
Binary file not shown.
added
orchestrator/web/favicon-ka2.ico
+0 −0
Binary file not shown.
added
orchestrator/web/favicon-ka4-32.png
+0 −0
Binary file not shown.
added
orchestrator/web/favicon-ka4-64.png
+0 −0
Binary file not shown.
added
orchestrator/web/favicon-ka4.ico
+0 −0
Binary file not shown.
added
orchestrator/web/favicon-ka6-32.png
+0 −0
Binary file not shown.
added
orchestrator/web/favicon-ka6-64.png
+0 −0
Binary file not shown.
added
orchestrator/web/favicon-ka6.ico
+0 −0
Binary file not shown.
modified
orchestrator/web/index.html
+3 −1
@@ -19,8 +19,10 @@ | ||
| 19 | 19 | <meta name="twitter:title" content="ka·__NUM__ guardian — __TAGLINE__"> |
| 20 | 20 | <meta name="twitter:description" content="Agent gardien autonome des connecteurs du Groupe KA — public, en direct."> |
| 21 | 21 | <meta name="twitter:image" content="https://__DOMAIN__/og.png"> |
| 22 | +<link rel="icon" href="/favicon.ico" sizes="48x48"> | |
| 22 | 23 | <link rel="icon" type="image/svg+xml" href="/favicon.svg"> |
| 23 | −<link rel="apple-touch-icon" href="/favicon.svg"> | |
| 24 | +<link rel="icon" type="image/png" sizes="32x32" href="/favicon.png"> | |
| 25 | +<link rel="apple-touch-icon" href="/apple-touch-icon.png"> | |
| 24 | 26 | <link rel="preconnect" href="https://fonts.googleapis.com"> |
| 25 | 27 | <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> |
| 26 | 28 | <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;700&family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;600;700&display=swap" rel="stylesheet"> |
| 27 | 29 | |