diff --git a/cmd/jean/resource_windows_amd64.syso b/cmd/jean/resource_windows_amd64.syso index 0ffb3f4..c889c31 100644 Binary files a/cmd/jean/resource_windows_amd64.syso and b/cmd/jean/resource_windows_amd64.syso differ diff --git a/cmd/jean/resource_windows_arm64.syso b/cmd/jean/resource_windows_arm64.syso index dfa093e..edacfa8 100644 Binary files a/cmd/jean/resource_windows_arm64.syso and b/cmd/jean/resource_windows_arm64.syso differ diff --git a/cmd/jean/versioninfo.json b/cmd/jean/versioninfo.json index c5563ae..24a58f0 100644 --- a/cmd/jean/versioninfo.json +++ b/cmd/jean/versioninfo.json @@ -3,13 +3,13 @@ "FileVersion": { "Major": 0, "Minor": 6, - "Patch": 1, + "Patch": 2, "Build": 0 }, "ProductVersion": { "Major": 0, "Minor": 6, - "Patch": 1, + "Patch": 2, "Build": 0 }, "FileFlagsMask": "3f", @@ -25,7 +25,7 @@ "LegalCopyright": "Copyright (c) 2026 AJEAN contributors. MIT License.", "OriginalFilename": "jean.exe", "ProductName": "AJEAN", - "ProductVersion": "0.6.1", + "ProductVersion": "0.6.2", "Comments": "https://github.com/nathaninline/jean — projet open source (MIT)" }, "VarFileInfo": { diff --git a/internal/jean/run.go b/internal/jean/run.go index 307f2b2..422d3dc 100644 --- a/internal/jean/run.go +++ b/internal/jean/run.go @@ -10,7 +10,7 @@ import ( "strings" ) -const Version = "0.6.1" +const Version = "0.6.2" // Main est le vrai main() du binaire (cmd/jean ne fait que l'appeler). func Main() { diff --git a/internal/jean/ui/index.html b/internal/jean/ui/index.html index 759f1c2..a301a92 100644 --- a/internal/jean/ui/index.html +++ b/internal/jean/ui/index.html @@ -24,12 +24,39 @@ :root{color-scheme:light;--font:-apple-system,BlinkMacSystemFont,'Segoe UI',Inter,Helvetica,Arial,sans-serif;--bubble:#f0f0f0;--bg:#ffffff;--panel:#fafafa;--border:#e0e0e2;--text:#0a0a0a;--dim:#6b6b70;--accent:#0a0a0a;--accent-bg:rgba(0,0,0,.05);--ok:#0a0a0a;--warn:#6b6b6b;--err:#c0392b;--mag:#6b6b6b;--code-bg:#f5f5f5;--danger-bg:#fbeae8;--warn-bg:#f2f2f2;--add:#1a7f37;--add-bg:rgba(26,127,55,.10);--del:#cf222e;--del-bg:rgba(207,34,46,.10)} [data-theme="dark"]{color-scheme:dark;--bubble:#232326;--bg:#0b0b0c;--panel:#161618;--border:#33333a;--text:#f2f2f4;--dim:#a0a0a8;--accent:#f5f5f5;--accent-bg:rgba(255,255,255,.07);--ok:#f5f5f5;--warn:#8e8e8e;--err:#f2777a;--mag:#8e8e8e;--code-bg:#000000;--danger-bg:#2e1a19;--warn-bg:#1c1c1c;--add:#4ac26b;--add-bg:rgba(74,194,107,.13);--del:#f85149;--del-bg:rgba(248,81,73,.13)} *{box-sizing:border-box} -body{margin:0;font-family:var(--font);background:var(--bg);color:var(--text);height:100vh;height:100dvh;display:flex;font-size:14px} +/* ⚠️ NE PAS mettre overflow:hidden sur html/body (tenté puis retiré le + 2026-07-28) : en PWA iOS, si le document ne peut plus défiler, WebKit décale + TOUTE la mise en page à l'ouverture du clavier pour montrer le champ actif — + la carte de saisie se retrouve plaquée en haut de l'écran. Le rebond + élastique du document est le prix à payer ; il est cosmétique, le clavier + ne l'est pas. Le défilement du fil reste borné par #chat (overscroll:contain). */ +/* Hauteur de la coque : 100vh, et SURTOUT ni 100dvh ni 100%. + Mesuré sur iPhone en PWA (2026-07-28) : la vue web couvre tout l'écran + (956 pt — le contenu passe bien sous l'horloge), mais la fenêtre de mise en + page ne fait que 894 pt et reste calée en haut. Or 100dvh ET 100% valent tous + deux 894 → il restait une bande morte de 62 pt (= la zone sûre du haut) en bas + de l'écran, sous la carte de saisie. 100vh se réfère au GRAND viewport, celui + qui vaut bien 956 : c'est la seule unité juste ici. + ⚠️ Ne pas y ajouter overflow:hidden : voir plus bas, ça casse le clavier iOS. */ +body{margin:0;font-family:var(--font);background:var(--bg);color:var(--text);height:100vh;overscroll-behavior:none;display:flex;font-size:14px} /* PWA plein écran (viewport-fit=cover) : on décale le contenu des bords pour ne pas passer sous l'encoche / la barre système / l'indicateur d'accueil. Les - env(safe-area-inset-*) valent 0 hors PWA, donc aucun impact ailleurs. */ -body{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)} -.side{width:320px;border-right:1px solid var(--border);padding:16px;overflow-y:auto;flex-shrink:0} + env(safe-area-inset-*) valent 0 hors PWA, donc aucun impact ailleurs. + ⚠️ PAS de padding-bas ici : le composer est posé en bottom:0 DANS le body, donc + une marge basse le décollerait du bord de l'écran et laisserait une bande de + fond visible sous la carte (visible seulement en PWA, où l'inset vaut ~34 px). + L'indicateur d'accueil est esquivé bloc par bloc, en padding INTERNE. */ +body{padding:env(safe-area-inset-top) env(safe-area-inset-right) 0 env(safe-area-inset-left)} +/* Listes déroulantes : la LISTE ouverte n'hérite pas du fond de son . + Plusieurs de nos select sont en background:transparent + color clair (chevron + discret) : en thème sombre, le navigateur peignait donc du texte clair sur le + fond blanc par défaut de la liste — illisible (signalé sur « Cache KV », mais + ça touchait TOUTES les listes déroulantes en sombre). On habille donc les +