﻿ROGER ROUTER - FUNKTIONIERENDE KONFIGURATION (Stand 28.09.2026)

Installation:  C:\Program Files (x86)\Roger Router   (Version 2.4.90) - NUR diese benutzen
Starten:       Roger-Router-starten.bat in diesem Ordner (setzt GS_LIB auf PDF24-Ghostscript)
Drucker:       "Roger Router (Fax)", Port RogerRouterFax = 127.0.0.1:9100 (RAW), Treiber Microsoft PS Class Driver
Box:           192.168.178.1, CAPI über TCP-Port 5031, Aktivierung am Telefon: #96*3*
Profil:        "Fax Roger Router 6690", Fax-Kontroller 5 ("Internet 2")

Korrekturen gegenüber der Standardinstallation:
 1. libdl.dll fehlte -> in den Programmordner kopiert (Sicherung\libdl.dll)
 2. lib\capi20 fehlte -> Kopie von lib64\capi20 (Sicherung\capi20)
 3. Ghostscript-Dateien (stocht.ps) fehlen -> GS_LIB zeigt auf C:\Program Files\PDF24\gs\lib
    ==> PDF24 darf NICHT deinstalliert oder verschoben werden.

Nicht ändern / nicht tun:
 - Roger Router nicht neu installieren oder aktualisieren (überschreibt die Korrekturen).
 - Keine zweite Installation unter C:\Program Files parallel benutzen (Druckerport-Konflikt).
 - Nur über die .bat starten, sonst fehlt GS_LIB.

Wenn der Drucker verschwindet: Sicherung\Drucker-neu-anlegen.ps1 als Administrator ausführen.
Wenn libdl.dll / lib\capi20 fehlen: Dateien aus Sicherung\ zurückkopieren (Administrator).
Einstellungen (ohne Zugangsdaten): Sicherung\roger-einstellungen.reg


==========================================================================
EIGENE FAX-APP (neu, unabhängig von Roger Router)
==========================================================================
Starten:        FrittenFax-starten.bat      (echter Faxversand)
                FrittenFax-Testmodus.bat    (nichts wird gewählt, zum Ausprobieren der Oberfläche)
Oberfläche:     Fenster "Fritten&Fax" (natives Fenster, WebView2) bzw. http://127.0.0.1:8378/ im Browser (nur dieser PC)
Funktionen:     PDF/Bilder per Drag & Drop, Faxnummer, Kontaktliste, Sendeprotokoll, Einstellungen
Programm:       app\  (server.py, faxcore\, ui\index.html)
Eigene Bausteine (Kopien): app\vendor\  (libcapi20, spandsp, libtiff, Ghostscript) -
                nutzt weder Roger Router noch PDF24.
