From cffc86e3103fe719df8c45955d23e35dee6fc1ea Mon Sep 17 00:00:00 2001 From: Sucukdeluxe <259325684+Sucukdeluxe@users.noreply.github.com> Date: Tue, 22 Sep 2026 06:18:55 +0200 Subject: [PATCH] Prevent centered search placeholder clipping --- PROJECT_MEMORY.md | 3 ++- renderer/styles.css | 4 +++- tests/startup-renderer.test.js | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/PROJECT_MEMORY.md b/PROJECT_MEMORY.md index eea2fb2..04348c4 100644 --- a/PROJECT_MEMORY.md +++ b/PROJECT_MEMORY.md @@ -6,7 +6,7 @@ Multi-Hoster-Upload ist eine Electron-Desktopanwendung für Windows, die große ## Aktueller Zustand -- Einstellungssuche nach `2.1.49`: Seitenleistenspalte ab 840 px Viewport einheitlich 260 px statt 190–224 px. Vollständiger deutscher und englischer Platzhalter passt bei unveränderter Schriftgröße; unter 840 px bleibt die bestehende einspaltige Darstellung. Electron-Test misst Textbreite gegen nutzbare Eingabebreite bei 1920/1200/1000/840/839/360 px und prüft Überlauf; Screenshot visuell bestätigt. Noch nicht veröffentlicht. +- Einstellungssuche nach `2.1.49`: Seitenleistenspalte ab 840 px Viewport einheitlich 280 px statt 190–224 px. Text zentriert, Lupe rechts; native Suchdekoration und leere Löschfläche ausgeblendet. Vollständiger deutscher und englischer Platzhalter passt bei unveränderter Schriftgröße; unter 840 px bleibt die bestehende einspaltige Darstellung. Electron-Test fordert 24 px Reserve gegenüber der gemessenen Textbreite bei 1920/1200/1000/840/839/360 px und prüft Überlauf; Screenshot visuell bestätigt. Noch nicht veröffentlicht. - Log-Einstellungen nach `2.1.49`: Logpfad und Log-Datei-Modus teilen ein Beschriftungsraster; native Modusauswahl auf 240 px begrenzt, 40 px hoch, Pfeil mit 14 px Innenabstand. Hinweis unter dem Dropdown ohne zusätzliche Einrückung. Ordner-/Öffnen-Buttons bleiben neben dem Pfad; schmale Container wechseln auf gestapelte Felder. IDs, Optionen und Logfunktion unverändert. Electron-Regression mit tatsächlichem Template bei drei Breiten und Screenshotprüfung; noch kein Release. - Automatik-Abstand nach `2.1.49`: zusätzlicher 22-px-Unterabstand der Statuskarte vor dem neuen Formularcontainer entfernt. Abstand zur ersten Abschnittsüberschrift entspricht jetzt dem folgenden Abschnitt: jeweils 28 px. Electron-Regression misst beide Abstände bei 1000/760/360 px direkt am echten Template; gezielter Test und Lint erfolgreich. Entwicklerversion wird automatisch neu gestartet; noch kein Release. - Ordnerüberwachungstest nach `2.1.49`: IPC verwendet gespeicherte Ordnerregeln in einer isolierten FolderMonitor-Instanz statt der möglicherweise unkonfigurierten laufenden Überwachung. Funktioniert bei deaktivierter, aktiver und pausierter Überwachung; kein Watcher-/Timerstart, keine neuen Dateien/Statusereignisse am produktiven Monitor, keine Änderung seiner Generation oder Duplikatreservierungen. Fehlender Pfad, unerreichbarer Ordner und Scanfehler werden über feste, übersetzte Fehlermeldungen angezeigt; unbekannte Fehler bleiben bereinigt. Regressionen für die drei Betriebszustände, parallele Tests, Fehlerfälle und IPC-Verdrahtung ergänzt; Entwicklung automatisch neu gestartet. @@ -97,6 +97,7 @@ npm audit --omit=dev ## Zuletzt verifiziert +- Nachbesserung gegen abgeschnittenes letztes Zeichen: gezielter Electron-Layouttest für beide Sprachen und sechs Breiten sowie Lint erfolgreich. Screenshot mit vollständigem Text geprüft; automatischer Entwicklungsneustart bestätigt. Kein Release. - Einstellungssuche: auf Nutzerwunsch Lupe rechts (12 px Innenabstand), Suchtext mit symmetrischem 32-px-Padding zentriert. Gezielter Electron-Layouttest prüft Zentrierung, Symbolposition und vollständige Platzhalter in beiden Sprachen bei sechs Breiten; Lint erfolgreich, Screenshot visuell geprüft. Automatischer Entwicklungsneustart bestätigt; noch nicht veröffentlicht. - Einstellungssuche: Layout-/Textbreitentest in Deutsch und Englisch bei sechs Viewports sowie Lint erfolgreich. Startup-Datei 25/26 erfolgreich, bestehender Checkbox-Fokustest einmal mit bekanntem Timingfehler; separat unverändert erneut erfolgreich. Automatischer Neustart bestätigt. Kein Release. - Log-Layout: 47 Startup-/Electron- und Logmodus-Tests sowie Lint erfolgreich. Gemeinsame Feldkante, Feldhöhe, Dropdownbreite, Pfeil-Innenabstand, Hinweise und unveränderte Modusoptionen bei 1000/760/360 px geprüft. Entwicklerversion automatisch neu gestartet; nicht veröffentlicht. diff --git a/renderer/styles.css b/renderer/styles.css index 266a12f..75cebd3 100644 --- a/renderer/styles.css +++ b/renderer/styles.css @@ -1016,6 +1016,8 @@ body.col-resizing, body.col-resizing * { cursor: col-resize !important; user-sel line-height: 18px; } #settingsSearchInput::placeholder { color: var(--text-dim); } +#settingsSearchInput::-webkit-search-decoration { display: none; } +#settingsSearchInput:placeholder-shown::-webkit-search-cancel-button { display: none; } #settingsSearchInput:focus { border-color: var(--accent); outline: none; } .settings-navigation { position: relative; @@ -5050,6 +5052,6 @@ input[type="checkbox"] { @media (min-width: 840px) { .settings-layout { - grid-template-columns: 260px minmax(0, 1fr); + grid-template-columns: 280px minmax(0, 1fr); } } diff --git a/tests/startup-renderer.test.js b/tests/startup-renderer.test.js index 919db47..727d538 100644 --- a/tests/startup-renderer.test.js +++ b/tests/startup-renderer.test.js @@ -286,7 +286,7 @@ app.whenReady().then(async()=>{ for(const language of ['de','en']){ await wc.executeJavaScript('document.getElementById("settingsSearchInput").placeholder='+JSON.stringify(translateText('Einstellungen durchsuchen',language))); const searchSize=await wc.executeJavaScript('(() => {const e=document.getElementById("settingsSearchInput"),s=getComputedStyle(e),p=getComputedStyle(e,"::placeholder"),canvas=document.createElement("canvas"),ctx=canvas.getContext("2d");ctx.font=p.font||s.font;return {available:e.clientWidth-parseFloat(s.paddingLeft)-parseFloat(s.paddingRight),text:ctx.measureText(e.placeholder).width,font:parseFloat(s.fontSize),overflow:document.documentElement.scrollWidth>innerWidth};})()'); - assert.ok(searchSize.available>=searchSize.text,JSON.stringify({width,language,searchSize})); + assert.ok(searchSize.available>=searchSize.text+24,JSON.stringify({width,language,searchSize})); assert.ok(searchSize.font>=13); assert.equal(searchSize.overflow,false); const alignment=await wc.executeJavaScript('(() => {const input=document.getElementById("settingsSearchInput"),style=getComputedStyle(input),icon=document.querySelector(".settings-search-icon"),iconStyle=getComputedStyle(icon);return {text:style.textAlign,left:style.paddingLeft,right:style.paddingRight,iconRight:iconStyle.right,iconOnRight:icon.getBoundingClientRect().left>input.getBoundingClientRect().left+input.getBoundingClientRect().width/2};})()');