From e1577a4f477c28fcd50dba7914bf26fc0ebfb090 Mon Sep 17 00:00:00 2001 From: Hitonabi Date: Fri, 28 Aug 2026 12:15:29 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20SAVEPOINT=20v4.0-rc=20=E2=80=94=20Windo?= =?UTF-8?q?ws=20ist=20ein=20echtes=20Programm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Der SAVEPOINT stand seit V2-3 still, waehrend elf Commits dazukamen. Nachgetragen mit den gemessenen Zahlen: 562 gruen, RippySetup.exe 31,7 MB, WebView2 151.0.4129.107, 5 Encoder auf diesem PC. Zwei Dinge stehen bewusst gross drin, weil sie sonst verloren gehen: * Der Dienst, der /api/health mit 200 beantwortete und / mit 404 -- und warum ein %TEMP%-Verzeichnis kein Ort fuer eine Oberflaeche ist. * Der Test, der den PC des Commanders getroffen hat. Ein Test, der Spuren ausserhalb von tmp_path hinterlaesst, ist kein Test, sondern ein Eingriff. Und was NICHT bewiesen ist, steht als solches da: Ein echter Rip unter Windows ist nie gelaufen, die VM haengt elf Commits zurueck. Co-Authored-By: Claude Opus 5 --- SAVEPOINT.md | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 108 insertions(+), 1 deletion(-) diff --git a/SAVEPOINT.md b/SAVEPOINT.md index de7c6c1..bcddcea 100644 --- a/SAVEPOINT.md +++ b/SAVEPOINT.md @@ -1,6 +1,113 @@ # SAVEPOINT — Rippy -## Aktueller Stand: v4.0-beta — V2-0 bis V2-3 stehen, Polling ist weg (28.08.2026) +## Aktueller Stand: v4.0-rc — Windows ist ein echtes Programm (28.08.2026) + +> **Rippy läuft auf Windows ohne Docker, in einem eigenen Fenster, findet und +> aktualisiert seine Werkzeuge selbst — und meldet sich bei Windows an wie +> jedes andere Programm.** + +### ZUSTAND, gemessen + +| | | +|---|---| +| Repo | `c01ef10` auf `main` | +| Tests | **562 grün** + 18 übersprungen (Sitzungsbeginn: 378) | +| `RippySetup.exe` | **31,7 MB**, liegt auf dem Desktop | +| Fenster | WebView2 **151.0.4129.107**, 1280×860, Oberfläche im Bild belegt | +| Werkzeuge auf diesem PC | 5 Encoder gefunden, darunter **AMD VCE** | +| VM (Arcane) | **noch auf `05ab655`** — alles ab `b723fee` ist NICHT deployt | +| Echter Rip auf Windows | **ungeprüft** — das Laufwerk hängt an der VM | + +### Was jetzt geht + + Doppelklick RippySetup.exe -> installiert nach %LOCALAPPDATA%\Rippy + Desktop-Symbol + Startmenue-Eintrag + Eintrag in "Programme und Features" + Autostart (HKCU\...\Run) + Doppelklick Desktop-Symbol -> eigenes Fenster, keine Adresszeile, + kein Browser, kein Konsolenblitzer + Taskmanager -> "Rippy.exe" mit Beschreibung + Programme und Features -> Rippy 2.0.0, Deinstallieren raeumt auf + +### Die Entscheidung dieser Sitzung: WebView2, nicht Electron + +Der Commander fragte: *„Warum nutzen wir für Windows weiterhin einen Browser? +Warum nutzen wir kein Electron oder sowas und machen daraus einen echten +Client."* + +Erste Hälfte: berechtigt, umgesetzt. Zweite Hälfte: abgelehnt, **gemessen**: + +| | Zusatz | Was mitkommt | +|---|---|---| +| pywebview + WebView2 | **2,7 MB** in der EXE | nur die Anbindung | +| Electron | ~150–210 MB | zweites Chromium **und** zweite Laufzeit neben Python | + +Windows 11 liefert die Laufzeit mit. Nachgemessen, was sie rendert: +`Chrome/151.0.0.0 … Edg/151.0.0.0`, fetch ✓, EventSource ✓, CSS Grid ✓. +Dasselbe Chromium wie in Electron — nur ohne es zweimal mitzuschleppen. +Vollständige Begründung: `src/rippy/fenster.py`, `KONZEPT-V2.md` § 10 +Entscheid 4. + +### DER FUND: ein Dienst, der gesund meldete und keine Oberfläche mehr hatte + +Beim Nachsehen im laufenden Betrieb — nicht in einem Test: + + /api/health HTTP 200 + / HTTP 404 im Fenster: {"detail":"Not Found"} + +Der Server war in Ordnung. Sein Entpack-Verzeichnis war es nicht: + + _MEI000074b02 31 Eintraege, 5 Ordner <- der laufende Dienst, kein ui + _MEI000082e82 44 Eintraege, 16 Ordner <- vollstaendig + +Eine PyInstaller-Onefile-EXE liest bei **jeder** Anfrage aus `%TEMP%\_MEIxxxxx`. +Ein Temp-Verzeichnis ist kein Ort für etwas, das eine Woche liegen bleiben +soll — und der Ausfall ist der schlimmstmögliche: Die API antwortet weiter, +der Dienst gilt als gesund, nur die Oberfläche ist weg. + +**Genau davor warnte `ROADMAP.md` beim Bau-Verfahren** („one-dir statt +one-file"). Die Abweichung bleibt, die Lücke ist geschlossen: Der Installer +legt die Oberfläche neben das Programm, `daemon._ui_pfad()` nimmt diese Kopie +zuerst. Zwei Tests halten es fest. Zeigt sich derselbe Ausfall an den +API-Modulen, ist one-dir die richtige Antwort. + +### Der Vorfall, der den PC des Commanders getroffen hat + +Ein Test rief `installieren()` auf. Seit dem Verknüpfungs-Feature legt das +Verknüpfungen auf dem **echten** Desktop an — die kennen kein `tmp_path`. Der +Test überschrieb damit das funktionierende Desktop-Symbol durch eines, das auf +eine 2-KB-Attrappe in `…\Temp\pytest-of-…` zeigte. Windows meldete beim Klick: +*„Diese App kann auf dem PC nicht ausgeführt werden."* + +Aufgeräumt hatte der Test nur Registry und Autostart. **Ein Test, der Spuren +außerhalb von `tmp_path` hinterlässt, ist kein Test, sondern ein Eingriff.** +Jetzt zwei Sicherungen statt einer: `verknuepfen=False` **und** die +Anlege-Funktion ist ersetzt. Dazu ein eigener Wächter-Test. + +### Gebaut in dieser Sitzung (11 Commits) + +- **V2-4 Windows-Treiber** (`b723fee`, `3d7f3b1`, `9d95c95`) — Win32 per + ctypes, an einer echten Disc bewiesen +- **Daemon unter Windows** (`e5254c2`) — `rippyd` ohne Docker +- **RippySetup.exe** (`059183c`) — ein Programm, drei Betriebsarten +- **Werkzeug-Kette** (`288f9ee`, `f4a8d77`) — finden, holen, aktuell halten; + Rippy ist **standalone**, wie der Commander es verlangt hat +- **Verknüpfungen + `--oeffnen`** (`99c0586`) +- **Test-Vorfall behoben** (`069fc46`) +- **Echtes Fenster + UI-Kopie** (`c01ef10`) + +### WAS ALS NÄCHSTES ANSTEHT + +- [ ] **Laufwerk an den PC** — ein echter Rip unter Windows ist noch nie + gelaufen. Alles davor ist bewiesen, das nicht. +- [ ] **Deploy auf Arcane** — die VM steht auf `05ab655`, elf Commits zurück. +- [ ] **V2-5 Docker neu**: ein Image, drei Profile, Host-Mounts. +- [ ] **V2-6 Headless** — zurückgestellt, aber nicht gestrichen + (ausdrücklich: *„soll aber nicht vernachlässigt werden"*). +- [ ] **V2-7**: neue Funktionen inkl. Schlüsselkette in drei Stufen. +- [ ] Offen aus V2-4: `WM_DEVICECHANGE` statt Poll, `SetThreadExecutionState`. + +## Letzter Stand davor: v4.0-beta — V2-0 bis V2-3 stehen, Polling ist weg (28.08.2026) > **Vier Etappen gebaut, alle gruen, alles deployt.** Und ein Vorfall, den es > ohne den Deploy nie gegeben haette — der aber eine echte Altlast aufgedeckt hat.