/* * SSH-Terminal-Baustein: xterm.js <-> /ws/ssh/{host_id}. * * F1 (Umsetzungsauftrag_Sonnet5.md Teil F.3.1): vorher ein Dokument-Singleton * (ein Skript pro Seite, feste Element-IDs). Jetzt eine Klasse * (SshTerminalSession) mit genau einer Instanz pro Sitzung: eigenes, * dynamisch gebautes DOM-Fragment (this.element), connect(), dispose(), * setActive(bool) und ein Statusrueckruf (options.onStatusChange) fuer eine * kuenftige Seitenleiste (Teil F.3: /workspace, noch nicht Teil dieser * Stufe). Die eigenstaendige Seite /terminal/{host_id} (templates/ * terminal.html) ist ab jetzt nur noch ein duenner Rahmen, der GENAU EINE * Instanz erzeugt -- keine zweite Implementierung (F.2, letzter Absatz). * * Vollbild: native Browser-Fullscreen-API auf dem Instanz-Wurzelelement * (Konzept 4.3). * Copy & Paste (Aufgabe #11, KORRIGIERT nach Live-Test 3.9.): * * FEHLERURSACHE der bisherigen Fassung: sie setzte `copyOnSelect: true` in * den Terminal-Optionen. DIESE OPTION EXISTIERT IN XTERM.JS NICHT -- sie ist * eine VS-Code-Einstellung ("terminal.integrated.copyOnSelection"). xterm.js' * OptionsService uebernimmt aus dem Konstruktor-Objekt ausschliesslich * Schluessel, die in seinen Default-Optionen vorkommen, und verwirft alle * uebrigen KOMMENTARLOS -- kein Fehler, keine Warnung, keine Wirkung. * Gegenprobe: `grep -c copyOnSelect static/js/vendor/xterm.js` liefert 0. * "Markieren kopiert" hat damit nie funktioniert; das im Live-Test am 2.9. * beobachtete "Markierung sichtbar, Zwischenablage bleibt leer" war genau * das und NICHT das dort vermutete Benutzergesten-Problem. * * Jetzt drei Wege, keiner davon auf eine Berechtigungsabfrage angewiesen: * 1. Markieren kopiert -- selbst implementiert ueber term.onSelectionChange(). * 2. Strg+Einfg kopiert, Umschalt+Einfg fuegt ein (PuTTY-Konvention, per * attachCustomKeyEventHandler). BEWUSST NICHT Strg+Umschalt+C/V: die * sind in Chrome/Edge fest fuer die Entwicklertools belegt und erreichen * die Seite gar nicht -- die alten Fehlertexte ("Bitte Strg+Umschalt+C * verwenden") liefen dort also ins Leere. Strg+V und Umschalt+Einfg * erzeugen ein natives 'paste'-Ereignis auf xterm.js' verstecktem *