Was ist das?
Eine interaktive Webanwendung zur Möblierungs- und Sitzplatzplanung in Architekturplänen. Lade einen Grundriss, kalibriere den Maßstab, platziere Möbel und Gewerke per Drag & Drop. Mehrere Pläne, mehrere Projekte, alles offline im Browser.
In 6 Schritten loslegen
- Welcome-Dialog: „+ Neues Projekt" → Name vergeben → „Leer" wählen (oder ein Beispiel aus
samples/ importieren).
- Toolbar Reihe 1: „+ Plan" → Name vergeben → Bild/Datei wählen (JPG/PNG/PDF/DXF/DWG).
- Bei JPG/PNG/PDF: Bild-Wizard öffnet sich → zwei Punkte auf bekannter Maßlinie klicken → reale Distanz in Metern → Übernehmen. Bei DXF: Maßstab wird automatisch aus der Datei gelesen.
- Linke Sidebar öffnen („MÖBEL"-Tab am linken Rand) → Möbel-Kategorie wählen → Button klicken → Möbel erscheint in der roten Spawn-Zone.
- Möbel mit der Maus an Zielposition ziehen. Klick = +45° drehen. Mehrere markieren mit Strg+Klick oder Rechteck-Auswahl.
- Toolbar: „💾 Speichern" → bleibt im Browser. Backup: „⬇ JSON-Export" als externe Datei.
Was kann das Programm?
- Pläne aus JPG, PNG, PDF, DXF und DWG laden
- Echte Maße (in Metern) durch Kalibrierung
- ~160 Möbel-, Geräte- und Symbol-Typen in 16 Sektionen (inkl. Bar, Außen, Wände, Beleuchtung)
- Mehrere Layer pro Plan (Möbel/Elektro/Heizung/Grundriss/etc.)
- Strecken, Polylinien und Flächen messen
- Wände aus dem Plan automatisch erkennen (Vanilla-JS-Bildverarbeitung)
- Eigene Vorlagen speichern (Einzel-Items oder Gruppen)
- A4-Druck, PNG-Export, selektiver JSON-Export, Standalone-HTML-Export
Hinweis: Datums- und Zahlenangaben werden in allen Sprachen im deutschen Format (TT.MM.JJJJ) angezeigt.
Toolbar-Reihen
Reihe 1 — Pläne: Plan-Tabs (Klick = Wechsel) · „+ Plan" (Neu anlegen) · „⚙ Pläne" (verwalten) · AP-Gesamt-Counter
Reihe 2 — Plan: Zoom-Slider (20–200 %) · ppm-Anzeige · „📏 Kalibrieren" · „📐 Messen" (3 Modi) · „🧱 Grundriss erkennen" · „🗑️ Löschen" · „↺ Reset" (Plan)
Reihe 3 — Output: „🖨️ Drucken / PDF" (Format A4–2A0, Hoch/Quer) · „📷 PNG (Plan)" · „⬇ JSON-Export" (selektiv) · „⬆ JSON-Import" · „📦 App+Projekte" (Standalone-HTML)
Reihe 4 — Projekt: „💾 Speichern" · „📂 Projekte" (umschalten/neu) · aktueller Projekt-Name · „❓ Hilfe"
Reihe 5 — Auswahl (erscheint nur bei Selektion): X ausgewählt · „💾 Als Vorlage" (Gruppen-Template)
Reihe 6 — Layer: Plan-Layer (🖼️) und Möbel-Layer als Pills. Klick aufs Auge togglet Sichtbarkeit, Klick auf den Punkt setzt aktiv, Doppelklick auf den Namen benennt um, X löscht.
Sidebar (linker Rand)
Roter „MÖBEL"-Tab am Bildschirm-Rand. Klick → einklappbares Akkordeon mit ~16 Sektionen (Arbeitsplätze, Möbel, Pflanzen, Küche, Elektrotechnik, Beleuchtung, EDV, Klima, Heizung, Sanitär, Sicherheit, Schilder, Bar & Theke, Wände & Öffnungen, Außen / Terrasse, Frei Definieren). „Arbeitsplätze" oben gepinnt, „Frei Definieren" unten gepinnt, dazwischen alphabetisch. Suche oben filtert live. Zustand der Sektionen + Sidebar-offen wird gespeichert.
Spawn-Zone (rotes Rechteck)
Zeigt, wo neue Möbel platziert werden. Per Drag an der roten Beschriftung verschiebbar. Klicks IN der Zone gehen zu Möbeln darunter durch — die Zone blockiert nichts. Pro Plan wird die letzte Position gespeichert.
Layer-System
Jeder Plan hat eigene Layer. Plan-Layer = Hintergrund-Bild (kann mehrere geben). Möbel-Layer = einzelne Ebenen mit Möbeln/Symbolen. Aktiver Layer = wo neue Möbel landen. Beim Erkennen oder DXF-Import wird automatisch ein Layer „Grundriss" angelegt.
Unterstützte Plan-Formate
| Format | Verarbeitung | Maßstab |
| JPG / PNG | direkt | manuell per 2-Punkt-Wizard |
| PDF | via inline PDF.js → erste Seite (oder Wahl) als PNG | manuell |
| DXF | Vanilla-JS-Parser (LINE/LWPOLYLINE/CIRCLE/ARC); wird auf Canvas gerendert UND als Wand-Items angelegt | automatisch aus $INSUNITS-Header (mm/cm/m/in/ft) |
| DWG | drei Wege zur Wahl: lokaler Service, Online-Konverter, manuell als DXF speichern | nach Konvertierung wie DXF |
Bild-Wizard (für JPG/PNG/PDF)
Nach Upload: großes Modal mit dem Plan und Zoom/Scroll. Zwei Punkte auf einer bekannten Maßlinie anklicken (z.B. Außenwand mit Maßangabe „24,42 m"). Reale Distanz eintragen → Übernehmen. Tipp: lange Strecken für höhere Genauigkeit. Nachträglich änderbar via „📏 Kalibrieren".
DXF-Import — Details
Der eingebaute Parser liest direkte Linien-Entitäten. Die Modell-Bounding-Box wird auf 1800 px Breite skaliert; der so entstehende „Plan-Bild" wird als Plan-Layer gesetzt. Parallel landen alle Linien als wall-line-Items in einem neu angelegten Layer „Grundriss".
- Unterstützt: LINE, LWPOLYLINE, CIRCLE, ARC
- Nicht (vollständig) unterstützt: POLYLINE-VERTEX-Paare (alter Format), SPLINE, HATCH, INSERT (Blocks werden nicht expandiert), TEXT/MTEXT
- Wenn DXF-Header keine Einheit liefert: Maßstab muss manuell kalibriert werden
DWG-Import — Wege
Beim DWG-Upload öffnet sich ein Auswahl-Dialog:
- Lokaler Service: Python-Service auf deinem Rechner ruft ODA File Converter auf. Datenschutzfreundlich, aber Setup nötig. Details im Tab „🗎 DWG-Service".
- Online-Konverter: Direktlinks zu kostenlosen Diensten (CloudConvert, Convertio, Aspose, AnyConv). Datei verlässt deinen Rechner.
- Manuell: In deinem CAD-Programm (AutoCAD, BricsCAD, QCAD, LibreCAD, …) „Speichern unter…" → DXF wählen → diese DXF dann hier hochladen.
Du musst nichts installieren, wenn du Online- oder CAD-Konvertierung nutzt.
Lokaler DWG-Konverter-Service einrichten
Der Service läuft auf 127.0.0.1:8765, nimmt DWG entgegen, ruft den ODA File Converter auf und gibt DXF zurück. Daten bleiben auf deinem Rechner.
🪟 Windows — Anleitung
- Python 3 installieren
- ODA File Converter installieren (kostenlos)
- Service starten — PowerShell oder CMD öffnen, Ordner wechseln:
cd C:\…\gebaeudeplaner\helper
python dwg_converter_service.py
Erfolgs-Output sollte beginnen mit „ODA Pfad: C:\Program Files\ODA\…\ODAFileConverter.exe".
- Fenster offen lassen während du DWG-Dateien importierst.
Falls ODA in nicht-Standard-Pfad: vor dem Start setzen:
set ODA_PATH=C:\Pfad\zu\ODAFileConverter.exe
python dwg_converter_service.py
🐧 Linux — Anleitung
- Python 3 ist meist schon installiert. Prüfen:
python3 --version. Falls nicht: sudo apt install python3 (Debian/Ubuntu) bzw. sudo pacman -S python (Arch/Manjaro).
- ODA File Converter installieren:
- Download: opendesign.com/guestfiles/oda_file_converter (Linux x64 .deb oder .rpm)
- Debian/Ubuntu:
sudo dpkg -i ODAFileConverter_*.deb && sudo apt --fix-broken install
- Arch/Manjaro: aus dem AUR (
yay -S oda-file-converter) oder die .rpm mit alien umpacken
- Fedora/RHEL:
sudo dnf install ./ODAFileConverter_*.rpm
- Qt-Bibliothek nachziehen falls Fehler:
sudo apt install libqt5gui5 bzw. sudo pacman -S qt5-base
- Service starten:
cd ~/…/gebaeudeplaner/helper
python3 dwg_converter_service.py
- Fenster/Terminal offen lassen während Konvertierungen.
🍏 macOS — Anleitung
- Python 3 installieren:
brew install python (mit Homebrew) oder vom python.org-Installer
- ODA File Converter: opendesign.com/guestfiles/oda_file_converter → macOS-Build →
.dmg-Datei öffnen und nach /Applications ziehen
- Im Terminal:
cd ~/…/gebaeudeplaner/helper
python3 dwg_converter_service.py
Test ob alles läuft
Im Browser http://127.0.0.1:8765/ping aufrufen — sollte JSON liefern mit "oda_found": true.
Sicherheits-Hinweis
Service lauscht nur auf 127.0.0.1 (nicht im LAN sichtbar). Theoretisch könnte jede lokal laufende App den Service ansprechen. Wenn nicht in Verwendung: Fenster schließen, Service stoppt mit Strg+C.
Alternativen (kein Setup nötig)
- Online-Konverter — Links direkt im DWG-Upload-Dialog. CloudConvert, Convertio, Aspose, AnyConv. Datei wird zu Drittanbieter hochgeladen.
- CAD-Tool — AutoCAD/BricsCAD/QCAD/LibreCAD: „Speichern unter" → DXF → diese DXF hier hochladen.
📐 Messen — 3 Modi
Toolbar → „📐 Messen". Im Hint-Banner erscheinen drei Pillen:
- Strecke (Standard): 2 Klicks → gerade Linie → Confirm „X,XX m — speichern?"
- Polylinie: beliebig viele Klicks → Doppelklick beendet → Gesamtlänge in m
- Fläche: Polygon-Klicks → Doppelklick schließt → Fläche in m² (Shoelace-Formel)
Bei „OK" werden Annotationen auf den aktiven Layer abgelegt. Sie sind danach normale Items: drehbar, verschiebbar, löschbar, im PNG-Export sichtbar. Esc beendet den Modus.
🧱 Grundriss-Erkennung
Toolbar → „🧱 Grundriss erkennen". Analyse-Pipeline (Vanilla JS):
- Plan-Bild wird auf max 800 px Breite herunterskaliert (Performance)
- Grayscale-Konversion + Adaptive Threshold
- Sobel-Gradient → Edge-Map
- Hough-Transform → Polar-Linien
- Linien-zu-Segmente entlang der Edges + Cluster ähnlicher Linien
Im Review-Dialog:
- Schieberegler: Empfindlichkeit (Threshold) und Min-Linienlänge → „⟳ Neu berechnen"
- Bereichswahl: „🔲 Bereich zeichnen" → Rechteck auf dem Plan ziehen → Erkennung läuft nur darin (Schnittansichten und Schriftblöcke ausblenden)
- Klick auf eine Linie: aktiv (grün) / deaktiviert (grau-gestrichelt)
- Ziel-Layer: bestehender „Grundriss" oder neu anlegen
- Wand-Stärke: in cm einstellbar (Default 12 cm = Trockenbau)
- Beim Übernehmen: Plan-Layer kann optional ausgeblendet werden
Qualität: sehr gut bei CAD-PDF-Exporten, mittel bei gescannten/handgezeichneten Plänen. Für Türen/Fenster (Bogen-Symbole) noch nicht implementiert.
Möbel platzieren
Sidebar → Sektion wählen → Button klicken → Möbel erscheint in Spawn-Zone des aktuellen Plans und im aktiven Layer.
Bei vielen Möbel-Typen öffnet sich erst ein Maß-Dialog mit Quick-Picks (z.B. Unterschrank: 40/50/60/80/100/120 cm Breite). Bei manchen auch Farb-Auswahl.
Mehrfach-Auswahl
- Strg+Klick oder Shift+Klick: Möbel zur Auswahl togglen
- Rechteck-Auswahl: Maus auf leerer Fläche ziehen → Marquee
- Alle markierten zusammen ziehen / drehen / löschen
- Reihe „Auswahl" in der Toolbar zeigt Anzahl + bietet „💾 Als Vorlage"
🎨 Frei Definieren
Sidebar → Sektion „Frei Definieren" → „🎨 Neues freies Objekt…"
Im Dialog:
- Symbol-Picker (27 Vorlagen) oder eigenes Emoji/Text eintippen
- Maße in cm, Farbe, Label
- Checkbox „Als Vorlage speichern" → Name + Ziel-Sektion wählen → das Möbel erscheint dauerhaft in der gewählten Sidebar-Sektion mit ★-Markierung
Vorlagen aus Mehrfach-Auswahl
Mehrere Möbel auswählen → Toolbar „💾 Als Vorlage" → Name eingeben. Die Vorlage erscheint in der Sektion „Eigene Vorlagen". Klick spawnt alle enthaltenen Möbel zusammen in der Spawn-Zone (relative Anordnung bleibt). ✕ am Vorlagen-Button löscht.
Maßstab + Rotation
- Klick auf Möbel = +45° Drehung
- Shift + Mausrad über Möbel = ±5° Fein-Rotation
- Strg + ziehen = Raster-Snap auf 10-cm-Gitter
Stromkreis-Planung — die Idee
Du planst die elektrische Infrastruktur in drei Ebenen:
- Verteiler (Unterverteilung, Sicherungsschrank) — z.B. „UV-EG"
- FI-Schalter (Fehlerstromschutz, üblich 30 mA) — eine Schutzgruppe pro Verteiler
- LS-Schalter (Leitungsschutz, einzelner Stromkreis) — z.B. „B16" (Charakteristik B, 16 A)
Steckdosen werden einem LS zugeordnet. Damit weißt du jederzeit, welche Steckdose an welcher Sicherung hängt und welcher FI sie schützt.
Workflow
- Steckdosen ganz normal auf dem Plan setzen (Sidebar → Elektrotechnik).
- Toolbar Reihe 4: „⚡ Stromkreise" → öffnet den Verteiler-Dialog.
- „+ Verteiler" für jede Unterverteilung anlegen (Name editierbar). Optional „🔗 Item" → mit einem Sicherungsschrank-Item auf dem Plan verknüpfen.
- Pro Verteiler „+ FI" hinzufügen (Auslösestrom in mA setzbar).
- Pro FI „+ LS" hinzufügen — jedes LS ist ein Stromkreis. Charakteristik (B/C/K) und Nennstrom (A) wählen.
- Steckdosen auf dem Plan markieren (Rechteck-Auswahl oder Strg-/Shift-Klick).
- Im Dialog hinter dem Ziel-LS auf „→" klicken — alle markierten Steckdosen werden zugeordnet. (Alternative: Auswahl-Reihe → „→ Stromkreis" für Liste.)
Visualisierung
- Jedem LS wird automatisch eine eindeutige Farbe aus einer Palette zugewiesen.
- Zugeordnete Steckdosen bekommen einen dezenten Farbring (Box-Shadow) in der LS-Farbe.
- Im Dialog: „👁" hinter einem LS lässt seine Steckdosen kurz pulsieren — schnelle Sichtkontrolle.
- Checkbox „⚠ unzugeordnete Steckdosen markieren" im Dialog: ungebundene Steckdosen bekommen ein gelbes ⚠.
Was stromkreisfähig ist
Alle Items mit hinterlegter Stromlast sind einem LS zuweisbar (markieren → „→ Stromkreis"):
- Steckdosen: Schuko (single + double), Außen-Schuko, Wallbox
- Leuchten: komplette Sektion (intern + außen, inkl. LED-Leisten, Lichtbänder, Pendel, Poller, Strahler)
- Küchengeräte: Kühlschrank, Spülmaschine, Herd, Backofen, Mikrowelle, Wasserkocher, Kaffeemaschine, Kaffeestation, Dunstabzug, Warmwasserspeicher
- EDV / AV: Switch, Server-Rack, Beamer, TV 50"/82"/100". WLAN-AP, IP-Kamera und IP-Telefon sind PoE-Verbraucher — siehe Abschnitt „PoE-Auslastung" weiter unten.
- Klima: AC-Decke/Wand/Boden (Innengerät — Außeneinheit ist gemeinsam abgerechnet)
- Heizung/Lüftung: Gas-Kessel, Wärmepumpe-Innen, Lüfter, Hebeanlage
- Sanitär: Handtrockner, Trinkwasserspender
- Sicherheit: Notlicht, Rettungsschilder
- Außen: Pumpe, Brunnenpumpe
Nicht stromkreisfähig (Möbel, passive Schränke, Sensorik mit Batterie, Daten-/EDV-Dosen, Glasfaser, Antenne, HDMI, Schalter, FI/LS-Item) — keine Last, kein Eintrag im Dialog.
Last-Schätzung pro Stromkreis
Im Dialog zeigt jeder LS eine farbige Last-Pille: aktuell W / max W
- Annahme-Beispiele: Schuko 200 W · Wallbox 11 000 W · Herd 7500 W · Spülmaschine 2000 W · Kühlschrank 150 W · Mikrowelle 1500 W · Kaffeestation 1500 W · Switch 250 W (PoE-Budget inkl. APs/Kameras) · Server-Rack 1500 W · AC-Innen 1200–1500 W · Beamer 300 W · TV 50"/82"/100" = 150/250/400 W · Handtrockner 1500 W · LED-Beleuchtung 10–80 W.
- Maximal-Last = Nennstrom × 230 V × 0,6 (60 % Derating laut DIN/VDE-Empfehlung).
- Farbcode: grün <60 % Auslastung, gelb 60–80 %, rot ≥80 %.
- Die Annahmen sind eine grobe Plausibilitätshilfe — die Belastungsberechnung beim Elektriker bleibt maßgeblich.
Export für Elektriker-Übergabe
Im Stromkreis-Dialog oben rechts:
- 📋 Export (.md) — Markdown mit Tabelle aller Stromkreise und Liste unzugeordneter Steckdosen. Lesbar in Mail/Druck.
- 📊 CSV — Excel-DE-kompatibel (Semikolon-Trenner, UTF-8-BOM). Direkt in Excel/LibreOffice importierbar.
Doppelte zählen doppelt
Doppelsteckdosen (socket-double, data-socket-double) zählen bei der Stockwerks- und Stromkreis-Zählung als 2 Dosen. Glasfaser und einfache LAN/Antenne/HDMI zählen als 1.
Tab-Counter
Jeder Plan-Tab zeigt zusätzlich zur AP-Zahl die Elektro-Bilanz:
- 🔌 = Strom-Steckdosen (Doppel = 2)
- 🌐 = Netzwerk-/EDV-Dosen + Glasfaser (Doppel = 2)
- 💡 = Leuchten / Leuchtstellen (jede Leuchte = 1)
PoE-Auslastung pro Switch (v9.34)
Statt pauschal 250 W pro Switch wird die Last dynamisch berechnet:
- Switch-Basisverbrauch: 50 W (Eigenverbrauch ohne PoE)
- + PoE-Verbrauch je Gerät: WLAN-AP 15 W, IP-Kamera 8 W, IP-Telefon 5 W
- PoE-Budget pro Switch: 240 W (typischer 24-Port-PoE+-Switch)
Workflow: PoE-Geräte markieren → Auswahl-Reihe → „→ PoE-Quelle" → Switch wählen. Dialog zeigt aktuelle Auslastung pro Switch (grün/gelb/rot wie bei Stromkreisen). Im Stromkreis-Dialog gibt es eine 📡 PoE-Übersicht am Ende mit allen Switches und ihren Budget-Werten plus Warnung bei verwaisten PoE-Geräten.
Der Stromkreis (LS), an dem der Switch hängt, bekommt die effektive Switch-Last (50 W + PoE-Summe), nicht mehr die alte Pauschale.
Was die Stromkreise nicht tun (bewusst)
- Es gibt keine automatische Lastberechnung. Anzahl Steckdosen pro LS ist sichtbar — die Lastannahme (z.B. „Büro ~ 200 W/Dose") bleibt deine Entscheidung.
- Die physische Verkabelung (Strom-Trassen, Wasser-Trassen, Netzwerk-Trassen, Leerrohre, Regenrinnen) wird im Tab 🔌 Verkabelung & Rohre erklärt.
- Die Stromkreis-Struktur wird mit dem Projekt gespeichert (Standalone: IndexedDB, Server: Datenbank) und in JSON-Exports übernommen.
🔌 Verkabelung & Rohrleitungen — Übersicht
Es gibt fünf Zeichen-Werkzeuge für physische Leitungen — alle in der Akkordeon-Toolbar:
| Werkzeug | Wofür | Wo zu finden |
| ⚡ Stromtrasse | Stromkabel-Verbindung | Elektrotechnik → Verkabelung |
| 🔗 Trasse | Netzwerkkabel | Elektrotechnik → Verkabelung |
| 💧 Wasser-Trasse | Wasserrohr (5 Systeme: KW/WW/ZL/Heizung/Regenwasser) | Elektrotechnik → Verkabelung |
| 🟠 Leerrohr | Elektro-Leerrohr (EN 61386, 16–160 mm) | Elektrotechnik → Verkabelung |
| 🟢 Regenrinne | Dachrinne entlang Dachkante | Außenanlage / Regenwasser |
Plus der ⚡ Stromkreise-Header-Button (logische Zuordnung Verteiler → FI → LS → Steckdose, kein Zeichnen — siehe Tab ⚡ Elektroplanung) und der 💧 Wasserkreise-Header-Button für KW/WW/ZL/Heizung/Regenwasser.
⚡ Stromtrasse — Strom-Kabel verlegen
- Toolbar Akkordeon → Elektrotechnik → Verkabelung → ⚡ Stromtrasse. Cursor wird Crosshair.
- Start-Item klicken — Sicherungsschrank, Steckdose, Doppelsteckdose, Außensteckdose, EV-Charger/Wallbox.
- Waypoints entlang des Kabelwegs anklicken.
- End-Item klicken → fertig. ESC = Abbruch.
Auto-Sync mit Stromkreisen: wenn beide Enden derselben Sicherung (LS) zugeordnet sind, übernimmt die Trasse automatisch die LS-Farbe. Sonst Default-Grau. Hover über die Trasse zeigt Länge in m.
🔗 Netzwerk-Trasse — Datenkabel verlegen
- Akkordeon → Elektrotechnik → Verkabelung → 🔗 Trasse.
- Start-Item: Patchpanel, Switch, Datendose, IP-Kamera, IP-Telefon, WLAN-AP, Antennen- oder Glasfaser-Dose.
- Waypoints klicken → End-Item klicken.
Auto-Color nach Endpunkt-Typ: Blau = Standard-Ethernet, Orange = Glasfaser, Grau = Antennen-Koax. Im Properties-Dialog (Doppelklick auf die Trasse) den Kabeltyp setzen (Cat6a / Cat7 / Glasfaser OM3-OS2 / Antennen-Koax) — taucht in der Materialliste mit Längen-Summe auf.
💧 Wasser-Trasse — Rohrleitung für alle Wasser-Systeme
- Akkordeon → Elektrotechnik → Verkabelung → 💧 Wasser-Trasse zeichnen.
- System-Picker (Prompt):
kw = Kalt-Trinkwasser (blau)
ww = Warm-Trinkwasser (rot)
zl = Zirkulation Warmwasser (grün)
heating-vl = Heizungs-Vorlauf (orange)
heating-rl = Heizungs-Rücklauf (indigo)
rw = Regenwasser/Brauchwasser (erdig-grün)
- Kreis wählen aus der nummerierten Liste. Voraussetzung: Verteiler + Kreis im 💧 Wasserkreise-Dialog vorher anlegen, sonst leere Liste.
- Start-Item klicken — alle wasserführenden Items: Hahn, Spüle, Waschbecken, WC, Dusche, Geschirrspüler, Waschmaschine, Boiler/Speicher, Zisterne, Pumpe, Heizkörper, Heizkreisverteiler, Kaffee-/Trinkwasserstation usw.
- Waypoints klicken → End-Item klicken.
Auto-Color aus dem Kreis, wenn beide Enden zugeordnet sind. Klick auf die Trasse zeigt Tooltip mit Kreis-Name + System. Heizung-VL und -RL als zwei separate Trassen zeichnen (gehören zum gleichen Kreis, aber unterschiedliche Visualisierung).
🟠 Leerrohr — Elektro-Kabelschutzrohr
- Akkordeon → Elektrotechnik → Verkabelung → 🟠 Leerrohr zeichnen.
- Durchmesser-Picker (Prompt):
16 / 20 / 25 / 32 / 40 / 50 / 63 / 75 / 90 / 110 / 125 / 140 / 160 mm (EN 61386).
- Erster Klick:
- Auf Anker-Item (Sicherungsschrank, Patchpanel, Server-Rack, Außensteckdose, EV-Charger, Pumpe, Garagentor, Wechselrichter, Batteriespeicher, Antenne, Außen-Wärmepumpe): magnetisches Snap.
- Auf leerer Fläche: freier Startpunkt (z. B. Wand- oder Decken-Durchbruch).
- Waypoints klicken.
- Letzter Klick:
- Auf Anker-Item: Item-Ende.
- Enter oder Doppelklick auf leerer Fläche: freier Endpunkt (Steigschacht etc.).
- ESC: Abbruch.
Strichstärke skaliert mit Durchmesser, gestrichelte Linie in Orange-Tönen. Materialliste (📐 in Toolbar) zeigt Längen-Summe pro Durchmesser.
🟢 Regenrinne — Dachrinne
- Akkordeon → Außenanlage / Regenwasser → 🟢 Regenrinne zeichnen.
- Durchmesser-Picker:
75 / 100 / 125 / 150 mm (EN 12056).
- Punkte entlang Dachkante klicken — alle Punkte sind frei, keine Item-Anker.
- Enter = fertig. ESC = Abbruch.
Doppelklick auf die Rinne → Properties → Regenwasser-Kreis zuweisen, damit sie in die Bilanz einfließt (Dachfläche, Jahresertrag, Zisternen-Empfehlung). Optional eigene Dachtraufe-Tiefe pro Rinne setzen, sonst Projekt-Default aus den ⚙ Regenwasser-Einstellungen.
Cheat-Sheet — was nehmen wofür?
| Aufgabe | Werkzeug |
| Steckdose ↔ Sicherungsschrank visuell verbinden | ⚡ Stromtrasse |
| Welche Steckdosen hängen an welchem LS | ⚡ Stromkreise-Dialog (Header-Button) |
| Netzwerkkabel Switch ↔ Datendose | 🔗 Trasse |
| Spüle ↔ Boiler ↔ Wasseranschluss | 💧 Wasser-Trasse, System kw oder ww |
| Heizungs-Rohrleitung zum Heizkörper | 💧 Wasser-Trasse, heating-vl + heating-rl (zwei separate Trassen) |
| Regenwasser-Rohr Zisterne → Hauswasserwerk → WC/Garten | 💧 Wasser-Trasse, System rw |
| Leerrohr für Stromkabel-Bündel | 🟠 Leerrohr |
| Dachrinne | 🟢 Regenrinne |
| Fallrohr Rinne → Boden | Punkt-Item + Fallrohr 10×30 UND 💧 Wasser-Trasse (rw) von Rinnen-Ende → Fallrohr → Zisterne |
✏️ Trassen nachträglich bearbeiten (v13.3)
Jede bestehende Trasse/Leerrohr/Rinne lässt sich nachträglich umformen — der passende Layer muss dafür aktiv und sichtbar sein.
- Knickpunkt verschieben: die kleinen Griffe auf der Linie erscheinen bei Auswahl/Hover — mit der Maus (oder Finger) ziehen.
- Rechtsklick (Desktop) bzw. langer Fingertipp (Touch) öffnet ein Kontextmenü:
- auf der Linie (Segment):
+ Knickpunkt einfügen · / Gerade stellen (alle Zwischenpunkte verwerfen) · 🗑 Trasse löschen
- auf einer Ecke (Griff):
⌫ Punkt löschen · / Gerade stellen · 🗑 Trasse löschen — plus die Abrund-Einträge (siehe unten)
- Gilt für alle 5 Werkzeuge (Strom-, Netzwerk-, Wasser-Trasse, Leerrohr, Regenrinne).
〰️ Linienführung: Eckig / Abgerundet / Kurve (v13.5–v13.13)
Doppelklick auf eine Trasse → Feld „Linienführung": Eckig (Standard), Abgerundet oder Kurve. Länge, Anzeige, PNG-Export und Druck rechnen jeweils mit der echten Geometrie.
- Abgerundet — Standard für die ganze Trasse: Feld „Eck-Radius (cm)".
0 = scharf. Gilt für jede Ecke ohne eigenen Wert.
- Abgerundet — pro Ecke (v13.6): Rechtsklick / langer Tipp auf eine Innen-Ecke →
⌬ Ecke abrunden… bzw. Ecke scharf. Per-Ecke-Wert überschreibt den Standard; 0 hält diese Ecke scharf. Endpunkte sind nicht rundbar.
- Kurve (v13.13): weiche Spline durch die Stützpunkte. Bei „Kurve" erscheint ein Glättungs-Regler (0…1). Punkte ziehen/einfügen/löschen wirkt direkt — die Kurve folgt. (Im Kurven-Modus entfällt das Eck-Abrunden.)
Tipps
- Auto-Layer: jede Gewerks-Trasse landet automatisch im eigenen Layer („Strom", „Wasser", „Leerrohre", „Regenwasser"). Im Layer-Dialog einzeln ausblenden für eine fokussierte Druck-Ansicht.
- Properties-Dialog (Doppelklick auf eine Trasse): Farbe überschreiben, Label setzen, Notiz hinzufügen, bei 🟠/🟢 den Durchmesser ändern.
- Waypoint-Handles (kleine Kreise auf der Trasse) erscheinen beim Hover/Auswählen — Drag verschiebt einzelne Knickpunkte nachträglich.
- Bei Item-Verschiebung ziehen Trassen, die das Item als Anker haben, ihre Endpunkte automatisch nach. Anker-Item gelöscht → Anker wird `null`, Trasse bleibt erhalten (Leerrohre/Rinnen); Strom-/Wasser-/Netzwerk-Trassen werden mit gelöscht.
- Print/PDF: im Druck-Dialog gibt es Checkboxen „Wasser-Trassen anzeigen", „Leerrohre anzeigen", „Regenrinnen anzeigen" — pro Gewerk separat ein-/ausblendbar.
Zwei Ansichten — Grundriss + Seitenriss
Die Anwendung hat zwei Modi, umschaltbar in Toolbar Reihe 2 → Ansicht:
- 🗺️ Grundriss (Default): Klassische Top-Down-Sicht auf den Plan.
- 🧱 Wand-Ansicht: Seitenriss — alle wandmontierten Elemente (Steckdosen, Schalter, Leuchten, Detektoren, Schilder, …) werden auf ihrer Montagehöhe dargestellt. Boden und Decke sind als Linien sichtbar, dazwischen Hilfslinien alle 50 cm.
Wozu?
Sanity-Check vor Elektro-Termin: Sind alle Schuko-Dosen wirklich auf 30 cm? Sitzt der Schalter neben der Tür auf 105 cm? Hängt die Pendelleuchte auf 200 cm? Solche Inkonsistenzen sieht man im Seitenriss in einer Sekunde, im Grundriss gar nicht.
Montagehöhe (z_cm)
- Jedes Item hat eine Montagehöhe
z_cm über OK Fertigfußboden.
- Defaults aus der Praxis (DIN 18015 / Erfahrungswerte): Schuko 30 · Schalter 105 · Thermostat 150 · Doppelschuko über Schreibtisch typisch 110 (manuell setzen) · Feuerlöscher 110 · Erste-Hilfe-Kasten 150 · Rauchmelder 270 · Deckenleuchten 270 · Pendel 200–220 · Wandleuchte 180 · Schreibtischlampe 75 · Fenster (Brüstung) 90.
- Doppelklick auf ein Item im Seitenriss → Eingabe „Montagehöhe in cm". Wird im State gespeichert. Default greift, solange du nicht manuell überschreibst.
Raumhöhe
Default 300 cm. Button „📐 Raumhöhe" in der Ansicht-Toolbar (nur im Wand-Modus sichtbar) → Eingabe in cm (200–600). Wird pro Plan gespeichert (`floor.roomHeightCm`).
Wand-Filter (v9.35)
Im Wand-Modus erscheint eine Dropdown-Liste mit allen Wand-Items des Plans. Eine Wand wählen filtert auf Items im Umkreis von 80 cm dieser Wand und projiziert sie auf deren Achse. So bekommt man eine echte „Schnitt-Ansicht" einer einzelnen Wand.
- „— alle Items projiziert —": Default, zeigt alle wandmontierten Items auf globaler X-Achse (wie vorher v9.29)
- Wand X (length · angle): Filter aktiv, nur Items entlang dieser Wand werden gezeigt
Was die Wand-Ansicht nicht ist
- Kein 3D: es ist ein 2D-Seitenriss — Items sind nicht räumlich, sondern in ihrer Höhe markiert.
- PNG-Export verwendet derzeit immer den Grundriss-Modus. Wand-Ansicht kann gedruckt werden (siehe Print-Optionen).
Maus & Tastatur
| Aktion | Wirkung |
| Möbel ziehen | Verschieben (bei Multi-Select: alle zusammen) |
| Möbel klicken | +45° drehen (bei Multi-Select: alle zusammen) |
| Shift + Mausrad über Möbel | Fein-Rotation ±5° |
| Strg + ziehen | Raster-Snap (10-cm-Gitter) |
| Strg/Cmd + Klick | Möbel zur Auswahl togglen |
| Shift + Klick | Additiv zur Auswahl |
| Maus auf leerer Fläche ziehen | Rechteck-Auswahl (Marquee) |
| Esc | Auswahl aufheben / Modus beenden / Dialog schließen |
| Entf / Backspace | Markierte Möbel löschen (Confirm) |
| Doppelklick (im Mess-Modus) | Polylinie/Fläche abschließen |
Standalone vs. Server
Die App existiert in zwei Varianten aus derselben Codebasis:
| Standalone | Server |
| Speicherung | IndexedDB im Browser | SQLite auf dem Server |
| Login | — | User + Passwort (Session-Cookie) |
| Multi-User | — | Owner / Editor / Viewer pro Projekt |
| Offline | ✓ | — |
| Geräte-übergreifend | JSON-Export/Import | automatisch |
| Konflikt-Handling | — | Optimistic-Lock, Konflikt-Dialog |
Server aufsetzen (Linux, kurz)
cd backend/
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python3 ../scripts/build_html.py --mode server
python3 setup_admin.py
uvicorn main:app --host 127.0.0.1 --port 8000
Produktiv-Setup mit systemd, Caddy/nginx-Proxy, Backup-Cron:
siehe backend/README.md im Repo.
Vorlagen: backend/gebaeudeplaner.service.template,
backend/Caddyfile.template.
Sharing (nur Server-Modus)
Im Projekt-Switcher („📂 Projekte") hat jedes Projekt, dessen Owner du bist,
einen 🤝-Knopf. Klick öffnet den Sharing-Dialog:
- Aktuelle Freigaben mit Rolle (Viewer/Editor) — Rolle per Dropdown ändern, ✕ zum Entfernen
- User hinzufügen: aus Dropdown wählen, Rolle setzen, „+ Hinzufügen"
Geteilte Projekte tauchen beim Empfänger automatisch in seiner Projekt-Liste auf — mit Markierung „geteilt von <owner>".
Welche Variante läuft hier gerade?
— wird beim Öffnen befüllt —
Setup: pro Firma eine Instanz
Pro Firma läuft ein eigener Server (FastAPI + SQLite). Auf dieser Instanz arbeiten beliebig viele Benutzer (interne Kollegen, externe Partner wie Architekten / Elektriker / Bauleiter) auf mehreren Bauprojekten parallel.
👤 Header-User-Area (v9.67+, v10.5 Benutzer-Menü)
Oben rechts in der roten Header-Zeile (sichtbar nach Login):
- 🐞 Feedback — Bug oder Feature-Wunsch melden: Art (Bug/Feature) + Betreff + Beschreibung, bis zu 3 Screenshots (Datei oder Strg+V), optional Server-Logs. Geht per Mail an die im Admin-Panel hinterlegte Adresse und — falls konfiguriert — als GitLab-Issue (mit eingebettetem Bild + Label).
- ❓ Hilfe — diese Hilfe
- ⚙ Admin — Benutzer-Verwaltung (nur sichtbar bei Rolle
admin)
- 👤 Username · Rolle ▾ — Klick öffnet das Benutzer-Menü (v10.5):
- 👤 Mein Konto — E-Mail-Adresse und Passwort ändern
- 🔐 Zwei-Faktor (2FA) — TOTP / WebAuthn einrichten
- 🔗 Freigaben — Projekt-Freigabe für das aktuell geöffnete Projekt
- 📬 Benachrichtigungen — Inbox (Freigaben, Rollen-Änderungen, Konflikte); ein gelber Punkt am Chip zeigt Ungelesenes
- 🌐 Links — aktive Public-Links instanzweit (nur Admin)
- 📋 Aktivitätsprotokoll — Audit-Log: wer hat was wann geändert
- ⏻ Abmelden
⚙ Admin-Panel (v9.37+, v9.67 Header-Integration + PWPush, v9.68 SMTP-Settings, v9.69 Welcome-Mail)
Sichtbar nur für Rolle admin über den ⚙ Admin-Button im Header:
- + Neuen Benutzer einladen: Username + E-Mail + 🎲-Zufalls-Passwort (14 Zeichen) + Rolle (user/admin)
- 📧 Begrüßungsmail (v9.69+): Default-Checkbox. Backend erstellt PWPush-Push mit retrieval_step=true (1-Klick-Anti-Crawler-Schutz — verhindert dass Mail-Preview-Bots den Einmal-Link verbrauchen) und sendet Mail mit Login-URL, Username und Passwort-Link. Voraussetzung: SMTP konfiguriert (siehe unten) UND User hat eine E-Mail-Adresse.
- Ohne Mail / Fallback: PWPush via Klartext-Liste (v9.67+): Das frisch generierte Passwort wird an pwpush.inducio-services.net gepusht — angezeigt wird nur der grüne 🔗-Einmal-Link mit 📋 Copy-Button. Default-Ablauf: 7 Tage oder 5 Views. Bei nicht erreichbarem PWPush-Server fällt es zurück auf Klartext-Anzeige mit Warnung (gelb).
- Pro User: 🔑 Passwort zurücksetzen (Reset triggert ebenfalls PWPush-Share) · Rolle ändern (Dropdown) · Aktiv togglen · 🗑 löschen
- Self-Lock: du kannst dich nicht selbst herabstufen, deaktivieren oder löschen, wenn du der letzte aktive Admin bist (Backend wirft 400)
- User mit eigenen Projekten lassen sich nicht löschen (409) — Eigentum erst übertragen oder Projekte selbst löschen
- 📮 Mail / SMTP-Konfiguration (v9.68+): ausklappbarer Bereich unten im Admin-Panel. Host/Port/User/Pass/From/STARTTLS persistent in der DB. Test-Mail-Button mit konkreter Fehlermeldung. Erforderlich für Welcome-Mails und Password-Reset.
🤝 Projekt-Sharing (v9.18+) — Schritt für Schritt
Wer ein Projekt anlegt, wird automatisch dessen Owner („Master").
- In der Toolbar auf 📂 Projekte klicken → Projekt-Liste mit allen deinen Projekten
- In der Zeile des betroffenen Projekts den 🤝-Button klicken (rechts neben dem Projekt-Namen) → öffnet den Sharing-Dialog
- Im Dialog Sektion „User hinzufügen": aus dem Dropdown den Benutzer wählen, Rolle setzen (Editor / Viewer), + Hinzufügen
- Der eingeladene User bekommt eine 🔔-Benachrichtigung und sieht das Projekt sofort in seinem Projekt-Switcher mit „geteilt von <Owner>"
Rollen:
- Owner (du): alles — Sharing-Config, Projekt löschen, alles editieren
- Editor: Inhalt ändern + speichern (kann KEINE neuen User einladen)
- Viewer: nur lesen, kein Edit
- Rolle live per Dropdown ändern, ✕ entfernt den Zugriff
Bei gleichzeitigen Edits sorgt der Konflikt-Dialog dafür, dass Änderungen nicht überschrieben werden (Optimistic-Lock).
Möbel-Vorlagen zentral (v9.38+)
Im Server-Modus liegen Vorlagen zentral auf dem Server statt browser-lokal:
- Beim Speichern fragt das System: „Soll diese Vorlage geteilt werden?"
- Privat: nur du siehst sie · Geteilt: alle Benutzer der Instanz sehen sie
- Eigene shared Vorlagen tragen ein 🌐, fremde shared ein 👤 mit „(von <Owner>)"
- Löschen darf nur der Owner — bei fremden Vorlagen ist das ✕ ausgeblendet
- Sichtbarkeit nachträglich änderbar:
toggleTemplateVisibility(id) (im Code; UI-Toggle kann ergänzt werden)
Beispiel-Workflow: externen Elektriker einbinden
- Admin: ⚙ Admin → User
wimmer-elektro anlegen, Rolle user, Zufalls-Passwort generieren, weitergeben
- Owner des betroffenen Projekts: Projekt-Switcher → 🤝 → User wählen → Rolle „Editor"
- Elektriker meldet sich an, sieht das Projekt, kann Stromkreise/Steckdosen direkt im Plan zuordnen
- Nach Abschluss: Admin → wimmer-elektro deaktivieren oder löschen (falls keine eigenen Projekte)
📜 Versionen (v9.39+)
Jedes Speichern legt automatisch eine Version an. Über 📜 Versionen in der Toolbar:
- Versionen benennen (z.B. „Vor Ortstermin Wimmer") — benannte Versionen werden nie automatisch gelöscht; unbenannte werden auf die letzten 30 pro Projekt beschnitten
- ↩ Wiederherstellen: setzt die aktuelle Version auf den Stand einer alten Version (der bisherige Stand wird vorher als neue Version gesichert)
- 🔍 Diff (v9.50): zwei Versionen aus den Dropdowns wählen → Liste der hinzugefügten / entfernten / geänderten Items mit Feld-Diff (vorher → nachher)
📑 Audit-Log (v9.40+)
Über 📑 Audit sichtbar. Wer hat wann was getan: Logins, Projekt-Saves, Sharing-Änderungen, User-Edits. Admin sieht alle Events der Instanz, normale User nur ihre eigenen. Filter nach Aktion, Ziel-Typ, Ziel-ID. CSV-Export für Excel (v9.44+).
⭐ Project-Templates (v9.47+)
Im Projekt-Switcher hat jedes eigene Projekt einen ⭐/☆-Knopf. Wer markiert macht es zur Vorlage:
- Vorlagen sind für alle Benutzer der Instanz read-only sichtbar
- Beim Anlegen eines neuen Projekts erscheint die Option „⭐ Aus Vorlage klonen" mit Dropdown
- Geklont werden alle Pläne, Layer, Items und Hintergrundbilder — das Original bleibt unverändert
🔔 Benachrichtigungen (v9.48+)
In der Toolbar erscheint 🔔 Inbox mit Anzahl ungelesener Nachrichten. Ausgelöst durch:
- share: jemand hat dich zu einem Projekt eingeladen
- role_changed: deine Rolle wurde geändert (z.B. von Viewer auf Editor)
- unshare: dein Zugriff wurde entzogen
Aktualisierung erfolgt beim Login + manuellem Refresh (kein Polling).
🔗 Public-Links (read-only, v9.49+)
Wer ein Projekt mit Externen ohne Login teilen will: im Sharing-Dialog Sektion 🔗 Public-Links:
- Label (optional) + Ablauf-Dauer (7 / 30 / 90 Tage oder unbefristet) → „+ Link erzeugen"
- Der vollständige Token wird nur einmal angezeigt — sofort kopieren und an den Empfänger
- Empfänger öffnet die URL
?public=… und sieht das Projekt schreibgeschützt mit Banner
- Aktive Links lassen sich jederzeit widerrufen (✕) — sind dann sofort ungültig
📦 Standalone-HTML-Export pro Projekt (v9.65+)
Im Server-Mode liefert der 📦 App+Projekte-Button das aktive Projekt als offline-fähige HTML-Datei:
- Backend bündelt App + Projekt-State in einer
.html-Datei (ca. 2 MB)
- Filename:
gebaeudeplaner_<projektname>_<datum>.html
- Empfänger öffnet die Datei lokal — KEIN Login mehr, das Projekt wird automatisch in den Browser-Speicher importiert
- Ideal zur Übergabe an Externe ohne Account (Bauleiter, Bauherr, Elektriker zum Mitnehmen)
- Audit-Log: jeder Export wird vermerkt
🌐 Kabel-Trassen (Netzwerk, v9.63+) und Strom-Trassen (v9.64+)
Polylinien zwischen Items, mit beliebig vielen Waypoints:
- 🔗 Trasse (Elektrotechnik-Akkordeon): zwischen Netzwerk-Items (Patchpanel, Switch, Daten-/Fiber-/Antenne-Dose). Auto-Color blau / orange (Fiber) / grau (Antenne)
- ⚡ Stromtrasse (gleiche Sektion): zwischen Verteiler (fusebox) und Steckdosen. Auto-Sync: wenn beide Endpunkte demselben LS zugeordnet sind → übernimmt die LS-Color. Sonst Default-Grau. Trasse mutiert KEINE
circuitId — Stromkreis-Zuordnung läuft weiter über das Stromkreis-System
- Tool aktivieren → Start-Item klicken → Waypoints (Plan-Clicks) → End-Item klicken
- Doppelklick auf eine Trasse → Properties-Dialog (Label + Color-Override)
- Waypoints draggen, einzelne Trasse löschen, Endpunkt löschen → Cascade auf Trassen
⏪ Snapshot-Versionierung (Standalone-Mode, v9.66+)
Nur im Standalone-Mode sichtbar (im Server-Mode hat man bereits das Versions-System mit Diff). Vor destruktiven Aktionen wird automatisch ein State-Snapshot in IndexedDB abgelegt:
- Trigger: Layer/Plan löschen, JSON-Import, Hintergrundbild ändern, Layer umbenennen, Reset-Plan, Möbel-Vorlage >5 Items, Bulk-Delete >5 Items
- Toolbar-Button ⏪ Wiederherstellen zeigt last-20 rolling + bis zu 10 pinned Snapshots
- Klick auf einen Snapshot → Restore. Davor wird automatisch der aktuelle Stand als „vor Restore von …" gesichert (selbst-reversibel)
- 📌 macht einen rolling-Snapshot zu einem pinned (überlebt 20er-Rotation)
- 📸 Snapshot jetzt → manueller benannter Snapshot
▲ Toolbar einklappen (v10.0+)
Oben rechts in der Toolbar ein ▲-Knopf. Klick → alle Toolbar-Reihen außer den Plänen werden ausgeblendet → maximale Plan-Fläche. Erneuter Klick (▼) → wieder ausgeklappt. Zustand wird in localStorage gemerkt.
🏠 Räume (v9.78+) + OCR-Auto-Erkennung (v9.79+)
- 🏠 Raum zeichnen (Toolbar Reihe 3): Polygon-Tool wie das Mess-Werkzeug — Klick = Ecke, Doppelklick = abschließen, Name eingeben
- Items werden automatisch via Point-in-Polygon dem Raum zugeordnet (`item.room` wird gesetzt)
- OCR-Auto-Erkennung beim Bild-Upload: Checkbox „🏠 Räume automatisch erkennen" im Bild-Wizard → Tesseract.js liest Text-Labels aus dem Bild, schlägt Raum-Polygone vor. Live-Status-Overlay zeigt Fortschritt
- 🏠 Räume: Dialog mit Liste aller Räume + Lösch-Buttons + Item-Count pro Raum
- Material-Statistik nutzt die Raum-Zuordnung automatisch (Items „Pro Raum"-Spalte)
🎨 Layer-Farbe + Tint (v10.0)
- Color-Dot in der Layer-Pill ist klickbar → öffnet Color-Picker → Layer-Farbe wird sofort live geändert (mit Snapshot davor)
- 🖌-Icon pro Layer → Toggle: alle Items dieses Layers bekommen eine farbige Outline in der Layer-Farbe (Helpful um z.B. alle Elektro-Items auf einen Blick zu erkennen)
👤 Item-Level „Wer hat zuletzt bearbeitet" (v9.70+)
Backend taggt beim Speichern jedes geänderte/neue Item mit _editedBy + _editedAt.
- Hover über ein Item zeigt im Tooltip eine zusätzliche Zeile: „Zuletzt geändert: <user> (vor X min)"
- Unveränderte Items behalten ihren alten Stempel — Mutation-detection ist diff-basiert
- Pro Projekt-Save EIN User-Name-Cache-Refresh via
/api/users/lookup
📋 KIT-Liste pro Layer (v9.71+)
📋-Icon in jeder Layer-Pill → Dialog mit Stückliste für Materialbestellung:
- Items gruppiert nach Typ × Maße + Anzahl + Beispiel-Labels
- Trassen mit Σ-Gesamtlänge
- CSV- + Markdown-Export
📐 Material-Statistik (v9.72+, v9.76 erweitert)
Toolbar Reihe 4 → 📐 Material. Komplett-Inventar für Materialbestellung:
- Items: pro Typ Anzahl + Aufschlüsselung pro Raum (z.B. „socket-double: 28 — Verwaltung (8), Großraum (10), …")
- Trassen: aggregierte Längen pro Kabel-Typ — gewichtet mit Bündel-Count
- Umschaltbar zwischen aktuellem Plan und ganzem Projekt
- CSV-Export liefert beide Sektionen in einer Datei
🔌 Kabel-Typ-Klassifikation + Bündel (v9.72+/v9.75+)
Pro Trasse im Properties-Dialog (Doppelklick):
- Einzel-Typ: Dropdown mit 12 vorgegebenen Typen (Cat5e/6/6a/7, LWL-MM/SM, NYM-Varianten, HDMI, USB-C, …)
- Bündel: mehrere logische Kabel in derselben physischen Trasse, z.B. „4× Cat6 + 1× LWL-MM" — dynamische Tabelle mit „+ Kabel hinzufügen"
- Bündel hat Vorrang vor Einzel-Typ; Material-Statistik zählt mit count gewichtet
↶ Undo / ↷ Redo (Ctrl+Z) (v9.73+)
In-memory Stack der letzten 30 State-Snapshots. Aktivierbar über Toolbar-Buttons (↶ Rückgängig / ↷ Wiederholen) oder Keyboard:
- Ctrl+Z (oder Cmd+Z) — rückgängig
- Ctrl+Y oder Ctrl+Shift+Z — wiederholen
- Debounced 300 ms (Drag-Bewegungen werden nicht pixel-weise einzeln aufgenommen)
- Redo-Stack wird bei neuer Mutation gelöscht (Standard-Verhalten)
🔍 Snapshot-Diff mit Plan-Overlay (v9.74+)
Im Restore-Dialog pro Snapshot ein 🔍-Diff-Button. Zeigt was sich beim Restore ändern würde:
- Liste pro Plan: added (grün, +N hinzugefügt) / removed (rot, −N entfernt) / modified (gelb, ~N verändert)
- 🖼 Im Plan markieren blendet Diff direkt im Plan ein: grüner Ghost = würde wiederkommen, rote outline = würde entfernt, gelber outline = würde verändert
- Overlay-Banner mit Klar-Button
🔐 2FA / TOTP (v9.51+)
Optional pro User. Toolbar-Knopf 🔐 2FA:
- „+ 2FA jetzt einrichten" → Server zeigt Base32-Secret + otpauth-URI einmalig an
- Secret in einer Authenticator-App scannen oder eintippen (Aegis, Google Authenticator, …)
- Aktuellen 6-stelligen Code zur Bestätigung eingeben → 2FA ist aktiv
- Beim nächsten Login wird zusätzlich der Code abgefragt; das Feld blendet der Login-Dialog automatisch ein
- Deaktivieren verlangt Eingabe des Passworts, damit kein fremder Sessionhopper das abschalten kann
📋 2FA-Backup-Codes (v9.52+)
Notfall-Codes für den Fall, dass das Phone weg ist. Im 2FA-Dialog (nur wenn 2FA aktiv) gibt es Sektion 📋 Backup-Codes:
- „🔁 10 neue Codes erzeugen" generiert sie einmalig — danach kopieren oder 🖨 drucken und sicher ablegen (z.B. Passwortmanager, ausgedruckt im Tresor)
- Jeder Code lässt sich genau einmal beim Login eingeben (statt des 6-stelligen TOTP-Codes); danach ist er verbraucht
- Status-Anzeige im Dialog: „N von 10 Codes übrig" — bei < 3 wird gewarnt
- Neuerzeugen invalidiert alle bisherigen Codes; sicher gegen aus alten Backups
🔑 Passkeys / WebAuthn (v9.60+)
Passwortloser Login per Touch ID, Windows Hello, Sicherheits-Token (YubiKey, Solo) oder Smartphone-Passkey. Pflicht-Voraussetzung: HTTPS-Verbindung.
- 2FA-Dialog → Sektion 🔑 Passkeys → „+ Passkey registrieren" → Browser fragt nach Authenticator
- Beim nächsten Login: Benutzername eintippen, dann 🔑 Passkey-Button → Browser fragt nach Touch/Klick auf den Schlüssel — kein Passwort, kein TOTP
- Mehrere Passkeys pro User möglich (z.B. „MacBook Touch ID" + „YubiKey" + „iPhone")
- Liste mit Labels + letzter Verwendung; Löschen jederzeit möglich
- Funktioniert parallel zu Passwort+TOTP — wer kein Passkey hat, loggt sich wie gewohnt ein
🔗 Public-Link-Admin-Übersicht (v9.53+)
Toolbar-Button 🔗 Links (nur Admin) öffnet eine instanzweite Tabelle aller Public-Share-Links — egal welches Projekt. Pro Eintrag: Projekt, Label, Ersteller, Erstell-/Ablaufdatum, Status (aktiv/widerrufen/abgelaufen). Aktive Links lassen sich zentral widerrufen — wichtig für Audit oder wenn der Owner nicht erreichbar.
📦 Möbel-Kompositionen (v9.55+)
Vorgefertigte Multi-Item-Vorlagen mit 📦-Badge im Möbel-Akkordeon:
- 4er-Bench mit Trennwand, 6er-Bench mit Trennwand (Arbeitsplätze)
- Besprechung 6 Plätze + TV (Tisch + 6 Stühle + Display als ein Klick)
- Phonebox-Paar (2× Framery One)
- Server-Rack-Set (Server + USV + Patchpanel im EDV-Bereich)
Klick platziert alle Items relativ zum Origin; danach lassen sie sich gemeinsam selektieren + verschieben. Eigene Vorlagen über 💾 Als Vorlage aus der Auswahl-Leiste — landen daneben.
📏 Mess-Werkzeug (v9.56+)
Mess-Modus per 📐 Messen-Button. Drei Sub-Modi:
- Strecke: 2 Klicks → Distanz; Live-Vorschau zeichnet vom letzten Punkt eine gestrichelte Linie zum Cursor mit Wert
- Polylinie: Klicks beliebig, Doppelklick beendet → Gesamtlänge
- Fläche: Klicks rundum, Doppelklick schließt → m²
Doppelklick auf eine bestehende Mess-Annotation öffnet einen Prompt zum Editieren der Beschriftung (z.B. „Wandbreite Verwaltung — 5,01 m"). Print-Dialog hat Checkbox „Mess-Liste" für eine Tabellenseite pro Plan.
🖼 Versionen-Diff visuell (v9.59+)
Im Versionen-Dialog nach Auswahl zweier Versionen und Klick 🔍 Diff erscheint ein 🖼 Im Plan markieren-Button im Header des Diff-Ergebnisses. Schließt den Dialog und zeichnet farbige Marker direkt über die Items des aktuellen Stockwerks:
- + grün = neu in v_b
- − rot = nur in v_a, in v_b entfernt
- ~ gelb = in beiden, Felder unterschiedlich (Position, Größe, Label…)
Banner oben rechts mit Reset-Knopf; Plan-Wechsel verwirft Markierungen automatisch.
📱 PWA / App-Installation (v9.58+)
Im Server-Mode lässt sich der Gebäudeplaner als Installierbare App betreiben:
- Chrome/Edge auf Desktop: Menü → Installieren … oder Adressleisten-Icon
- Mobile Browser: „Zum Startbildschirm hinzufügen"
- Funktioniert nur über HTTPS (oder localhost)
- App-Shell wird gecached, nach einmaligem Laden auch offline öffenbar (Login schlägt dann aber fehl bis Netz wieder da)
💾 Geo-Backup (v9.57+)
Admin-Hinweis: `backup.sh` schiebt jeden lokalen Snapshot zusätzlich via `rclone` in einen Cloud-Speicher (S3, B2, Hetzner Storage Box, Google Drive). Konfiguration über Env-Var `GEBAEUDEPLANER_REMOTE`. Details in `backend/README.md`.
🟢 Online-Anzeige (v9.43+)
Wer gerade am selben Projekt arbeitet, taucht als 🟢 N Benutzer aktiv-Badge neben dem Projektnamen auf (Mouseover: Liste). Polling alle 30 Sekunden; Einträge älter als 60 s gelten als offline.
🔑 Passwort vergessen (v9.42+)
Auf der Login-Seite Link „🔑 Passwort vergessen?" → Benutzername oder E-Mail eintragen → System schickt Reset-Mail (sofern SMTP konfiguriert). One-shot-Link, 1 Stunde gültig.
Wo werden meine Daten gespeichert?
Alles läuft lokal im Browser. Speicher: IndexedDB (kein 5 MB-Limit wie bei localStorage, ca. 50 % der freien Festplatte verfügbar). Kein Server, keine Cloud, kein Account.
Mehrere Projekte: parallel im selben Browser. „📂 Projekte"-Dialog zum Wechseln, Anlegen, Umbenennen, Löschen.
Backup & Transfer
- ⬇ JSON-Export: selektiver Export (Pläne/Layer per Checkbox). Datei lässt sich auf einem anderen Rechner per ⬆ JSON-Import wieder einlesen (Modus „Hinzufügen" oder „Ersetzen").
- 📦 App+Projekte: exportiert App + alle Projekte als eine HTML-Datei. Empfänger öffnet sie → die enthaltenen Projekte werden angeboten zu übernehmen. Ideal zum Weitergeben an Mitarbeiter ohne Setup.
Wann gehen Daten verloren?
- Browser-Cache komplett gelöscht (Inkl. „Site-Daten" / „IndexedDB")
- Inkognito-/Privatfenster (IndexedDB wird beim Schließen geleert)
- Browser-Update kann selten zu Quota-Reset führen
Tipp: regelmäßig „⬇ JSON-Export" oder „📦 App+Projekte" als Backup ablegen.
Quota voll?
Wenn der Browser keinen Platz mehr hat, erscheint ein roter Banner. Lösung: ältere Projekte löschen (mit JSON-Export-Backup vorher) oder andere Site-Daten freiräumen.
🆕 Was ist neu — Versionsprotokoll
Diese Übersicht listet die wichtigsten Änderungen der Software.
v14.17 — 🪟 Doppelflügelfenster
- 🪟 Neues Doppelflügelfenster (zweiflügelig): zeigt zwei gespiegelte Flügel mit Mittelpfosten und gemeinsamer Öffnungsart (Dreh/Kipp/Dreh-Kipp/fest). Zu finden bei den Fenstern in der Sektion „Wände und Öffnungen".
v14.16 — 🚪 Fenster + Türen: Öffnungsrichtung
- 🚪 Türen und Fenster haben jetzt eine Öffnungsrichtung: Anschlag DIN links/rechts, Schwenk nach innen/außen, bei Fenstern Dreh/Kipp/Dreh-Kipp/fest. Doppelklick → „Öffnungsrichtung".
- ↔ „Anschlag spiegeln" in der Auswahl-Leiste kippt markierte Türen/Fenster schnell von links auf rechts.
- 📋 Neue Tür-/Fensterliste (Aufmaß) mit Position, Breite×Höhe, DIN und Öffnungsart — als CSV und als eigene Druckseite für den Fensterbauer.
- 🖼 Der Tür-Schwenkbogen erscheint jetzt auch im PNG-Export (war vorher leer).
v14.15 — 🪄 KI-Raumerkennung (Beta)
- Neuer Knopf „🪄 KI-Räume erkennen" (nur Server-Modus): Die KI analysiert das Plan-Hintergrundbild, schlägt die Räume als bearbeitbare Polygone vor und liest die Raumnamen direkt aus dem Plan ab — bei unklarem Namen fragt ein Popup nach. Die Analyse läuft im Hintergrund (~5–8 min) und meldet sich per Telegram; das Ergebnis ist ein Vorschlag, den du anschließend mit dem normalen Raum-Editor feinjustierst. Praktisch, um einen frisch importierten Grundriss schnell in benannte Räume zu gliedern.
v14.14 — 🌍 Übersetzungs-Korrekturen
- In einigen Sprachen hatten sich vereinzelt falsche Schriftzeichen in Wörter eingeschlichen (z. B. ein kyrillischer statt eines lateinischen Buchstabens mitten im Wort). Eine vollständige Prüfung aller 27 Sprachen hat 25 betroffene Texte in 11 Sprachen (u. a. Estnisch, Kroatisch, Litauisch) gefunden und korrigiert. Reine Daten-Korrektur, keine Funktionsänderung.
v14.13 — 🔁 Versions-Vergleich erfasst jetzt auch Strom/Wasser/Licht
- Der Versions-Vergleich (📜 Versionen → Vergleichen) zeigte bisher nur geänderte Möbel/Objekte. Jetzt erscheinen auch hinzugefügte, entfernte oder geänderte TGA-Elemente — Stromkreise & Verteiler (⚡), Wasser-/Heizungsstränge (💧) und Lichtkreise (💡). Wer also versehentlich „Kabel oder Rohre" löscht, sieht das jetzt im Vergleich und kann gezielt die passende Version wiederherstellen. Auch die automatische Versions-Notiz beim Speichern zählt TGA-Änderungen mit. (GitLab #27)
v14.12 — 📜 Versionen direkt sichtbar
- Der Gebäudeplaner führt im Server-Modus bei jedem Speichern automatisch eine Version. Mit dem neuen, gut sichtbaren Knopf „📜 Versionen" (in der oberen Leiste neben „📂 Projekte") springt man jederzeit auf einen früheren Stand zurück — ideal, wenn ein anderer Bearbeiter etwas geändert oder versehentlich gelöscht hat. Im Dialog lassen sich zwei Versionen auch vergleichen (Diff: neu/entfernt/geändert) und die Unterschiede direkt im Plan markieren. Bisher war dieser Knopf nur im „⋯ Mehr"-Menü versteckt. (GitLab #27)
v14.11 — ♿ Barrierefreiheit: Sidebar-Knopf
- Der Knopf „☰ MÖBEL & TECHNIK" klappt die Sidebar auf und zu. Seine Vorlese-Beschriftung (aria-label) sagte aber nur „… öffnen" — Screenreader-Nutzer hörten beim Zuklappen etwas Falsches. Jetzt sagt sie konsistent „… ein-/ausklappen". (GitLab #26)
v14.10 — ⬇ Originalplan herunterladen
- Unter „⚙️ Pläne" gibt es jetzt pro Plan einen Knopf „⬇ Original", mit dem sich das hinterlegte Plan-Hintergrundbild jederzeit wieder als Datei herunterladen lässt. (GitLab #24)
v14.9 — 🐞 Löschen-Dialog & Auto-Speichern
- Der Lösch-Dialog nennt jetzt neutral „Objekte" (statt immer „Möbel") und listet auf, was genau gelöscht wird (z. B. „Steckdose ×3, Arbeitsplatz ×2") — vorher war das Feld leer. (GitLab #22)
- Automatisches Speichern: Es gibt jetzt einen sichtbaren „Auto"-Schalter direkt neben „Speichern". Ein einmaliger Speicher-Konflikt schaltet das automatische Speichern nicht mehr dauerhaft ab (war die Ursache, wenn es „plötzlich nicht mehr speicherte"). (GitLab #23)
v14.8 — 🔢 Outdoor-Arbeitsplatz wird nummeriert
- Outdoor-Arbeitsplätze zählen als Arbeitsplatz und bekommen jetzt auch eine fortlaufende Nummer wie die übrigen Arbeitsplätze — die Lücke in der Nummerierung entfällt.
v14.7 — 🖨 Druck-Korrektur
- Beim Drucken wird das Plan-Hintergrundbild jetzt exakt auf die Plangröße gezeichnet. Das verhindert seltene Versätze zwischen Plan und Möbeln im Ausdruck (z. B. bei nachträglich importierten Plänen).
v14.6 — 🔒 Sicherheit
- Wenn Sie Ihr Passwort ändern, werden Sie auf allen anderen Geräten automatisch abgemeldet. Ihre aktuelle Sitzung bleibt aktiv. (Nur Server-Version mit Login.)
v14.5 — 🐞 Korrekturen aus interner Prüfung
- Drehung wird jetzt auch auf synchronisierte Pläne übertragen (war bisher ausgelassen).
- Fünf Leuchten-Typen (u. a. Wannen-, Wandfluter-, Lichtvouten- und Spiegelleuchte) werden im PNG-Export jetzt mit ihrem Symbol gezeichnet statt als leeres Rechteck.
- Eckenradius von Trassen akzeptiert jetzt auch Komma-Eingaben (z. B. „0,5").
- Umbenennen eines synchronisierten Layers benennt die gekoppelten Layer auf den anderen Plänen mit um, damit die Synchronisierung erhalten bleibt.
- Robusteres Verschieben (Aufstell-Zone, Wand-Ansicht): abgebrochene Ziehvorgänge hinterlassen keine hängenden Aktionen mehr.
v14.4 — ✋ Layer per Ziehen umsortieren
- Layer lassen sich jetzt einfach mit der Maus (oder per Fingertipp) anfassen und an die gewünschte Stelle ziehen. Die kleinen ◀▶-Pfeile entfallen dadurch — die Leiste bleibt auch bei vielen Layern aufgeräumt.
v14.3 — 🐞 Feinschliff
- Kleine Korrekturen aus einer internen Prüfung: die nachträgliche Maß-Eingabe rundet nicht mehr (z. B. 62,5 cm bleibt erhalten) und akzeptiert Nachkomma-Werte; ungültige Eingaben brechen sauber ab, ohne andere Felder zu verändern.
v14.2 — 🗂 Layer ordnen & ausblenden
- Layer lassen sich in der Layer-Leiste jetzt per ◀ ▶ umsortieren. Außerdem schrumpft ein ausgeblendeter Layer (Auge 🚫) zu einer kompakten Mini-Pille — so bleibt die Leiste auch bei vielen Layern übersichtlich. (GitLab #20)
v14.1 — 📐 Objekte skalieren + neue Leuchten
- Platzierte Objekte lassen sich jetzt nachträglich in der Größe ändern: Doppelklick auf ein Objekt → Felder für Breite und Tiefe (cm). (GitLab #18)
- 10 neue Leuchten-Typen: Rasterleuchte, Wannenleuchte (IP65), Wandfluter, Lichtvoute, Notleuchte, Rettungszeichen, Hallenstrahler, Außen-Wandleuchte, Treppen- und Spiegelleuchte — alle einem Stromkreis/Schalter zuordenbar und in der Länge frei anpassbar. (GitLab #19)
v14.0 — 🎉 Großes Update: Multi-Mandanten & 28 Sprachen
- 👥 Ein Benutzerkonto kann jetzt mehreren Mandanten angehören — beim Login wählbar und im Betrieb umschaltbar. Benutzernamen sind systemweit eindeutig, und Projekte lassen sich an alle Mitglieder eines Mandanten freigeben.
- 🌍 Die Oberfläche gibt es jetzt in 28 Sprachen mit Flaggen-Menü (alle EU-Amtssprachen sowie Chinesisch und Plattdeutsch).
- ✨ Viele Verbesserungen aus eurem Feedback: Kabeltyp auf mehrere Trassen anwenden, ausblendbare Bedienungs-Leiste, einheitliche Schaltflächen und ein klarerer Hinweis beim JSON-Import.
v13.33 — 💬 Hinweis beim JSON-Import
- Im Dialog „Neues Projekt anlegen" erklärt jetzt ein kleiner Hinweis, dass die JSON-Datei nur ein eigener Export aus diesem Tool ist — und nicht etwa eine Datei vom Architekten oder Bauplaner. (GitLab #17)
v13.32 — 🌍 28 Sprachen mit Flaggen
- Alle EU-Amtssprachen sind jetzt verfügbar (neu u. a. Niederländisch, Schwedisch, Dänisch, Griechisch, Tschechisch, Ungarisch, Rumänisch, Polnisch …), dazu Chinesisch und Plattdeutsch. Das Sprach-Menü oben rechts ist jetzt nach Gruppen sortiert und zeigt Länderflaggen. (GitLab #16)
v13.31 — 📐 Sprachauswahl auf Button-Höhe
- Ergänzung zu v13.30: Die Sprachauswahl im Kopf ist jetzt genauso hoch wie die Schaltflächen daneben — die Kopfzeile wirkt komplett gleichmäßig.
v13.30 — 📐 Einheitliche Button-Höhe
- Alle Schaltflächen in den Werkzeugleisten und im Kopf haben jetzt exakt dieselbe Höhe — das Layout wirkt ruhiger und aufgeräumter.
v13.29 — 💡 Bedienungs-Leiste ausblendbar
- Die gelbe „Bedienung:"-Leiste am oberen Planrand lässt sich jetzt ausblenden — per ✕ direkt an der Leiste oder über ⋯ Mehr → Ansicht. Der Zustand wird pro Browser gemerkt. Die modus-spezifischen Hinweise (Kalibrieren, Messen, Löschen …) bleiben erhalten.
v13.28 — 🔌 Kabeltyp für Auswahl
- Der Kabeltyp lässt sich jetzt in einem Schritt auf alle markierten Trassen anwenden — über den Button „🔌 Kabeltyp …" in der Auswahl-Leiste. Ein vorhandenes Bündel wird dabei ersetzt.
v13.27 — 🌍 Übersetzungs-Korrekturen
- Sprachauswahl-Liste wieder lesbar; Layer-Leiste, Layer-Namen und zugehörige Menüs werden jetzt vollständig übersetzt.
v13.26 — 👤 Konten über Mandanten teilen
- Ein Benutzername ist jetzt systemweit eindeutig (ein Mensch = ein Konto). Damit lassen sich Projekte an alle Mitglieder des aktuellen Mandanten freigeben — auch an Gäste, deren Heimat-Mandant ein anderer ist. Wer Zugriff bekommen soll, taucht jetzt direkt in der Freigabe-Auswahl auf.
v13.25 — 🌍 Oberfläche vollständig übersetzt
- Die gesamte Benutzeroberfläche ist jetzt vollständig in Englisch, Spanisch, Französisch, Italienisch, Portugiesisch, Polnisch, Finnisch und Türkisch verfügbar (Bairisch als Gaudi). Sprache oben rechts über 🌐 umschaltbar.
v13.24 — 👥 Ein Login, mehrere Mandanten
- Ein Benutzerkonto kann jetzt mehreren Mandanten zugeordnet sein. Wer mehr als einen Mandanten hat, wählt beim Login den gewünschten aus und kann ihn im Betrieb über den Mandanten-Umschalter oben im Kopf jederzeit wechseln — ohne neues Konto pro Mandant. Konten mit nur einem Mandanten merken keinen Unterschied.
- Im Mandanten-Panel (🏛, nur Super-Admin) lassen sich über „👤 Mitglieder" bestehende Konten einem Mandanten mit Rolle zuordnen oder wieder entfernen.
v13.23 — 🏛 Mandant direkt anlegen (Super-Admin)
- Im Mandanten-Panel (🏛, nur Super-Admin) gibt es jetzt „➕ Neuer Mandant": ein Mandant wird damit sofort aktiv angelegt — inklusive erstem Admin-Konto —, ohne den Umweg über die öffentliche Registrierung + Freischaltung. (GitLab #11)
v13.22 — 🧩 Audit-Feinschliff (synchronisierte Layer & Kurven)
- Robustheit aus einer proaktiven Code-Prüfung: Beim Verschieben mehrerer verbundener Objekte (Trasse + Knoten) in einen synchronisierten Layer werden jetzt alle Teile korrekt über die Pläne gespiegelt; in einen synchronisierten Layer kopierte Objekte werden ebenfalls synchronisiert; Längen-Anzeige robuster bei fehlendem Maßstab; Kurven-Tangenten in der schreibgeschützten Ansicht nicht mehr verstellbar.
v13.21 — ✏️ Freie Bézier-Kurven
- Neue Linienführung „Freie Kurve" für Trassen, Leerrohre und Regenrinnen: pro Punkt lassen sich jetzt Tangenten-Griffe ziehen und die Kurve frei formen (Alt = Knick erzwingen, Doppelklick = Griff zurücksetzen). Baut auf der Kurven-Funktion aus v13.13 auf; Länge, PNG-Export und Druck folgen automatisch (GitLab #7).
v13.20 — 🧩 Synchronisierte Layer robuster
- Verwaiste Spiegel werden beim Laden bereinigt (ein synchronisiertes Objekt, das durch eine Plan-Löschung seine Partner verloren hat, wird wieder zu einem normalen Objekt); und das Mehrfach-Löschen räumt synchronisierte Verknüpfungen jetzt sauber über alle Pläne mit.
v13.19 — 🎉 „Was ist neu"-Hinweis
- Beim Öffnen nach einem Update zeigt die App automatisch, was sich seit deinem letzten Besuch geändert hat (pro Browser gemerkt). Der erste Besuch ist still — der Hinweis erscheint erst beim nächsten Update.
v13.18 — 🔗 Synchronisierter Layer über Pläne
- Layer plan-übergreifend synchronisieren: In der Layer-Leiste das 🔗 an einem Layer aktivieren → sein Inhalt erscheint auf allen Plänen (gleiche Position). Änderungen (verschieben, Eigenschaften, löschen, neu anlegen) wirken automatisch überall. Ein synchronisierter Arbeitsplatz zählt im Gesamt-AP-Total nur einmal. 🔗 erneut klicken hebt die Synchronisierung auf (das Original auf dem aktuellen Plan bleibt). Ideal z. B. für eine gemeinsame Steigleitung/Legende über Geschosse. (GitLab #10, Teil 2 / Live-Sync)
v13.17 — 📋 Objekte in anderen Plan kopieren/verschieben
- Auswahl markieren → 📋 In Plan … → Ziel-Plan und Modus (Kopieren oder Verschieben) wählen. Zusammen kopierte Gruppen (z. B. Tisch + seine Trasse) bleiben verbunden, sonst werden lose Endpunkte freigelassen. Layer werden per Name auf dem Ziel-Plan zugeordnet (fehlende angelegt). GitLab #10 Teil 1 — Live-Sync folgt.
v13.16 — 🗂 Objekte in anderen Layer verschieben
- Layer-Wechsel für die Auswahl: Objekte markieren → 🗂 In Layer … → Ziel-Layer wählen (oder + Neuer Layer…). Funktioniert auch für Leitungen, Rohre und Regenrinnen — die manuelle Zuordnung bleibt erhalten (GitLab #9).
v13.15 — 🌧 Regenwasser-Layer-Fix
- Bugfix (Issue #8): Eine Regenwasser-Wasser-Trasse (System „rw") landete im Layer „Wasser" statt „Regenwasser". Jetzt korrekt im **Regenwasser**-Layer (wie die Regenrinne). Bereits gezeichnete Trassen kannst du per Layer-Wechsel umsortieren.
v13.14 — 📏 Lineal ausblendbar & Dialog-Feinschliff
- Lineal (5-m-Maßstab) ausblendbar: ✕ direkt am Lineal blendet es aus, Wieder-Einblenden über ⋯ Mehr → Ansicht → 📏 Lineal anzeigen (Zustand wird pro Browser gemerkt). Behebt, dass der Notizzettel hinter dem Lineal verschwand.
- Versions-Konflikt-Dialog: die drei Auswahl-Buttons brechen jetzt sauber um, statt rechts abgeschnitten zu werden.
- Diese Hilfe ist auf den aktuellen Stand nachgezogen.
v13.13 — 〰️ Freie Kurven für Trassen
- Linienführung „Kurve": Doppelklick auf eine Trasse → „Linienführung: Eckig / Abgerundet / Kurve". „Kurve" führt die Trasse als weiche Spline durch die Stützpunkte, mit Glättungs-Regler (0…1). Editor unverändert — Punkte ziehen/einfügen, die Kurve folgt. Wirkt in Anzeige, PNG-Export, Druck und Längen/Mengen. — erweitert in v13.21 um Tangenten-Anfasser.
v13.12 — 🪧 Arbeitsplatz-Check (ASR A1.2)
- Neuer Button „🪧 AP-Check": prüft je Plan/Gebäude vier Dinge und listet farbcodierte Befunde mit Sprung zum Arbeitsplatz — Fläche je AP pro Raum, Bewegungsfläche pro AP (≥1,5 m²/1,0 m), Abstände/Durchgänge (≥0,6 m) und Raumhöhe vs Grundfläche. Schwellen einstellbar (Default 8 m²/AP), CSV-Export. Planungs-Indikation — ersetzt keine Gefährdungsbeurteilung (DGUV V2).
v13.11 — 🧾 Material-/Kosten-Export
- BOM-Export mit Kosten: die Materialliste (📐) exportiert eine CSV über alle Gewerke (Möbel, Kabel-Trassen, Leerrohre, Regenrinnen) mit Menge/Länge, Einzelpreis und Summe + Kosten-Zusammenfassung. Dazu eine druckbare Material-/Kostenliste (eigene Seite, opt-in im Druck-Dialog → „als PDF speichern"). Preise werden in öffentlich geteilten Links nicht mehr mitgeschickt.
v13.10 — 🧹 Härtung & Feinschliff
- Plan-Notizen (Dialog) werden im Server-Modus sofort gespeichert (wie der Notizzettel auf dem Plan); robusteres Einlesen von Bild-Anhängen. Interne Sicherheits-/Stabilitäts-Reparaturen aus einem vollständigen Code-Audit.
v13.7 / v13.8 / v13.9 — 🐞 Feedback mit Bildern · 📝 Notizzettel · 🔒 Audit
- v13.7 — „🐞 Feedback": der Bug-Knopf heißt jetzt Feedback (Bug oder Feature-Wunsch, mit Typ-Auswahl) und nimmt bis zu 3 Screenshots/Bilder entgegen — per Datei oder Strg+V. Bilder gehen an die E-Mail und ins GitLab-Issue (eingebettet, mit Label).
- v13.8 — 📝 Notizzettel auf dem Plan: die Plan-Notizen lassen sich als ziehbarer, ein-/ausklappbarer Zettel direkt auf dem Plan anheften (ein Zettel pro Plan). Einträge je Person, als Aufgabe (abhakbar) oder Info; optional mitdruckbar.
- v13.9 — 🔒 Sicherheits-Reparaturen: atomarer 2FA-Replay-Schutz, keine technischen Fehlerdetails mehr an den Client, robustere Bild-Eingabe — aus einem mehrstufigen Sicherheits-Audit.
v13.6 — ⌬ Eck-Radius pro Ecke
- Jede Trassen-Ecke einzeln abrunden: Rechtsklick (bzw. langer Fingertipp) auf eine Innen-Ecke →
⌬ Ecke abrunden… / Ecke scharf. Der per-Ecke-Radius überschreibt den Trassen-Standard aus v13.5; 0 hält genau diese Ecke scharf. Endpunkte sind nicht rundbar. Gilt für alle 5 Trassen-Typen; Details im Tab 🔌 Verkabelung & Rohre.
v13.5 — 🟠 Abgerundete Trassen-Ecken
- Weiche Ecken pro Trasse: Doppelklick → Feld „Eck-Radius (cm)" rundet alle Ecken einer Trasse mit einem gemeinsamen Radius (
0 = scharf). Geometrisch exakt — Länge, Anzeige, PNG-Export und Druck folgen der Rundung. Basis für die per-Ecke-Steuerung in v13.6.
v13.3 — ✏️ Trassen-Editor & Leerrohr-Live-Vorschau
- Bestehende Trassen nachbearbeiten: Rechtsklick/Long-Press auf Linie oder Ecke → Knickpunkt einfügen · Punkt löschen · Gerade stellen · Trasse löschen. Knickpunkte lassen sich per Drag verschieben. Für alle 5 Werkzeuge (v13.3.1/.2: saubere Typ-Titel im Dialog, breitere Klick-Zone & größere Griffe).
- Leerrohr-Live-Vorschau beim Zeichnen (Gummiband-Linie), analog zum Stromkabel-Tool.
v13.2 — 📝 Notizen & Checkliste pro Plan
- Notizen je Geschoss/Plan: Button „📝 Notizen" in der Toolbar mit Badge = offene Punkte. Freitext-Feld plus abhakbare Checkliste; Punkte halten Autor + Zeitpunkt fest. Reist im Projekt-State mit (kein Server-Umbau).
v13.0 / v13.1 — UI-Vereinheitlichung, Autosave, Dialog-Fixes
- v13.0 — Pop-Up-/Dialog-Vereinheitlichung: alle Dialoge und Bestätigungen auf ein einheitliches, aufgeräumtes Design gebracht, Menüs entrümpelt.
- v13.1 — Debounced Autosave (Server-Modus): 3 s nach der letzten Änderung automatisch gespeichert; überschreibt nie automatisch (Konflikt → 3-Button-Dialog). Pro Nutzer abschaltbar.
- v13.1.1 — Dialog-Überlauf-Fix: kein horizontales Scrollen mehr in Dialogen (zentraler Overflow-Guard, großzügigere Größenklassen).
v13.4 — 🔒 Sicherheits-Härtung
- Security-Hardening: 38 Audit-Befunde geschlossen — Security-Header (CSP u. a.) auf jeder Antwort, SSRF-Schutz für admin-konfigurierbare URLs, XSS-Härtung (validierte Farb-/ID-Felder), Request-Body-Limit, Mandanten-Isolation von Instanz-Einstellungen.
v12.13 – v12.30 — Robustheit, Anchoring, Sammelpunkt, i18n
- 🔗 Cross-Layer-Anchoring: Leitungen können an Items auf beliebigen sichtbaren Layern andocken.
- 🔘 Sammelpunkt (collector) + Strang/Steigleitung: mehrere Trassen über einen gemeinsamen Knoten zusammenführen.
- 🛡️ Stabilität & Sicherheit: umfangreiche Punch-Liste abgearbeitet (High-/Medium-/Low-Bugs aus mehreren Code-Reviews), NaN-Härtung, TOTP-Replay-Schutz, eindeutige Benutzernamen pro Mandant, TOCTOU-Fix beim Speichern, Superadmin-Benachrichtigung bei neuer Firmen-Registrierung.
- 🌐 v12.30 — Englischer i18n-Fallback: fehlende Übersetzungen fallen auf Englisch zurück statt auf den Schlüsseltext.
v12.12 — 📌 Public-Share-Kommentare
- 📌 Kommentar-Pins für Gäste: Über öffentliche Links können Gäste jetzt Kommentar-Pins direkt im Plan setzen. Floating-Button „📌 Kommentar setzen" (unten rechts, nur im Public-View) → Klick auf Plan → Text + optionaler Name eingeben → Pin erscheint als 📌-Symbol über dem Plan.
- 🔔 Owner-Benachrichtigung: Nach jedem gesetzten Kommentar erhält der Projekt-Eigentümer eine Notification im Inbox-System (Typ
public_comment).
- ✓ Kommentare als erledigt markieren: Owner können Kommentare per Klick auf den Pin und Bestätigung im Dialog als ✓ erledigt markieren (ausgegraut, gefiltert). ESC beendet den Kommentar-Modus.
- 💾 Storage in
state.comments[]: { id, floorKey, x, y, text, guestName, createdAt, resolved }. Backend-Endpoint POST /api/public/{token}/comments validiert Token, speichert im Projekt-State und bumpt version. Backward-compatible.
v12.11 — 💰 Material-Preise und Kosten-Auswertung
- 💰 Preis-Editor (Header-Button „💰 Preise" neben Materialliste): €-Preise pro Item-Typ (€/Stück) und pro Trasse-Meter (€/m) hinterlegen. Leerrohr und Regenrinne bekommen Preise pro Durchmesser (Schlüssel z. B.
empty-conduit_32, gutter_100). Nur Typen, die im aktuellen Projekt vorkommen, werden angezeigt.
- 📋 Materialliste zeigt €-Spalte: bei hinterlegtem Preis erscheint pro Zeile eine €-Summe (Anzahl × Preis bzw. Meter × €/m). Tabellen-Header passt sich dynamisch an (Spalte erscheint nur, wenn mindestens ein Preis gesetzt).
- 🧮 Gesamtsumme: am Ende der Materialliste wird eine Kostenzusammenfassung gezeigt — Items-Summe / Trassen-Summe / Leerrohr-Summe / Regenrinnen-Summe / GESAMT. Hinweis: nur eingepreiste Posten werden berücksichtigt.
- 💾 Storage in
state.prices: { items: {}, trasses: {}, currency: 'EUR', lastUpdated }. Währung wählbar (EUR/CHF/USD/GBP). JSON-Export rundtripfähig. Backward-compatible: Projekte ohne state.prices funktionieren wie bisher.
v12.10 — 📱 Mobile-/Touch-UX verbessert
- 📱 Mobile-Breakpoint 768 px + Smartphone-Breakpoint 480 px: Toolbar-Buttons bekommen
flex-wrap und min. 36 px Höhe für sicheren Tap, Sidebar öffnet 70 vw breit mit halbdurchsichtigem Backdrop (verhindert versehentliche Touches auf dem Plan).
- 🎯 Größere Waypoint-Handles auf Mobile: Leerrohr-, Regenrinnen-, Strom-, Wasser- und Netzwerk-Trassen-Handles werden bei Viewport < 768 px auf 18 px vergrößert (vorher 10 px) — deutlich leichter mit dem Finger zu treffen.
- 👆 Long-Press (500 ms) selektiert ein Item: auf Touch-Geräten (
IS_TOUCH_DEVICE) startet ein 500-ms-Timer beim Berühren eines Items. Bewegt man den Finger mehr als 5 px, wird der Timer abgebrochen (normaler Drag). Läuft der Timer ab, wird das Item zur Auswahl hinzugefügt — Haptic-Feedback via navigator.vibrate(40) falls vom Browser unterstützt.
- 🔍 Nativer Pinch-Zoom auf dem Plan:
touch-action: pan-x pan-y pinch-zoom auf dem Plan-Container erlaubt natives Zwei-Finger-Zoomen direkt im Browser — ohne zusätzlichen JS-Code.
- 💬 Properties-Dialog auf Mobile 90–95 vw: bisherige feste
min-width-Werte werden auf Mobile überschrieben, damit der Dialog nicht aus dem Viewport herausläuft.
v12.9 — 📷 Foto-Anhang an Items (Vor-Ort-Dokumentation)
- 📷 Foto-Anhang pro Item: im Properties-Dialog (Doppelklick auf ein Item) gibt es jetzt eine Foto-Sektion. Bild hochladen → wird automatisch auf max. 800×800 px verkleinert und JPEG-komprimiert (~50–100 KB). Storage als data-URL in
item.photo — JSON-Export-rundtripfähig, kein Backend-Upload nötig.
- 📌 📷-Badge oben links auf Items, die ein Foto haben. Im Druck/PNG-Export nicht sichtbar.
- 🔍 Vollbild-Lightbox: Klick auf das Thumbnail im Properties-Dialog öffnet das Foto im Vollbild. Klick außerhalb des Bilds schließt die Ansicht. Caption wird unter dem Bild angezeigt.
- 🗑️ Foto entfernen via Schaltfläche im Properties-Dialog. Optional: kurze Bildunterschrift (max. 200 Zeichen) erfassen.
v12.8 — 💡 Beleuchtungs-Kreise (Schalter → Leuchten)
- 💡 Beleuchtungs-Kreise: logische Gruppierung von Schaltern → Leuchten (separat von Stromkreisen). Pro Kreis: Name, Farbe, Dimmbar-Flag, Schalter- und Leuchten-Listen. Leuchten und Schalter erhalten einen gestrichelten Farbring in der Kreis-Farbe (gelb-orange-Palette).
- Neuer Header-Button 💡 Beleuchtung öffnet einen Tree-Dialog (analog ⚡ Stromkreise / 💧 Wasserkreise). Schalter (switch, motion-detector) und Leuchten im Plan markieren, dann „Schalter zuweisen" bzw. „Leuchten zuweisen" klicken.
- Beim State-Load werden dangling Item-IDs (gelöschte Items) automatisch aus den Kreis-Arrays entfernt.
v12.7 — 💨 Lüftungssystem (ZU/AB/AU/FO) + 7 neue Lüftungs-Items
- 4 neue Lüftungs-Systeme für Wasser-Trassen (Reuse des generischen water-trasse-Schemas): 💨 Zuluft (ZU) — frische Luft in den Raum, 🌬 Abluft (AB) — verbrauchte Luft nach außen, 🌬 Außenluft (AU) — Frischluft-Eintritt an der Fassade, 🌬 Fortluft (FO) — Abluft-Austritt zur Fassade. Alle vier als direkte Sidebar-Buttons.
- 7 neue Lüftungs-Items (blau-violette Familie): Lüftungsgerät KWL 100×60 (Kontrollierte Wohnraumlüftung), Filter 30×20, Schalldämpfer 60×20, Zuluft-Auslass 20×20 (↓ZU, hellblau), Abluft-Auslass 20×20 (↑AB, violett), Brandschutzklappe BSK 30×20 (rot), Außen-/Fortluftgitter AG 40×30. Alle als Trassen-Endpunkte nutzbar.
- Neue gepinnte Sidebar-Top-Sektion „💨 Lüftung" mit 4 Direkt-Buttons pro System (ZU/AB/AU/FO) + 7 Item-Buttons + T-Knoten (defaultOpen: false).
- Neuer Auto-Layer „Lüftung" (#42a5f5 Hellblau): vt-*-Trassen landen automatisch in einem eigenen Layer — getrennt von „Wasser" und „Abwasser". Ab App-Start für jeden Plan vorab angelegt.
v12.6 — 🚽 Abwasser-System (SW/RW-AV/MW/FW) + 5 neue Infrastruktur-Items
- 4 neue Abwasser-Systeme für Wasser-Trassen: 🚽 Schmutzwasser (SW) für WC/Spüle/Dusche/Waschmaschine, 🌧 Regen-Abwasser (RW-AV) für Dachablauf in Misch-/Trennkanalisation (nicht Brauchwasser-Zisterne), 💩 Mischwasser (MW) für gemischte Kanalanschlüsse, 🍳 Fettabscheider-AV (FW) nach DIN 4040 für Gastro/Küchen. Alle vier als direkte Sidebar-Buttons.
- 5 neue Infrastruktur-Items in der Außenanlage → Abwasser-Infrastruktur: Bodenablauf (15×15 rund), Hebeanlage Innen (60×40, getrennt vom Außen-HBA — für Keller-WC unter Rückstauebene), Fettabscheider (80×80, DIN-4040-Schacht), Anschluss öffentlicher Kanal (80×80, Gebäude-Sammelschacht vor Grundstücksgrenze), Rückstausicherung (10×10, Klappe im Abwasserrohr). Alle als Trassen-Endpunkte nutzbar.
- Verbraucher av-sw-zuordenbar: Spüle, Waschbecken, WC, Urinal, Dusche, Bidet, Geschirrspüler, Waschmaschine können jetzt parallel zum KW/WW-Kreis auch einem Schmutzwasser-Kreis (av-sw) zugeordnet werden.
- Neuer Auto-Layer „Abwasser" (#5d4037 Dunkelbraun): av-Trassen landen automatisch in einem eigenen Layer — getrennt von „Wasser" (KW/WW/ZL/Heizung/RW). Ab App-Start für jeden Plan vorab angelegt.
v12.5 — Freie Endpunkte für Strom-/Wasser-/Netzwerk-Trassen
- 🔓 Trassen können jetzt auch im Freien enden: Klick auf Item ODER ins Plan-Freie als Start/End, Enter/Doppelklick zum Beenden im Freien — analog Leerrohr. Hauptanwendungsfall: vom Verbraucher (z. B. Dusche) entlang freier Waypoints bis zum Hauptverteiler, ohne dass dazwischen alles Items sein müssen. Freie Endpunkte werden mit einem kleinen Marker ⊙ angezeigt.
v12.4 — Auto-Layer, freie Trassen-Endpunkte, direkte Sidebar-Buttons
- 🔵 Auto-Gewerke-Layer immer sichtbar: die vier Layer „Strom", „Wasser", „Leerrohre" und „Regenwasser" werden jetzt beim App-Start für jeden Plan vorab angelegt — sie erscheinen sofort in der Layer-Pillenbar, auch bevor die erste Trasse gezeichnet wird.
- 🔓 Trassen an beliebige Items anflanschen: Strom-Trassen, Netzwerk-Trassen, Wasser-Trassen und Leerrohre können jetzt an jedes beliebige Item enden — nicht mehr nur an Verteiler, Steckdosen oder Patchpanele. Der Endpunkt-Filter wurde aufgeweicht; die Auto-Color-Logik bleibt für passende Items aktiv.
- 💧 Wasser-Trassen direkt per Sidebar-Button: der bisherige
prompt()-Dialog zur System-Auswahl entfällt. Stattdessen gibt es 6 direkte Buttons: 💧 Kalt (KW) · Warm (WW) · Zirkulation (ZL) · 🔥 Heizung Vorlauf (VL) · Rücklauf (RL) · 🌧 Regenwasser (RW). Kreis-Zuordnung ist optional und kann nachträglich per Properties gesetzt werden.
- 🟠 Leerrohr & 🟢 Regenrinne — direkte Durchmesser-Buttons: Leerrohr Ø25 / Ø32 / Ø50 / Ø110 + „eigene Größe …"; Regenrinne Ø100 / Ø125 / Ø150 + „eigene Größe …" — kein Picker-Dialog mehr für die gängigen Größen.
v12.3 — T-Knoten für Trassen-Verzweigungen
- 🔘 T-Knoten setzen: neuer Button in „⚡ Strom-Leitungen" und „💧 Wasser-Leitungen". Klick auf eine bestehende Trasse → ein T-Knoten erscheint am nächsten Punkt. Der Knoten kann dann als Endpunkt für eine abgehende Trasse verwendet werden (T-Verzweigung). Folgt automatisch, wenn die Hauptleitung verschoben wird. Bei Löschen der Hauptleitung verschwindet der Knoten und die abgehenden Trassen mit.
v12.2 — Leitungen in Sidebar, Rigole + Schächte, App-Update-Toast
- ⚡ Strom-Leitungen / 💧 Wasser-Leitungen als Sidebar-Sektionen: die 5 Zeichen-Werkzeuge (Stromtrasse · Netzwerk-Trasse · Leerrohr · Wasser-Trasse · Regenrinne) sind jetzt in zwei eigenen Akkordeon-Sektionen ganz oben in der Seitenleiste — direkt unter „Arbeitsplätze", default aufgeklappt. Schluss mit Suchen unter „Elektrotechnik". Tab heißt jetzt MÖBEL & TECHNIK.
- Auto-Layer sofort sichtbar: sobald du das erste Mal eine Trasse zeichnest, erscheinen die Layer „Strom" / „Wasser" / „Leerrohre" / „Regenwasser" sofort in der Layer-Pillenbar — vorher musste man neu laden, um sie zu sehen.
- 🟢 Rigole + 4 Schacht-Typen für die Außenanlage: Versickerungs-Modul (Rigole, 120×60 oder 240×80 cm, frei einstellbar), Sammelschacht (60×60), Sickerschacht (Ø100), Pumpenschacht außen (80×80), Spül-/Kontrollschacht (40×40). Alle als Endpunkte für die 💧 Wasser-Trasse nutzbar — damit kannst du mehrere Rohrleitungen über einen Sammelschacht zusammenführen.
- 🚀 App-Update-Toast: sobald der Server eine neue Anwendungs-Version bereitstellt (z. B. nach einem Deploy), erscheint innerhalb von 30 s ein grüner Toast „Neue Anwendungsversion verfügbar — Seite neu laden" mit den Buttons
[Später] / [Seite neu laden]. Damit verpasst kein Bearbeiter mehr ein Feature-Update, ohne aktiv auf Hard-Refresh klicken zu müssen.
v12.1 — Zentrale Leitungs-Picker, Hilfe „Verkabelung & Rohre", Türkçe komplett, Login-Sprache
- ⚡ Strom-Leitungen / 💧 Wasser-Leitungen (Header-Buttons): zwei neue zentrale Picker oben in der Toolbar. Klick öffnet einen Dialog mit Karten — eine pro Zeichen-Werkzeug, mit Icon, Kurzbeschreibung und Ziel-Layer. Strom-Picker: Stromtrasse · Netzwerk-Trasse · Leerrohr. Wasser-Picker: Wasser-Trasse · Regenrinne. Schluss mit „wo war nochmal welche Schaltfläche?".
- 🔌 Hilfe-Tab „Verkabelung & Rohre": komplette Bedienungsanleitung für alle fünf Zeichen-Werkzeuge nebeneinander — Schritt-für-Schritt-Anleitungen, Cheat-Sheet „was nehmen wofür", Tipps zu Auto-Layer, Waypoint-Drag, Anker-Verhalten und Print-Toggles.
- 🌐 Sprach-Picker prominent im Login: beim ersten Aufruf wird die Browser-Sprache automatisch erkannt (de/en/es/fr/it/fi/tr/pl/pt). Wechseln geht direkt im Login-Dialog oben rechts — vorher war der Selektor unauffällig grau am Fuß versteckt.
- 🇹🇷 Türkçe komplett: alle 126 noch fehlenden Übersetzungen ergänzt (v12.0-Features wie Wasserkreise, Leerrohre, Regenwasser, Konflikt-Dialog) nach SHK-/Elektro-Fachvokabular.
- 🐛 Bugfix Regenwasser-Trasse: beim 💧 Wasser-Trasse-zeichnen-Tool war
rw nicht in der System-Auswahl drin — damit konnte man keine Brauchwasser-/Zisternen-Rohrleitung zeichnen, obwohl das ganze rw-System sonst funktionierte. Picker zeigt jetzt alle 6 Systeme mit Klartext.
v12.0 — Wasserkreise, Leerrohre, Regenwasser, Live-Updates
- 💧 Wasserkreise: komplettes System für Trinkwasser-Installationen analog zu den Stromkreisen. Verteiler → Kreis → Item-Hierarchie für Kalt-Trinkwasser (KW), Warm-Trinkwasser (WW), Zirkulation (ZL) und Heizung. Wasser-Trassen mit Auto-Color aus dem Kreis. Volumenstrom-Schätzung (DIN 1988) pro Kreis mit DN-Hint.
- 🟠 Leerrohre Elektro: EN-61386-Durchmesser von 16 bis 160 mm. Polyline mit optionalen Item-Ankern (Verteiler, Patchpanel, Server-Rack, Außenitems) oder freien Endpunkten (Wand-/Decken-Durchbruch). Materialliste zeigt Längen-Summe pro Durchmesser. Auto-Layer pro Gewerk: Strom-Trassen → Layer „Strom" (rot), Wasser-Trassen → „Wasser" (blau), Leerrohre → „Leerrohre" (orange) — beim ersten Zeichnen automatisch angelegt; bestehende Trassen werden einmalig migriert.
- 🌧 Regenwasser/Brauchwasser: 5. Wasser-System für die Außenanlage. Regenrinne als Polyline mit DN75/100/125/150, Zisterne, Filter, Überlauf, Hauswasserwerk, Brauchwasser-Hahn innen. Bilanz-Berechnung: aus Rinnenlänge × Dachtraufe → Dachfläche, Niederschlagsertrag (Default 800 mm/a), empfohlenes Zisternen-Volumen (5 % vom Jahresertrag). Parameter pro Projekt im ⚙ Einstellungen-Dialog konfigurierbar.
- 🔄 Live-Update-Toast: Wenn ein anderer Bearbeiter parallel speichert, erscheint innerhalb von 30 s ein Toast oben rechts „Plan wurde aktualisiert von X um HH:MM" mit den Buttons
[Später] / [Neu laden]. Eigene Saves im parallelen Tab (gleicher User-Account) werden still nachgezogen, kein Toast.
- ⚠️ Versions-Konflikt-Dialog überarbeitet: die alte OK/Abbrechen-Logik (mit destruktivem „Abbrechen") wurde durch einen modalen Dialog mit drei expliziten Buttons ersetzt:
📥 Server-Version laden, ❌ Speichern abbrechen, ⚠️ Meine Version erzwingen (rot, mit Warntext). ESC = sicher abbrechen, kein versehentliches Force-Save mehr.
- 📦 Standalone-Export validiert die Projekt-ID: vor dem Export wird die Projekt-Liste vom Server frisch geholt; bei stale Cache erscheint statt einem falschen Export eine Fehlermeldung mit Aufforderung, das richtige Projekt zu aktivieren. Confirm-Dialog zeigt zusätzlich ID-Suffix, Zeitstempel und Eigentümer zur Verifikation.
v11.0 / v11.1 — Mandantenfähigkeit & Impressum
- Multi-Tenant-Architektur: mehrere Mandanten (Unternehmen) auf einer Installation, jeder mit eigener Datenbank, isolierten Projekten, Benutzern und Audit-Log. Öffentliche Registrierung (E-Mail-validiert), Super-Admin-Panel zur Freigabe (pending → active) und Status-Verwaltung (active/suspended/archived). Letzter-Admin-Schutz pro Mandant.
- Benutzer-Archivierung statt Löschung: Benutzer werden deaktiviert und archiviert, statt hart gelöscht — alle Referenzen aus Projekten und Audit-Log bleiben konsistent. Archivierte Benutzer können reaktiviert werden (mit nachgesendeter Begrüßungsmail).
- Impressum & Datenschutz: Footer-Links auf der Login-Seite, Registrierungs-Dialog für neue Mandanten direkt sichtbar.
v10.9 — PDF-Formate & GitLab-Issues
- Papierformat beim Drucken/PDF wählbar: DIN A4, A3, A2, A1, A0 und 2A0 (Übergröße) — jeweils Hoch- oder Querformat. Der Plan wird automatisch auf das gewählte Format skaliert.
- GitLab-Integration: Bug-Reports können zusätzlich als Issue im GitLab angelegt werden (Checkbox im Bug-Dialog). Konfiguration im Admin-Panel — benötigt einen Access-Token mit
api-Scope.
v10.8 — Mail-Vorlagen & Freigabe-Benachrichtigung
- Editierbare Mail-Vorlagen (Admin-Panel): Begrüßungs- und Freigabe-Mail mit Platzhaltern (
{username}, {login_url} …) und „Auf Standard zurücksetzen".
- Freigabe-Mail: Bei einer Projekt-Freigabe wird der Benutzer optional per E-Mail benachrichtigt (Haken im Freigabe-Dialog).
v10.7 — Automatische Versionsnamen
- Versionen mit Änderungs-Text: Bei jedem Speichern wird automatisch zusammengefasst, was sich geändert hat (z. B. „+3 −1 Objekte (EG, OG) · Layer KG geändert"). Sichtbar im Versions-Dialog (📜 Versionen) als grauer 📝-Text unter jeder Version.
- Eigene Namen können weiterhin pro Version vergeben werden — sie haben Vorrang vor dem Auto-Text.
v10.5 / v10.6 — Bug-Report & Aufgeräumte Bedienung
- 🐞 Bug melden (Header oben rechts): Betreff + Beschreibung, optional Server-Logs mitsenden — geht per Mail an die Support-Adresse.
- Benutzer-Menü: Mein Konto, 2FA, Freigaben, Benachrichtigungen, Links und Aktivitätsprotokoll sind unter dem Benutzer-Chip gebündelt.
- Materialliste mit Bereichs-Auswahl: aktueller Plan oder gesamtes Gebäude × ein Layer oder alle Layer — inklusive Plan- und Layer-Aufschlüsselung pro Item-Typ.
- Toolbar klappt beim Scrollen automatisch ein (Schnellzugriff-Zeile bleibt sichtbar); Räume und Inhalte teilen sich eine Zeile.
v10.0–v10.4 — Toolbar & Layout
- Einklappbare Toolbar mit Schnellzugriff-Zeile, fixierter Kopf-/Toolbar-Bereich beim Scrollen.
- Layer-Farben nachträglich änderbar, Objekte in Layer-Farbe umrandbar (🖌).
- Standalone-HTML-Export pro Projekt inklusive aller Pläne.