Daten:          app\data\  (settings.json, contacts.json, history.json) - einfach sichern/kopieren
Voraussetzung:  Python 3.12 (py-Launcher) mit Pillow, CAPI an der Box aktiv (#96*3*)
Sicherheit:     Server lauscht nur auf 127.0.0.1; Senden nur mit Sitzungs-Token aus der Seite.
Hinweis:        vendor\pyhost\python.exe ist eine Kopie von python.exe - nötig, weil das
                CAPI-Treibermodul relativ zum Programm gesucht wird (lib\capi20).

--- Stand 29.09.2026 01:00: ERSTES ECHTES FAX MIT DER EIGENEN APP ERFOLGREICH ---
Wichtige Erkenntnisse (nicht wieder ausbauen!):
 * Audio der Box ist bitweise gespiegelt (REV in faxcore\capi.py), sonst versteht die Gegenstelle nichts.
 * capi20_get_message blockiert, wenn nichts anliegt -> immer erst capi20_waitformessage(0).
 * capi20_put_message braucht einen großen beschreibbaren Puffer (8192 Bytes), sonst Speicherfehler.
 * Das Treibermodul wird relativ zum Programm gesucht -> vendor\pyhost\python.exe nutzen (Start über die .bat).
 * Fehlersuche: app\data\logs\<Zeit>.log (T.30-Meldungen), app\data\crash.log (Abstürze).
Sicherung des funktionierenden Programms: Sicherung\Fritten&Fax-funktionierend-2026-09-29.zip


==========================================================================
Fritten&Fax ALS EIGENSTÄNDIGES PROGRAMM (ohne Python)  - Stand 29.09.2026
==========================================================================
Starten:   FrittenFax.lnk (Verknüpfung in diesem Ordner)  oder  FaxApp-Programm\FaxApp.exe
           Ein zweiter Start holt nur das vorhandene Fenster nach vorne.
Beenden:   Fenster schließen -> Fritten&Fax beendet sich sofort und sauber (Faxempfang, Warteschlange, Druckerport, Server).
           Nur wenn gerade ein Fax gesendet wird, fragt Fritten&Fax vorher nach (Beenden bricht die Übertragung ab).
           Geplante Faxe bleiben erhalten und laufen beim nächsten Start weiter.
           (Nur im Rückfallmodus, siehe unten: nach ca. 30 s von selbst, solange kein Fax läuft und kein Faxempfang eingeschaltet ist.)
Daten:     FaxApp-Programm\data\  (Einstellungen, Kontakte, Protokoll, empfangene Faxe, logs\)
Neu gebaut mit PyInstaller (Quellcode in app\). Änderungen am Programm: app\ anpassen und neu bauen.
Neu in dieser Version:
 * Nur analoges Fax (Auswahl entfernt).
 * Kontakte: nur eigene Liste der App; das FRITZ!Box-Telefonbuch wird nie gelesen. CSV-Import/-Export.
 * Faxvorschau ("So sieht das Fax beim Empfänger aus") und PDF-Ansicht in der App.
 * Faxempfang (Einstellungen, Standard AUS, UNGETESTET): nimmt Anrufe an die Faxnummer nach N Sekunden
   an, speichert das Fax als PDF (Reiter "Empfangen").
Die alten Starter (FrittenFax-starten.bat / -Testmodus.bat) benutzen weiter den Ordner app\ mit Python 3.12.


==========================================================================
Fritten&Fax 2.0 (neue Oberfläche und Funktionen) - Stand 29.09.2026
==========================================================================
Neu: Übersicht, mehrere Empfänger, Deckblatt, Versand planen, automatische Wiederholung, Protokoll mit
     "Erneut senden", Kontakte mit Gruppen/Favoriten (Import CSV/vCard/FRITZ!Box-XML), Sprachen DE/EN/FR/ES,
     Hell/Dunkel, Sicherung/Wiederherstellung. Einzelheiten: README.md, CHANGELOG.md, ROADMAP.md
WICHTIG: Das laufende FaxApp-Programm\FaxApp.exe ist noch die ALTE Version (der Server-Code steckt in der .exe).
         Neue Version ausprobieren OHNE etwas zu ersetzen:
           a) Mit Python: FrittenFax-starten.bat (nutzt den Ordner app\ mit der neuen Version), oder
           b) FrittenFax-neu-bauen.bat  -> erzeugt den Ordner FrittenFax-Programm-neu (Daten werden kopiert).
         Die Fax-Anbindung (capi.py, spandsp.py, receiver.py) ist unverändert. Bitte nach dem Umstieg ein
         echtes Test-Fax senden. Sicherung des alten Stands: Sicherung\Fritten&Fax-funktionierend-2026-09-29.zip

--- Version 2.1: Drucken -> Fritten&Fax, OCR, E-Mail-Weiterleitung ---
Einrichtung: siehe README.md (Abschnitt "Einrichtung der neuen Funktionen"). Drucker: FrittenFax-Drucker-anlegen.ps1
(als Administrator). Diese Teile (Drucker-Skript, Passwort-Verschlüsselung DPAPI) wurden ohne Windows-PC geschrieben -
bitte einmal ausprobieren und Rückmeldung geben.

