From 4afacca2fb6092c92d1283359db47a14f9d963ae Mon Sep 17 00:00:00 2001 From: Michael Roll Date: Sat, 12 Sep 2026 12:29:37 +0200 Subject: [PATCH] feat: Type-Ahead-Folge tippen (A-M-Y springt zu Amy Spring) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Buchstaben akkumulieren sich jetzt statt neu zu starten: 'A'+'M'+'Y' findet 'Amy Spring'. Präfix-Treffer haben Vorrang, danach Teiltreffer. Doppelter Buchstabe (AA) springt zum nächsten a-Eintrag wie Explorer. Folge wird verworfen, wenn sie keinen Treffer mehr hat, und nach >1s Pause neu gestartet. Build auf 2026.09.12.r002. --- build-plugin.sh | 2 +- packages/u-navigator-2026.09.12.r002.tgz | Bin 0 -> 41281 bytes server/public/app.js | 45 +++++++++++++++++------ u-navigator.plg | 4 +- 4 files changed, 36 insertions(+), 15 deletions(-) create mode 100644 packages/u-navigator-2026.09.12.r002.tgz diff --git a/build-plugin.sh b/build-plugin.sh index b7d6773..2a6d061 100755 --- a/build-plugin.sh +++ b/build-plugin.sh @@ -5,7 +5,7 @@ set -eu export COPYFILE_DISABLE=1 PLUGIN="u-navigator" -VERSION="2026.09.12.r001" +VERSION="2026.09.12.r002" PKG_DIR="packages" WORK_DIR=".plugin-build" PKG_NAME="${PLUGIN}-${VERSION}.tgz" diff --git a/packages/u-navigator-2026.09.12.r002.tgz b/packages/u-navigator-2026.09.12.r002.tgz new file mode 100644 index 0000000000000000000000000000000000000000..daeb30d9dfd5c67da93a5251645c3004d25a1c2e GIT binary patch literal 41281 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 16) next = key; + const entries = win.data.entries; const selectedIndex = entries.findIndex((entry) => entry.path === win.data.selectedPath); - const startIndex = repeated ? selectedIndex + 1 : Math.max(0, selectedIndex + 1); - const match = findTypeAheadMatch(entries, key, startIndex); - if (!match) return; + const startIndex = Math.max(0, selectedIndex + 1); + const match = findTypeAheadMatch(entries, next, startIndex, repeated); + if (!match) { + // Unvollständiger Pfad ohne Treffer: Auswahl bleibt, Folge wird verworfen + if (sequence) state.typeAhead = { key, sequence: '', windowId: win.id, at: now }; + return; + } event.preventDefault(); - state.typeAhead = { key, windowId: win.id, at: now }; + state.typeAhead = { key, sequence: next, windowId: win.id, at: now }; win.data.selectedPath = match.path; win.data.selectedPaths = [match.path]; win.data.selectionAnchorPath = match.path; @@ -2377,15 +2390,23 @@ function handleTypeAheadKey(event) { updateSelectedRows(); updatePropertiesWindows(); scrollEntryIntoView(win, match.path); - recordDebug('typeahead.match', { key, path: match.path }); + recordDebug('typeahead.match', { sequence: next, path: match.path }); } -function findTypeAheadMatch(entries, key, startIndex) { - for (let offset = 0; offset < entries.length; offset += 1) { - const index = (startIndex + offset) % entries.length; - const entry = entries[index]; - if (entry.name?.toLocaleLowerCase().startsWith(key)) { - return entry; +function findTypeAheadMatch(entries, sequence, startIndex, preferNextOccurrence = false) { + // Erst: Präfix-Treffer ab der aktuellen Position (mit Wraparound). + // Zweit: Teiltreffer (z. B. "amy" findet "Amy Spring"), damit Tippfolgen auch bei + // Präfix-Konkurrenz zum richtigen Eintrag springen. + for (let pass = 0; pass < 2; pass += 1) { + for (let offset = 0; offset < entries.length; offset += 1) { + const index = (startIndex + offset) % entries.length; + const entry = entries[index]; + const name = entry.name?.toLocaleLowerCase(); + if (!name) continue; + const isMatch = pass === 0 + ? name.startsWith(sequence) + : name.includes(sequence) && !(preferNextOccurrence && sequence.length <= 1); + if (isMatch) return entry; } } return null; diff --git a/u-navigator.plg b/u-navigator.plg index dbf2c2d..6b79a19 100644 --- a/u-navigator.plg +++ b/u-navigator.plg @@ -1,7 +1,7 @@ - + @@ -24,7 +24,7 @@ https://git.casaderoll.de/michael/Unraid-Navigator/raw/branch/main/packages/&package; -9cee8533bb7f227236fb9ff4963e2d73 +97ee8d18a7eee6b3b1da1fa7451d5553