Files
rippy/rippy-windows/BAUEN.md
T
HitonabiandClaude Fable 5.1 3dc6798c79 feat(v5): 5.5.0 — Kern und Oberfläche aufgeteilt, Übersicht und Einstellungen neu, Erst-Einrichtung mit Poster-Kulisse
Commander-Wünsche vom 02.09.2026 vor der Freigabe von 5.4.0 (die deshalb nie
veröffentlicht wurde):

Kern: kern/index.ts ist nur noch Bootstrap und Router; Dienste in
kern/dienste/ (Einstellungen, Werkzeuge, Laufwerke, Erkennung, Vorgänge,
Speicher, Benachrichtigung, Automatik), Kontext in kern/kontext.ts,
Protokoll-Datei in gemeinsam/protokoll.ts, Platz-Rechnung in gemeinsam/platz.ts.

Oberfläche: fenster/App.tsx ist nur noch der Rahmen; bausteine.tsx, dialoge/,
uebersicht/ (LaufwerkKachel, KompressionsKarte, SpeicherKarte, VerlaufKarte),
einstellungen/ (Karten je Funktion, SprachAuswahl), einrichtung/
(ErstEinrichtung, PosterHintergrund).

Neu: Bibliothek weg, dafür Verlauf; Speicher-und-Bilanz-Karte (statfs);
LED-Fußleiste; MakeMKV-Kopf in die Einstellungen; Sprach-Chips mit Dropdown
statt Allgemeinem Preset; Karten Automatik/Benachrichtigung/Allgemein/Update;
Durchsuchen bei Werkzeugen; Arbeitsordner lokal (Encode dort, dann in die
Ablage); Platz-Prüfung vor dem Rip (Dialog und Kern); Automatik mit Countdown;
Serien-Merker über Discs; Rettungs-Abbild mit Nullen nur nach gesehenen
Lesefehlern (kern/rip/rettung.ts, Phase rettet, iso:-Quelle); Warteschlange
pausieren; Discord/Telegram-Benachrichtigung; Protokoll-Datei je Tag;
Fensterlage 80 % mittig, gemerkt; Erst-Einrichtung in acht Schritten vor dem
Poster-Grid.

Beweise: 413 Tests (neu: speicher, benachrichtigung, automatik, rettung,
fensterlage, protokoll, kleinkram-550), drei Typprüfungen, Klick-Beweis mit
29 Schritten inklusive Erst-Einrichtung (zweiter Start mit
RIPPY_START_BEREICH=einrichtung), Bilder beweise/klick/01…09.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-02 17:51:15 +02:00

6.4 KiB
Raw Blame History

Rippy v5 bauen — Anleitung

Gilt für den Ordner rippy-windows/. Grundlage: KONZEPT-WINDOWS.md, die Messungen dazu liegen in beweise/.

Voraussetzungen

Werkzeug Version Anmerkung
Node 24 (LTS) dieselbe Linie wie Electrons eingebautes Node (24.18)
npm 11 kommt mit Node 24
Windows 10 (ab 1809) / 11, x64 zum Entwickeln und für den Smoke-Beweis; Bau/Tests laufen auch auf Linux (CI)

Einrichten — zwei Schritte, nicht einer

npm install
node node_modules/electron/install.js

Die zweite Zeile ist kein Versehen (gemessen 30.08.2026, siehe beweise/README.md und KONZEPT § 3.5): npm 11 blockiert Install-Skripte fremder Pakete. koffi übersteht das, weil es vorgebaute Binärdateien mitbringt — Electron nicht: Sein Install-Skript lädt die eigentliche Programmdatei herunter. Wird es geblockt, liegt nach npm install ein Paket ohne dist/electron.exe da, und nichts startet. Der Nachholer ist auch als npm-Skript hinterlegt: npm run werkzeug:electron.

Die Läufe

Befehl Was er tut
npm run dev Entwicklung: baut, startet Electron, lädt das Fenster vom Vite-Server
npm run build Typprüfung (beide tsconfig) + Bau nach out/
npm test Vitest: Wächter-Tests (§ 4.3), Datenbank, Nachrichten-Schema
npm run smoke Der W-0-Beweis: baut, startet das echte Programm mit --smoke, prüft Fenster + Kern + Datenbank + Leine + Ping/Pong über den MessagePort und endet mit Code 0 (grün) oder 2. RIPPY_SMOKE_BILD=<pfad.png> legt zusätzlich einen Screenshot ab. Läuft nur unter Windows (Electron-Binary + koffi).
npm run klick Der Klick-Beweis (5.4.0): baut, startet das echte Programm mit eigenem Profil (--profil=…, --klick-smoke: ohne Tray, Updater, Toasts), einem nachgebauten Laufwerk (RIPPY_FAKE_LAUFWERK=Q) und nachgebauten Werkzeugen (bau/klick/fake-*.cjs, laufen über kern/werkzeuge/aufruf.ts) — und klickt per Playwright durch Speicher-Karte → Rippen → Dialog → Sprachen → Folgen → Platz-Prüfung → Rip → Warteschlange → Kompression → Arbeitsordner (Roh lokal, Zwischenordner geräumt) → Ablage → Verlauf → Bilanz → Roh-Dateien → Einstellungen (Sprach-Chips, Durchsuchen, Karten Automatik/Benachrichtigung/Allgemein/Update). Seit 5.5.0 mit getrenntem Arbeitsordner und Automatik aus (der Beweis klickt selbst). Bilder in ../beweise/klick/, Code 0 oder 2. Grund: Beide Fehler vom 01.09.2026 waren Verkabelung, die kein Unit-Test sah. Playwright ist reines Bau-Werkzeug (MIT, PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 beim Installieren — Electron braucht keinen Browser-Download).

