Netzwerk-Labor
Ein Netzwerk-Simulator zum Spielen: Du bist das Ein-Mann-Systemhaus. Kunden schicken Tickets („Die Kasse druckt nicht mehr"), du löst sie in einem echten Simulator — Geräte verkabeln, IP, VLAN, Routen, ACL, NAT, DHCP, DNS, Firewall. Jedes Paket ist wirklich unterwegs, Frame für Frame, und du siehst, wo und warum es verworfen wird.
Lernspiel für Fachinformatiker Systemintegration (IHK AP1/AP2). Kein Cisco-Produkt. Läuft lokal und offline; nichts wird gesendet.
Gemessener Stand (einzige Zahlenquelle: docs/STAND.md): Fassung 3.1.0 · Baukennung df418002 · Tests 1.384/1.384 grün (0 uebersprungen, 174 Testdateien, 100 headless Module) · Bau 149 Module · src/ 148 Dateien / 43.278 Zeilen · Einzeldatei 4.219.830 B, SHA256 D50ED3A1…461F713 · Inhalte 76 Tickets, 151 Minis, 55 Injektoren, 52 Trainings, 37 Wiki-Seiten, 30 Fertigkeiten · 71 Doku-Seiten · relative Verweise 383 geprueft, 0 tot.

Alle Bilder in diesem README stammen aus dem 3.1.0-Bau — aufgenommen am 01.11.2026 in Edge headless (1440 × 950, Theme hell), danach nur skaliert. Herkunft, Quellpfade und Prüfsummen jeder Aufnahme:
docs/bilder/HERKUNFT.md. Neu bauen mitpython tools/bilder.py(braucht die Aufnahmen unterNachweise/3.1/sicht/doku/).
Sofort spielen
| Weg | Wie | Was du brauchst |
|---|---|---|
| Im Browser | vexx-oss.github.io/NetLab öffnen | nur einen Browser |
| Eine Datei | Netzwerk-Labor.html herunterladen, Doppelklick | nur einen Browser |
| Zum Entpacken | Netzwerk-Labor-3.1.0-Browser.zip: Spiel, die ganze Doku als Ordner doku/, Anleitungen, Lizenztexte | nur einen Browser |
| Windows-Programm | Netzwerk-Labor.exe herunterladen — mit Leiste am Bildschirmrand, Tray-Symbol und globalem Tastenkürzel | Windows 10/11 |
Größe und Prüfsumme der Einzeldatei stehen gemessen im Stand-Block oben und in docs/STAND.md; dieses README wiederholt sie nicht von Hand, damit sie nicht wieder veralten. Alle Wege liefern dieselbe Fassung 3.1.0 (gemessen: LABOR_VERSION in docs/index.html und VERSION in bauen.py).
Die drei Anhänge einer Veröffentlichung. (1)
Netzwerk-Labor-3.1.0-Browser.zip— das Spiel als Einzeldatei, die ganze Doku im Ordnerdoku/, Anleitungen und Lizenztexte; kommt aus dem Linux-Job und ist deshalb ohne.exe(tools/paket.py --ohne-exe). (2)Netzwerk-Labor.html— dieselbe Einzeldatei einzeln, für den stabilen Download-Link. (3)Netzwerk-Labor.exe— das Windows-Programm, gebaut vom Windows-Läufer aus dem Tag; der Job prüft vor dem Anhängen, dass dieProductVersionder.exezum Tag passt (.github/workflows/release.yml). Das Browser-ZIP enthält bewusst keine.exe: der Linux-Job hätte sonst die lokale Datei ausProgramm/mitverpackt (am 09.10.2026 gemessen: sie meldete noch1.2.3).
Zur Windows-
.exe: Sie wird im Release-Ablauf gebaut und an jede Veröffentlichung gehängt (seit 07.10.2026), damit der Download-Link stabil bleibt:https://github.com/Vexx-oss/NetLab/releases/latest/download/Netzwerk-Labor.exe. Ob die aktuelle.exeauf diesem Rechner startet, ist in dieser Sitzung nicht geprüft — im Klon liegt keine.exe(die Binärdateien sind nicht versioniert) und ein Browser stand nicht zur Verfügung. Der frühere Start-Nachweis (1.2.3, 07.10.2026,python tools/q-echt.py) liegt unterNachweise/1.2-Q/— nicht im Repo. Rust-Bauten sind nicht bit-gleich; ein SHA256 gilt deshalb nur für genau den Bau, den er beschreibt.
Zur Android-APK: Im Klon liegt keine
.apk; auch die 2.9.0-Veröffentlichung kam ohne APK (Beleg:docs/CHANGELOG.md, Abschnitt 2.9.0). Ob eine künftige Veröffentlichung eine APK anhängt, ist nicht geprüft — der Release-Ablauf tut es nur, wenn die Keystore-Secrets gesetzt sind. Die APK wird lokal mitpython android/bauen.pygebaut, wenn das Android-SDK vorhanden ist; ob der Bau auf diesem Rechner läuft, ist nicht geprüft.
Netzwerk-Labor.html liegt direkt im Repositorium, damit der Download einen Klick braucht und nicht erst ein Release. Es ist dieselbe Datei, die auf GitHub Pages läuft: beide sind byte-gleich, und zwar über den SHA256 nachgewiesen — python tools/stand.py weist das bei jedem Lauf aus (docs/STAND.md). Ein eigenes Werkzeug dafür gibt es nicht; frühere Texte behaupteten das fälschlich.
Die Einzeldatei ist das ganze Spiel in einer Datei — Schriften eingebettet, kein Nachladen, kein Installieren, kein Internet. Windows, Linux, macOS: alles mit einem Browser. Belegt: 0 Außenverweise (geprüft über <link>, <script src>, <img src> und url() mit python tools/einfach.py --pruefen), Größe und Prüfsumme im Stand-Block.
Warum dieselben Bytes zweimal im Git liegen (
Netzwerk-Labor.htmlim Wurzelverzeichnis unddocs/index.html) — bewusst so, nicht versehentlich:docs/index.htmlist die Datei, die GitHub Pages ausliefert, undNetzwerk-Labor.htmlist der Ein-Klick-Download. Beide entstehen aus demselben Bau (python tools/einfach.py) und müssen byte-gleich sein. Wer eine davon ändert oder löscht, bricht den jeweils anderen Weg.Die Doku wird veröffentlicht. Seit 07.10.2026 liefert
.github/workflows/seite.ymlnicht nurdocs/index.htmlunddocs/bilder/aus, sondern zusätzlich die ganze Doku als HTML-Seiten unter /doku/ — erzeugt vonpython tools/seite.pyaus den Markdown-Dateien und versioniert indocs/doku/. Die Übersicht aller Notizen steht indocs/INHALT.md.
Nachweise/ist nicht im Repo. Bildschirmfoto-Nachweise, Messdateien und die gebauten Programme liegen inNachweise/undProgramm/; diese Ordner sind per.gitignoreausgenommen. Verweise darauf stehen in der Doku deshalb als Text und nicht als Link.
Gegenüber dem Windows-Programm fehlen nur die Fenster-Funktionen: Leiste am Bildschirmrand, Tray-Symbol, immer im Vordergrund, globales Tastenkürzel. Das Spiel sagt das an der passenden Stelle selbst an.
Windows-Programm, falls kein Fenster erscheint:
Integritaet-reparieren.cmddoppelklicken. Der gemessene Grund ist ein Integritätslabel „Niedrig" auf dem Ordner (Überrest einer Werkzeug-Sandbox): die.exeerbt es, läuft als Low-Prozess und darf%LOCALAPPDATA%nicht beschreiben, worauf die WebView2-Laufzeit ihr Profil nicht anlegen kann (failed to create webview,0x800700AA). Details im BefundNachweise/1.2-Start/BEFUND.md— liegt nicht im Repo (Nachweise/ist nicht versioniert).
Die Spielstände von Browser- und Windows-Fassung sind getrennt und werden nicht geteilt: Browser im localStorage, Windows unter %APPDATA%\de.fisi.netzwerklabor\spielstand.json.
Die ersten fünf Minuten
- Postfach öffnen und die erste Kundenmail lesen.
- „Auftrag annehmen" — das Netz erscheint im Labor.
- Ein Gerät anklicken: rechts zeigt der Inspektor Adressen, Ports, VLAN, Routen, ACL, NAT; das IOS-ähnliche Terminal ist ein Knopf im Inspektor-Kopf (seit 1.2 kein eigener Reiter).
- Werkzeuge oben links in der Laborfläche, Kurztaste in Klammern: V auswählen und verschieben · K Kabel verlegen · P Ping-Werkzeug (jeweils von Gerät zu Gerät ziehen). Gerät doppelklicken oder T öffnet sein Terminal.
- Nach einem Ping unten „In Simulation öffnen": das Paket Schritt für Schritt, Schicht für Schicht.
- Zum Schluss „Abnahme anfordern" — der Kunde prüft selbst nach, auch ob du dabei etwas anderes kaputt gemacht hast.
Fehler kosten nichts. Die Hilfeleiter (Checkliste, Werkzeugtipp, Frage vom Senior) ist am Anfang gratis und führt notfalls bis zur vorgeführten Lösung.
![]() Der Einstieg: die Heute-Karte mit dem ersten Auftrag. |
![]() IOS-Konsole: Schnittstellen und VLANs prüfen. |
![]() Der Flugschreiber: Ereignisse mit Grund, Filter, Schritt für Schritt. |
![]() Die Hilfeleiter — Stufe 2 von 6, Senior fragen gratis. |
Weitere Bilder und die Herkunft jeder Aufnahme: docs/bilder/HERKUNFT.md. Die Aufnahmen zeigen die Fassung 3.1.0 (siehe Hinweis oben).
Was drin ist
Simulation auf Frame-Ebene. ARP, Switching mit MAC-Lernen, VLAN und 802.1Q, Router-on-a-Stick, statische Routen, ICMP (Timeout gegen unreachable, TTL), ACL, NAT/PAT, DHCP mit Relay, Reservierung, Lease-Laufzeit und Snooping, DNS, TCP-Handshake, HTTP, Firewall mit Zonen und Port-Weiterleitung, Internet als Kulisse, Broadcast-Sturm. Jede Antwort ist aus Paketen hergeleitet, nichts ist vorgetäuscht.
IOS-ähnliche Konsole. Modi, Kurzformen, ?, Tab-Vervollständigung, do, running/startup-config, write erase. Dazu ein Windows-Terminal (ipconfig, ping, tracert, arp -a, nslookup). Befehle, die nicht belegt sind, werden als solche gekennzeichnet.
Aufträge. Handgeschriebene Tickets in sechs Karrierestufen — Salon, Bäckerei, Schreibbüro, Arztpraxis, Autohaus, Mittelstand — inklusive Projekten; dazu unbegrenzt generierte Tickets aus mehreren Netzvorlagen und Fehlerinjektoren, jede Variante wird automatisch geprüft. Dazu Mini-Tickets für die Leiste. Die genauen Mengen (Tickets, Minis, Injektoren, Trainings, Wiki-Seiten, Fertigkeiten) stehen im Stand-Block oben und in docs/STAND.md — sie werden bei jedem Lauf nachgezählt.
Subnetting und Oberfläche (seit 2.1–2.9). Eine eigene Abteilung Subnetting im Dock: Lehrpfad, Werkzeuge (32-Bit-Labor, Masken-Schieber, Blocklineal, Rechenweg-Assistent, Adressplaner, VLAN-Werkzeug), Lernspiele (Präfix-Blitz, Netz-Sortierer, VLAN-Patcher) und Formelsammlung. Dazu die Erste Stunde (Anruf auf der Heute-Karte führt in den ersten Auftrag), der Auftragsbogen, die Einsatzakte, die Kundenakte, das Simulations-Panel Flugschreiber und die Leiste am Bildschirmrand.
Spielschichten. Hilfeleiter 0–6, Abnahme mit Regressions- und Neustart-Test (nur Gespeichertes überlebt), Sterne, Euro und Ruf, Wartungsverträge, Playbooks, Offline-Bericht, Prüfungstag nach IHK-Notenschlüssel.
Lernen statt Klicken. Können ist die Währung: Wer etwas sicher beherrscht, darf es automatisieren. Wiederholungen kommen im richtigen Abstand zurück (Lernmotor: Leitner-Fächer, 1/3/7/14/30 Tage), Fehler landen im Fehlerheft, Abzeichen belohnen Arbeitsweisen.
![]() Postfach als Datentafel: Auftrag, Kunde, Form, Dauer, Lohn — Symptom aus Kundensicht. |
![]() Lernstand: Kompetenzkarte und Fehlerheft. |
Häufige Fragen und Troubleshooting
| Frage | Kurzantwort |
|---|---|
| Muss ich für das Spiel ins Internet? | Nein. Die Einzeldatei lädt nichts nach (0 Außenverweise, geprüft mit python tools/einfach.py --pruefen). |
| Das Windows-Programm öffnet kein Fenster. | Programm/Integritaet-reparieren.cmd doppelklicken — gemessener Grund ist ein Integritätslabel „Niedrig" (WebView2/%LOCALAPPDATA%). Details im Abschnitt oben. |
| SmartScreen warnt beim Start. | Die .exe ist nicht signiert; „Weitere Informationen" → „Trotzdem ausführen". Erwartbar, kein Fehler. |
| Mein Spielstand fehlt. | Browser (localStorage) und Windows-Programm (%APPDATA%\de.fisi.netzwerklabor\spielstand.json) speichern getrennt und tauschen sich nicht aus. |
| Warum ist keine APK im Release? | Im Klon und in der 2.9.0-Veröffentlichung ist keine APK; sie wird lokal mit python android/bauen.py gebaut (Android-SDK nötig). Ob künftige Veröffentlichungen eine anhängen, ist nicht geprüft; ein Gerätetest ebenfalls nicht geprüft. |
| Läuft es auf Linux und macOS? | Im Browser ja. Die Linux-Pakete sind Stand 1.0; getestet nur in WSLg (kein Tray). macOS ist nicht geprüft. |
| Darf ich es im Unterricht einsetzen? | Ja — PolyForm Noncommercial 1.0.0 erlaubt Spielen, Üben und Unterricht, auch in Schulen. Kein Konto, kein Server, kein Netz nötig. |
| Darf ich es verkaufen? | Nein, nicht ohne gesonderte Erlaubnis. Verbindlich: LICENSE; deutsche Erklärung mit Ausnahmen: LIZENZ.md. |
| Wie baue ich es selbst? | python bauen.py zuerst, dann python tools/einfach.py; Tests mit sh tools/test.sh. Genaue Reihenfolge: docs/Bauen.md. |
| Warum stehen hier keine Testzahlen? | Weil fünf abgeschriebene Zahlenstände genau das Problem waren. Es gibt eine Quelle: den Stand-Block oben und docs/STAND.md. |
sh tools/test.sh bricht mit dirname-Fehler ab. | Git-/usr/bin fehlt im PATH; verlässlich ist & "C:\Program Files\Git\bin\bash.exe" -c 'export PATH=/usr/bin:/bin:$PATH; sh tools/test.sh'. |
kein Node gefunden im Testlauf. | Node 24 installieren oder NODE=/pfad/zu/node setzen; tools/test.sh und tools/stand.py suchen beide Wege. |
Die ausführlichen Antworten (mit Belegstellen, Stand der Prüfung und ausdrücklich dem, was nicht geprüft ist): docs/FAQ.md. Fehler melden: Issue über die Vorlagen in .github/ISSUE_TEMPLATE/; Sicherheitslücken bitte nicht öffentlich, sondern wie in SECURITY.md beschrieben.
Mitmachen: holen, bauen, ziehen
Einmal holen (git ist alles, was du brauchst — Node und Python nur zum Bauen und Testen):
git clone https://github.com/Vexx-oss/NetLab.git
cd NetLab
git switch ausbau-1.2 # der Zweig, in dem gearbeitet wird (und der veröffentlicht wird)
Spielen ohne zu bauen: vexx-oss.github.io/NetLab öffnen, oder die Einzeldatei aus dem Release herunterladen. Beides ist immer der neueste Stand.
Selbst bauen (die Reihenfolge ist wichtig, bauen.py zuerst):
python bauen.py # src/ -> web/index.html
python tools/einfach.py # web/ -> docs/index.html (dieselbe Datei als Netzwerk-Labor.html)
sh tools/test.sh # headless in Node (Zahl: Stand-Block)
python tools/abnahme.py # die ganze Kette in einem Befehl
python tools/stand.py # die gemessenen Zahlen neu erheben (docs/STAND.md + README-Block)
Für die Android-Fassung kommt das Android-SDK dazu (android/bauen.py), für die Windows-Hülle Rust (cargo tauri build, Minuten). Genaueres steht in docs/Bauen.md.
Updates ziehen — je nachdem, was du benutzt:
| Was du hast | Wie du aktualisierst |
|---|---|
| einen Klon | git pull — danach python bauen.py und python tools/einfach.py, wenn du die Seite selbst baust |
| die Browser-Einzeldatei | neue aus dem Release laden — oder einfach die Seite im Netz benutzen, die ist immer aktuell |
| die App auf dem Telefon | eine selbst gebaute .apk (über die alte installieren; der versionCode steigt mit jeder Fassung, deshalb geht das ohne Deinstallieren). Eine APK ist nicht angehängt — siehe Hinweis oben. |
| das Windows-Programm | git pull, dann pwsh -File shell/entwickeln.ps1 (Debug, Sekunden) oder cargo tauri build in shell/src-tauri (Auslieferung) |
Wenn du selbst etwas änderst: arbeite auf ausbau-1.2, halte dich an AGENTS.md (kurz: keine Prozesse nach Namen beenden, kein Push ohne Absprache, nichts behaupten, was nicht gemessen ist) — und am Ende die acht Schritte aus docs/SITZUNGSABSCHLUSS.md durchgehen. Dort steht auch, wie die Fassungsnummer gezogen wird (python tools/fassung-ziehen.py --neu 3.1.0 --setzen) und wie man nachmisst, dass die Veröffentlichung wirklich den neuen Stand liefert.
Ein Beitrag ist willkommen, wenn er spielbar bleibt: nach jedem Schritt muss das Spiel laufen, sh tools/test.sh grün sein und python tools/ethos.py nicht schlechter als der eingefrorene Stand. Ein grüner Test ohne Wirkung im Programm gilt hier ausdrücklich nicht als fertig.
Für Interessierte: wie es gebaut ist
Oberfläche und Logik in schlichtem JavaScript ohne Bundler; die Rust-Hülle ist dünn (Tauri 2, Fenster, Leiste, Tray, Speichern, Autostart). src/ ist in Schichten gelegt — kern · modell · sim · cli · daten · spiel · plattform · ui · stil. sim/ und cli/ laufen headless: kein DOM, keine Uhr, kein Zufall ohne Seed. Das ist die Grundlage dafür, dass die Simulation reproduzierbar getestet werden kann.
Die gemessenen Größen (Anzahl der Bau-Module, Testdateien, src/-Dateien und -Zeilen, Tests) stehen im Stand-Block oben und in docs/STAND.md. Sie werden hier nicht als Prosa wiederholt: eine Quelle, keine fünf Zahlenstände.
python bauen.py # src/ -> web/index.html (Einzeldatei-Bau des Programms)
python tools/einfach.py # web/ -> docs/index.html (DAS Spiel als eine Datei)
sh tools/test.sh # Tests headless in Node
node tools/sim-stand.js # Simulation gegen den versionierten Referenzstand
python tools/klassen.py # Abgleich: Klassen im JS <-> Regeln im CSS
python tools/ethos.py # 12 Minimalismus-Regeln gegen tests/stil-stand.json
python tools/stand.py --pruefen # die Zahlen in Dokument und README gegen die Messung
python tools/starttest.py # startet docs/index.html im echten Browser und misst
python tools/menueprobe.py --lauf # die tiefen Menüebenen in 5 Profilen messen
python tools/paket.py # Auslieferungspaket -> dist/ (Ordner + ZIP, geprüft)
python tools/lernmotor.py # Kopie des Lernmotors gegen die Spielhalle prüfen
python android/bauen.py # Spiel -> Einzeldatei -> APK -> Prüfung
python tools/abnahme.py # die ganze Kette in einem Befehl
python tools/abnahme.py läuft in einem Durchgang durch alles: Tests, Klassen-Abgleich, Simulations-Referenz, Lernmotor (drei Nachweise), beide Bauwege, Einzeldatei, Start im echten Browser, Paketbau und die Gegenprobe am entpackten Paket. Die Ausgabe nennt die Zahl der Prüfungen und das Ergebnis selbst; in dieser Sitzung wurde der Lauf nicht ausgeführt (er startet einen Browser) — der Browseranteil ist nicht geprüft.
tools/test.sh braucht Node. In eingeschränkten Umgebungen verlässlich:
& "C:\Program Files\Git\bin\bash.exe" -c 'export PATH=/usr/bin:/bin:$PATH; sh tools/test.sh'
Die Windows-.exe baut man selbst (Rust und WebView2 nötig, python bauen.py immer zuerst):
cd shell/src-tauri
CARGO_TARGET_DIR=<schneller-Ordner>/target cargo tauri build --no-bundle
Ein Hinweis zum Nachbauen
Seit dem Grundgerüst holten bauen.py, tests/run.js und tools/sim-stand.js den Lernmotor aus ../FISI-Spielhalle/src/lernmotor.js — also von außerhalb dieses Repositoriums. Ein frischer Klon ließ sich damit weder bauen noch testen, und auf GitHub schon gar nicht. Seit dem 05.10.2026 liegt der Stand als fremd/lernmotor.js im Repo, mit Herkunft und Prüfsumme im Kopf. Liegt die Spielhalle daneben, hat sie Vorrang. Drei Werkzeuge weisen das nach:
| Befehl | Was er beweist |
|---|---|
python tools/lernmotor.py | die Kopie entspricht der Quelle Zeile für Zeile (oder meldet die Abweichung) |
python tools/lernmotor-bau.py | der Bau ist mit und ohne Spielhalle byte-gleich |
python tools/lernmotor-rueckfall.py | Tests und Simulationsvergleich laufen auch ohne Spielhalle |
Dokumente
Die Notizen sind Obsidian-Dateien (Wikilinks); als Text sind sie ebenso lesbar. Die veröffentlichte Fassung steht unter vexx-oss.github.io/NetLab/doku/ — dieselben Dateien als durchsuchbare Seiten.
| Datei | Inhalt |
|---|---|
Liesmich.md | Übersicht, Startanleitung und Stand 3.1.0 |
STAND.md | der gemessene Stand — die einzige Zahlenquelle (erzeugt von tools/stand.py) |
FAQ.md | häufige Fragen und Troubleshooting, mit Belegstellen |
INHALT.md | alle Notizen des Projekts auf einer Seite |
Lehrkraft – Erste Stunde.md | Ablauf der ersten Unterrichtsstunde mit dem Klassenraum — inklusive ehrlicher Grenzen |
Schueler – Erste fünf Minuten.md | Kurzblatt für Azubis: öffnen, Auftrag, Klassenraum-Code, Hilfe, Abgabe |
Konzept – Netzwerk-Labor.md | Spezifikation |
Architektur.md | verbindlicher Vertrag zwischen den Bausteinen |
Klassenraum – Umsetzungsreife Spezifikation.md | Vertrag für den Klassenraum (Lehrer/Schüler) — Stufen A+B gebaut, C/D offen; vier Teil-Dokumente im Ordner daneben |
Plan – Ausbau 1.2.md | Phasen, Stand, Messwerte |
Design – Spielspaß 2.0.md | Befunde, zwölf Hebel, Scorecard |
CHANGELOG.md | was sich wann geändert hat |
Bauen.md | Bauen, Testen, Messen, Ausliefern im Detail |
Mitmachen.md | Arbeitsweise und Regeln für Beiträge |
AGENTS.md | Betriebsregeln für Mensch und Modell |
LICENSE | Lizenz (PolyForm Noncommercial 1.0.0) — der verbindliche Text |
LIZENZ.md | dieselbe Lizenz auf Deutsch, mit den Ausnahmen und den Schriftenlizenzen |
Stand
| Zweig / Tag | Inhalt |
|---|---|
ausbau-1.2 ← Standardzweig | Version 3.1.0: Abteilung Subnetting; davor 2.1–2.8 (Inhalte, Frontend-Redesign, Bento, Auftragsbogen, Flugschreiber) und 2.0.0–2.0.5 (2.0-Fundament, Klassenraum Stufen A+B, Output-Runde, Hilfecode, Inhalte) — Einzelheiten im CHANGELOG. Hier spielt die Browser-Fassung. |
master, Tag v1.1 | Version 1.1 |
Tag endversion-1.0 | Rückfallstand 1.0 |
Im Klon liegt keine .exe und keine APK (Programm/ enthält nur Hilfsdateien; die Binärdateien sind nicht versioniert). Die aktuelle .exe baut der Windows-Läufer bei jeder Veröffentlichung aus dem Tag und hängt sie an das Release — stabiler Link: https://github.com/Vexx-oss/NetLab/releases/latest/download/Netzwerk-Labor.exe. Wer die .exe bewusst lokal neu bauen will: python bauen.py, dann cargo build --release --features custom-protocol in shell/src-tauri (siehe docs/Bauen.md).
Klassenraum
Der Klassenraum ist die Lehrkraft-Funktion: Die Lehrkraft sagt einen kurzen Code an, jedes Gerät baut denselben Auftrag selbst — ohne Konto, ohne Server, ohne Netz; danach werden Ergebnis-Codes eingesammelt und als Ampel gezeigt.
Stand (an der Quelle geprüft, 31.10.2026): Die Stufen A und B sind gebaut — der Auftragscode (src/spiel/klassenraum-codec.js, src/spiel/klassenraum.js) und die zwei Ansichten (src/ui/klassenraum.js) sind im Repo und werden von bauen.py mitgebaut. Ohne Bewertung, ohne Server, ohne QR. Offen sind die Stufen C/D (Rust-Server, Live-Betrieb, QR) — beide 3.1, im Produkt nicht gebaut — und die didaktische Einordnung. Verträge und Belege: Klassenraum – Umsetzungsreife Spezifikation.md und docs/Architektur.md § 12 (Datenform § 12.1, API § 12.2, Grenzen § 12.8; Server und QR: § 12.6/§ 12.7 = 3.1).
Anleitungen für den Unterricht: Lehrkraft – Erste Stunde (Ablauf, Codes, Auswertung, ehrliche Grenzen) · Schueler – Erste fünf Minuten (Kurzblatt für Azubis: öffnen, Auftrag, Klassenraum-Code, Hilfe, Abgabe).
Ehrliche Grenzen
- Browser, Android und die Windows-
.exesind in dieser Sitzung nicht geprüft. Ein Browser stand nicht zur Verfügung; die.exeliegt nicht im Klon. Der frühere Start-Nachweis (1.2.3, 07.10.2026,python tools/q-echt.py: erster Auftrag mit echter Maus gelöst, 5 ★, 0 Fehler, keine JS-Fehler) wurde nicht in dieser Sitzung wiederholt; die Belege liegen unterNachweise/(nicht im Repo). - Die
.exeist nicht signiert → SmartScreen-Hinweis beim ersten Start. - Die Linux-Pakete sind Stand 1.0 und enthalten die Neuerungen von 1.1 bis 2.0 nicht.
- Arbeitsspeicher im Leerlauf rund 0,5 GB (WebView2 mit GPU-, Netzwerk- und Renderprozessen); die CPU ist praktisch null. So am 07.10.2026 gemessen.
- Linux wurde nur in WSLg getestet, nicht auf einem echten GNOME/KDE — dort gibt es keinen Tray-Dienst.
- Ob ein Browser
localStoragefür eine per Doppelklick geöffnete Datei (file://) dauerhaft behält, ist nicht gemessen. - Die Lizenz erlaubt kein Geldverdienen. Spielen, Üben und Unterricht — auch in Schulen und Bildungseinrichtungen — sind frei. Verkaufen, kommerzielles Nutzen und Weitergeben unter eigener Flagge sind nicht erlaubt; dafür braucht es eine gesonderte Erlaubnis. Details:
LIZENZ.md, verbindlich:LICENSE(PolyForm Noncommercial 1.0.0). - Der Quelltext ist hier öffentlich einsehbar, die gebaute Fassung ist es nicht. GitHub erlaubt jedem, ein öffentliches Repositorium zu forken — das ist eine Bedingung der Plattform und lässt sich nicht abschalten. Wer eine Fassung **weitergeben oder hosten** will, braucht dafür die Erlaubnis des Urhebers. Wer den Code ganz unter Verschluss halten will, muss das Repositorium auf privat stellen; dann ist allerdings auch nichts mehr einsehbar.
Schriften: Atkinson Hyperlegible, Bricolage Grotesque, JetBrains Mono — SIL Open Font License 1.1, Lizenztexte liegen bei. Inhalte nach bestem Wissen aus den Lernnotizen einer FISI-Umschulung geprüft; im Zweifel gilt euer Unterricht.





