• v0.9.0-beta.1 ae58abb371

    v0.9.0-beta.1 (Beta) Pre-release

    julian released this 2026-11-04 21:44:55 +01:00 | 1 commits to main since this release

    Release Notes — v0.9.0-beta.1

    Status: Vorabversion (Beta / Prerelease). Nicht produktionsreif, nicht vollständig getestet.
    Datum: 2026-11-04

    Neu in 0.9.0-beta.1

    1. Updater (update.bat / update.sh)

    Aktualisieren ohne Neuentpacken und ohne erneuten Download der Laufzeit.

    • Prüft die Forgejo-Releases, vergleicht Versionen und bleibt standardmäßig im
      bisherigen Kanal (auto): eine Beta-Installation wird nicht auf einen
      Stable-Release zurückgesetzt. --channel stable|beta erzwingt einen Kanal.
    • Signierte Prüfsummen: SHA256SUMS trägt eine Ed25519-Signatur; der
      öffentliche Schlüssel ist im Programm hinterlegt (backend/app/release_key.py).
      Ohne gültige Signatur wird nichts installiert — die Integrität hängt nicht am
      Download-Endpunkt.
    • Runtime bleibt erhalten: Ein Manifest (MANIFEST-<plattform>.json) nennt
      Python-, Perl-, imapsync- und Paketstände. Nur wenn dort etwas abweicht, wird
      die Laufzeit nachgezogen; unveränderte Komponenten bleiben unangetastet.
    • Daten sind geschützt: .env, data/ und runtime/ werden nie
      überschrieben. Vor dem Austausch werden Konfiguration und Datenbank (SQLite-
      Backup-API) gesichert; Programmdateien werden journalliert ausgetauscht und bei
      einem Fehler zurückgerollt — inklusive Datenbank-Restore, damit Code und Schema
      wieder zusammenpassen.
    • Abbruch bei laufender Anwendung oder laufenden Migrationen. Download in ein
      temporäres Verzeichnis, Prüfung von Signatur und Prüfsummen vor dem
      Entpacken.
    • Fehlermeldungen nennen Ursache und nächsten Schritt (offline, HTTP-Fehler,
      fehlende Signatur, fehlende Berechtigung).

    2. Ein Startskript, automatische Einrichtung

    start.bat / start.sh erledigen beim ersten Start alles: fehlende Laufzeit
    einrichten (einmaliger Download), Konfiguration erzeugen, Datenbank anlegen,
    Server starten, Browser erst nach dem tatsächlichen Start öffnen. Folgestarts
    nutzen die vorhandene Laufzeit ohne Download. start.bat --repair prüft und
    ersetzt beschädigte Laufzeitkomponenten.

    3. Ersteinrichtung im Browser

    Statt eines Passworts im Setup gibt es jetzt eine Einrichtungsseite: Benutzername
    (Standard admin), eigenes Passwort (mindestens 12 Zeichen), Bestätigung. Kein
    Standardpasswort, nur der Argon2id-Hash landet in .env. Solange kein
    Administrator existiert, leitet die Anwendung ausschließlich auf diese Seite.
    Parallele Einrichtungsversuche werden über eine Sperrdatei abgewiesen.

    4. IMAP als Quelle (IMAP → IMAP)

    Neben Microsoft 365 können klassische Postfächer migriert werden
    (Mailcow → Mailcow, IONOS/Strato → Mailcow, eigener Server → eigener Server).

    • Quellserver unter „Quellserver“ anlegen (Host, Port, SSL/TLS/STARTTLS), Passwort
      verschlüsselt; Verbindungstest ohne Änderungen.
    • Dieselbe Migrationsengine wie bisher (imapsync, Queue, Scheduler, Logs,
      Retry) — keine zweite Engine.
    • Microsoft-365-Funktionen bleiben unverändert.

    5. Postfachvorschau und Ordnerauswahl (nur lesend)

    • „Postfach analysieren“ liest ausschließlich LIST/STATUS: Ordnerhierarchie,
      Nachrichtenzahlen je Ordner, Fehler einzelner Ordner werden gesammelt.
    • Es entstehen dabei keine Jobs, keine Nachrichten werden verändert.
    • Ordnerbaum mit Auf-/Zuklappen, „alle auswählen“, „alle abwählen“, Aktualisieren.
    • Auswahl wird pro Job gespeichert: „alle Ordner (auch künftige)“ oder „nur
      ausgewählte“ (--folder je Ordner). Neue Ordner im Quellpostfach werden bei
      „nur ausgewählte“ nicht automatisch übernommen.
    • Nachrichtenzahlen sind als Momentaufnahme gekennzeichnet.

    6. Assistent „Postfach prüfen und migrieren“

    Ein geführter Ablauf: Quelle wählen → verbinden → analysieren → Ordner auswählen →
    Ziel und Adressen → „Nur anlegen“ oder „Migration starten“. Vorschau und Start
    sind klar getrennt; erst der letzte Schritt überträgt Daten.

    7. Getrennte Plattformpakete

    • M365-to-Exchange-Sync-Windows.zip: nur setup.bat, start.bat, update.bat,
      scripts/setup.ps1 — keine Shell-Skripte.
    • M365-to-Exchange-Sync-Linux.tar.gz: nur setup.sh, start.sh, update.sh —
      keine Batch-/PowerShell-Dateien.

    8. Dokumentation

    • Forgejo-Wiki mit 16 Seiten (Installation, Ersteinrichtung, Microsoft 365,
      IMAP-Quellen, Vorschau, Migration, Überwachung, Scheduler, Updates, Sicherheit,
      Fehlerbehebung, FAQ, Entwicklung, Einschränkungen).
    • README als kurze Projektstartseite mit Verweisen ins Wiki.
    • AGENTS.md: verbindliche Dokumentationsregeln für künftige Änderungen.

    Unterstützte Betriebssysteme

    Plattform Status
    Windows 10 (1803+)/11, Server 2019+ getestet (portable Laufzeit, Start, Vorschau, Migration, Update)
    Debian 12 / Ubuntu 22.04+ vorbereitet, nicht ausgeführt getestet

    Installation

    Windows:  ZIP entpacken → start.bat        (erster Start richtet alles ein)
    Linux:    tar xzf … && ./start.sh
    

    Beim ersten Start werden Laufzeit und Abhängigkeiten einmalig geladen
    (ca. 360 MB). Danach genügt start.bat bzw. ./start.sh.

    Voraussetzungen

    • Windows 10 1803+ (nutzt tar.exe) bzw. Linux x86_64 mit tar und curl/wget.
    • Internetzugang beim ersten Start (Laufzeit-Download) und für Updates.
    • Für Microsoft 365: eigene Entra-App-Registrierung (Public Client, Redirect-URI
      http://127.0.0.1:<port>/api/v1/oauth/callback, Scope
      https://outlook.office.com/IMAP.AccessAsUser.All).
    • Kein Docker, keine Administratorrechte, keine Registry-/PATH-Änderungen.

    Getestete Funktionen

    • Updater: Versionsvergleich und Kanäle, signierte Prüfsummen (Ed25519),
      Manipulations- und Checksummen-Fehler, Abbruch bei laufender Anwendung und bei
      laufenden Migrationen, Rollback nach fehlgeschlagener Datenbankmigration,
      Runtime-Wiederverwendung, Installation in einem Pfad mit Leerzeichen.
    • Start: automatische Einrichtung beim ersten Start, Folgestarts ohne
      Download, Reparatur, Portauswahl mit Ausweichport.
    • Ersteinrichtung: Setup-Seite, Passwortregeln, einmalige Einrichtung,
      parallele Anfragen, Login danach.
    • IMAP-Quellen: CRUD, Verbindungstest, Nur-Lesen-Vorschau (auch gegen einen
      echten IMAP-Server), Ordnerauswahl persistent, Job-Anlage, Argumenterzeugung
      (--passfile1, --folder, TLS-Modi).
    • Migration: echte lokale IMAP→IMAP-Migration mit dem portablen imapsync.
    • Automatisierte Tests: Backend-Suite, Frontend-Suite (inkl. Setup- und
      Vorschau-Flow), TypeScript-Prüfung, Produktionsbuild.

    Nicht getestete Funktionen

    • Microsoft-365-Live-Anmeldung und -Migration: kein Testkonto/keine Entra-App.
      Mit Mocks getestet, nicht live verifiziert.
    • Linux-Betrieb: setup.sh, relocatable-perl, start.sh, update.sh sind
      vorbereitet, aber nie ausgeführt.
    • Echtes Strg+C in einer Windows-Konsole: Signalzustellung in der
      Testumgebung nicht reproduzierbar; geordnetes Herunterfahren wurde in-process
      mit echtem uvicorn geprüft.
    • Browser-Klicktest: Werkzeug blockiert Loopback; ersetzt durch
      Komponententests und HTTP-Integrationstests.

    Bekannte Einschränkungen

    • Ein Update ersetzt Programmdateien; eine laufende Anwendung muss vorher beendet
      werden (der Updater weist darauf hin).
    • Ordnerauswahl wird über imapsync---folder umgesetzt: umbenannte Ordner im
      Quellpostfach erscheinen als neuer Ordner.
    • Die Vorschau zeigt eine Momentaufnahme; die tatsächlich übertragene Menge kann
      durch Duplikaterkennung und Änderungen am Quellpostfach abweichen.
    • Genau eine Backend-Instanz pro Datenverzeichnis.
    • Der Ausweichport ist nicht dauerhaft; für eine feste OAuth-Redirect-URI
      APP_PORT setzen.

    Sicherheitshinweise

    • Keine Microsoft-Passwörter in der Anwendung; Anmeldung im Browser, Tokens und
      Quell-/Zielpasswörter Fernet-verschlüsselt in data/database/app.db.
    • .env enthält APP_ENCRYPTION_KEY, SESSION_SECRET und den
      Argon2id-Passwort-Hash — Datei schützen (Windows-ACL, Linux chmod 600).
    • Releases werden mit Ed25519 signiert; der Updater prüft die Signatur vor jeder
      Installation.
    • Optionale Authentifizierung am Release-Server ausschließlich über die
      Umgebungsvariable FORGEJO_TOKEN (nicht in Skripten, Logs oder URLs).
    • Bindung ausschließlich an 127.0.0.1.

    Lizenz

    Eigener Code: MIT (LICENSE). Nicht gebündelt: imapsync (wird beim ersten Start
    von der offiziellen Quelle geladen), Python (PSF), Strawberry Perl
    (Artistic/GPL) bzw. relocatable-perl, CPAN-Module, Frontend-Bibliotheken
    (MIT/ISC). Details: LICENSE.md.

    Upgrade von 0.8.0-beta.3

    Empfohlen: update.bat bzw. ./update.sh --apply — Daten, Konfiguration und
    Laufzeit bleiben erhalten. Alternativ das neue Archiv in einen neuen Ordner
    entpacken; data/ und .env können übernommen werden.

    Prüfsummen

    SHA256SUMS (signiert als SHA256SUMS.sig) enthält die SHA-256-Werte für beide
    Archive, beide Manifeste und diese Release Notes.

    Downloads