From a9618e9395c3fdf3d7699e621bd614df59e1ddb1 Mon Sep 17 00:00:00 2001 From: r-zakarya <82443831+r-zakarya@users.noreply.github.com> Date: Thu, 17 Sep 2026 17:33:45 +0100 Subject: [PATCH] fix(apk): URL du depot sur plusieurs lignes, la fin n'etait pas atteignable Co-Authored-By: Claude Opus 5 --- android-client/web/app.html | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/android-client/web/app.html b/android-client/web/app.html index 6415452..044ae7a 100644 --- a/android-client/web/app.html +++ b/android-client/web/app.html @@ -296,7 +296,13 @@ border: 0; border-radius: var(--radius-s); background: rgba(255,255,255,.10); color: var(--text); font: inherit; outline: none; + /* Le body interdit la selection (user-select: none) et les champs en + HERITAIENT : le curseur ne suivait pas le doigt et le texte ne defilait + jamais - la fin d'une URL longue restait hors d'atteinte. */ + -webkit-user-select: text; user-select: text; } + .field-in.multi { height: auto; padding: 12px 44px 12px 14px; resize: none; + line-height: 1.35; word-break: break-all; display: block; } .field-in::placeholder { color: var(--muted); } /* La fleche dit si le panneau est deplie, et de quel bouton il descend. */ .chev { display: inline-block; margin-left: 6px; font-size: 11px; @@ -563,9 +569,13 @@

Repository

- +
×
@@ -1629,23 +1639,8 @@ function openSettings() { // https://git.example.com/OWNER/REPO (ou .../src/branch/main/FICHIER) devient // l'URL de l'API des contenus. Une URL d'API ou d'endpoint PHP passe telle quelle, // et une forme non reconnue aussi - Sync dira alors ce qui ne va pas. -// ENTRER DANS UN CHAMP MET LE CURSEUR A LA FIN. Sous Android, toucher un champ -// plus long que sa largeur pose le curseur sur le caractere touche, et la fin -// d'une URL ou d'un jeton reste hors d'atteinte. Differe : le toucher pose son -// propre curseur APRES l'evenement focus. Un second toucher place le curseur -// ou l'on veut. -document.addEventListener('focusin', function (ev) { - var el = ev.target; - if (!el.classList || !el.classList.contains('field-in')) return; - setTimeout(function () { - var n = el.value.length; - try { el.setSelectionRange(n, n); } catch (e) { return; } - el.scrollLeft = el.scrollWidth; - }, 60); -}); - function normalizeRepoUrl(u) { - u = u.trim(); + u = u.replace(/\s+/g, ''); if (!u || /\/api\/v1\/repos\//i.test(u) || /\.php(\?|$)/i.test(u)) return u; var m = u.match(/^(https?:\/\/[^\/]+)\/([^\/]+)\/([^\/]+?)(?:\.git)?(?:\/src\/branch\/[^\/]+\/(.+?))?\/?$/i); if (!m) return u;