Repository navigation
fix(file-manager): Transferziel mit Hostname und dauerhafter Ziel-Fußzeile (#464) - #538
Merged
Merged
Conversation
…zeile (#464) Picker und Toasts zeigten als Ziel die interne Registry-ID des Hosts (`<node_id>:<pfad>`); zwei Panes mit gleichem Host und Pfad sahen identisch aus. Ein Standardziel lief bei F5/F6 sofort los, ohne dass das Ziel vorher irgendwo stand. - Ziel-Labels lauten jetzt `Host · Verzeichnis` mit dem Anzeigenamen des Hosts (bzw. "lokal"). Tragen zwei Hosts denselben Namen, nennt das Label zusätzlich die Verbindung (Benutzer@Host); zwei Panes im selben Verzeichnis unterscheidet die Pane-Referenz. Der Hostname wird beim Anlegen des Browsers einmal aufgelöst, damit sich ein Descriptor nie unter einem laufenden Transfer ändert. - Jede Dateimanager-Pane zeigt über der F-Leiste dauerhaft "Ziel: Host · Verzeichnis" bzw. "Ziel wählen"; ein Klick öffnet die Zielauswahl. Die Auswahl listet den eigenen Tab zuerst, markiert das aktuelle Ziel und nennt bei F5/F6 die Quelle. - Ein ausdrücklich gewähltes Ziel folgt seiner Pane und gilt für F5/F6 ohne Rückfrage. Ist diese Pane geschlossen oder kein Dateimanager mehr, fragen Fußzeile und F5/F6 neu, statt auf die sichtbare Nachbar-Pane auszuweichen (#spec F3, Zustandskarte "Transfer"). - Registry-Änderungen benachrichtigen die Browser, damit die Fußzeile Verzeichniswechsel und Schließen anderer Panes sofort zeigt. Revalidierung, Konflikt-, Symlink-, Streaming-, Abbruch- und Überschreibschutz bleiben unverändert. Tests für Hostname statt Registry-ID, Namens- und Verzeichniskollisionen, gewähltes Ziel ohne Rückfall und lange Zielpfade in schmalen Panes. PRODUCT §39, TECH §5A, #spec F3, README und die Mockup-Zielwahl ziehen mit.
…l-Fußzeile anpassen Seit #506 heißen die Legendenlayouts `legend-rows-1/2/4`, und eine schmale Pane bricht die F-Leiste gemäß #spec F2 in zwei oder vier Zeilen um. Der native Nachweis suchte weiter `legend-compact`/`legend-full` und wertete jeden Umbruch als Fehler; er wäre im nächsten ci-batch rot geworden. Er nimmt jetzt das tatsächlich gerenderte Layout, prüft Zellen auf Überlappung statt auf eine einzige Zeile und belegt zusätzlich, dass die Ziel-Fußzeile in ihrer Pane über der Legende liegt und das Verzeichnis der anderen Pane nennt.
…ndung, Labels inklusive Quelle Befunde aus dem Codex-Zweitreview: - Hostname und Benutzer@Host wurden nur beim Anlegen der Pane gelesen. Nach einem Retry mit geänderter Registry nannte die Ziel-Anzeige den alten Host. Die Identität wird jetzt bei jedem erfolgreichen Verbindungsaufbau aus der tatsächlich genutzten Konfiguration gesetzt, zusammen mit der neuen Route-Generation, sodass kein offener Transfer-Snapshot den Wechsel überlebt. - Bei OneKey zeigte Benutzer@Host den gespeicherten statt des tatsächlich verwendeten Benutzers. Die Identität nutzt jetzt den aufgelösten Login-Benutzer des Credentials. - Die Unterscheidung gleichnamiger Hosts sah nur die Ziele, nicht die Quelle. Im üblichen Zwei-Pane-Fall lasen sich zwei verschiedene Hosts gleichen Namens mit gleichem Pfad deshalb identisch. Fußzeile, Picker und Quellzeile verwenden jetzt dieselben Labels über alle offenen Dateimanager-Panes.
…Verbindung Codex-Delta-Review: Nach dem Verbindungsaufbau wurde der OneKey-Benutzer für die Ziel-Anzeige erneut aus der Registry gelesen. Ändert sich das Credential während des Aufbaus, lief die Verbindung als der alte Benutzer, die Anzeige nannte aber den neuen. Die SFTP-Verbindung liefert jetzt den beim Login tatsächlich verwendeten Benutzer mit; die Ziel-Identität nutzt genau diesen Snapshot.
… nach #536) Seit #536 heißt der Pane-Kopf eines Dateimanagers `Host · Verzeichnis` mit dem SSH-Host des Registry-Eintrags (der Anzeigename nur ersatzweise), lokal mit dem Label der lokalen Terminal-Pane und `~` für das Home-Verzeichnis. Die Ziel-Labels nutzten noch den Anzeigenamen und "lokal" – Fußzeile und Pane-Kopf hätten dieselbe Pane verschieden benannt. - Ziel-Labels übernehmen jetzt genau das Host-Label des Pane-Kopfs und schreiben ein lokales Home als `~`. - Nach dem Rebase hätte die eigene Host-Variable im Konstruktor die aus #536 überschattet und vor `set_identity_host` verschoben (Compile- Fehler); der Konstruktor nutzt jetzt das Host-Label aus #536 für beide. - Beim (Re-)Connect setzen Ziel-Label und Pane-Kopf den Host aus dem Server-Snapshot der tatsächlichen Verbindung. - Nicht mehr genutzte Schlüssel `fm-label-local` und `fm-label-remote-host` entfernt; der unbekannte Host heißt wie bei Terminal-Panes. - Der native Nachweis prüft die Fußzeile über den eindeutigen Verzeichnisnamen, unabhängig von der `~`-Kürzung.
iret77
force-pushed
the
fix/464-fm-transferziel
branch
from
October 9, 2026 17:02
639ba9e to
4791d6f
Compare
9 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Schließt die drei offenen Punkte aus dem Codebefund in #464 (Kommentar vom 06.10., Stand
9ce5af67c). Geprüft gegen den aktuellenmainund darauf rebased (000dff3e0, nach #536, #537 und #539).Was sich ändert
1. Ziel-Labels nennen den Host, nicht die Registry-ID.
fm_label()baute<node_id>:<pfad>. Jetzt trägt der Pane-Descriptor das Host-Label, das auch der Pane-Kopf seit #536 zeigt: den SSH-Host, ersatzweise den Anzeigenamen, lokal das Label der lokalen Terminal-Pane. Dazu kommt die Verbindung (user@host[:port]) mit dem Benutzer, als der sich die Verbindung tatsächlich anmeldet; bei OneKey ist das der Benutzer aus dem Credential. Beides wird beim Anlegen gesetzt und bei jedem erfolgreichen (Re-)Connect aus dem Server-Snapshot und der Authentifizierung genau dieser Verbindung erneuert, zusammen mit der neuen Route-Generation. So ändert sich ein Descriptor nie unter einem laufenden Transfer. Der Pane-Kopf folgt demselben verbundenen Host.FileManagerRegistry::labels()rendertHost · Verzeichnis(lokal~wie im Pane-Kopf) über alle offenen Dateimanager-Panes, die Quelle eingeschlossen.FsNamespace,resolve_snapshotund die Generation.2. Das Ziel ist vor der Ausführung sichtbar.
Neue Fußzeile über der F-Leiste: „Ziel: Host · Verzeichnis“ bzw. „Ziel wählen“. Sie übernimmt sinngemäß die Fußzeile aus
premium-workspace.html. Ein Klick öffnet die Zielauswahl ohne Operation. Die Auswahl listet den eigenen Tab zuerst („Dieser Tab“ / „Andere Tabs“), markiert das aktuelle Ziel und nennt bei F5/F6 die Quelle.#spec: „Ein stale Ziel stoppt sichtbar statt auf eine andere Pane auszuweichen“.#specVorrang vor dem Demo-Verhalten, deshalb ist die eine Zeile indefaultTransferTargetangeglichen.ctx.notify()auf, und der Browser beobachtet die Registry. So folgt die Fußzeile Verzeichniswechseln und dem Schließen anderer Panes sofort.3. F-Leiste unter 280 px.
Bereits durch #506 (
5059d1125) erledigt: 1, 2 oder 4 Zeilen gleich breiter Zellen mit gemessenen Schwellen (#spec F2, PRODUCT §38). Die frühere AC1-Formulierung „in einer Zeile“ ist damit durch die Spezifikation abgelöst. Der native Nachweistest suchte aber noch die alten IDslegend-compact/legend-fullund wertete jeden Umbruch als Fehler. Er wäre im nächsten ci-batch rot geworden. Eigener Commit: Er nimmt jetzt das gerenderte Layoutlegend-rows-1/2/4, prüft auf Überlappung statt auf eine einzige Zeile und belegt zusätzlich, dass die Ziel-Fußzeile in ihrer Pane über der Legende liegt und das Verzeichnis der anderen Pane nennt.Unverändert: Revalidierung (
resolve_snapshot,transfer_guard_is_current) sowie Konflikt-, Symlink-, Pfad-, Streaming-, Abbruch- und Überschreibschutz.Rebase
Der Rebase auf #536 lief textuell konfliktfrei, war aber semantisch nicht: Die eigene Variable
hostim Konstruktor hätte die aus #536 überschattet und vorset_identity_hostverschoben, also einen Compile-Fehler erzeugt. Behoben in4791d6ff8. Dort sind die Ziel-Labels auch an das Host-Label des Pane-Kopfs angeglichen, damit Fußzeile und Pane-Kopf dieselbe Pane gleich benennen. Die dadurch ungenutzten Schlüsselfm-label-localundfm-label-remote-hostsind entfernt.Specs im selben PR
PRODUCT §39, TECH §5A (+ Testmatrix 37–39),
cockpit-sidebar-connections.html(#spec F3, Zustandskarte „Transfer“),docs/ui/README.md(Zeile Dateimanager) undpremium-workspace.html(eine Zeile, Zielwahl ohne Rückfall). VERSION und Changelog bleiben unverändert, wie in #529 begründet: Das Release setzt beides überscript/set-version.Tests
Neue Tests, die echtes Verhalten prüfen:
fm_registry_tests: gewähltes Ziel gewinnt und fällt nach dem Schließen nicht auf den sichtbaren Nachbarn zurück; Labels nennen Host und Pfad; Hosts mit gleichem Label zeigen die Verbindung, auch im Zwei-Pane-Fall mit der Quelle; gleiche Verzeichnisse bleiben unterscheidbar.browser_integration_tests: gewähltes Ziel folgt der Pane und F5 kopiert ohne Rückfrage dorthin; nach dem Schließen öffnet F5 die Auswahl samt Quelle und kopiert nichts; Labels enthalten keine Registry-ID; zwei gleichnamige Hosts mit gleichem Pfad lesen sich in den Fußzeilen verschieden; ein langer Zielpfad bleibt in seiner Pane.browser_unit_tests: Verbindungsidentität mit dem OneKey-Login-Benutzer und Host-Label wie im Pane-Kopf (In-Memory-Registry).file_pane_body_consumes_remaining_height_above_footeran die zusätzliche Zeile und der native Nachweisfile_manager_layout(siehe oben).Verifikation, ehrlich ausgewiesen
mainläuft. Beides steht im nächsten gebündelten ci-batch aus. Der letzte ci-batch-Lauf 37793832881 (b813a4759) scheiterte schon beim Compile anterminal/view.rs, nicht an diesem PR;5b814cf51aufmainadressiert das, ist aber selbst noch nicht durch einen Lauf belegt. Auch die Tests aus fix(file-manager): F-Tasten immer mit Kurzbeschriftung, Umbruch statt Ausblenden #506 sind daher noch nie gelaufen.rustfmt --checkauf den berührten Dateien,script/check-no-new-cjk,node --checkauf die Mockup-Skripte, eigenes Review und drei Codex-Review-Runden (unten).Review
56650c4d3:c3afe0443behoben:sftp_opsliefert den tatsächlich authentifizierten Benutzer mit der Session.4791d6ff8): keine Befunde. Ownership, Signaturen und entfernte i18n-Schlüssel sind konsistent; Ziel-Label und Pane-Kopf nennen denselben Host, auch lokal und nach Reconnect.