--- Version 2.2: Meldungen übersetzt, Ordner-Überwachung, Sendebericht, Deckblatt-Vorlage ---
Ordner-Überwachung: Einstellungen -> "Ordner-Überwachung". Dateiname = Faxnummer_Name.pdf (z. B. 04721123456_Rechnung.pdf).
Standardordner: data\watch (Unterordner done\ und failed\ entstehen automatisch).

--- Version 2.2.2: eigenes Programmfenster, App installierbar, Build geprüft ---
Fenster:  Fritten&Fax öffnet sich als eigenes Programmfenster (Edge, sonst Chrome oder Brave im App-Modus, ohne Adressleiste).
          Nur wenn kein solcher Browser gefunden oder gestartet werden kann, erscheint ersatzweise ein normaler Browser-Tab.
          Was tatsächlich benutzt wurde, steht in data\server.log (Zeilen mit "[fenster]").
          Sonderfall: In der Umgebungsvariable FAXAPP_BROWSER kann der Pfad zu msedge.exe/chrome.exe fest vorgegeben werden.
App-Installation (optional): Im normalen Edge http://127.0.0.1:8378/ öffnen -> Menü "Apps" -> "Diese Website als App installieren".
          Die installierte App startet den Fritten&Fax-Server NICHT selbst; läuft er nicht, erscheint eine Hinweisseite. Normalerweise
          startet man weiterhin FrittenFax.exe (oder FrittenFax.lnk).
Neu bauen: FrittenFax-neu-bauen.bat nutzt jetzt FrittenFax.spec (alle Module, Symbol der .exe) und prüft am Ende, ob Oberfläche,
          App-Manifest, Symbole, Schrift und Fax-Bibliotheken im neuen Ordner vorhanden sind.

--- Version 2.2.3: App-Fenster mit eigenem Browserprofil, nur eine Fritten&Fax-Instanz ---
Fenster:  Läuft Edge schon im Hintergrund (Schnellstart), übernimmt er sonst den Aufruf und öffnet nur einen normalen Tab.
          Deshalb startet Fritten&Fax den Browser jetzt immer mit eigenem Profil (--user-data-dir), --no-first-run und
          --no-default-browser-check und --disable-sync (keine Synchronisierung mit einem Konto). Profilordner: %LOCALAPPDATA%\FrittenFax\browser-profil (Edge); Chrome, Brave usw. bekommen
          einen eigenen Ordner (browser-profil-chrome ...), weil sich Browser ein Profil nicht teilen dürfen.
          Das Profil gehört nur Fritten&Fax: eigene Cookies, Einstellungen und Benachrichtigungs-Erlaubnis. Löschen ist gefahrlos.
Zweiter Start: Läuft Fritten&Fax schon, öffnet ein erneuter Start nur deren Fenster und beendet sich sofort (kein zweiter Server).
          Belegt ein fremdes Programm den Port (Standard 8378), erscheint eine Fehlermeldung; Port ändern mit FAXAPP_PORT.
          Unter Windows wird der Port exklusiv belegt, damit sich nie zwei Server denselben Port teilen.

--- Version 2.2.5: zweiter Start holt das Fenster nach vorne, einheitliches Symbol ---
Zweiter Start: Läuft Fritten&Fax schon, wird das vorhandene Fritten&Fax-Fenster nach vorne geholt (auch wenn es minimiert ist).
          Nur wenn keines existiert (z. B. Fenster geschlossen, Programm läuft noch), öffnet sich ein neues.
Symbol:   Das App-Fenster zeigt immer das Fritten&Fax-Symbol (Titelleiste, Taskleiste, Alt+Tab). Eine SVG-Grafik allein reicht Windows
          dafür nicht; Fritten&Fax liefert deshalb faxapp.ico/PNG aus und setzt das Symbol zusätzlich am Fenster.

--- Version 2.2.6: Taskleiste - App-Fenster gruppiert sich mit dem angehefteten Fritten&Fax ---
Warum gab es zwei Einträge? Das App-Fenster gehört dem Browser (Edge/Chrome), nicht FrittenFax.exe. Windows ordnet Fenster und angeheftete
          Symbole über eine "AppUserModelID" zu; Browser-Fenster trugen die Kennung des Browsers, das angeheftete FrittenFax.exe eine andere.
