- ProjectData um optionales Feld 'expanded_nodes' erweitert (abwärtskompatibel)
- _save_project_settings() speichert nun automatisch den Expand-Status
- Expand-Status wird bei allen Speicheroperationen gesichert:
* Beim Bearbeiten von TreeNodes und XslFiles
* Bei Drag&Drop-Operationen im Tree
* Bei Hash-Berechnungen für XML-Dateien
* Beim Laden von Daten aus der Datenbank
* Beim Beenden der Anwendung
- Beim Laden eines Projekts werden aufgeklappte Knoten wiederhergestellt
- Rekursive Speicherung und Wiederherstellung für TreeNode und XslFile
- Umfassendes Logging für Debugging und Fehlerbehandlung
Die JAXP-basierte SaxonWorkerPool-Implementierung ist nur für XSLT 1.0
vollständig spezifiziert und kann bei XSLT 2.0/3.0 zu fehlerhaften
Ausgaben führen.
Änderungen:
- Neue SaxonWorkerPoolS9Api-Klasse mit Saxon s9api für XSLT 2.0/3.0
- XsltVersion-Enum in conf.py (XSLT_1_0, XSLT_2_0_3_0)
- ComboBox in Performance-Einstellungen zur XSLT-Version-Auswahl
- MainWindow wählt automatisch richtige Worker-Pool-Variante
- Verbesserte Classpath-Behandlung und Fehlerbehandlung
Standard-Einstellung: XSLT 2.0/3.0 (s9api) - empfohlen für moderne Stylesheets
Fallback: XSLT 1.0 (JAXP) - verfügbar für Legacy-Stylesheets
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Implementiert persistente JVM-Prozesse für Apache FOP analog zum bestehenden
SaxonWorkerPool-System. Eliminiert JVM-Startup-Overhead durch Wiederverwendung
von Worker-Prozessen.
Änderungen:
- Neues Modul fop_pool.py mit FopWorkerPool und Java Worker-Klasse
- Integration in transform.py mit automatischem Fallback auf subprocess
- GUI-Einstellungen für FOP Worker Pool (aktivieren/deaktivieren)
- Automatische Neuinitialisierung bei Einstellungsänderungen
- Konfiguration: use_fop_worker_pool in AppSettings (Standard: aktiviert)
Performance: 5-10x schnellere PDF-Generierung bei vielen kleinen PDFs durch
Wiederverwendung von FopFactory und Font-Caches.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Performance-Dialog erweitert um Checkbox zur Aktivierung/Deaktivierung des SaxonWorkerPool.
Benutzer können jetzt zwischen Worker-Pool (schnell, benötigt JDK) und Fallback-Modus (robust, nur JRE) wählen.
Änderungen:
- Neue Einstellung 'use_saxon_worker_pool' in AppSettings (Standard: aktiviert)
- Erweiterter Performance-Dialog mit zwei Sektionen (ThreadPoolExecutor + SaxonWorkerPool)
- Pool-Initialisierung prüft nun Einstellung vor Worker-Start
- Aktualisiertes Menü-Tooltip zeigt beide Einstellungen
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Project-Modell um optionales fop_config_dir Feld erweitert
- TransformationJob verwendet nun projektspezifischen FOP-Config-Pfad
- Saxon und FOP stdout/stderr werden nun im Debug-Level geloggt
- UI-Elemente für FOP-Config-Ordner-Auswahl hinzugefügt
- AppSettings und MainWindow unterstützen neues Feld beim Laden/Speichern
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Fenstergeometrie, Splitter-Positionen und TreeWidget-Spaltenbreiten werden jetzt in der Konfiguration gespeichert und beim nächsten Start automatisch wiederhergestellt.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- CLAUDE.md mit umfassender Projektdokumentation für Claude Code hinzugefügt
- Beschreibt Architektur, Datenmodelle, UI-Muster und Entwicklungsworkflows
- Konfigurationspfad-Verarbeitung in src/conf.py robuster gemacht:
- os.path durch pathlib.Path ersetzt
- Validierung für Schreibrechte und Verzeichnisexistenz hinzugefügt
- Besseres Error-Handling mit sys.exit(1) bei fehlenden Berechtigungen
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>