Electron 44 + TypeScript, drei Prozesse (haupt / kern als utilityProcess / fenster mit React), Nachrichten-Schema mit Pruef-Funktionen, node:sqlite als einzige Datenbank-Stelle (kern/speicher/db.ts, § 6.7), Prozess-Leine im Haupt (Job Object aus beweise/leine.js — Begruendung fuer den Ort im Dateikopf), MessagePort direkt Fenster<->Kern, Einzelinstanz-Sperre, Kern-Neustart-Wache, strikte CSP im gebauten Fenster. Wächter-Tests nach § 4.3: koffi nur an zwei benannten Orten (R1), kein leerer catch und kein catch-mit-Leerwert (R2/R4), kein HTTP-Server (§ 4.1), node:sqlite nur in db.ts (§ 6.7). Dazu Datenbank- und Schema-Tests: 18/18 gruen, Typpruefung in drei Kontexten. Der W-0-Beweis (npm run smoke, echtes Programm): SMOKE: OK — fenster=geladen kern=pid:13676,node:24.18.1 datenbank=ok leine=gesetzt pong=ok version=5.0.0-w0 Nachgemessen ausserdem: taskkill /F auf den Haupt-Prozess (ohne /T, der Absturz-Fall aus rc10) — der Kern stirbt mit. Bau-Fallen dokumentiert (BAUEN.md): npm 11 blockt Electrons Install-Skript (§ 3.5), plugin-react 6 verlangt Vite 8 (deshalb 5.2), TypeScript bewusst auf 5.9.3 gepinnt statt tsgo 7. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
66 lines
3.3 KiB
Markdown
66 lines
3.3 KiB
Markdown
# 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). |
|
||
|
||
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.
|
||
|
||
## 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 5–7) und
|
||
Vitest 4 (verträgt 6–8), 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`).
|