Was Fritten&Fax jetzt tut (alles im Hintergrund; Fehler verhindern nie den Start, sie stehen nur in data\server.log unter "[taskleiste]"):
          1. FrittenFax.exe setzt beim Start die feste Kennung "Maikstrings.FrittenFax".
          2. Das App-Fenster bekommt dieselbe Kennung sowie Startbefehl (FrittenFax.exe), Namen "Fritten&Fax" und Symbol - nach 1, 2, 4, 8 und
             15 Sekunden erneut, weil der Browser das Fenster erst nach dem Laden der Seite stabil hat.
          3. Im Startmenü liegt die Verknüpfung "Fritten&Fax" (%APPDATA%\Microsoft\Windows\Start Menu\Programs\FrittenFax.lnk) mit derselben Kennung.
             Sie wird beim Start angelegt, wenn sie fehlt oder auf einen alten Pfad zeigt (z. B. nach Verschieben des Ordners).
So heftest du Fritten&Fax richtig an:
          1. Einen früher angehefteten Eintrag ZUERST lösen: Rechtsklick auf das Symbol in der Taskleiste -> "Von Taskleiste lösen".
             (Ein alter Eintrag hat eine andere Kennung und würde weiterhin doppelt erscheinen.)
          2. FrittenFax.exe (oder FrittenFax.lnk) einmal starten und warten, bis das Fenster offen ist (spätestens 15 Sekunden).
          3. Rechtsklick auf das Fritten&Fax-Symbol des laufenden Fensters in der Taskleiste -> "An Taskleiste anheften".
             Alternative: Startmenü -> "Fritten&Fax" -> Rechtsklick -> "Weitere Optionen" -> "An Taskleiste anheften".
          NICHT empfohlen: FrittenFax.exe oder FrittenFax.lnk aus dem Ordner heraus anheften (Rechtsklick oder Ziehen). Dieser Eintrag trägt
          keine feste Kennung, und das Fenster erscheint wieder als zweiter Eintrag.
          Danach genügt ein Klick auf das angeheftete Symbol: Fritten&Fax startet, bzw. das vorhandene Fenster kommt nach vorne, und das
          Fenster gruppiert sich unter dem angehefteten Symbol.
Wenn es trotzdem doppelt erscheint: 1. angehefteten Eintrag lösen und wie oben neu anheften; 2. in data\server.log nach "[taskleiste]"
          suchen (dort steht, ob Kennung, Fenstereigenschaften und Verknüpfung gesetzt werden konnten); 3. einmal ab- und wieder anmelden
          (Windows zwischenspeichert Taskleisten-Einträge). Bitte die "[taskleiste]"-Zeilen mitschicken.
Hinweis: Diese Funktion wurde ohne Windows-PC entwickelt und nur gegen eine nachgebaute Schnittstelle getestet.

--- Version 2.3.0: natives Programmfenster - Anheften einfach per Rechtsklick ---
Warum? Das Edge-App-Fenster gehörte dem Browser; Edge überschrieb Kennung und Startbefehl am Fenster, darum gab es unter Windows
          einen zweiten Taskleisten-Eintrag. Jetzt öffnet FrittenFax.exe die Oberfläche selbst (pywebview mit WebView2, eigener Prozess):
          Titel "Fritten&Fax", Symbol faxapp.ico, Größe 1100 x 800. Das Fenster gehört FrittenFax.exe, Windows ordnet es ihr automatisch zu.
Anheften: Rechtsklick auf FrittenFax.exe (oder FrittenFax.lnk) -> "An Taskleiste anheften". Fertig - ein Klick auf das Symbol startet Fritten&Fax bzw.
          holt das vorhandene Fenster nach vorne; es erscheint nur ein Eintrag. Ein früher angehefteter Edge-Eintrag sollte einmal
          gelöst werden (Rechtsklick -> "Von Taskleiste lösen").
