• florian.wilde released this 2026-09-01 14:40:31 +00:00 | 2 commits to main since this release

    Diese Fassung geht aus einer Fehlersuche im laufenden Betrieb hervor. Ein Schreiben ließ sich nicht in der Akte ablegen — und hinter derselben Meldung lagen nacheinander drei verschiedene Ursachen. Beim Nachsehen kam ein vierter Punkt dazu, der schwerer wiegt als alle anderen zusammen.

    Nach dem Update

    docker compose up -d
    docker compose exec sicherung /bin/sh /sicherung.sh
    

    Erwartet: Datenbank gesichert, Dokumente gesichert, Selbstpruefung bestanden - Datenbank und Dokumente.

    Wer die Notlösung mit MINIO_KMS_SECRET_KEY im Einsatz hat, kann sie danach entfernen — vorher aber einmal ein vorhandenes Dokument herunterladen und prüfen, ob es sich öffnen lässt.

    Behoben

    • Dokumente waren in keiner Sicherung. Nach einem Plattenschaden wäre die Akte vollständig wiederhergestellt worden — mit allen Prüfsummen, aber ohne eine einzige Datei dahinter. Je Lauf entstehen jetzt zwei verschlüsselte Dateien; schlägt der Dokumententeil fehl, bricht der Lauf ab.
    • Der mitgelieferte Objektspeicher konnte keine Dokumente aufnehmen. Die Anwendung verlangte serverseitige Verschlüsselung, die das mitgelieferte MinIO ohne Zusatzdienst nicht kann. Jetzt abschaltbar und standardmäßig aus.
    • „Das Schreiben konnte nicht abgelegt werden" sagte nichts. Jetzt steht dort, was los ist und was zu tun ist.
    • Zwei Einstellungen erreichten die Anwendung nie — ERSTEINRICHTUNG_GEHEIMNIS und VERTRAUE_PROXY wurden nicht an den Behälter durchgereicht.
    • Die Beispielkonfiguration zeigte auf einen fremden Anbieter.

    Neu

    • Die Anwendung prüft ihre Dateiablage selbst — Ergebnis unter /api/gesundheit und im Log.
    • Neuer Abschnitt in der Anleitung: „Wo deine Daten liegen", samt Abgleich zwischen Akte und Speicher.

    Geändert

    • Ausschlussfristen warnen nur noch, wenn sie näherrücken (90 Tage; Versäumtes immer). Auf dem Dashboard standen sonst dauerhaft drei rote Kästen für Fristen der Jahre 2027 bis 2029.

    Einzelheiten im Changelog.

    Downloads
  • florian.wilde released this 2026-08-24 10:35:51 +00:00 | 18 commits to main since this release

    Diese Fassung geht aus einer Sicherheitsprüfung hervor (#38). Sie ändert
    nichts an der Bedienung, schließt aber mehrere Lücken — darunter drei, bei
    denen im Code eine Zusage stand, die so nicht galt.

    Vor dem Update: zwei neue .env-Zeilen

    ERSTEINRICHTUNG_GEHEIMNIS=<zufällig, npm run schluessel erzeugt einen>
    VERTRAUE_PROXY=true
    
    • Ohne ERSTEINRICHTUNG_GEHEIMNIS läuft alles weiter, nur der erste
      Zugang ließe sich nicht anlegen. Auf einer bestehenden Installation ist
      das richtig so.
    • Ohne VERTRAUE_PROXY=true zählt die Anmeldesperre nur noch nach
      E-Mail-Adresse, nicht mehr zusätzlich nach Anschluss.

    Nach dem Update, nur mit Objektspeicher

    npm run speicher:verschluesseln -- --anwenden
    

    Schreibt bereits abgelegte Dateien in den Umschlag um. Lesen funktioniert
    währenddessen durchgehend, der Lauf lässt sich abbrechen und wiederholen.

    Behoben

    • Der zweite Faktor war eine Anzeige, keine Grenze. Durchgesetzt wurde
      er nur im App-Layout; Server Actions und Downloads liefen daran vorbei.
    • Ein Dokumenten-Download fragte nur nach der Anmeldung.
    • Die Anmeldesperre sperrte dauerhaft aus. Jeder Versuch während einer
      Sperre verlängerte sie um die volle Dauer — damit ließ sich ein fremder
      Zugang aussperren, ohne dessen Passwort zu kennen.
    • Ein Code aus der Authenticator-App galt bis zu 90 Sekunden mehrfach.
    • Passkeys ließen sich ohne Rückfrage anlegen und entfernen.
    • Die Ersteinrichtung stand offen und war nicht atomar.
    • Dateien im Objektspeicher lagen mit dem Schlüssel des Anbieters da.
    • Ein präpariertes PDF konnte den Server umbringen —
      Dekompressionsbombe und unbegrenzte Bildgröße beim Rendern.
    • 32 Schwachstellen in Paketen, davon 5 kritische → keine.

    Geändert

    • Downloads laufen jetzt immer über die Anwendung, auch mit Objektspeicher.
      Nebeneffekt: Jeder Abruf prüft die Berechtigung und wird protokolliert.
    • docs/SICHERHEIT.md ist neu: Bedrohungsmodell, OWASP-Durchgang, und ein
      Abschnitt darüber, was ausdrücklich nicht geschützt ist.

    Einzelheiten im Changelog.

    Downloads
  • florian.wilde released this 2026-08-23 22:37:06 +00:00 | 29 commits to main since this release

    Wichtig, wenn du von einer Fassung vor 1.10.0 aktualisierst.

    scripts/update.sh brach beim Sprung von 1.5.0 auf 1.10.1 mitten in der Ausgabe ab — ohne Fehlermeldung. Ursache war eine abgeschnittene Leitung (git log … | head -15): Der Erzeuger bekam SIGPIPE, pipefail reichte es weiter, set -e beendete das Skript stumm. Die Schwelle lag exakt bei 15 Commits, und 1.10.0 war die erste Fassung darüber.

    Dieselbe Falle steckte in der Selbstprüfung von sicherung.sh. Dort hätte sie mit wachsender Datenbank eine intakte Sicherung als kaputt gemeldet und das Update verweigert.

    Zusätzlich meldet update.sh jetzt bei jedem unerwarteten Ende Zeilennummer und Exitcode, statt kommentarlos zu verschwinden. Ein Test verbietet das Muster künftig in allen Betriebsskripten.

    Wenn dein Server noch auf einer Fassung vor 1.10.2 steht, hat er das alte Skript — und der Fehler steckt vor dem Umschalten. Deshalb zuerst nur das Skript holen:

    git fetch --tags
    git checkout v1.10.2 -- scripts/update.sh
    ./scripts/update.sh
    

    Vollständiger Eintrag: CHANGELOG.md

    Downloads
  • florian.wilde released this 2026-08-23 19:37:00 +00:00 | 38 commits to main since this release

    Der Beispielfall (SEED_DEMO=true) bringt jetzt 107 Buchungen über zwölf Monate mit. Bisher gab es Konten und Kontostände, aber keine einzige Buchung — Kassenbuch, Belegpflicht, Dauerzahlungen und die Erkennung wiederkehrender Zahlungen liefen darin leer.

    Das Heimentgelt steht in drei Schreibweisen auf dem Auszug und wird trotzdem als eine monatliche Zahlung geführt. Genau eine Buchung hat weder Quittung noch Begründung. Der Kontostand zum Stichtag wird aus Anfangsstand und Buchungen gerechnet, nicht behauptet.

    Behoben: „gGmbH" fehlte in der Rechtsformliste — dadurch zerfielen Zahlungsgruppen ausgerechnet dort, wo fast jeder Träger eine gGmbH ist.

    An einem bestehenden Bestand ändert sich nichts.

    Vollständiger Eintrag: CHANGELOG.md

    Downloads
  • florian.wilde released this 2026-08-23 18:30:35 +00:00 | 40 commits to main since this release

    Neu: Unter Mein Konto → Meine Anschrift einmal Straße, PLZ und Ort hinterlegen. Ab da stehen sie im Absenderblock jedes erzeugten Schreibens, und die Datumszeile lautet „Bayreuth, den 23.08.2026". Bisher ging jeder Brief ohne Rücksendeadresse hinaus.

    Was fehlt, bleibt weg: Jede Angabe ist einzeln freiwillig — keine leeren Zeilen, kein Komma ohne Ort.

    Dazu zwei Platzhalter für eigene Vorlagen: {{betreuer_anschrift}} und {{betreuer_ort}}.

    Vollständiger Eintrag: CHANGELOG.md

    Downloads
  • v1.9.0 98d1338eae

    florian.wilde released this 2026-08-23 14:56:08 +00:00 | 48 commits to main since this release

    Neu: Am Vorgang lässt sich ein Kontakt als Ansprechpartner benennen. Die Sachstandsanfrage redet ihn namentlich an, sein Name steht über der Behörde, und Schreiben übernehmen Anrede und Anschrift. Ein namentlich adressierter Brief landet bei der Person, die den Vorgang kennt, statt in der Poststelle.

    Geraten wird nie: Ohne hinterlegte Anrede wird mit vollem Namen angeredet, ohne Ansprechpartner bleibt es bei „Sehr geehrte Damen und Herren". Der Wechsel steht mit Namen im Protokoll.

    Vollständiger Eintrag: CHANGELOG.md

    Downloads
  • v1.8.0 5e7d88cf64

    florian.wilde released this 2026-08-23 13:30:10 +00:00 | 50 commits to main since this release

    Neu: Der zuletzt mitgeteilte Rückkaufswert steht mit Stichtag und Quelle oben auf der Vertragsseite, darunter die vollständige Historie. Ist der Wert älter als ein Jahr, steht das daneben — ein veralteter Betrag ohne erkennbares Alter ist schlimmer als kein Betrag.

    Ohne Migration, und das ist der Punkt: Die Zahl bleibt der Wertstand am Vermögensposten, aus dem auch das Vermögensverzeichnis rechnet. Es gibt genau eine Wahrheit, nicht zwei.

    Behoben: Ein Vertrag konnte zwei Wertreihen bekommen, und bei Verweisen auf Vertrag und Immobilie fehlte die Prüfung, ob sie zur selben Akte gehören.

    Vollständiger Eintrag: CHANGELOG.md

    Downloads
  • v1.7.0 57ce73dfbc

    florian.wilde released this 2026-08-23 12:00:00 +00:00 | 52 commits to main since this release

    Neu unter Einstellungen → Schreibvorlagen: eigene Texte hinterlegen, beim freien Schreiben auswählen. Platzhalter füllen sich aus den Daten, die ohnehin im System stehen; fehlt ein Wert, entsteht eine sichtbare Lücke statt einer stillen Leerstelle. Vier mitgelieferte Vorlagen dienen als Ausgangspunkt.

    Der Bestellungsabsatz wird beim Speichern eingefordert — ohne ihn antwortet keine Versicherung, und das fällt erst nach vier Wochen auf.

    Vollständiger Eintrag: CHANGELOG.md

    Downloads
  • v1.6.0 0a8878d8d2

    florian.wilde released this 2026-08-23 10:18:25 +00:00 | 54 commits to main since this release

    Neu: Vor Vermögensverzeichnis und Jahresbericht braucht es von jeder Lebens- und Rentenversicherung den Rückkaufswert zum Stichtag. Statt fünf bis zehn Einzelbriefe: Stichtag wählen, Liste prüfen, ein Klick. Heraus kommt ein ZIP mit einer Word-Datei je Gesellschaft, dazu je Vertrag die PDF-Fassung in der Akte und die Wiedervorlage.

    Kein Alles-oder-nichts: Scheitert ein Vertrag, laufen die übrigen durch. Ein zweiter Lauf am selben Tag erzeugt nichts Doppeltes.

    Vollständiger Eintrag: CHANGELOG.md

    Downloads
  • v1.5.0 96a9bc4d63

    florian.wilde released this 2026-08-23 09:19:42 +00:00 | 56 commits to main since this release

    Neu: Umschalter Brief/E-Mail im Editor. Die E-Mail-Fassung lässt den Briefkopf weg, behält aber den Bestellungsabsatz. Kurze Texte gehen per mailto: ins Mailprogramm, für lange gibt es einen .eml-Entwurf; abgelegt wird die E-Mail als solche gekennzeichnet.

    Vollständiger Eintrag: CHANGELOG.md

    Downloads