- Integriertes In-App-Terminal: Neues xterm.js-basiertes SSH-Terminal, das direkt in die App eingebettet ist (über QWebEngineView/QWebChannel, überbrückt mit einem lokalen WebSocket-Server), auswählbar in den Einstellungen neben den vorhandenen externen SSH/PuTTY-Launchern. Unterstützt mehrere gleichzeitige Sitzungen pro Verbindung mit einer Registerkartenleiste, Hintergrundpersistenz beim Wechseln von Bedienfeldern und einer Schaltfläche zum erneuten Verbinden nach der Trennung.
- Nativer SFTP-Browser: Neues Dateibrowserfenster (src/ui/sftp_browser.py), das über die Verbindungskarte erreichbar ist, sobald ein Host gemountet ist – Verzeichnisnavigation, Upload/Download mit Fortschritt, Umbenennen, Löschen und Neuer Ordner, alles wird über dedizierte Worker-Threads vom UI-Thread ausgeführt.
- Pro-Lizenzsystem: Maschinenbasierte Aktivierung (src/pro_manager.py) mit einer offline, HMAC-verifizierten Lizenzprüfung und einem neuen Abschnitt „Pro-Lizenz“ in den Einstellungen. Das kostenlose Kontingent ist auf drei gleichzeitige Sitzungen mit integriertem Terminal begrenzt. Bei Überschreitung wird eine Upgrade-Eingabeaufforderung angezeigt.
- Verbindungsvorlagen und Erkennung doppelter Namen: Das Dialogfeld „Hinzufügen/Bearbeiten“ verfügt über ein Vorlagen-Dropdown-Menü (Speichern/Anwenden/Löschen) und blockiert jetzt doppelte Verbindungs-/Vorlagennamen, indem automatisch eine eindeutige Alternative vorgeschlagen wird.
- Kontextmenü der Verbindungskarte: Klicken Sie mit der rechten Maustaste auf das Menü zum Mounten/Unmounten, öffnen Sie es im Explorer, öffnen Sie den SFTP-Browser und stellen Sie eine Verbindung über OpenSSH/PuTTY/integriertes Terminal her.
- Bestätigungsdialog zum Abmelden: Wählen Sie zwischen angemeldet bleiben, beenden, während die Laufwerke gemountet bleiben, oder beenden und alles aushängen.
- Prüfung der Startvoraussetzungen: Blockiert den Start mit Download-Links, wenn WinFsp und/oder SSHFS-Win nicht installiert sind.
- Einstellungen: Neuer Terminal-Backend-Selektor (SSH/PuTTY/integriertes xterm) und ein Schalter zum Deaktivieren des SSHFS-Attribut-/Verzeichnis-Cachings für Hosts, bei denen veraltete Cache-Daten ein Problem darstellen.
- Neuer Release-Build-Workflow von GitHub Actions und ein nächtliches Versions-/Push-Hilfsskript für den Release-Prozess.
- Die SSH-Schaltfläche der Verbindungskarte öffnet jetzt das integrierte Terminal, wenn dieses Backend in den Einstellungen ausgewählt wird, und greift andernfalls auf den externen Client zurück; „Open Mounted Path“ öffnet jetzt den neuen SFTP-Browser anstelle des Systemdatei-Explorers direkt.
- Neugestaltung der Titelleiste mit einem einheitlichen Erscheinungsbild, passend zum ausgewählten Dunkel/Hell-Thema; Akzentfarbe appweit aktualisiert (#00b4d8 → #0077b6).
- SSHFS-Mounts legen jetzt explizite WinFsp-Attribut-/Verzeichnis-/Volume-Info-Cache-Timeouts fest (die bei deaktiviertem Caching weiter verschärft werden) und das Aufheben der Bereitstellung führt dazu, dass ein hängengebliebener sshfs.exe-Prozess nach einer Kulanzfrist von 10 Sekunden zwangsweise beendet wird.
- Die passwortbasierte SSH_ASKPASS-Härtung (einmaliges IPC-Token anstelle einer Klartext-Umgebungsvariable) gilt jetzt ab Sicherheitsstufe 1, anstatt Stufe 2 zu erfordern, sowohl für den nativen SSH-Launcher als auch für PuTTY.
- „Beenden“ in der Taskleiste durchläuft jetzt denselben Bestätigungsablauf für die Mount-Bereinigung/Abmeldung wie das Hauptfenster, anstatt QApplication.quit() direkt aufzurufen.
- Die Handhabung des rahmenlosen Fenstergrößenänderungscursors funktioniert jetzt ordnungsgemäß, wenn sich die Maus über untergeordneten Widgets und nicht nur über dem Fensterrahmen selbst befindet.
- Build: Ausführbare CLI-Begleitdatei aus build_dual.ps1 entfernt (zukünftig nur GUI-Verteilung); Der PyInstaller-Build entfernt jetzt Symbole und schließt nicht verwendete stdlib-Module (tkinter, unittest, pytest usw.) aus, um die Größe der ausführbaren Datei zu reduzieren.
- getuserby_username wählt nicht mehr sensible Spalten (Passwort-Hash/Salt, verschlüsselter Schlüssel) aus, die es nicht benötigt, wodurch die versehentliche Offenlegung von Anmeldedaten im Speicher reduziert wird.
- Nur-Administrator-Kontovorgänge (Zurücksetzen des Passworts, Löschen von Benutzern, Auflisten von Benutzern) erzwingen jetzt die Autorisierung auf der auth_manager-Ebene, anstatt sich ausschließlich auf das Gating auf UI-Ebene zu verlassen.
- Die Zeitgeber für die Anmeldesperre wurden von monoton auf Wanduhrzeit umgestellt, sodass eine Sperre nicht mehr durch einen Neustart der App umgangen werden kann.
- Der Updater validiert ausführbare Dateipfade/Update-Dateipfade, bevor er sie in sein Selbstersetzungsskript einbettet, und überprüft nun eine SHA-256-Prüfsumme des heruntergeladenen Updates, bevor er es anwendet (fällt auf eine Warnung zurück, wenn die Version keine Prüfsumme bereitstellt).
- Telemetrie-Aktionsparameter werden jetzt vor dem Senden URL-codiert, wodurch ein Randfall der Parameterinjektion in der Abfragezeichenfolge geschlossen wird.
- Terminal- und SFTP-Sitzungen verwenden ablaufende Sitzungstoken zur einmaligen Verwendung, löschen Kennwörter sofort nach der Verwendung aus dem Speicher und binden den lokalen Bridge-Server nur an Loopback; Beide Funktionen verwenden denselben TOFU-Hostschlüssel-Überprüfungs- und Bestätigungsdialog, der an anderer Stelle in der App verwendet wird.
- Das Pro-Lizenzvalidierungsgeheimnis (neoprovalidate.php) ist aus dem Repository ausgeschlossen.
- Beim zweiten App-Start wird das Hauptfenster jetzt korrekt wiederhergestellt/fokussiert, auch wenn es in der Taskleiste ausgeblendet war, anstatt nichts zu tun.
| Datei | Größe |
|---|---|
| NeoSSHWinManager.exe | 204.1 MB |