Schließen: Das Schließen des Fensters beendet Fritten&Fax (mit Rückfrage nur während eines laufenden Faxversands).
Zweiter Start: Das vorhandene Fenster kommt nach vorne (auch minimiert). Es entsteht kein zweiter Server und kein zweites Fenster.
Voraussetzung: Die WebView2-Runtime von Microsoft (bei Windows 11 und aktuellem Edge/Microsoft 365 schon vorhanden; sonst kostenlos:
          "WebView2 Runtime" von Microsoft herunterladen, Evergreen Standalone Installer).
Rückfall: Fehlt pywebview oder die WebView2-Runtime, oder startet das native Fenster nicht, öffnet Fritten&Fax wie bisher das Edge-App-Fenster
          (sonst Chrome/Brave, zuletzt ein Browser-Tab). Der Grund steht in data\server.log in einer Zeile mit "[fenster]". Nur in diesem
          Rückfallmodus werden Taskleisten-Kennung und Startmenü-Verknüpfung (Version 2.2.6, "[taskleiste]") sowie das eigene
          Browserprofil verwendet; die Anheften-Anleitung von 2.2.6 gilt dann weiter.
Einstellung: Umgebungsvariable FAXAPP_WINDOW = native | edge | none erzwingt einen Modus (Fehlersuche); FAXAPP_NOWINDOW=1 = kein Fenster.
Profil:   Das native Fenster speichert Sprache und Design unter %LOCALAPPDATA%\FrittenFax\webview-profil (beim ersten Start einmal neu einstellen).
Neu bauen: FrittenFax-neu-bauen.bat installiert pywebview und prüft, ob es im Build enthalten ist (Meldung "FEHLT ... pywebview" sonst).
Hinweis: Diese Version wurde ohne Windows-PC entwickelt; das native Fenster ist nur gegen ein nachgebautes pywebview getestet.
          Bitte die Zeilen mit "[fenster]" aus data\server.log zurückmelden, falls etwas nicht wie beschrieben funktioniert.

--- Version 2.4.0: Übergabepaket (Setup.exe) für andere Rechner ---
Bauen (unter Windows, Python 3.12 nötig):   FrittenFax-Paket-bauen.bat
          Die Datei baut Fritten&Fax (wie FrittenFax-neu-bauen.bat), stellt den Ordner build\paket zusammen, prüft ihn auf persönliche Daten,
          lädt den WebView2-Bootstrapper von Microsoft (redist\), erzeugt die Anleitung als PDF, installiert bei Bedarf Inno Setup
          (winget install JRSoftware.InnoSetup) und erzeugt im Ordner Uebergabe\:
              FrittenFax-Setup-<Version>.exe            das Setup
              ANLEITUNG-INSTALLATION.pdf / .txt     Anleitung für Empfänger (Setup, SmartScreen, FRITZ!Box/CAPI, Einrichtung, Drucker, Anheften, Testfax, Deinstallation, Fehlerbehebung)
              FrittenFax-Uebergabe-<Version>.zip        Setup + Anleitungen zum Weitergeben