Der Smoke-Lauf benutzt ein Wegwerf-Profil unter %TEMP%\rippy-smoke — er fasst die echten Einstellungen nicht an.

Was die CI-Ampel prüft (.gitea/workflows/ci.yml)

Die Ampel läuft auf Linux und führt hier npm ci, npm run build und npm test aus. Deshalb gilt für Tests: nichts importieren, was koffi, Win32 oder das Electron-Binary braucht. Die Wächter-Tests LESEN Quelltext nur; die Datenbank-Tests laufen, weil node:sqlite im System-Node genauso vorhanden ist wie in Electrons Node (§ 3.4). Was zwingend Windows braucht (Smoke, später die Laufwerks-Messungen), wird lokal ausgeführt und im SAVEPOINT.md mit Ausgabe belegt.

Das Setup bauen (W-6)

npm run paket

erzeugt dist-setup/RippySetup-<version>.exe (NSIS, pro Benutzer, ohne Adminrechte) plus latest.yml und .blockmapalle drei Dateien gehören zum Release (§ 6.8: latest.yml ist die Update-Auskunft, die .blockmap macht aus dem Voll-Download einen Differenz-Download).

Die win-unpacked-Sperre (30./31.08.2026 gemessen): Nachdem der Paket-Smoke (win-unpacked\Rippy.exe --smoke) gelaufen ist, hält ein Filter-Treiber (Virenscanner/Indexer — KEIN Prozess mit sichtbarem Pfad) resources\app.asar mitunter STUNDENLANG fest. Der nächste Bau in denselben Ordner scheitert dann mit EBUSY … unlink app.asar, und zwar mit Exit-Code 0 (electron-builder!) — nicht vom Log-Ende täuschen lassen, die -Zeile zählt. Ausweg: in ein frisches Verzeichnis bauen (npx electron-builder --win --config electron-builder.yml -c.directories.output=dist-setup-neu), die fertige Setup-EXE nach dist-setup/ KOPIEREN (eine Kopie ist eine neue Datei ohne Sperre) und den gesperrten Ordner löschen, sobald er wieder frei ist.

Vorher einmalig vendor/ befüllen (die MITGELIEFERTEN Werkzeuge, § 9 — liegen nicht im Git, 74 MB):

vendor/handbrake/HandBrakeCLI.exe        (GPL-2 — Lizenztext liegt bei)
vendor/flac/flac.exe + libFLAC.dll       (Xiph — OHNE die DLL endet jeder
                                          Aufruf ohne eine Zeile Ausgabe)

Quelle auf dieser Maschine: %LOCALAPPDATA%\Rippy\tools\ (die rc11- Beschaffung hat sie dort abgelegt); Original-Quellen und Lizenzen stehen in bau/lizenzen/QUELLEN.md.

Release veröffentlichen (Entscheid 6): Die drei Dateien in ein Gitea-Release mit dem festen Tag aktuell hochladen (Dateien dort ERSETZEN) — electron-updater prüft …/releases/download/aktuell/latest.yml. Ob Gitea 1.27 zusätzlich das GitHub-Muster releases/latest/download/… bedient, ist am ersten echten Release zu messen (§ 3.6 ⚠); das feste Tag ist die Rückfallebene.

SmartScreen (Entscheid 5): Die EXE ist unsigniert. Beim ersten Start eines Downloads: „Weitere Informationen → Trotzdem ausführen". Beim Release Größe und SHA-256 mit angeben, damit Bekannte die echte Datei erkennen.

Festgelegte Versionen und warum

  • Electron 44.0.0 — exakt die am 30.08.2026 gemessene Version (KONZEPT § 3.1/§ 3.4). Sprünge nach der Pflege-Regel § 6.8: bei jedem Release prüfen, ob eine neue Linie ansteht.
  • TypeScript 5.9.3, fest gepinnt — bewusst NICHT die neue Go-Implementierung (7.x, „tsgo", seit 2026 latest auf npm): Für die Ampel zählt ein Typprüfer, dessen Verhalten die restliche Werkzeugkette (Vitest 4, electron-vite 5) breit getestet hat. Der Umstieg auf 7.x ist eine bewusste Entscheidung für später, kein Nebeneffekt eines npm update.
  • Vite 7 — der gemeinsame Nenner von electron-vite 5 (verträgt 57) und Vitest 4 (verträgt 68), am 30.08.2026 per npm view ermittelt.
  • koffi ist die einzige Laufzeit-Abhängigkeit (dependencies) — sie wird nicht gebündelt, sondern zur Laufzeit aus node_modules geladen (natives Modul). Alles andere ist Bauzeit (devDependencies).