Repository navigation
Releases
OpenGewerk Haustechnik 0.2.6
Diese Fassung enthält eine Sicherheitskorrektur. Was betroffen war, steht im Abschnitt „Sicherheit“ und im Advisory. Wer OpenGewerk Haustechnik betreibt, aktualisiert bitte bald.
Eine Sicherheitsfassung. Das Fundament steht auf dem Stand von OpenGewerk 0.6.5, und damit gilt eine neue E-Mail-Adresse erst mit dem Link in der Mail an sie: Unter „Konto“ und unter „Zugänge“ wartet sie, bis der Link geöffnet ist, und ein Konto, das nur über seine Adresse gefunden wird, findet die Anwendung nur über eine bestätigte. Dazu tragen die Abhängigkeiten keine Fassung mit offener Sicherheitsmeldung mehr, darunter body-parser und multer im Server der Instanz.
Aktualisiert wird wie bei jeder Fassung, vorher gesichert. Eine Migration kommt dazu, 0116_address_confirmations; sie zählt jede Adresse, die es schon gibt, als bestätigt. Abgemeldet wird dabei niemand.
Hinzugefügt
- Die Demo zum Ausprobieren im Konzept (#599, Meilenstein „Demo“): Das Planungskonzept v0.96, Abschnitt 10, legt fest, was die Zugänge „Demo“ und „admin“ bei zwei Betreibern dürfen, wie die Demo jede volle Stunde zurückgesetzt wird und dass sie als eigenes Abbild auf dem Server der Demos läuft, wie in OpenGewerk nach dessen ADR 0017. Warum: Wer die Haustechnik kennenlernen will, soll sie ansehen können, ohne sie zu installieren, und keine Ausnahme der Demo darf eine Instanz mit echten Daten erreichen.
Geändert
- README und Funktionsumfang nennen OpenGewerk Haustechnik ein Open-Source-CAFM für das technische Gebäudemanagement, self-hosted. Warum: unter diesen Wörtern sucht, wer Software für Betreiberpflichten und Wartung braucht, und "CAFM" stand bisher nur dort, wo sich die Anwendung von kommerziellen Systemen abgrenzt.
Sicherheit
- Die Abhängigkeiten tragen keine Fassung mit offener Sicherheitsmeldung mehr. body-parser 2.4.0 (GHSA-27r3-jxmh-p828), fast-uri 3.1.9, qs 6.17.1 und serialize-javascript 7.1.4 kamen mit #597, seroval 1.7.7 mit #601, und seroval-plugins zieht hier auf 1.7.7 nach, alles im Lockfile, ohne dass sich eine angegebene Fassung ändert. happy-dom 21.0.4 steht auch an der Wurzel, damit kein Test mehr 20.14.5 nachzieht. Für multer (GHSA-q7qp-rjg7-q26m), minimatch, glob und das alte esbuild unter drizzle-kit setzt
pnpm-workspace.yamlOverrides, die nur die betroffenen Fassungen anheben; Nest bleibt bei der Fassung des Fundaments im Submodul, damit nur eine Nest im Baum liegt. deepmerge hat keine reparierte Fassung und fällt wie in OpenGewerk über einen Patch an@rollup/plugin-node-resolveganz weg; dasDockerfilekopiert dafürpatches/vor dem Install. Warum: Dependabot meldete 17 offene Befunde, darunter body-parser und multer als hoch, und beide laufen im Server der Instanz. - Das Fundament steht auf dem Stand von OpenGewerk 0.6.5 statt 0.6.3 (#598), und eine neue E-Mail-Adresse gilt erst mit dem Link in der Mail an sie (N28 der Sicherheitsprüfung von OpenGewerk, OpenGewerk/opengewerk#754). Unter „Konto“ und unter „Zugänge“ wartet eine neue Adresse auf ihren Link, der einen Tag und einmal gilt, die bisherige bekommt danach einen Hinweis, und ein Konto, das nur über seine Adresse gefunden wird, findet die Anwendung nur über eine bestätigte. Migration 0116 legt
auth_address_confirmationsan und zählt jede Adresse, die es schon gibt, als bestätigt; die beiden Mails sagen es im Wortlaut der Haustechnik. Die Auskunft über eine Person nennt im Teil „Konto“ eine wartende Adresse mit dem Ende ihres Links und zählt, wie viele die Person für andere Konten angefordert hat, ohne diese Konten zu nennen; Verfahrensbeschreibung und Löschkonzept führen die Tabelle. Warum: Eine Adresse kam bisher ohne Nachweis an ein Konto, und spätere Vergaben fanden das Konto genau über sie; wer eine fremde Adresse eintrug, bekam so eine Benennung oder einen Zugang, der einer anderen Person galt.
Installieren und aktualisieren
Das Paket opengewerk-haustechnik-0.2.6.tar.gz enthält den Ordner opengewerk-haustechnik mit docker und den Skripten des Fundaments, mit denen er startet. Zum Installieren entpacken, mit tar --no-same-owner -xzf opengewerk-haustechnik-0.2.6.tar.gz, und im Ordner opengewerk-haustechnik sh docker/start.sh aufrufen. Für ein Update das neue Paket genauso an dieselbe Stelle entpacken, die .env bleibt, und derselbe Befehl. Gebaut wird dabei nichts, geholt werden die Abbilder dieser Fassung, für x86_64 und ARM64:
ghcr.io/opengewerk/opengewerk-haustechnik:0.2.6(sha256:5b35bd542e01c42acfbbdb37abbf4de89b5cc9493a4b5ff6b24bd3d6df6fff3d)ghcr.io/opengewerk/opengewerk-haustechnik-backup:0.2.6(sha256:821b93afcd1726d41b0526334364ca0ede4dff0b82875ac5181730df1d547097)
Gebraucht werden Docker und Docker Compose ab 2.22. Neben OpenGewerk auf demselben Server läuft die Haustechnik mit eigenem Port, eigenem Hostnamen, eigener Datenbank und eigenem Namen des Compose-Projekts. Beide Abbilder sind ohne Schlüssel über Sigstore signiert. Prüfen:
cosign verify ghcr.io/opengewerk/opengewerk-haustechnik:0.2.6 \
--certificate-identity https://github.com/opengewerk/opengewerk-haustechnik/.github/workflows/release.yml@refs/tags/v0.2.6 \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
cosign verify ghcr.io/opengewerk/opengewerk-haustechnik-backup:0.2.6 \
--certificate-identity https://github.com/opengewerk/opengewerk-haustechnik/.github/workflows/release.yml@refs/tags/v0.2.6 \
--certificate-oidc-issuer https://token.actions.githubusercontent.comDas Paket ist im selben Lauf genauso signiert. Vor dem Entpacken prüfen, mit opengewerk-haustechnik-0.2.6.tar.gz.sigstore.json daneben:
cosign verify-blob opengewerk-haustechnik-0.2.6.tar.gz \
--bundle opengewerk-haustechnik-0.2.6.tar.gz.sigstore.json \
--certificate-identity https://github.com/opengewerk/opengewerk-haustechnik/.github/workflows/release.yml@refs/tags/v0.2.6 \
--certificate-oidc-issuer https://token.actions.githubusercontent.comOpenGewerk Haustechnik 0.2.5
Diese Fassung enthält eine Sicherheitskorrektur. Was betroffen war, steht im Abschnitt „Sicherheit“ und im Advisory. Wer OpenGewerk Haustechnik betreibt, aktualisiert bitte bald.
Eine Sicherheitsfassung. Das Fundament steht auf dem Stand von OpenGewerk 0.6.3 und bringt die Korrekturen aus dessen Sicherheitsprüfung vom 27. bis 29.10.2026 mit: Den zweiten Faktor ändert nur noch eine Sitzung, die ihn trägt, und die Leitung setzt ihn zurück, wenn jemand ihn verloren hat; das Änderungsprotokoll schreibt jeden Wert mit Zufallsbytes, die das Schwärzen mitnimmt; der Abgleich und jedes Konto haben Grenzen für das, was sie schreiben; und im Bereich der Instanz lässt sich der Speicher je Betreiber begrenzen. Dazu ist das Installationspaket jetzt signiert und lässt sich vor dem Entpacken mit cosign verify-blob prüfen.
Das Update meldet einmal jedes Gerät ab, weil die Cookies der Anmeldung jetzt __Host-better-auth.* heißen; danach meldet sich jeder neu an. Wer einen Passkey als zweiten Faktor hat und sich mit dem Passwort anmeldet, meldet sich für eine neue App, einen Passkey oder die Bestätigung unter „Konto“ mit dem Passkey an.
Aktualisiert wird wie bei jeder Fassung, vorher gesichert. Drei Migrationen kommen dazu, 0113_audit_value_nonces, 0114_second_factor_changes und 0115_tenant_limits.
Sicherheit
- Das Installationspaket ist ab dieser Fassung signiert wie die Abbilder, ohne Schlüssel über Sigstore, und die Release-Seite trägt die Datei
opengewerk-haustechnik-<fassung>.tar.gz.sigstore.jsonund den Befehlcosign verify-blobdazu. Warum: Das Paket legt fest, welche Abbilder der Start prüft und gegen welchen Workflow, und seine Skripte laufen mit den Rechten von Docker; die Prüfsumme daneben stammt von derselben Seite und sagt nur, dass beides zusammen hochgeladen wurde. - Das Fundament steht auf dem Stand von OpenGewerk 0.6.3 und bringt die Korrekturen aus dessen Sicherheitsprüfung vom 27. bis 29.10.2026 mit. Warum: Die Haustechnik baut auf demselben Fundament und hatte dieselben Lücken. Das Update meldet einmal jedes Gerät ab, weil die Cookies der Anmeldung jetzt
__Host-better-auth.*heißen; ein Cookie mit__Secure-durfte auch eine andere Subdomain derselben Domain setzen. Dazu kommen aus dem Fundament: Wer einen Passkey löscht oder neue Wiederherstellungscodes erzeugt, meldet alle anderen Geräte ab; die Sperre nach zehn falschen Codes zählt jeden Versuch, bevor der Code geprüft wird; die Anmeldung nimmt nur Pfade an, für die es eine Route gibt; Pool, Mail und Push haben Fristen, undGET /sync/conflictsliefert höchstens 200 Konflikte; Drucke warten in einer Schlange auf den Renderer, höchstens drei je Betreiber; Ablehnungen von Mailserver und Push verraten nicht mehr, was der Resolver der Instanz antwortet; die Leser für Tabellen gehen ihre Eingabe einmal durch; der Abruf eines Geräts verliert keine Zeile mehr, wenn eine Transaktion während des Abrufs in zwei Tabellen schreibt, und eine Übertragung trägt höchstens 2000 Vorgänge; der Lauf der Fristen erinnert je Betreiber und Durchgang an höchstens 100 Fristen; ein Dokument vom Gerät öffnet nur noch als Bild oder PDF, jede andere Datei wird gespeichert. - Hat ein Konto einen zweiten Faktor, ändert eine Anmeldung ohne ihn nichts mehr daran: eine App einrichten, einen Passkey hinzufügen oder löschen und sich unter „Konto“ bestätigen geht nur noch aus einer Sitzung mit dem Passkey oder dem Code aus der App (#591). Wer seinen einzigen zweiten Faktor verloren hat, bekommt ihn von der Leitung unter „Zugänge“ zurückgesetzt („Faktor zurücksetzen“), ein Konto, das auch für einen anderen Betreiber arbeitet oder zur Verwaltung der Instanz gehört, mit
reset-second-factorauf dem Server. Das Einrichten einer App und jedes Zurücksetzen stehen als Zeile der neuen Tabellesecond_factor_changes(Migration0114_second_factor_changes) im Änderungsprotokoll jedes Betreibers, für den das Konto arbeitet, und das Konto bekommt eine E-Mail. Warum: Ein Konto, dessen zweiter Faktor ein Passkey ist, meldet sich auch mit dem Passwort allein an, und aus einer solchen Sitzung ließ sich eine App einrichten, die dann jede Rolle mit zweitem Faktor und den Bereich der Instanz öffnete. - Im Bereich der Instanz gibt es unter „Einstellungen“ die Karte „Betreiber“: „Speicher je Betreiber“ ist eine Grenze in GB für alles, was ein Betreiber im Dateispeicher ablegt, ab Werk ohne Grenze (#592, Migration
0115_tenant_limits). Die Liste der Betreiber zeigt in der neuen Spalte „Belegt“, wie viel jeder belegt. Warum: Der Dateispeicher ist einer für alle Betreiber, und der erste, der die freie Reserve erreichte, sperrte das Hochladen für alle anderen. Der Haken „Leitungen dürfen weitere Betreiber anlegen“ auf derselben Karte kommt aus dem Fundament; die Haustechnik bietet einer Leitung das Anlegen weiterer Betreiber bisher nicht an, und der Satz darunter sagt es. - Das Änderungsprotokoll schreibt jeden neuen Eintrag in Fassung 3: jeder Wert bekommt 32 zufällige Bytes in
audit_value_nonces, sein Fingerabdruck geht über diese und den Wert, und das Schwärzen löscht sie mit dem Wert (#589, Migration0113_audit_value_nonces). Warum: Der Fingerabdruck war SHA-256 des Werts allein und blieb beim Schwärzen stehen, sodass ein geschwärzter Name oder ein Datum aus Datenbank und Sicherung zu erraten war. Einträge, die schon geschrieben sind, behalten ihren Fingerabdruck. - Ein Text, den der Abgleich bringt, ist höchstens 100.000 Zeichen lang, die Antworten eines Erlaubnisscheins bis zu ihrer Prüfung; dazu zählt jedes Konto, was es in einer Stunde als JSON ändert, über alle Betreiber zusammen, und über 100 MB antwortet jede Route mit 429 (#590). Warum: Über den Abgleich kam ein Text beliebiger Länge in ein Feld, und wie oft jemand schrieb, hatte keine Grenze; ein Zugang konnte so die Datenbank füllen, die alle Betreiber teilen.
- Ein Druck, den der Server erzeugt und aufbewahrt, fragt vorher die Grenze für erzeugte Dateien: er bekommt 507, wenn nur noch das letzte Gigabyte frei ist, und 429, wenn der Betreiber in der Stunde schon 500 MB Drucke hatte (#588). Warum: Drucke gingen ohne Frage in den gemeinsamen Speicher, bis zum letzten Byte, auf demselben Datenträger wie Datenbank und Sicherung.
Geändert
- Die Datenbank läuft auf dem neueren Abbild von
postgres:18-alpine, demselben, auf dem seit OpenGewerk 0.6.3 die Sicherung des Fundaments baut. Warum:pg_dumpder Sicherung muss zum Server passen, und der Lauf „Betrieb über Docker Compose“ hält beide Digests gleich.
Behoben
- „Neuer Auftrag“ und „Mangel melden“ kündigen nicht mehr als „Später“ an, was seit 0.2.0 gebaut ist: Material aus dem Lager am Auftrag (#326) und eine Anlage, die ein Mangel außer Betrieb setzt (#345). Der Satz zum Mangel steht jetzt im Präsens unter „Gut zu wissen“; der zum Material entfällt, denn entnommen wird vor Ort, und die Seite des Auftrags zeigt es.
Installieren und aktualisieren
Das Paket opengewerk-haustechnik-0.2.5.tar.gz enthält den Ordner opengewerk-haustechnik mit docker und den Skripten des Fundaments, mit denen er startet. Zum Installieren entpacken, mit tar --no-same-owner -xzf opengewerk-haustechnik-0.2.5.tar.gz, und im Ordner opengewerk-haustechnik sh docker/start.sh aufrufen. Für ein Update das neue Paket genauso an dieselbe Stelle entpacken, die .env bleibt, und derselbe Befehl. Gebaut wird dabei nichts, geholt werden die Abbilder dieser Fassung, für x86_64 und ARM64:
ghcr.io/opengewerk/opengewerk-haustechnik:0.2.5(sha256:15c2a46a58bc0e8b732251176f5e2efa0fe2ed7335ca3bf6db126af76bb92b30)ghcr.io/opengewerk/opengewerk-haustechnik-backup:0.2.5(sha256:8db92ae337f4f282c22dfb79e296b27c2a004f8caf0dabdc66d91bf69afbef24)
Gebraucht werden Docker und Docker Compose ab 2.22. Neben OpenGewerk auf demselben Server läuft die Haustechnik mit eigenem Port, eigenem Hostnamen, eigener Datenbank und eigenem Namen des Compose-Projekts. Beide Abbilder sind ohne Schlüssel über Sigstore signiert. Prüfen:
cosign verify ghcr.io/opengewerk/opengewerk-haustechnik:0.2.5 \
--certificate-identity https://github.com/opengewerk/opengewerk-haustechnik/.github/workflows/release.yml@refs/tags/v0.2.5 \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
cosign verify ghcr.io/opengewerk/opengewerk-haustechnik-backup:0.2.5 \
--certificate-identity https://github.com/opengewerk/opengewerk-haustechnik/.github/workflows/release.yml@refs/tags/v0.2.5 \
--certificate-oidc-issuer https://token.actions.githubusercontent.comDas Paket ist im selben Lauf genauso signiert. Vor dem Entpacken prüfen, mit opengewerk-haustechnik-0.2.5.tar.gz.sigstore.json daneben:
cosign verify-blob opengewerk-haustechnik-0.2.5.tar.gz \
--bundle opengewerk-haustechnik-0.2.5.tar.gz.sigstore.json \
--certificate-identity https://github.com/opengewerk/opengewerk-haustechnik/.github/workflows/release.yml@refs/tags/v0.2.5 \
--certificate-oidc-issuer https://token.actions.githubusercontent.comOpenGewerk Haustechnik 0.2.4
Diese Fassung enthält eine Sicherheitskorrektur. Was betroffen war, steht im Abschnitt „Sicherheit“ und im Advisory. Wer OpenGewerk Haustechnik betreibt, aktualisiert bitte bald.
Eine Sicherheitsfassung. Das Abbild baut auf Node 24.22.1, und der Renderer für PDFs läuft auf 2.57.3, das dieselbe Fassung von Node mitbringt; beide schließen damit die Lücken aus dem Sicherheitsrelease von Node vom 21.10.2026, darunter CVE-2026-111497.
Dazu lässt sich das PDF eines Rundgangs mit vielen Fotos wieder erzeugen: der Renderer nimmt Seiten bis 96 MiB an, und die Fotos stehen in Druckgröße darin, so dass ein PDF mit gut 200 Fotos unter dieser Grenze bleibt und nur noch rund ein Drittel so viel wiegt wie bisher.
Aktualisiert wird wie bei jeder Fassung, vorher gesichert; eine Migration gibt es nicht.
Geändert
- Das PDF eines Rundgangs und eines Nachweises trägt seine Fotos in Druckgröße, höchstens 1200 Pixel an der langen Kante (#580). Ein Gerät legt sie mit 2048 Pixeln und bis zu 3 MB ab, und jedes Foto steht in der Seite, die der Renderer bekommt; so passten nur wenige Dutzend in ein PDF, und jedes PDF wog so viel wie seine Fotos. Ein Foto wird dabei rund ein Drittel so groß. Das Foto im Speicher bleibt, wie es war, und der Nachweis nennt weiter dessen Prüfsumme; ein Druck, der schon aufbewahrt ist, bleibt ebenfalls, wie er ist.
Behoben
- Das PDF eines Rundgangs mit vielen Fotos lässt sich wieder erzeugen (#579). Der Renderer nahm von Haus aus nur Seiten bis 10 MiB an, und jedes Foto steht eingebettet in der Seite; schon ein Rundgang mit rund zehn Fotos wurde abgelehnt. Die Grenze steht jetzt auf 96 MiB, knapp unter dem, was Chromium selbst annimmt.
Sicherheit
- Das Abbild baut auf
node:24-alpinemit Node 24.22.1 statt 24.22.0, und der Renderer für PDFs läuft aufbrowserless/chromium2.57.3 statt 2.57.1, das ebenfalls Node 24.22.1 mitbringt. Warum: Node 24.22.1 schließt die Lücken aus dem Sicherheitsrelease vom 21.10.2026, darunter CVE-2026-111497 (der Brotli-Decoder schreibt außerhalb seines Puffers, was fremden Code ausführen lässt).
Installieren und aktualisieren
Das Paket opengewerk-haustechnik-0.2.4.tar.gz enthält den Ordner opengewerk-haustechnik mit docker und den Skripten des Fundaments, mit denen er startet. Zum Installieren entpacken, mit tar --no-same-owner -xzf opengewerk-haustechnik-0.2.4.tar.gz, und im Ordner opengewerk-haustechnik sh docker/start.sh aufrufen. Für ein Update das neue Paket genauso an dieselbe Stelle entpacken, die .env bleibt, und derselbe Befehl. Gebaut wird dabei nichts, geholt werden die Abbilder dieser Fassung, für x86_64 und ARM64:
ghcr.io/opengewerk/opengewerk-haustechnik:0.2.4(sha256:d87b4e2df8a181764f87335b5a562bf60ad92f082ed375b31332c93d7211ead4)ghcr.io/opengewerk/opengewerk-haustechnik-backup:0.2.4(sha256:3379b6f42002a70108cd899ba8a2ec3e667d5b0a95a0aa531d0d5779511b864a)
Gebraucht werden Docker und Docker Compose ab 2.22. Neben OpenGewerk auf demselben Server läuft die Haustechnik mit eigenem Port, eigenem Hostnamen, eigener Datenbank und eigenem Namen des Compose-Projekts. Beide Abbilder sind ohne Schlüssel über Sigstore signiert. Prüfen:
cosign verify ghcr.io/opengewerk/opengewerk-haustechnik:0.2.4 \
--certificate-identity https://github.com/opengewerk/opengewerk-haustechnik/.github/workflows/release.yml@refs/tags/v0.2.4 \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
cosign verify ghcr.io/opengewerk/opengewerk-haustechnik-backup:0.2.4 \
--certificate-identity https://github.com/opengewerk/opengewerk-haustechnik/.github/workflows/release.yml@refs/tags/v0.2.4 \
--certificate-oidc-issuer https://token.actions.githubusercontent.comOpenGewerk Haustechnik 0.2.3
Der Rest des Abgleichs von Phase 2 mit Konzept und Code: was er an Lücken, Fragen und zweiten Prüflinien gefunden hat, ist mit dieser Fassung gebaut, und die Dokumentation steht auf ihrem Stand.
Ein PDF, das die Instanz signiert, ist jetzt zertifiziert und trägt Rechte: nach der Signatur sind nur Ausfüllen und weitere Signaturen erlaubt, Drucken und Kopieren bleiben, Ändern und Zusammenstellen nicht. Die Unterschrift unter einer Einweisung nennt die Seite, die die Person gesehen hat, wie die unter einem Leistungsnachweis.
Die Datenbank hält selbst, was bisher nur der Server hielt: eine eigene Rolle führt den Betreiber nie, nach dem letzten Tag eines Zugangs liest die Person auch dort nichts mehr, wo kein Bereich hängt, der Lauf der Fristen weist sich aus, wenn er entfernt, ein Sammelvorgang hält seine Unterschrift und trägt keine eigene Pflicht, und die Grenzen der Seite eines Etiketts zählen über Neustarts und Prozesse hinweg.
Vor Ort nennt ein Raum seine Verteiler, im Büro eine Fremdfirma ihre Verträge. Eine eigene Pflicht lässt sich durch einen Vorschlag des Katalogs ablösen, und jede Person sieht ihre eigenen Qualifikationen und Übertragungen ohne ein Recht. Dazu neue Fassungen der Pakete Elektro (1.5.1), Heizung (1.2.0) sowie Raumluft und Kälte (1.5.0).
Aktualisiert wird wie bei jeder Fassung in zwei Schritten, vorher gesichert. Die Migrationen 0105 bis 0112 laufen von selbst; sie ändern keine bestehende Zeile, sondern geben der Datenbank neue Spalten, Trigger, Policies und Funktionen und die Tabelle für die Zählungen der Seite eines Etiketts.
Behoben
- Die Seite eines Raums vor Ort nennt die Verteiler, die in ihm stehen, wie die Seite des Gebäudes, und die Seite einer Fremdfirma nennt ihre Verträge, wenn die Person Verträge ansehen darf (#570). Beides verlangten #495 und #328, und das Konzept sagt es seit v0.94; im Büro zeigte der Raum seine Verteiler schon.
- Die Dokumentation steht auf dem Stand von Phase 2 (#531). Die ADRs 0002 bis 0006 tragen nach, was beim Bau entschieden wurde: Fremdfirmen, Verträge, Einweisung und Erlaubnisschein, die Tabellen ohne Bereich und die Richtlinie
within_limitsdes Prüfers, Soll-Dokumente, Gruppen je Stromkreis und eigene Anlagenarten im Katalog, die Unterlagen für unterwegs und das Lager nach Recht. Der Funktionsumfang nennt 0.2.1 und 0.2.2 (#532). Die Übersicht der Einstellungen nennt jeden Eintrag, die Hilfe zu „Datenschutz“ alle erzeugten Dokumente, und das Handbuch der Instanz hat ein Kapitel zu Maßnahmen und Signatur (#528). Das Konzept zieht in v0.94 nach, was der Abgleich gefragt hat und wo der Code richtig ist (#554), und das Löschkonzept sagt „Sitzungen“, wo es die meinte. - Ein Soll-Dokument gilt erst als vorhanden, wenn die Datei des Dokuments angekommen ist (#516). Bisher zählte auch ein Dokument, das vor Ort ohne Netz abgelegt wurde und dessen Datei nie ankam; Akte, Anlagenverzeichnis und Lagebild sagten dann „vorhanden“.
- Den Bericht einer Fremdfirma nimmt ein Sammelvorgang der eigenen Leute nicht mehr an (#550); bisher erledigte er ihn und machte aus den eigenen Leuten eine Fremdfirma. Die Datenbank sperrt die Antworten einer Anlage im Sammelvorgang, sobald der Sammelvorgang unterschrieben ist, und gibt einem Sammelvorgang keine eigene Pflicht (#551); beides hielten bisher nur Server und Abgleich.
- Wer eine Störung gemeldet hat, die in eine schon länger angenommene Meldung geführt wird, bekommt den Push „angenommen“ einmal (#517). Bisher kam er nur, wenn die Annahme der anderen Meldung keine 48 Stunden her war.
- Die Auswertung der Mängel zählt keine entfernten Mängel mehr mit (#521), etwa die an einer entfernten Anlage; die Zahl stimmt jetzt mit der Liste überein, zu der sie führt.
- Die Grenzen der Seite eines Etiketts für Meldungen ohne Konto zählt die Datenbank (#540), nicht mehr der Speicher eines Prozesses: ein Neustart setzt sie nicht zurück, und mehrere Prozesse zählen gemeinsam. Gezählt wird unter dem Hashwert der Adresse, und nach einer Stunde ist die Zählung weg; das Löschkonzept nennt das als letzte Regel, damit die Nummern der übrigen bleiben.
- Das Änderungsprotokoll nennt bei einer Unterschrift nur noch, dass sie gesetzt wurde, auch in seiner Tabelle (#523). Bisher standen die ersten 300 Zeichen des Linienzugs in XLSX und CSV.
- Ein Paket heißt nicht „eigen“ (#529): so heißen die eigenen Anlagenarten eines Betreibers, und der Lader weist ein solches Paket ab. Die Sorte einer eigenen Angabe lässt sich ändern, solange keine Anlage einen Wert von ihr hat, wie 2.5 des Konzepts es sagt. Damit keine Anlage in einer zweiten Transaktion zur selben Zeit einen Wert der alten Sorte nimmt, wartet eine solche Änderung auf alle, die die eigenen Angaben gerade lesen, und hält die nächsten an, bis sie gezählt hat; das gilt ebenso für eine entfernte Auswahl, Angabe oder Art.
- Tests für fünf Zusagen aus Phase 2, die bisher keiner ganz hielt (#530): einen Lieferanten entfernen, die Zeiten der Störmeldungen, eine Pflichtenübertragung nach dem letzten Tag eines Zugangs, dass eine Auskunft keine Spur hinterlässt, und die Tests des Fundaments zum Ende eines Zugangs in der Verfahrensbeschreibung.
- Eine Rolle mit „Anlagen ansehen“ und ohne „Mängel ansehen“ sieht „außer Betrieb durch Mangel“ jetzt auch im Lagebild und vor Ort (#520), ohne etwas vom Mangel selbst zu erfahren. Ihr Gerät hält von einem solchen Mangel nur Anlage, Stand und Klasse; bisher fehlte der Zustand dort ganz.
- Das höher signierte PDF am Nachweis lädt herunter, statt sich im Tab zu öffnen, und nennt die Stufe, die das Zertifikat von sich angibt, qualifiziert oder fortgeschritten (#526). Jeder PDF-Knopf heißt „PDF herunterladen“, auch bei Verfahrensbeschreibung, Verzeichnis und Auskunft, und kein Text sagt mehr „PDF öffnen“.
- Die Liste der Störungen lässt sich als XLSX und CSV ausgeben, mit dem, was ihr Filter zeigt (#527); die Tabelle nennt niemanden, der gemeldet hat, und keine Adresse.
- Ein begonnener Rundgang lässt sich einer anderen Person zuteilen, bis er abgegeben ist (#559), etwa wenn seine Person mitten in der Woche krank wird. Was der Server vom Rundgang hat, bleibt bei ihm, und die neue Person geht von dort weiter. Vom Gerät der Person davor nimmt der Server zu diesem Rundgang nichts mehr an; es zeigt dafür eine Karte unter „Konflikte“. Einen Grund für das Umverteilen hält die Anwendung nicht fest.
- Ein Mangel aus einem Punkt „nicht in Ordnung“ trägt die Fotos dieses Punkts (#519), im Büro, im Mängelbericht und beim Auftrag vor Ort, der jetzt auch die Fotos des Mangels zeigt, aus dem er kommt. Bisher stand ein solcher Mangel ohne Foto da.
- Der Hinweis auf eine fehlende oder abgelaufene Qualifikation steht auch beim Zusammenstellen und Planen eines Sammelvorgangs und beim Zuteilen der Rundgänge einer Woche (#515), wie beim einzelnen Vorgang nur für die, die Qualifikationen ansehen.
- Eine Vorlage eines Rundgangs geht als Excel oder CSV hinaus, in den Spalten, die ihr Import liest (#558), sodass sie sich bearbeiten und wieder einlesen lässt.
- Mit einem Nachweis, der nach Ablauf seiner Aufbewahrung geleert wird, gehen auch die Dateien seiner Drucke und höher signierten PDFs aus dem Speicher (#522), ebenso die Prüfbescheinigung eines Berichts, die als Dokument an der Anlage liegt (#552), solange kein Nachweis, der bleibt, oder ein anderes Dokument dieselbe Datei nennt. Bisher blieben PDFs mit Schriftzug und Namen im Speicher, auch wenn sie niemand mehr erreichte.
- Wer einen Vorschlag aus dem Katalog bestätigt, kann die eigene Pflicht der Anlage wählen, die er ersetzt (#514), einzeln und im Stapel je Anlage eine. Sie endet mit der Bestätigung, ihre Nachweise bleiben bei ihr, und ihr letzter Nachweis zählt für den Termin der neuen Pflicht. Das Konzept sagte das zu, gebaut war es nicht: wer eine Prüfung bisher als eigene Pflicht geführt hatte, fing mit dem Vorschlag ohne Nachweis von vorn an.
- Das Büro gleicht die Dateien für unterwegs ab wie der Rahmen vor Ort (#536): Ein Gerät, das nach dem Verlust eines Bereichs oder Rechts nur noch im Büro geöffnet wird, lässt die Dateien los, die die Person nicht mehr lesen darf. Bisher blieben sie im Browser, bis jemand wieder vor Ort öffnete.
- Die erzeugte Verfahrensbeschreibung nennt in Abschnitt 7 und unter „Bei diesem Betreiber“ die Jahre, die beim Betreiber für Vorgang, Mangel, Aufgabe und die Person an Zählerstand und Buchung gelten (#524); bisher stand dort immer die gesetzliche Frist, auch wenn die Leitung sie verlängert hatte, und eine neue Fassung nannte den Abschnitt nicht als geändert. Drei Sätze, die Phase 2 noch als künftig beschrieben, sagen jetzt, was gebaut ist (#525), und Anhang C nennt jeden Weg des Servers mit seiner Methode, gegen den ein Test die Liste hält (#541).
- Eine Anfrage eines Prüfers, die abgelehnt wird, weil ihm das Recht fehlt, steht im Protokoll der Zugriffe, als „abgelehnt“ (#537); das Konzept sagt „jede seiner Anfragen“. Das Protokoll bleibt so lange wie das Änderungsprotokoll, und das Löschkonzept und die Verfahrensbeschreibung sagen es. Prüfer und Melder stehen nicht mehr zur Wahl, wenn jemand für eine Pflicht verantwortlich wird, und der Server nimmt sie dafür nicht an (#538).
- Die eigenen Qualifikationen mit Nachweis und die eigenen Pflichtenübertragungen mit Seite und PDF sieht jede Person unter „Konto“ ohne ein Recht (#543), wie Abschnitt 7 des Konzepts es sagt: es sind ihre eigenen Daten. Bisher verlangte der Server „Vorgänge ansehen“ und „Pflichten ansehen“, und wer das Recht verlor, verlor auch seine Ausfertigung. Das Fundament hat dafür Routen für ein Mitglied ohne Recht (
RequiresMembership). - Fünf Grenzwerte des Pakets Elektro nennen Ausgabe und Abschnitt ihrer Norm (#547), wie Abschnitt 5 des Konzepts es für einen Grenzwert verlangt: die Auslösebereiche B, C und D nach DIN EN 60898-1, Auslösestrom und Abschaltzeit der Fehlerstrom-Schutzeinrichtung nach DIN EN 61008-1 und 61009-1 (Paket Elektro 1.5.1). Bis der Maintainer sie am Normtext prüft, bleiben sie als nicht abge...
OpenGewerk Haustechnik 0.2.2
Diese Fassung enthält eine Sicherheitskorrektur. Was betroffen war, steht im Abschnitt „Sicherheit“ und im Advisory. Wer OpenGewerk Haustechnik betreibt, aktualisiert bitte bald.
Eine Fassung mit den Lücken, die der Abgleich von Phase 2 mit Konzept und Code gefunden hat, und dem Fehler #518 aus 0.2.1.
Die Adresse für die Rückmeldung einer Störmeldung ohne Konto wird jetzt bestätigt: an sie geht zuerst eine E-Mail mit einem Link, die weder die Meldung noch Gebäude oder Raum nennt. Erst danach schreibt der Betreiber, dass die Meldung angenommen und dass sie erledigt ist. Eine Adresse, die vor dem Update angegeben wurde, bekommt beim nächsten Lauf ihren Link.
Fünf Stellen gaben eigenen Rollen oder dem Prüfer mehr, als ihre Rechte und Bereiche erlauben: Einstellungen für alle Bereiche, die eigenen Anlagenarten im Katalog, die Seiten von Fremdfirma und Vertrag, die Qualifikationen und die Orte eines Prüfers mit Beschränkung auf Anlagenarten. Dazu die Advisories zu dieser Fassung.
PDF und Tabelle eines wieder geöffneten Rundgangs zeigen die letzte Abgabe, und wieder öffnen darf auch, wer nur gegenzeichnet.
Aktualisiert wird wie bei jeder Fassung in zwei Schritten, vorher gesichert. Die Migration 0104_phase_2_gaps läuft von selbst; sie ändert keine Zeile, sondern gibt der Datenbank die neuen Policies, zwei Funktionen und die Spalten für die Bestätigung und den Druck einer Abgabe.
Behoben
- PDF und Tabelle eines wieder geöffneten Rundgangs zeigen den Stand der letzten Abgabe (#518). Bisher lieferten beide nach dem Wiederöffnen den alten, von der Instanz signierten Stand mit einer Unterschrift, die nicht mehr zählt; solange der Rundgang wieder offen ist, gibt es jetzt kein PDF und keine Tabelle, und die neue Abgabe bekommt ein PDF für sich. Ein Druck hängt dafür an der Abgabe, nicht mehr am Rundgang.
- Einen abgegebenen Rundgang öffnet auch eine eigene Rolle wieder, die Rundgänge gegenzeichnet, aber keine Vorgänge ausführt. Bisher bekam sie 403, enger als das Konzept; wer ihn abgegeben hat, öffnet ihn, solange die Person Vorgänge ausführt.
Sicherheit
- Der Abgleich von Phase 2 mit dem Code hat sechs Stellen gefunden, an denen jemand mehr sah oder änderte, als das Konzept ihm gibt. Bis auf die erste betreffen alle nur eigene Rollen oder den Prüfer:
- Die Adresse für die Rückmeldung einer Störmeldung ohne Konto bekommt zuerst eine E-Mail mit einem Link, der sie bestätigt. Erst danach nennt eine Mail die Meldung, das Gebäude und den Raum. Bisher konnte jemand eine fremde Adresse eintragen, und diese bekam über den Mailserver des Betreibers mitgeteilt, wo etwas gemeldet war.
- Eine Einstellung, die für alle Bereiche gilt (Seite ohne Konto, Kategorien der Störungen, Vorgaben der Mängelklassen, Stichtag der Zähler, Aufbewahrung, Leistungsnachweis), ändert nur, wer alle Bereiche sieht. Bisher genügte „Einstellungen ändern“, das eine eigene Rolle auch in einem Bereich haben kann.
- Der Melder bekommt den Katalog ohne die eigenen Anlagenarten und Felder des Betreibers, der Prüfer nur die der Anlagen, die er sieht. Bisher kamen sie mit dem Katalog auf jedes Gerät.
- Die Seite einer Fremdfirma nennt Nachweise nur mit „Nachweise ansehen“, die Seite eines Vertrags Pflichten nur mit „Pflichten ansehen“ und Anlagen nur mit „Anlagen ansehen“.
- Qualifikationen sieht man nur von Personen, die in einem eigenen Bereich arbeiten, alle nur, wer alle Bereiche sieht; die Datenbank hält das. Bisher sah jede Person mit „Qualifikationen ansehen“ die aller Beschäftigten.
- Ein Prüfer mit Beschränkung auf Anlagenarten sieht von den Orten nur die, in denen eine Anlage dieser Arten steht; bisher sah er alle Orte seiner Liegenschaften.
Installieren und aktualisieren
Das Paket opengewerk-haustechnik-0.2.2.tar.gz enthält den Ordner opengewerk-haustechnik mit docker und den Skripten des Fundaments, mit denen er startet. Zum Installieren entpacken, mit tar --no-same-owner -xzf opengewerk-haustechnik-0.2.2.tar.gz, und im Ordner opengewerk-haustechnik sh docker/start.sh aufrufen. Für ein Update das neue Paket genauso an dieselbe Stelle entpacken, die .env bleibt, und derselbe Befehl. Gebaut wird dabei nichts, geholt werden die Abbilder dieser Fassung, für x86_64 und ARM64:
ghcr.io/opengewerk/opengewerk-haustechnik:0.2.2(sha256:5c6586c901b442d998d9d095e88b6df87795a98e6dbf402557e0872741dc111e)ghcr.io/opengewerk/opengewerk-haustechnik-backup:0.2.2(sha256:146a506657e117ba5664a9d1ed2b1961391f731c47f2ac7e6683b0f44c0edeb5)
Gebraucht werden Docker und Docker Compose ab 2.22. Neben OpenGewerk auf demselben Server läuft die Haustechnik mit eigenem Port, eigenem Hostnamen, eigener Datenbank und eigenem Namen des Compose-Projekts. Beide Abbilder sind ohne Schlüssel über Sigstore signiert. Prüfen:
cosign verify ghcr.io/opengewerk/opengewerk-haustechnik:0.2.2 \
--certificate-identity https://github.com/opengewerk/opengewerk-haustechnik/.github/workflows/release.yml@refs/tags/v0.2.2 \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
cosign verify ghcr.io/opengewerk/opengewerk-haustechnik-backup:0.2.2 \
--certificate-identity https://github.com/opengewerk/opengewerk-haustechnik/.github/workflows/release.yml@refs/tags/v0.2.2 \
--certificate-oidc-issuer https://token.actions.githubusercontent.comOpenGewerk Haustechnik 0.2.1
Zwei Meldungen aus dem Pilotbetrieb, beide vom Tag, an dem 0.2.0 erschien.
Jedes PDF im Büro lädt jetzt herunter, statt sich in einem Tab zu öffnen (#509). In der installierten Anwendung ließ sich ein PDF bisher ansehen, aber nicht speichern. Der Knopf heißt „PDF herunterladen“, und die Datei trägt einen Namen, der sagt, was sie ist, etwa „Nachweis NW-2026-00131.pdf“.
Ein abgegebener Rundgang lässt sich bis zur Gegenzeichnung wieder öffnen (#510), im Büro und vor Ort, durch die Person, die ihn abgegeben hat, und wer Rundgänge gegenzeichnet, solange kein Mangel daraus einen Auftrag hat. Die Antworten bleiben und lassen sich ändern. Die Unterschrift zählt nicht mehr, Mängel und Zählerstände aus ihr werden entfernt, und ein Nachweis aus dem Rundgang wird für ungültig erklärt; mit der nächsten Abgabe entsteht alles neu.
Aktualisiert wird wie bei jeder Fassung in zwei Schritten, vorher gesichert. Die Migration 0103_round_reopening läuft von selbst; sie ändert keine Zeile, sondern gibt dem Vorgang eine Spalte und der Datenbank die Prüfungen für das Wiederöffnen.
Hinzugefügt
- Ein abgegebener Rundgang lässt sich bis zur Gegenzeichnung wieder öffnen, im Büro und vor Ort, durch die Person, die ihn abgegeben hat, und wer Rundgänge gegenzeichnet, solange kein Mangel daraus einen Auftrag hat (#510, entschieden am 21.10.2026). Die Antworten bleiben und lassen sich ändern; die Unterschrift zählt nicht mehr und steht nur noch im Änderungsprotokoll, Mängel und Zählerstände aus ihr werden entfernt, und ein Nachweis aus dem Rundgang wird für ungültig erklärt. Die Rückfrage nennt, was wegfällt. Die Datenbank prüft die Grenzen selbst (Migration
0103_round_reopening). Warum: aus dem Pilotbetrieb gemeldet, ein Rundgang mit einer falschen Angabe ließ sich nach der Abgabe nicht mehr berichtigen.
Geändert
- Jeder PDF-Knopf im Büro lädt die Datei herunter, statt sie in einem Tab zu öffnen, unter einem Namen, der sagt, was sie ist: Nachweis, Rundgang, Leistungsnachweis, Pflichtenübertragung, Mängelbericht, Auskunft, die Dokumente des Datenschutzes und die Etiketten (#509, entschieden am 21.10.2026). Der Knopf heißt „PDF herunterladen“. Warum: in einem Tab ohne die Leiste eines PDF-Programms, etwa in der installierten Anwendung, ließ sich ein PDF ansehen, aber nicht speichern. Die Karte des Etiketts kommt aus dem Fundament (OpenGewerk/opengewerk#727).
- Das Fundament steht auf opengewerk
f56d7bc, mit der Karte des Etiketts, die das PDF herunterlädt (OpenGewerk/opengewerk#727). Das braucht #509.
Installieren und aktualisieren
Das Paket opengewerk-haustechnik-0.2.1.tar.gz enthält den Ordner opengewerk-haustechnik mit docker und den Skripten des Fundaments, mit denen er startet. Zum Installieren entpacken, mit tar --no-same-owner -xzf opengewerk-haustechnik-0.2.1.tar.gz, und im Ordner opengewerk-haustechnik sh docker/start.sh aufrufen. Für ein Update das neue Paket genauso an dieselbe Stelle entpacken, die .env bleibt, und derselbe Befehl. Gebaut wird dabei nichts, geholt werden die Abbilder dieser Fassung, für x86_64 und ARM64:
ghcr.io/opengewerk/opengewerk-haustechnik:0.2.1(sha256:082613d5bf7647ecf37f51e4668fa9c23c45f1a62cf9b7ef52e60d7fd3d647d7)ghcr.io/opengewerk/opengewerk-haustechnik-backup:0.2.1(sha256:bb6dfe8623fc4e9220d7641e062c6d2b584b75ab1bfe9fbf9ae18181c6ed532f)
Gebraucht werden Docker und Docker Compose ab 2.22. Neben OpenGewerk auf demselben Server läuft die Haustechnik mit eigenem Port, eigenem Hostnamen, eigener Datenbank und eigenem Namen des Compose-Projekts. Beide Abbilder sind ohne Schlüssel über Sigstore signiert. Prüfen:
cosign verify ghcr.io/opengewerk/opengewerk-haustechnik:0.2.1 \
--certificate-identity https://github.com/opengewerk/opengewerk-haustechnik/.github/workflows/release.yml@refs/tags/v0.2.1 \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
cosign verify ghcr.io/opengewerk/opengewerk-haustechnik-backup:0.2.1 \
--certificate-identity https://github.com/opengewerk/opengewerk-haustechnik/.github/workflows/release.yml@refs/tags/v0.2.1 \
--certificate-oidc-issuer https://token.actions.githubusercontent.comOpenGewerk Haustechnik 0.2.0
Die Fassung von Phase 2, den vollständigen Betreiberpflichten nach Abschnitt 12 des Planungskonzepts. Seit 0.1.10 kommen ihre letzten beiden Bausteine dazu.
Jedes PDF mit einer Unterschrift darin signiert die Instanz jetzt selbst, wenn es entsteht (#457): Nachweis, Rundgang, Leistungsnachweis, Pflichtenübertragung, Auskunft über eine Person, Anlagenbuch und Nachweisverzeichnis. Wird es danach geändert, zeigt jedes PDF-Programm die Signatur als ungültig. Den Schlüssel erzeugt die Instanz selbst, ihre Einstellungen zeigen sein Zertifikat mit Fingerabdruck, und „PDF prüfen“ unter „Pflichten“ sagt zu einem vorgelegten PDF, ob es ein aufbewahrter Druck ist und ob es seit der Signatur unverändert ist. Ein Druck von vor dieser Fassung trägt keine Signatur und gilt weiter als aufbewahrter Druck, wenn er Byte für Byte gleich ist.
Was an keinem Nachweis hängt, hat eigene Fristen (#412). Ein Vorgang ohne Nachweis bleibt sechs Jahre, ein behobener Mangel fünf; beide schlägt der Lauf unter „Aufbewahrung“ vor, und die Leitung bestätigt. Eine erledigte Aufgabe geht ein Jahr nach der Erledigung, die Person an Zählerstand, Buchung und Entnahme drei Jahre danach, beides ohne Rückfrage mit dem Fristenlauf. Vor Ort laden einige Seiten erst, wenn sie geöffnet werden (#502), ohne Netz wie bisher.
Aktualisiert wird wie bei jeder Fassung in zwei Schritten, vorher gesichert; die Migrationen 0101_retention_beyond_evidence und 0102_instance_signing laufen von selbst. Der Schlüssel der Signatur entsteht mit dem ersten PDF, das eine Unterschrift zeigt; seinen Fingerabdruck findet danach, wer die Instanz betreibt, unter „Einstellungen“ der Instanz.
Hinzugefügt
- Jedes PDF mit einer Unterschrift darin signiert die Instanz selbst (PAdES), wenn es entsteht: Nachweis, Rundgang, Leistungsnachweis, Pflichtenübertragung, Auskunft über eine Person und Anlagenbuch und Nachweisverzeichnis mit den Nachweisen dahinter (#457, entschieden am 21.10.2026). Wird es danach geändert, zeigt jedes PDF-Programm die Signatur als ungültig; ein Passwort zum Öffnen braucht es nicht. Der Schlüssel entsteht mit dem ersten solchen PDF, versiegelt in der Datenbank, und die Einstellungen der Instanz zeigen sein Zertifikat mit Fingerabdruck und erzeugen einen neuen. Dazu „PDF prüfen“ in der Navigation unter „Pflichten“: ob ein vorgelegtes PDF ein aufbewahrter Druck ist und ob es seit der Signatur der Instanz unverändert ist, ohne die Datei zu speichern. Bis dahin ließ sich ein PDF mit Unterschrift unbemerkt ändern.
- Was an keinem Nachweis hängt, hat eigene Fristen (#412, entschieden am 21.10.2026). Ein Vorgang ohne Nachweis bleibt sechs Jahre ab dem Ende des Jahres, in dem er endete, und wird danach zur leeren Hülle; ein behobener Mangel bleibt fünf Jahre und verliert dann Beschreibung, Bemerkung und Fotos, seine Zeile bleibt. Beide schlägt der Lauf unter „Aufbewahrung“ und als Frist vor, und die Leitung bestätigt. Eine erledigte Aufgabe geht ein Jahr nach der Erledigung, die Person an Zählerstand, Buchung und Entnahme drei Jahre danach, beides ohne Rückfrage mit dem Fristenlauf. Unter „Aufbewahrung“ verlängert die Leitung jede Frist, kürzer geht keine; die Datenbank rechnet jedes Ende und lehnt jeden anderen Weg ab. Bis dahin blieb all das, solange die Instanz besteht.
Geändert
- Fundament auf
432137bmit dem Schlüssel der Instanz (OpenGewerk/opengewerk#726), dazu die Migration0102_instance_signingmit denselben Spalten und demselben Trigger des Protokolls. - Das Fundament steht auf opengewerk
43ff07b: eine Buchung im Lager darf ohne die Person stehen, die gebucht hat (OpenGewerk/opengewerk#725). Das braucht #412. - Die vier Einträge des Pakets Elektro 1.5.0 (#468), die PV-Anlage im Geltungsbereich der Prüfung nach DGUV Vorschrift 3 und 4, sind fachkundig abgenommen, vom Maintainer am 21.10.2026, jeder mit der Prüfsumme seiner Datei. Bis dahin standen ihre Vorschläge als „Nicht abgenommen“ da.
- Vor Ort laden die Seite eines Auftrags mit Notiz, Material, Abschluss und Leistungsnachweis, die Einweisung und der Erlaubnisschein einer Fremdfirma und das Ergebnis einer Prüfung erst, wenn sie geöffnet werden (#502). Der Einstieg vor Ort stand nach #500 mit 300,0 kB genau am Budget von 300 kB, jetzt sind es 281,6 kB; ohne Netz öffnen sie weiter, weil der Service Worker jedes Skript des Baus hält.
Installieren und aktualisieren
Das Paket opengewerk-haustechnik-0.2.0.tar.gz enthält den Ordner opengewerk-haustechnik mit docker und den Skripten des Fundaments, mit denen er startet. Zum Installieren entpacken, mit tar --no-same-owner -xzf opengewerk-haustechnik-0.2.0.tar.gz, und im Ordner opengewerk-haustechnik sh docker/start.sh aufrufen. Für ein Update das neue Paket genauso an dieselbe Stelle entpacken, die .env bleibt, und derselbe Befehl. Gebaut wird dabei nichts, geholt werden die Abbilder dieser Fassung, für x86_64 und ARM64:
ghcr.io/opengewerk/opengewerk-haustechnik:0.2.0(sha256:5395f1e1b8793bbdc6fe7359bc9d72abe5a34afe6ba9b9f132bd16476ec7f601)ghcr.io/opengewerk/opengewerk-haustechnik-backup:0.2.0(sha256:bb54344d4efb781f37c864d4cd93744b3f87f537139c4fb0203f01e360e83225)
Gebraucht werden Docker und Docker Compose ab 2.22. Neben OpenGewerk auf demselben Server läuft die Haustechnik mit eigenem Port, eigenem Hostnamen, eigener Datenbank und eigenem Namen des Compose-Projekts. Beide Abbilder sind ohne Schlüssel über Sigstore signiert. Prüfen:
cosign verify ghcr.io/opengewerk/opengewerk-haustechnik:0.2.0 \
--certificate-identity https://github.com/opengewerk/opengewerk-haustechnik/.github/workflows/release.yml@refs/tags/v0.2.0 \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
cosign verify ghcr.io/opengewerk/opengewerk-haustechnik-backup:0.2.0 \
--certificate-identity https://github.com/opengewerk/opengewerk-haustechnik/.github/workflows/release.yml@refs/tags/v0.2.0 \
--certificate-oidc-issuer https://token.actions.githubusercontent.comOpenGewerk Haustechnik 0.1.10
Diese Fassung enthält eine Sicherheitskorrektur. Was betroffen war, steht im Abschnitt „Sicherheit“ und im Advisory. Wer OpenGewerk Haustechnik betreibt, aktualisiert bitte bald.
Die sechste Zwischenfassung für den Pilotbetrieb, mit dem zweiten Teil der Korrekturen aus der externen Sicherheitsprüfung (#360) und dem, was aus Phase 2 seit 0.1.9 fertig ist. Vier Lücken aus dem wiederholten Teil zur Anmeldung sind geschlossen, die Advisories erscheinen mit dieser Fassung. Eine offene Sitzung liest, schaltet oder umgeht den zweiten Faktor nicht mehr, ändert die Verwaltung der Instanz nicht ohne Bestätigung, benennt kein Konto über einen Weg um, der nicht im Protokoll steht, und schickt das gespeicherte Passwort eines Mailservers nie mit weniger Verschlüsselung hinaus. Neue Wiederherstellungscodes und jede Änderung an der Verwaltung der Instanz meldet eine E-Mail.
Aus Phase 2 kommt, dass ein Verteiler in einem Gebäude steht: im Gebäude seiner Niederspannungsanlage oder in einem, das sie versorgt (#495). Die Seite eines Gebäudes zeigt seine Verteiler und nimmt dort einen neuen auf, im Büro und vor Ort. Eine PV-Anlage bekommt die Prüfung nach DGUV Vorschrift 3 und 4 vorgeschlagen wie eine elektrische Anlage (#468, Paket Elektro 1.5.0). Die Auskunft über eine Person als JSON enthält keinen Linienzug einer Unterschrift mehr, und ein Release spiegelt die Abbilder nach Docker Hub, sobald die Zugangsdaten dafür im Repository stehen (#494).
Aktualisiert wird wie bei jeder Fassung in zwei Schritten, vorher gesichert; die Migration 0100_boards_in_buildings läuft von selbst, jeder vorhandene Verteiler steht danach im Gebäude seiner Anlage. Danach fragt „Konto“ für neue Wiederherstellungscodes nach Passwort und Code, und die Verwaltung der Instanz bestätigt vor dem Benennen oder Entfernen eines Kontos und vor einem Betreiber für jemand anderen.
Hinzugefügt
- Die PV-Anlage bekommt die wiederkehrende Prüfung nach DGUV Vorschrift 3 und 4 vorgeschlagen (#468, Paket Elektro 1.5.0): neue Fassungen der drei Prüfungen der elektrischen Anlage nennen sie im Geltungsbereich, und die Anlagenart hat das Merkmal "Anlage besonderer Art". Bisher hing die Pflicht nur an der Niederspannungsanlage, an der eine PV-Anlage oft gar nicht als Teil erfasst ist, und die PV-Anlage stand ohne Vorschlag da.
- Ein Release spiegelt beide Abbilder mit ihren Signaturen nach Docker Hub, als
opengewerk/opengewerk-haustechnikundopengewerk/opengewerk-haustechnik-backup, wie OpenGewerk es seit 0.4.0 tut (#494). Wer dort sucht, findet die Haustechnik neben OpenGewerk, undcosign verifygilt dort wie in ghcr.io; das Paket holt weiter aus ghcr.io. Ohne die SecretsDOCKERHUB_USERNAMEundDOCKERHUB_TOKENtut der Job nichts, und die Release-Seite nennt Docker Hub nur, wenn gespiegelt wird. - Ein Verteiler steht in einem Gebäude und, wo bekannt, in einem Raum (#495): im Gebäude seiner Niederspannungsanlage oder in einem, das sie versorgt. Bisher ließen sich die Unterverteilungen eines Gebäudes, das eine Anlage aus einem anderen Gebäude versorgt, nur in deren Akte aufnehmen, und das Gebäude zeigte sie nicht. Die Seite eines Gebäudes im Büro und vor Ort hat jetzt eine Karte "Verteiler" mit "Verteiler aufnehmen", der Dialog eines Verteilers fragt nach Gebäude und Raum, und die Akte der Anlage nennt das Gebäude jedes Verteilers. Vorhandene Verteiler stehen im Gebäude ihrer Anlage (Migration 0100); ihr Bereich bleibt der der Anlage.
Geändert
- Die Auskunft über eine Person als JSON enthält keinen Linienzug einer Unterschrift mehr, an seiner Stelle steht „Schriftzug im PDF der Auskunft“ (#457). Eine Datei, die jedes Programm ändern kann, soll keine Unterschrift tragen, die sich unter einen anderen Text setzen ließe; das PDF der Auskunft zeichnet sie weiter, und keine Tabelle der Anwendung enthält eine.
- Der Renderer für PDFs läuft auf
browserless/chromium2.57.1 wie im Fundament, und Vite steht auf 8.3.3. - Das Security-Review steht auf
731e352von opengewerk/.github (OpenGewerk/.github#45): hebt ein Pull Request das Submodul an, holt es den Diff des Fundaments vorher aus dessen öffentlichem Repository, statt ihn offen zu lassen. - Die Prüfung der Breiten misst ohne Service Worker und wartet höchstens zehn Sekunden auf ein ruhiges Netz (#492); sie war an
/einstellungen/protokollgelegentlich rot.
Sicherheit
- Das Fundament steht auf
6b50301(OpenGewerk/opengewerk#722, #720, #721) und schließt damit die vier Wege, die Teil 2 der Sicherheitsprüfung (#360) gefunden hat: das Geheimnis der Authenticator-App und ihr Abschalten sind ohne Bestätigung nicht mehr erreichbar, neue Wiederherstellungscodes verlangen Passwort und Code und werden per E-Mail gemeldet, die Verwaltung der Instanz und ein Betreiber mit Einladung für jemand anderen ändern sich nur nach der Bestätigung und werden allen Konten der Verwaltung gemeldet, ungenutzte Routen von better-auth sind abgeschaltet, und das gespeicherte Passwort eines Mailservers geht nie mit weniger Verschlüsselung hinaus. Die beiden neuen E-Mails stehen in den Worten dieser Anwendung.
Installieren und aktualisieren
Das Paket opengewerk-haustechnik-0.1.10.tar.gz enthält den Ordner opengewerk-haustechnik mit docker und den Skripten des Fundaments, mit denen er startet. Zum Installieren entpacken, mit tar --no-same-owner -xzf opengewerk-haustechnik-0.1.10.tar.gz, und im Ordner opengewerk-haustechnik sh docker/start.sh aufrufen. Für ein Update das neue Paket genauso an dieselbe Stelle entpacken, die .env bleibt, und derselbe Befehl. Gebaut wird dabei nichts, geholt werden die Abbilder dieser Fassung, für x86_64 und ARM64:
ghcr.io/opengewerk/opengewerk-haustechnik:0.1.10(sha256:6730f210c3510dcc39d4c1139c84b6fb75b1c326d253ebc119888688b5f9b7a7)ghcr.io/opengewerk/opengewerk-haustechnik-backup:0.1.10(sha256:9bb1b0b027ff357228db1e2eb805b58af185ce4d8095021c0680c5e59fc050a9)
Gebraucht werden Docker und Docker Compose ab 2.22. Neben OpenGewerk auf demselben Server läuft die Haustechnik mit eigenem Port, eigenem Hostnamen, eigener Datenbank und eigenem Namen des Compose-Projekts. Beide Abbilder sind ohne Schlüssel über Sigstore signiert. Prüfen:
cosign verify ghcr.io/opengewerk/opengewerk-haustechnik:0.1.10 \
--certificate-identity https://github.com/opengewerk/opengewerk-haustechnik/.github/workflows/release.yml@refs/tags/v0.1.10 \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
cosign verify ghcr.io/opengewerk/opengewerk-haustechnik-backup:0.1.10 \
--certificate-identity https://github.com/opengewerk/opengewerk-haustechnik/.github/workflows/release.yml@refs/tags/v0.1.10 \
--certificate-oidc-issuer https://token.actions.githubusercontent.comOpenGewerk Haustechnik 0.1.9
Diese Fassung enthält eine Sicherheitskorrektur. Was betroffen war, steht im Abschnitt „Sicherheit“ und im Advisory. Wer OpenGewerk Haustechnik betreibt, aktualisiert bitte bald.
Die fünfte Zwischenfassung für den Pilotbetrieb, mit den Korrekturen aus der externen Sicherheitsprüfung (#360) und dem, was aus Phase 2 seit 0.1.8 fertig ist. Elf Lücken sind geschlossen, die Advisories erscheinen mit dieser Fassung. Unter anderem liest die Anmeldung keinen Körper mehr ohne Grenze, der zweite Faktor gehört zur Sitzung, der Abgleich gibt einer eigenen Rolle nur, was ihr auch das Büro zeigt, eine Datei nennt nur, wer sie abgelegt hat oder sie schon sieht, den Mailserver der Instanz ändert niemand mehr ohne Bestätigung und ohne dass die Betreiber es erfahren, Erinnerungen und Aufgaben erreichen nur jemanden, der den Bereich sieht, und die Sicherung kommt nur fertig und verschlüsselt auf das Ziel. Die Dienste laufen gehärtet, der Renderer in einem eigenen Netz, und das Paket nennt jedes Abbild mit Digest und prüft seine Signatur vor dem Start.
Aus Phase 2 kommen die Elektro-Struktur unter einer Niederspannungsanlage mit dem Stromkreisverzeichnis und Messungen je Stromkreis, die PV-Struktur unter einer PV-Anlage, eine zweite Nummer „Mobil“ am Ansprechpartner und Fotos aus der Galerie an allen Fotoknöpfen vor Ort. Die Dokumente eines Vorgangs, der nach Ablauf der Aufbewahrung geleert wird, gehen jetzt endgültig, und eine neue Fassung wird von selbst übernommen.
Aktualisiert wird wie bei jeder Fassung in zwei Schritten, vorher gesichert; die Migrationen 0091_contact_mobile bis 0099_purge_attachments laufen von selbst. Danach meldet sich neu an, wer nur mit dem Passwort auf einem Konto mit Authenticator-App angemeldet war, und Sicherungen von vor dem Update spielt restore.sh nur mit --skip-origin-check zurück. Startet die Anwendung nicht, steht im Protokoll, was ihrer Datenbankrolle fehlt; eine Instanz aus dem Paket ist richtig eingerichtet.
Hinzugefügt
-
Vorlagen für den Reverse Proxy unter
docker/proxy/,apache.conffür Apache 2.4 undnginx.conffür nginx, jede für sich vollständig: die Weiterleitung von HTTP auf HTTPS, das Zertifikat unter dem Pfad, den certbot anlegt, der Proxy auf127.0.0.1:23800mit Host, Protokoll und ergänztemX-Forwarded-For, 600 Sekunden für lange Drucke wie das Buch einer Anlage mit seinen Nachweisen und keine Sicherheits-Header. Überall gelten 2 MB, 50 MB nur an den Routen, die eine Datei nehmen (/files/,POST /sync,/imports/, das Foto einer Meldung, der Nachweis einer Qualifikation), und 12 MB am Foto einer Meldung über ein Etikett, das ohne Anmeldung kommt. Apache vergleicht dafür die angegebene Länge mit mod_rewrite, dennLimitRequestBodygilt nicht für eine Anfrage, dieProxyPassweiterreicht. Jede Zeile, die zur eigenen Instanz passen muss, trägt einen Kommentar, und beide liegen im Installationspaket, was der Lauf „Installationspaket“ jetzt prüft. Das README hat dazu den Abschnitt „Reverse Proxy“ unter „Betrieb“. Warum: wer installiert, musste sich den vHost bisher selbst zusammensetzen, und ohne eigene Grenzen für die Fotos, Nachweise und Tabellen hätte eine Vorlage nach dem Muster des Fundaments dort alles über 2 MB abgelehnt. -
Die PV-Struktur unter einer PV-Anlage (#461): Wechselrichter, Strings und Module aus dem Fundament (ADR 0014 in
opengewerk), mit Migration0094_photovoltaic_structure. Das Paket Elektro bringt in der Fassung 1.4.0 die Anlagenart „PV-Anlage“ (elektro.photovoltaic_installation, Kostengruppe 442, ohne eigene Pflichtart, bis zur Abnahme gekennzeichnet). Jede der drei Tabellen trägt Anlage, Liegenschaft und Bereich und hält Mandant, Bereich und die Grenzen eines Prüfers wie die Elektro-Struktur; die Datenbank nimmt einen Wechselrichter nur unter einer PV-Anlage an (Fehlerklasse HT015), eine solche Anlage behält ihre Art, solange sie Wechselrichter hat, und was unter einem gelöschten Teil hängt, wird mitmarkiert. Ein Wechselrichter sagt dazu, wo er hängt. In der Anlagenakte steht die Karte „Wechselrichter“ und unter den Stammdaten die Leistung der Anlage aus ihren Modulen („9,60 kWp aus 24 Modulen“), jeder Wechselrichter hat im Büro seine Seite mit seinen Strings und ihren Modulen, und vor Ort wird die Struktur auch ohne Netz aufgenommen, die Seriennummer eines Moduls mit der Kamera vom Code auf seinem Etikett. Aufnehmen und Ändern verlangen „Anlagen aufnehmen“, Entfernen „Anlagen pflegen“. Speicher, Zähler und Wallbox nennen keine PV-Anlage. In der Vorschau hat die „PV-Anlage Dach Halle 1“ einen Wechselrichter mit zwei Strings zu je zwölf Modulen. Warum: Moritz hat an #180 entschieden, dass die PV-Anlagen aus OpenGewerk auch hier aufgenommen werden, und seit OpenGewerk/opengewerk#678 liegt ihre Struktur im Fundament. -
Im Menü der Person im Büro und im Bereich der Instanz steht „Zur Ansicht für vor Ort“ mit der Zeile „Große Knöpfe, auch ohne Netz“ (#464), aus dem Fundament (OpenGewerk/opengewerk#681, mit dem Submodul
upstream/opengewerkauf061ced3angehoben wie zu #465). Der Eintrag öffnet/m/und merkt sich die Wahl, sodass/auf diesem Gerät danach in die Ansicht für vor Ort führt, bis dort „Zur Büroansicht“ gewählt wird. Warum: vom Schreibtisch oder vom Tablet in der Desktop-Ansicht kam man bisher nur über die Leiste mit dem Vorschlag dorthin, die nicht immer erscheint, sonst über/mvon Hand. -
Messungen je Stromkreis im Paket Elektro, Fassung 1.3.0 (#350): die Formulare
installation_initial_test(Erstprüfung nach DIN VDE 0100-600) undinstallation_test(wiederkehrende Prüfung der elektrischen Anlage) mit einer Gruppe „Messen je Stromkreis“, die einen Block für jeden Stromkreis der Anlage hat. Schutzleiter, Isolationswiderstand, Schleifenimpedanz, Auslösestrom und Auslösezeit werden gegen die Regeln ausregeln/vde.jsonbeurteilt, mit denselben Werten und Fundstellen wie im Paket Elektro von OpenGewerk; die Grenzwerte der Schleifenimpedanz und des Auslösestroms berechnen die Rechner des Fundaments aus Charakteristik, Nennstrom und Bemessungsdifferenzstrom des Stromkreises. Die drei Pflichtarten der Prüfung der elektrischen Anlage nennen in ihrer zweiten Fassung das Formularinstallation_testneben dem Bericht. Die Formular-Engine kennt dafür die Listecircuits, die Einheit Millisekunden und die beiden berechneten Grenzwerte, und der Bau des Katalogs verlangt, dass ein berechneter Grenzwert in einer Gruppe je Stromkreis steht und die Regeln, die er liest, im Katalog stehen. Eine Antwort in einem solchen Block gehört zu einem Stromkreis der Anlage, ein Messwert wird mit den Angaben seines Stromkreises beurteilt, vor der Unterschrift fehlt jeder Stromkreis ohne Antwort, und ein Mangel aus einem solchen Block nennt Gruppe und Stromkreis und trägt den Stromkreis. Die unterschriebene Seite nennt die Stromkreise nur, wo es welche gibt, damit jede ältere Seite ihren Fingerabdruck behält. Gerät und Server bilden diese Seite gleich: hat das Formular des Vorgangs eine Gruppe je Stromkreis, stehen alle Stromkreise seiner Anlage darauf, Verteiler für Verteiler in der Reihenfolge des Stromkreisverzeichnisses. Der Abgleich nimmt eine Antwort in einem solchen Block nur für einen Stromkreis der Anlage des Vorgangs an, auf dem Gerät schon vor dem Einreihen. Mit der Unterschrift wird ein Messwert außerhalb seines Grenzwerts ein Mangel an der Anlage, der seinen Stromkreis in der neuen Spaltecircuit_idträgt (Migration0093_defect_circuit, Fremdschlüssel auf einen Stromkreis derselben Anlage, beim Entfernen des Stromkreises leer). Der eingefrorene Stand des Nachweises (Fassung 14) behält die Stromkreise mit Verteiler, Schutz und Platz, jede Antwort eines Blocks nennt ihren Stromkreis und den berechneten Grenzwert, und das PDF zeigt die Messungen als Tabelle je Verteiler mit Grenzwert der Schleifenimpedanz, Werten außerhalb fett und rot und einer Legende mit den Fundstellen. Ältere Stände bleiben unverändert lesbar. In der Vorschau ist die Prüfung der „Elektrischen Anlage Halle 1“ begonnen, mit den ersten drei Stromkreisen gemessen. Vor Ort zeigt das Protokoll im Abschnitt „Messen“ die Stromkreise der Anlage Verteiler für Verteiler als Karten mit Schutz und Stand („noch offen“, „n von m“, „fertig“, „außerhalb des Grenzwerts“); eine Karte öffnet den Block des Stromkreises, ein Punkt seinen Bildschirm mit dem Stromkreis im Kopf und dem berechneten Grenzwert mit Fundstelle, und der Wert geht mit der Kennung des Stromkreises als Block in den Postausgang. Fertig ist ein Block, sobald „Stromkreis in Ordnung“ beantwortet ist. Hat die Anlage noch keinen Stromkreis, sagt der Abschnitt es und führt, wer Anlagen aufnimmt, zu den Verteilern. Das Ergebnis nennt bei einem Mangel und einem offenen Punkt den Stromkreis. Im Büro zeigt der Nachweis die Messungen als Tabelle wie das PDF, aus derselben Funktion der Domäne, und ein Mangel nennt seinen Stromkreis mit dem Weg zu ihm. Damit der Einstieg vor Ort unter seinem Budget bleibt, werden die Abgabe eines Rundgangs, die Unterschrift eines Sammelvorgangs und seine Liste, der Ablesegang, der Scan im Rundgang und das Melden eines Mangels mit ihrer Adresse nachgeladen, wie die neuen Bildschirme der Stromkreise. Warum: Abschnitt 5 des Konzepts sieht die Messwerte je Stromkreis im Paket Elektro für Phase 2 vor, und Moritz hat am 15.10.2026 entschieden, dass ihre Grenzwerte wie in OpenGewerk als Regeln mit Norm, Ausgabe und Abschnitt stehen und ein Wert außerhalb ein Mangel an der Anlage mit dem Stromkreis wird. -
Die Elektro-Struktur unter einer Niederspannungsanlage (#349): Verteiler, Felder, Stromkreise und Betriebsmittel aus dem Fundament (ADR 0014 in
opengewerk, Submodul angehoben), mit Migration0092_electrical_structure. Jede der vier Tabellen trägt Anlage, Liegenschaft und Bereich und hält Mandant, Bereich und die Grenzen eines Prüfers wie jede Tabelle mit Ort; die Datenbank nimmt einen Verte...
OpenGewerk Haustechnik 0.1.8
Die vierte Zwischenfassung für den Pilotbetrieb, mit dem, was aus Phase 2 seit 0.1.7 fertig ist. Drei Pakete kommen dazu, Raumluft und Kälte, Heizung sowie Förderanlagen und Arbeitsmittel, mit dem Landesrecht für sie, dazu einmalige Pflichten und das Anlagenbuch einer Anlage. Für den Datenschutz erzeugt die Anwendung die Verfahrensbeschreibung, das Verzeichnis der Verarbeitungstätigkeiten, die technischen und organisatorischen Maßnahmen und das Löschkonzept selbst, die Leitung gibt die Auskunft über eine Person und schwärzt einen Wert im Änderungsprotokoll, und das Ende eines Zugangs ist eine Frist. Im Rundgang kommt ein Foto auch aus der Galerie, ein Punkt nimmt mehrere Fotos, an jedem Punkt und bei jeder Antwort, und eine Antwort lässt sich zurücknehmen.
Behoben ist, dass Fotos eines Rundgangs auf dem Telefon nach einer Sekunde verschwanden, wenn die Person nur den Bereich des Gebäudes hat: der Server legte sie als Konflikt ab, und ein Telefon, das im Büro angemeldet und vor Ort weitergeschickt wurde, sah diese Konflikte nicht. Beides ist behoben; nach dem Update sieht ein solches Telefon die Konflikte, die schon liegen.
Aktualisiert wird wie bei jeder Fassung in zwei Schritten, vorher gesichert. Acht Migrationen kommen mit (0083_one_time_duties bis 0090_more_answer_photos); mit ihnen bekommt die Rolle Leitung bestehender Betreiber das Recht, die Dokumente zum Datenschutz zu erzeugen. Eine Antwort von vorher behält ihre Seite, jede Unterschrift von vorher gilt weiter.
Hinzugefügt
-
Mehrere Fotos zu einem Punkt (#451): ein Prüfpunkt und ein Foto-Feld nehmen Fotos aus der Kamera und aus der Galerie, dort auch mehrere auf einmal, bei jeder Antwort und schon vor ihr, in der Liste eines Protokolls mit zwei kleinen Knöpfen an jedem Punkt. Jedes Foto nimmt der Knopf in seiner Ecke wieder heraus, solange die Antwort sich ändern lässt. Das erste Foto bleibt in
attachment_id, die weiteren stehen in der neuen Spaltemore_attachment_ids(Migration 0090), die ein Trigger an Dokumente des Vorgangs bindet. Die unterschriebene Seite nennt sie nur, wo es welche gibt, so dass jede Unterschrift von vorher weiter gilt; der Nachweis hält sie alsmorePhotos(Fassung 13 seines Stands), und das PDF zeigt jedes Foto. Warum: Moritz am 19.10.2026, „Man muss auch mehrere Fotos hinzufügen können“, und Fotos sollen an jedem Punkt gehen, nicht nur bei „nicht in Ordnung“. -
Verzeichnis der Verarbeitungstätigkeiten, technische und organisatorische Maßnahmen und Löschkonzept (#358): unter „Einstellungen“, „Datenschutz“ erzeugt die Leitung jedes der drei Dokumente als PDF, und jede Fassung bleibt mit ihrem Tag. Für das Verzeichnis pflegt sie auf einer eigenen Seite, wer verantwortlich ist, den Datenschutzbeauftragten und je Tätigkeit Zweck, Rechtsgrundlage und Empfänger; Zweck und Rechtsgrundlage schlägt die Anwendung vor, bis die Leitung sie bestätigt. Die 13 Tätigkeiten nennen die Abschnitte der Verfahrensbeschreibung, aus denen sie kommen, und ein Test hält, dass jeder Abschnitt 3 in einer steht. Teil A der Maßnahmen ist die Vorlage
packages/server/templates/measures.md, deren Aussagen Belege aus Anhang A nennen; Teil B und die Unterauftragsverarbeiter pflegt die Verwaltung der Instanz im Bereich der Instanz unter „Maßnahmen“ (OpenGewerk/opengewerk#672; Spalten, Migration 0088 und Sätze kamen mit #452). Das Löschkonzept nennt jede Stelle in Anwendung und Fundament, die Zeilen löscht, als Regel oder als Entfernen von Hand, und ein Test wird rot, sobald eine dazukommt. Neue Tabellenprivacy_documents,processing_record_settingsundprocessing_record_activities(Migration 0089). Warum: Art. 30 und 32 DSGVO verlangen das Verzeichnis und die Maßnahmen, und bisher musste ein Betreiber sie von Hand schreiben, ohne zu wissen, was die Anwendung tatsächlich hält. -
Rundgänge: ein Foto zu einem Punkt auch aus der Galerie, und eine Antwort lässt sich zurücknehmen. Neben „Foto aufnehmen“, das sofort die Kamera öffnet, steht „Aus der Galerie“ (aus dem Fundament,
PhotoTaker). Unter einem Prüfpunkt, einer Auswahl und Ja oder Nein nimmt „Auswahl zurücknehmen“ die gegebene Antwort zurück, solange sie sich ändern lässt; der Punkt ist dann wieder offen, und Bemerkung und Foto eines Prüfpunkts bleiben auf dem Bildschirm und gehen mit der nächsten Antwort. Warum: im Rundgang ließ sich kein Foto hinzufügen, das schon gemacht war, und eine Antwort ließ sich nur ändern, nicht zurücknehmen. Das Submodulupstream/opengewerksteht dafür auf09e8dd7(OpenGewerk/opengewerk#671, #672 und #673, die einzigen Commits nachfc3116caufmaindes Fundaments). Weil #672 dazwischen liegt, kommt seine Migration hier als 0088 mit: Teil B der Maßnahmen und die Unterauftragsverarbeiter als zwei Spalten der Einstellungen der Instanz, die erst #358 liest. Die Sätze des Bildschirms dazu, die das Fundament seit #672 von jeder Anwendung verlangt, stehen schon hier. -
Die Auskunft über eine Person (#355): unter „Einstellungen“, „Datenschutz“ erzeugt die Leitung, die alle Bereiche sieht, alles, was die Anwendung über eine Person hält, als PDF zum Lesen und als JSON zum Mitnehmen, für eine Person mit Zugang über den Zugang und für eine ohne über eine Suche nach Name oder E-Mail-Adresse. Jedes Feld aus Anhang B der Verfahrensbeschreibung liest einer ihrer Abschnitte, ein Test hält beide gleich; über andere Personen steht nichts darin. Warum: Art. 15 und 20 DSGVO verlangen eine vollständige Kopie, und sie von Hand aus jedem Modul zu sammeln, ging bisher nicht.
-
Einen Wert im Änderungsprotokoll schwärzen (#355): die Leitung leert den Wert davor oder danach eines Eintrags, mit Grund, und die Prüfung der Kette geht weiter durch. Das Fundament bringt es mit (ADR 0013 in
opengewerk), Migration 0087 bringt es in diese Anwendung, und das Submodulupstream/opengewerksteht auffc3116c(OpenGewerk/opengewerk#670). Warum: das Konzept sagt, dass ein personenbezogener Wert geschwärzt wird und die Kette ganz bleibt, und bisher stand jeder Wert für immer im Klartext. -
Eine Vorlage für eine Betriebs- oder Dienstvereinbarung (#359) unter
docs/vereinbarung/, mit Hinweisen für Betriebsverfassungsgesetz, Personalvertretungsrecht und kirchliches Recht. Sie verweist auf die erzeugte Verfahrensbeschreibung als Anlage, statt sie abzuschreiben; was die Anwendung selbst hält, steht als Zusage mit dem Beleg aus Anhang A der Verfahrensbeschreibung, und ein Test hält, dass jede Zusage einen Test hat. Nicht rechtlich geprüft und so gekennzeichnet. Warum: Eine Arbeitnehmervertretung soll eine Vereinbarung verhandeln können, deren Zusagen die Anwendung nachweislich hält. -
Die Verfahrensbeschreibung erzeugt die Anwendung jetzt selbst (#357): unter „Einstellungen“, „Datenschutz“ macht die Leitung sie aus einer Vorlage und dem, was beim Betreiber eingestellt ist, mit dem neuen Teil „Bei diesem Betreiber“ (Rollen mit der Zahl ihrer Zugänge und den Rechten der eigenen, Namen und Uhrzeiten auf dem Leistungsnachweis, Störmeldung über das Etikett, Aufbewahrung, Frist nach dem Ende eines Zugangs, Mailserver, Erinnerung je Fristart). Jede Fassung bleibt mit ihrem Tag und ihrem Text, die Liste nennt die geänderten Abschnitte, und jede gibt es als PDF. Die Datei im Repository ist die Vorlage mit den Vorgaben, ein Test hält beide gleich. Neues Recht „Auskunft, Verfahrensbeschreibung und Verzeichnis erzeugen“ nur für die Leitung, Migration 0086. Warum: Die von Hand geschriebene Fassung konnte nicht sagen, was ein Betreiber eingeschaltet hat, und eine Arbeitnehmervertretung soll die Beschreibung ihres Betreibers in der Hand haben und sehen, was sich geändert hat.
-
Das Ende eines Zugangs als Frist (#356): Am Tag nach dem letzten Tag gehen die offenen Vorgänge und Pläne von Rundgängen der Person an die Planung zurück, ihre Aufgaben an die Person, die sie angelegt hat, sonst an die Leitung, und ihre Pflichten stehen ohne Verantwortlichen. Nach einer Frist, die die Leitung unter „Zugänge“ einstellt (ohne Einstellung neunzig Tage), entfernt der Lauf der Fristen Geräte, Passkeys und Geräte für Push-Nachrichten, und wo das Konto nirgends mehr arbeitet auch E-Mail-Adresse, zweiten Faktor und Passwort; der Name bleibt in den Nachweisen. Beides steht unter „Fristen“, den Namen sieht dort nur, wer Zugänge verwaltet. Im Dialog eines Zugangs steht unter dem letzten Tag, was noch an der Person hängt. Migration 0085. Das Submodul des Fundaments geht von
e8d66faaufe516659, dazwischen liegt nur opengewerk#669 (removeAccountData,afterLastDay), aufmaindes Fundaments. Warum: Wer den Betreiber verlässt, behielt bisher Konto und Geräte, und was ihr zugeteilt war, blieb bei ihr liegen. -
Landesrecht für die Pakete aus Phase 2 (#354): Die Prüfung der Anlagen einer Versammlungsstätte nennt in ihrer zweiten Fassung auch Lüftungs- und Klimaanlagen (§ 37 Abs. 1 Nr. 1 VStättVO BW), die einer Garage die maschinelle Zu- und Abluft und die CO-Warnanlage (§ 16 Abs. 1 Nr. 4 und 5 GaVO BW). Das Paket Raumluft und Kälte bringt dafür die Anlagenart CO-Warnanlage. Eine bestätigte Pflicht meldet die neue Fassung. Warum: Diese Prüfungen musste ein Betreiber in Baden-Württemberg bisher als eigene Pflicht führen. Für Heizung, Aufzüge und Arbeitsmittel verlangen die drei Verordnungen keine Prüfung.
-
Das Paket Förderanlagen und Arbeitsmittel (#353): Aufzugsanlagen mit Haupt- und Zwischenprüfung durch eine zugelassene Überwachungsstelle nach der BetrSichV und ihrer Instandhaltung, Druckbehälter mit äußerer und innerer Prüfung und Festigkeitsprüfung je nach prüfender Stelle mit den Höchstfristen aus Anhang 2 Abschnitt 4, kraftbetätigte Türen und Tore nach der ASR A1.7, Leitern und Tritte nach der DGUV Information 208-016 und Regale nach der TRBS 1201, dazu drei Formulare und vier Arten der Qualifikation. Eine Frist aus einer Technischen Regel oder einer DGUV-Information ist ein Richtwert (entschieden am 18.10.2026). Warum: Aufzüge und Druckbehälter haben Höchstfristen, die ein Betreiber bisher nur als eigene Pflic...