Setup:    Installation (eine Administrator-Abfrage) nach C:\Program Files\FrittenFax, Daten pro Benutzer in %LOCALAPPDATA%\FrittenFax\data
          (bis 3.1.1: %LOCALAPPDATA%\Programs\FrittenFax - das Setup deinstalliert diese alte Installation still, die App übernimmt deren Daten); Startmenü-Eintrag, optional Desktop-Symbol; Deinstallation
          über "Apps & Features"/"Installierte Apps" (fragt, ob Einstellungen, Kontakte, Protokoll gelöscht werden). Ein Update über eine
          vorhandene Version behält den Ordner data. Das Setup prüft Windows 10/11 64 Bit, installiert die WebView2-Runtime bei Bedarf still
          und braucht KEINEN CAPI-Treiber: libcapi20 und das Modul "fritzbox" liegen bei, Fritten&Fax spricht die FRITZ!Box direkt per CAPI over TCP an (Port 5031).
          Fritten&Fax funktioniert nur mit einer FRITZ!Box (nicht mit Speedport, Vodafone Station usw.); an der Box muss CAPI over TCP eingeschaltet sein
          (an einem angeschlossenen Telefon #96*3* wählen).
          Am Ende: Häkchen "Drucker Fritten&Fax einrichten" (einmalige Administrator-Abfrage) und "Fritten&Fax starten".
Keine persönlichen Daten im Paket: kein data, keine Logs, Profile, Passwörter, Faxe, Kontakte oder Einstellungen. Der Paketordner entsteht nur
          aus ausdrücklich genannten Quellen; danach sucht tools\paket.py nach Daten und persönlichen Kennzeichen. Bei einem Fund bricht das
          Bauen ab ("ABGEBROCHEN: Das Paket ist nicht in Ordnung"). Auch die Standardwerte der Einstellungen (Faxnummer, Kennung, Absendername)
          sind jetzt leer.
Erster Start: Ist nichts eingerichtet, öffnet sich ein Einrichtungsassistent (Sprache, FRITZ!Box - Standard fritz.box mit Verbindungstest auf Port 5031 -, eigene Faxnummer, Absenderkennung,
          Absendername, optional E-Mail-Weiterleitung). "Später" überspringt ihn. Bestehende Installationen sehen ihn nie.
Versionsnummer: nur in app\faxcore\__init__.py (App, Setup und Dateinamen lesen sie von dort).
Hinweis: Setup-Skript und Bat-Datei wurden ohne Windows-PC geschrieben und nicht dort ausprobiert. Bitte die Meldungen von FrittenFax-Paket-bauen.bat
          zurückmelden, falls etwas nicht klappt.
Verbindungstest: In den Einstellungen und oben links ("Prüfen") sowie im Assistenten prüft Fritten&Fax zuerst, ob box_host auf Port 5031 antwortet. Wenn nicht,
          steht dort: "CAPI over TCP an der FRITZ!Box einschalten: an einem angeschlossenen Telefon #96*3* wählen." (Ursachen: falsche Adresse, anderes
          Netz, CAPI nicht eingeschaltet, keine FRITZ!Box).
Lizenzen: Der Ordner Lizenzen\ (Ghostscript AGPL-3.0, LGPL-2.1, libtiff, BSD, MIT, Apache ...) und LIZENZEN.txt (mit Links zum Quellcode) werden mit installiert;
          in der App unter Einstellungen -> Info -> "Lizenzen anzeigen".
Repository: Persönliche Daten und der alte Build sind nicht mehr versioniert (app\data, FaxApp-Programm, Sicherung, __pycache__; .gitignore). Lokal bleiben die
          Dateien erhalten. FrittenFax-neu-bauen.bat und FrittenFax.spec brauchen nichts davon (lib und lib64 kommen aus app\vendor).

--- Version 3.0.0: Umbenennung in "Fritten&Fax" ---
Name:     Anzeigename überall, wo Sie ihn sehen (Fenstertitel, Oberfläche, Deckblatt, Sendebericht, E-Mails, Setup, Anleitungen): Fritten&Fax.
          Technischer Name ohne "&": FrittenFax - FrittenFax.exe, FrittenFax-Setup-<Version>.exe, FrittenFax-Uebergabe-<Version>.zip,
          Installationsordner C:\Program Files\FrittenFax (Daten %LOCALAPPDATA%\FrittenFax\data), Druckername "FrittenFax", Startmenü-Eintrag FrittenFax, AppUserModelID Maikstrings.FrittenFax.
          Die Skripte heißen jetzt FrittenFax-starten.bat, FrittenFax-Testmodus.bat, FrittenFax-neu-bauen.bat, FrittenFax-Paket-bauen.bat und
          FrittenFax-Drucker-anlegen.ps1. Ordner und Repository dürfen FaxApp heißen. Ältere Abschnitte dieser Datei nennen noch die alten Namen
          (FaxApp.exe usw.); die Verknüpfung FaxApp.lnk zeigt weiter auf das alte Programm im Ordner FaxApp-Programm.
Übernahme: Beim ersten Start von FrittenFax.exe mit leerem Ordner data werden übernommen: Einstellungen, Kontakte, Protokoll, empfangene Faxe (PDF),
          aufbewahrte gesendete Dokumente, Logs, Logo und das verschlüsselte E-Mail-Passwort aus dem alten Datenordner (gesucht in FaxApp-Programm\data
          neben dem neuen Programm, app\data und %LOCALAPPDATA%\Programs\FaxApp\data; zusätzlich FAXAPP_MIGRATE_FROM=<Ordner>) sowie das Profil
          %LOCALAPPDATA%\FaxApp\ (Sprache/Design) nach %LOCALAPPDATA%\FrittenFax\. Es wird nur kopiert - die alten Daten bleiben. Die Zeilen "[migration]" stehen in
          data\server.log. Die alte Startmenü-Verknüpfung FaxApp.lnk wird entfernt.
Drucker:  Ein bestehender Drucker "FaxApp (Fax)" wird durch "FrittenFax" ersetzt: entweder über das Setup-Häkchen "Drucker Fritten&Fax einrichten" oder in der
          App über "Drucker ersetzen" (oben, erscheint nur wenn der alte Drucker noch da ist) oder mit FrittenFax-Drucker-anlegen.ps1 (eine UAC-Abfrage).
Fenster:  Der Fenstertitel ist jetzt "Fritten&Fax"; der Zweitstart sucht das Fenster mit diesem Titel. Läuft noch eine ältere FaxApp, wird sie erkannt.
Hinweis:  Nicht auf Windows getestet. Bitte die Zeilen "[migration]" und "[fenster]" aus data\server.log zurückmelden.

--- Version 3.0.2: GPL-3.0-or-later, Quellcode-Archiv ---
Lizenz:   Fritten&Fax steht unter der GNU General Public License, Version 3 oder neuer (GPL-3.0-or-later), Copyright (C) 2026 Maik Krohm (Maikstrings).
          Volltext: Datei LICENSE (im Repository und im Installationsordner), in der App unter Einstellungen -> Info -> "GPL-3.0 anzeigen". Jede eigene
          Quelldatei trägt einen kurzen Lizenzkopf (tools\lizenzkopf.py setzt ihn). Fremdkomponenten: LIZENZEN.txt und Ordner Lizenzen\.
Quellcode: FrittenFax-Paket-bauen.bat erzeugt zusätzlich Uebergabe\FrittenFax-Quellcode-<Version>.zip (git archive HEAD, ohne Versionsverlauf; braucht git und
          den letzten Commit - nicht committete Änderungen sind nicht enthalten, die .bat weist darauf hin). Das Archiv wird auf persönliche Daten geprüft
          (Datenordner, Logs, Profile, Passwörter, persönliche Kennzeichen); bei einem Fund bricht das Bauen ab. Es liegt in der Übergabe-ZIP neben dem Setup.
Repository: Die Verknüpfung FaxApp.lnk (enthält den Benutzernamen) ist nicht mehr versioniert; *.lnk steht in .gitignore. Testdaten enthalten keine echten Nummern mehr.

--- Version 3.0.3: Download-Seite auf der eigenen Subdomain ---
Adresse:  https://frittenfax.maikstrings.de/ (eigene Subdomain, Dateien im Wurzelverzeichnis). Sie steht in app\faxcore\brand.py (SOURCE_URL) und ist in
          LIZENZEN.txt, der Anleitung, README, Setup (Herausgeber-Adresse in "Apps") und der App (Einstellungen -> Info) eingetragen.
Upload:   FrittenFax-Paket-bauen.bat erzeugt als letzten Schritt [8/8] den Ordner Uebergabe\web\frittenfax.maikstrings.de\: index.html liegt direkt im Ordner,
          daneben Setup, Quellcode-ZIP, Anleitung (PDF/TXT), LICENSE.txt, LIZENZEN.txt und Lizenzen\. Die Seite ist eine einzige, eigenständige HTML-Datei
          ohne externe Abhängigkeiten, mehrsprachig (Deutsch, English, Français, Español) mit Sprachumschalter; die Sprache kommt aus der Browsersprache
          (Standard Deutsch; ?lang=en erzwingt eine Sprache). Sie zeigt Version, Größe und SHA-256-Prüfsumme des Setups.
          Uebergabe\web\HOCHLADEN.txt beschreibt: Subdomain beim Hoster anlegen, Ordnerinhalt ins Wurzelverzeichnis der Subdomain kopieren, SSL-Zertifikat aktivieren.

--- Version 3.0.4: Quell-Archive der Drittkomponenten (drittquellen) und Prüfsummen ---
Ordner:   Uebergabe\web\frittenfax.maikstrings.de\drittquellen\ enthält die Quell-Archive der mitgelieferten GPL/LGPL/AGPL-Komponenten in den gebündelten Versionen:
          Ghostscript 9.56.1, libcapi20 + Modul fritzbox, JBIG-KIT 2.1, spandsp, libtiff 4.7.1, libjpeg-turbo 3.1.2, xz 5.8.1, dlfcn-win32. Für GCC 15.2.0 (libgcc,
          libstdc++) steht nur ein Verweis (zu groß, ca. 90 MB); wer sie mitliefern will, legt gcc-15.2.0.tar.xz von Hand in redist\drittquellen\.
Laden:    Schritt [8/9] von FrittenFax-Paket-bauen.bat (tools\paket.py drittquellen) lädt fehlende Archive nach redist\drittquellen\ (Zwischenspeicher, wird nicht
          jedes Mal neu geladen; ungültige/abgebrochene Downloads werden erkannt). Ist eine Quelle nicht ladbar, steht im Bau-Log "WARNUNG ..." mit Adresse und Ablageort
          (redist\drittquellen\<Datei>); der Bau läuft ohne sie weiter, die Download-Seite zeigt für diese Komponente den Projektlink.
Seite:    Die Download-Seite hat den Abschnitt "Quellcode der Drittkomponenten" (mit SHA-256 je Archiv) und "Prüfsummen (SHA-256) aller Dateien" (alle angebotenen
          Dateien, dieselbe Liste als SHA256SUMS.txt). LIZENZEN.txt verweist je Komponente auf drittquellen/<Datei>.


==========================================================================
Fritten&Fax 3.1.0 - Stand 30.09.2026: Gleichstand mit der Android-App
==========================================================================
Faxspeicher der Box: Einstellungen -> "Faxspeicher der FRITZ!Box": FRITZ!Box-Benutzer und Kennwort eintragen (Recht "Zugang zu NAS-Inhalten",
     SMB/NAS an der Box an), "Zugang prüfen". Fritten&Fax liest die Faxe, die die Box selbst empfangen hat (\\fritz.box\FRITZ.NAS\FRITZ\faxbox),
     nur lesen. Abruf alle 5 Minuten und beim Öffnen von "Empfangen". Das Kennwort liegt verschlüsselt (DPAPI) in data\secrets.json.
     Beim ersten Abruf gelten vorhandene Faxe als bekannt (keine Benachrichtigungen). Vorschaubilder: data\thumbs\.
Sofortmeldung: an einem Telefon der Box #96*5* wählen (Anrufmonitor, Port 1012), dann Einstellungen -> "Sofort melden, wenn ein Fax eingeht".
Anrufe: neuer Reiter (TR-064); in der Box muss unter Heimnetz -> Netzwerk -> Netzwerkeinstellungen "Zugriff für Anwendungen" erlaubt sein.
Erster Start: Übersicht -> "Bereit zum ersten Fax" mit Checkliste und "Testfax an mich selbst senden".
Kontakte: CSV-Export beginnt mit Name;Faxnummer (auch in der Android-App importierbar). Logo: beim Hochladen Ausschnitt und Drehen.
NICHT GETESTET (nur mit echter Box möglich): SMB-Zugriff, Anrufmonitor, TR-064. Einzelheiten: CHANGELOG.md, docs\PARITAET.md
