Commit Graph
8 Commits
Author SHA1 Message Date
x3 9ba9ec9640 v0.4.0: Markierung, Datei-Betrachter, Pfeiltasten im Login, skalierendes Bedienmenue
Mehrfachauswahl
- Leertaste markiert/entmarkiert den Eintrag unter dem Cursor und rueckt eine
  Zeile weiter; markierte Eintraege werden fett und gelb dargestellt.
- Strg+A markiert alles bzw. hebt alles auf, Esc leert die Markierung.
- Die Pfadleiste oben zeigt die Anzahl markierter Eintraege je Paneel.
- l/u/d arbeiten auf allen markierten Eintraegen, sonst auf dem Cursor-Eintrag,
  und melden anschliessend Erfolge und Fehler.
- Markierungen werden bei Verzeichniswechsel und nach Transfers verworfen und
  beim Neuaufbau auf tatsaechlich vorhandene Eintraege eingedampft.

Datei-Betrachter
- Enter bzw. v oeffnet Textdateien mit Syntax-Hervorhebung; die Sprache
  bestimmt Pygments anhand des Dateinamens (.txt, .md, .cpp, .py, ...).
- Entfernte Dateien werden dafuer in eine Temporaerdatei geladen und danach
  wieder entfernt. Binaerdateien und Dateien ueber 2 MiB werden abgelehnt.
- Blaettern mit Pfeiltasten/Bild/Pos1/Ende, w schaltet den Umbruch, l die
  Zeilennummern, Esc/q schliesst.
- Enter auf einer Datei setzte vorher remote_path auf die Datei selbst, was
  das anschliessende listdir() scheitern liess.

Verbindungsdialog
- Pfeiltasten wechseln jetzt zwischen den Feldern. Ein eingeklapptes Select
  band up/down auf show_overlay und verschluckte sie; NavSelect gibt sie an
  den Screen weiter, geoeffnet wird mit Enter/Leertaste. Ist das Overlay
  offen, behaelt es seine eigene up/down-Navigation.
- Enter in einem Eingabefeld verbindet, Strg+S speichert das Profil.
- Dialog bei kleinen Terminals scrollbar.

Bedienmenue skaliert
- Pfad- und Statusleiste hatten "height: 1" und wurden am rechten Rand
  abgeschnitten; sie brechen jetzt um (height: auto).
- Der Footer wurde entfernt: seine Tasten reichten bei 78 Zeichen Breite bis
  Spalte 193 und waren zu zwei Dritteln unsichtbar. Die umbrechende
  Statusleiste zeigt die Belegung stattdessen vollstaendig.
- Spaltenbreiten der Dateiliste richten sich nach der Paneelbreite; zuerst
  entfaellt das Datum, dann die Groesse. Vorher ragten die Spalten ueber das
  Paneel hinaus und erzeugten einen horizontalen Scrollbalken.
- Fehlermeldungen stehen in einer eigenen Zeile, die nur bei Inhalt Platz
  belegt. Bisher wurden sie in die Statusleiste geschrieben und dort vom
  naechsten Cursor-Wechsel sofort wieder ueberschrieben.
2026-08-31 17:33:00 +00:00
x3 226108f4dc Up-/Download gefixt: absoluter Remote-Pfad statt "/./datei" (#3)
paramikos getcwd() liefert None, solange kein chdir() erfolgt ist. Der
Rueckfall auf "." landete als remote_path in der App, woraus _join()/_abs()
Pfade wie "/./datei" bauten. Der Server loeste die relativ zum Dateisystem-
Root statt zum Home auf -> "No such file" beim Download, "Permission denied"
beim Upload. Das Listing funktionierte, weil listdir(".") serverseitig
relativ zum Home aufgeloest wird -- daher fiel es erst beim Transfer auf.

- connect()/chdir()/listdir() loesen den Pfad ueber sftp.normalize() auf
- _abs() haengt relative Pfade an das CWD an, statt blind "/" voranzustellen
- _copy_tree(): die beiden mkdir-Zweige waren vertauscht. Beim Download
  wurde backend.mkdir() auf einen lokalen Pfad angewendet (Verzeichnis
  entstand auf dem Server), beim Upload os.makedirs() auf einen entfernten.
  Ordner-Transfers waren dadurch in beide Richtungen defekt.

Verifiziert per End-to-End-Test gegen einen echten sshd/SFTP-Server:
Datei- und rekursiver Ordner-Transfer in beide Richtungen.

Closes #3
2026-08-31 17:19:15 +00:00
x3 db84a6aaf8 v0.3.1: q/Escape beenden wieder, Rename-Crash und ".."-Aktionen gefixt
- Screen-Bindings lösen Actions im Screen-Namespace auf. "quit" traf daher
  ins Leere, weil Screen.action_quit nicht existiert – die Taste wurde still
  verworfen. Bindings auf "app.quit" umgestellt (q im Browser, Escape im
  Verbindungsdialog).
- RenameScreen._ok rief do_rename() auf sich selbst statt auf den darunter
  liegenden BrowserScreen (AttributeError). Reihenfolge korrigiert: erst
  pop_screen(), dann do_rename().
- RenameScreen mit Escape abbrechbar.
- Neuer Helfer _selected_entry() blendet den ".."-Navigationseintrag aus.
  Download, Upload, Löschen und Umbenennen operierten sonst auf "↑ ..".
2026-08-31 17:07:45 +00:00
x3 7a1bf948f1 v0.3.0: Pfeil-/Tab-Navigation gefixt, install/uninstall-Skripte
- FileTable(DataTable): links/rechts fuer Datei-Manager-Navigation umgebunden
  (links = eine Ebene hoch, rechts = Ordner oeffnen); zuvor verschluckte das
  DataTable-Widget die Tasten
- _selected(): liefert jetzt die Klartext-Zeichenkette statt rich.Text-Objekt
  (behob AttributeError beim Oeffnen/Enter)
- action_focus_next(): Tab wechselt zuverlaessig zwischen lokalem und
  entferntem Paneel (statt unzuverlaessigem focus_next)
- install.sh / uninstall.sh: systemweite Installation (PEP-668-konform via
  /opt/ftptui/venv + /usr/local/bin/ftptui)
2026-08-31 15:46:30 +00:00
x3 ed0a943d21 README: Repo-Owner x3 statt admin 2026-08-31 15:06:29 +00:00
x3 94c9a8de9e v0.2.0: Bugfix Screenwechsel, ranger-Thema, Total-Commander-Layout 2026-08-31 15:05:27 +00:00
x3 33827d5598 ftptui: FTP/SFTP TUI-Client für das Terminal 2026-08-31 14:47:24 +00:00
x3 f79d190a47 Initial commit 2026-08-31 14:31:31 +00:00