Commit Graph

38 Commits

Author SHA1 Message Date
info 0f3c0dd878 Fix: PyInstaller-EXE zeigt App-Symbol korrekt via sys._MEIPASS und datas (v1.6.2)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 15:26:09 +02:00
info 16de979524 Fix: Windows-Titelleistensymbol durch AppUserModelID und setWindowIcon korrekt gesetzt (v1.6.1)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 15:02:37 +02:00
info 9fad317891 Feat: XML-Knoten-Bearbeiten-Dialog implementiert (v1.6.0)
Neuer Dialog ermöglicht es, einem XML-Knoten XSL-Zuordnungen hinzuzufügen
oder zu entfernen. XmlToXslAssignDialog wiederverwendet mit edit_mode,
Vorauswahl per preselected_xsl_ids und get_selection_diff(). Beim Entfernen
werden zugehörige PDF-Dateien gelöscht; bei verbleibend leerer Zuordnung
wird das physische Löschen der XML-Datei angeboten.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-18 21:10:58 +02:00
info b900455d69 Fix: Code-Qualität und Effizienz verbessern (v1.5.1)
- main.py: print() durch logging ersetzt, cleanup nach Logger-Init verschoben
- conf.py: funktionsloses global-Statement entfernt
- database.py: unerreichbaren zweiten Projekt-Check entfernt
- hash_calculation.py: deprecated _handle_xml_file_drop entfernt, nutzlosen
  _get_all_project_xml_files-Wrapper entfernt, seen_paths-Scope-Bug in
  rekursiver Traversierung behoben (O(N²) → O(N)), veraltete List[]-Syntax
  und ungenutzte Imports bereinigt
- transform.py: TOCTOU-Muster (exists+stat) durch direktes stat() mit
  FileNotFoundError ersetzt; fop_conf.exists() gecacht

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04 17:02:59 +02:00
info 3d2efe628b Feat: Projekt-Baum verschlanken und XSL-Dateiname im Edit-Dialog anzeigen (v1.5.0)
Mittlere Spalte (Kontextinfos) aus dem Projekt-Baum entfernt, sodass nur noch
Bezeichnung und Diff-PDF-Anzahl angezeigt werden. XSL-Dateiname wird jetzt als
nur-lese Label oben im XslFileEditDialog angezeigt.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 12:38:37 +02:00
info 8c59187fe9 Feat: Suchfilter durchsucht auch XSL-Dateinamen (v1.4.1)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 12:02:06 +02:00
info a0626a78a3 Feat: Projektweite XSLT-Parameter mit Vererbungshierarchie (v1.4.0)
Ermöglicht die Definition von XSLT-Parametern auf Projektebene, die als
Basis für alle Transformationen dienen und von TreeNode- bzw. XslFile-
Parametern überschrieben werden können (Projekt < TreeNode < XslFile).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 10:58:01 +02:00
info d1def05607 Feat: Suchfilter für TreeNodes und XSL-Dateien im Hauptfenster (v1.3.0)
Neues Suchfeld über dem Baum filtert Knoten und XSL-Dateien per
case-insensitive Textsuche. Übergeordnete Knoten bleiben bei
Kind-Treffern sichtbar und werden automatisch expandiert. Der
gespeicherte Expand-Status wird beim Leeren der Suche wiederhergestellt.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-03 19:55:06 +02:00
info 0560dbafe4 Fix: Maximize-Button im XSL-Abhängigkeitsdialog unter Windows ermöglichen (v1.2.8)
WindowMinMaxButtonsHint gesetzt, damit der Dialog auch unter Windows maximiert werden kann.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-03 13:24:32 +02:00
info 9370c03e90 Feat: Veraltete XSL-Einträge nach DB-Import erkennen und entfernen (v1.2.7)
Beim Import aus der PostgreSQL-Datenbank werden nun XSL-Einträge erkannt,
die nicht mehr in der DB vorhanden sind. Ein Dialog zeigt diese gruppiert
in einer Baumansicht an und bietet die Option, sie samt nicht mehr
verwendeter XML-/PDF-Dateien aus dem Projekt zu entfernen.
Leere TreeNodes werden automatisch bereinigt.

Zusätzlich: SQL-Filter `r3.export = 0` in data.sql ergänzt.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-30 20:38:36 +02:00
info d7282082f4 Fix: Version und Drittanbieter-Lizenzen im PyInstaller-Build anzeigen (v1.2.6)
pyproject.toml und THIRD_PARTY_LICENSES.txt werden nun ins PyInstaller-Bundle
eingebunden. Pfadauflösung nutzt sys._MEIPASS im Bundle-Kontext.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-28 19:32:03 +01:00
info 09312dbd66 Feat: Legende oben links und auto-fit bei Suche/Filter im Abhängigkeitsgraph (v1.2.5)
- Legende von unten links nach oben links verschoben, damit vis.js-Navigationspfeile nicht überdeckt werden
- network.fit() mit Animation bei jeder Suche und Checkbox-Änderung, sodass alle relevanten Knoten im Viewport sichtbar sind

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 21:11:14 +01:00
info bf352a1fcd Feat: Individuelle Knoten-Styles im XSL-Abhängigkeitsgraph nach Dateistatus (v1.2.4)
Knoten im vis.js Netzwerkgraph werden nun farblich nach drei Kategorien
unterschieden: blau (nur im Verzeichnis), grün (im Projekt referenziert),
rot/gestrichelt (im Projekt, aber Datei fehlt). Inkl. Legende und
erweitertem Tooltip mit Projekt-Zugehörigkeit.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 19:57:17 +01:00
info 84d0866f72 Feat: Doppelklick auf Netzwerkgraph-Knoten kopiert Dateiname ins Suchfeld (v1.2.3)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 18:46:45 +01:00
info cdca38eb98 Feat: Klickbare Webseite-Links in der AboutDialog-Abhängigkeitstabelle (v1.2.2)
URLs in der Spalte "Webseite" werden als anklickbare Links dargestellt,
die sich im Standardbrowser öffnen.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 20:01:58 +01:00
info 36d257e2e2 Fix: HTML-Tooltips im vis.js Abhängigkeitsgraph korrekt rendern (v1.2.1)
vis.js rendert String-Titles als Klartext. Node-Titles werden nun vor der
DataSet-Erstellung in DOM-Elemente konvertiert, damit HTML-Tags (<b>, <br>)
korrekt dargestellt werden.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 19:54:38 +01:00
info 4e65a6ad4c Feat: vis.js Layout-Switcher im XSL-Abhängigkeitsgraph (v1.2.0)
Layout-Umschaltung zwischen barnesHut, ForceAtlas2, Repulsion und hierarchischem
Layout mit konfigurierbaren Parametern pro Layout. Einstellungen werden persistent
in AppSettings gespeichert und beim Öffnen des Dialogs wiederhergestellt.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 19:32:29 +01:00
info f7ef90079a Feat: License-Check-Skill und lxml-Lizenzeintrag hinzugefügt (v1.1.1)
Neuer Skill prüft bei jedem Commit automatisch ob THIRD_PARTY_LICENSES.txt
mit pyproject.toml synchron ist. Fehlenden lxml-Eintrag ergänzt und
Kategorie-Spalte im AboutDialog verbreitert.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 17:20:07 +01:00
info a8b4fac085 Feat: Hilfe-Menü mit Info-Dialog und Lizenz-Parser hinzugefügt (v1.1.0)
Neues Menü "Hilfe > Info" zeigt Programmversion, Python-Version und alle
Drittanbieter-Bibliotheken mit installierten Versionen und Lizenzinfos an.
Der license_parser liest THIRD_PARTY_LICENSES.txt als Datenquelle und
ergänzt tatsächlich installierte Versionen via importlib.metadata.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 16:54:21 +01:00
info 3dcbf783b1 Feat: Sidebar mit Suchfilter und lxml-Parser im XslDependencyDialog
- Ein-/ausblendbare Sidebar mit tab-übergreifender Suche hinzugefügt
- Graph-Suchfilter blendet nicht-betroffene XSL-Dateien aus dem Netzwerkgraph aus
- Regex-basierte XSL-Abhängigkeitserkennung durch lxml-Parser ersetzt
- Suchfilter wird beim Tab-Wechsel erneut angewendet

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 21:15:16 +01:00
info affba2a9ca Fix: PyInstaller-Bundle für installierte Version repariert (connectorx, SQL-Ressourcen)
- connectorx via collect_all() eingebunden statt hiddenimports (Rust-PYD + __init__.py + Metadaten als Einheit)
- SQL/CSV-Ressourcen (src/res/) ins PyInstaller-Bundle aufgenommen
- Pfadauflösung in database.py auf sys._MEIPASS umgestellt für installierten Modus
- connectorx als explizite Abhängigkeit in pyproject.toml ergänzt
- Dokumentation (windows_distribution.md) um collect_all-Pattern und _MEIPASS-Hinweise erweitert
- Version auf 1.0.0 aktualisiert, Hersteller-Informationen ergänzt
2026-02-15 19:51:58 +01:00
info 70c12a91dc Merge: Branch 'dist' in 'master' integriert
- Windows-Distribution-Infrastruktur (PyInstaller, Inno Setup)
- FOP Worker Pool für Performance-Steigerung
- PDF-Viewer Zoom-Feature
- Performance-Einstellungen in UI
- Build-Dokumentation und Icon-Ressourcen

Konflikte gelöst:
- pyproject.toml: Neueste ruff-Version beibehalten, Build-Dependencies hinzugefügt
- uv.lock: Automatisch neu generiert
2026-01-18 16:59:48 +01:00
info 4eb80c92b2 Update: Abhängigkeiten aktualisiert und pyqtdarktheme entfernt
- Python-Version auf >=3.13,<3.15 eingeschränkt
- pydantic-settings 2.9.1 → 2.12.0
- pyside6 6.9.1 → 6.10.1
- polars 1.31.0 → 1.37.0
- pydantic-yaml 1.5.1 → 1.6.0
- ruff 0.14.8 → 0.14.11
- pyqtdarktheme entfernt

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-11 16:14:58 +01:00
info d3dc07cbf3 Feature: Detaillierte Worker-Pool Performance-Metriken mit psutil
Neue Metrik-Erfassung für Saxon- und FOP-Worker-Pools:
- Kompilierungszeit der Java-Worker-Klassen
- Worker-Startzeiten (Summe + Durchschnitt pro Worker)
- RAM-Verbrauch vor/nach Transformation (Summe + Durchschnitt)
- Automatische Berechnung der RAM-Zunahme in MB und Prozent

Technische Details:
- Neue WorkerPoolMetrics-Datenklasse in worker_metrics.py
- RAM-Messung via psutil (v7.2.1, neu hinzugefügt)
- Metriken für beide Saxon-Varianten (JAXP + s9api)
- WorkerPoolMetricsDialog mit Tab-basierter UI
- Menüeintrag "Projekt → Worker-Pool-Metriken"

Metriken werden automatisch erfasst:
- Bei Worker-Pool-Initialisierung (Kompilierung + Start)
- Vor erster Transformation (RAM-Baseline)
- Nach allen Transformationen (RAM-Endwert)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 20:58:37 +01:00
info bb7cad9204 Build: Vollständige Windows-Distribution-Infrastruktur
Implementiert ein professionelles Build-System für Windows-Benutzer ohne Python-Installation:

PyInstaller-Integration:
- DocuMentor.spec mit automatischer Icon/Version-Einbindung
- Unterstützung für alle PySide6-UI-Dateien und Dependencies
- UPX-Kompression für kleinere Executable-Größe

Icon-System:
- create_icon.py generiert Standard-Icon oder konvertiert PNG zu ICO
- Multi-Size ICO (16x16 bis 256x256) für alle Windows-Kontexte
- Automatische Integration in Build-Prozess
- Prompts für Bild-KIs (Gemini, DALL-E, etc.)

Versionsinformationen:
- create_version_info.py liest Version aus pyproject.toml
- Windows-Datei-Eigenschaften (Rechtsklick → Details)
- Automatische Generierung bei jedem Build

Build-Automatisierung:
- build_windows.py orchestriert gesamten Build-Prozess
- Erstellt Icon und Versionsinformationen automatisch
- Generiert ZIP-Archiv für Distribution
- Cleanup alter Builds

Inno Setup-Integration:
- installer.iss für professionelle Setup.exe
- GUID-Generator (generate_guid.py)
- Desktop-Verknüpfungen und Start-Menü-Integration

Dokumentation:
- BUILD.md - Schnellstart-Anleitung
- docs/windows_distribution.md - Detaillierte Distribution-Dokumentation
- docs/icon_and_version_info.md - Icon- und Versions-System
- resources/icon_prompt.md - KI-Prompts für Icon-Generierung

Dependencies:
- pyinstaller>=6.0.0 für Executable-Erstellung
- pillow>=10.0.0 für Icon-Generierung

Externe Abhängigkeiten (Java, FOP, Saxon, diff-pdf) bleiben separat installierbar.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-04 20:37:30 +01:00
info b29fa633cb Lizenzierung: MIT License und Dokumentation
Projekt unter MIT License veröffentlicht:
- LICENSE-Datei mit MIT-Lizenztext
- LICENSES.md mit detaillierter Lizenzanalyse aller Dependencies
- THIRD_PARTY_LICENSES.txt mit allen verwendeten Bibliotheken
- README.md mit vollständiger Projektdokumentation
- pyproject.toml mit Lizenz-Metadaten aktualisiert

Lizenz-Übersicht:
- PySide6: LGPL-3.0/GPL-2.0/GPL-3.0 (kompatibel mit MIT)
- Pydantic, Polars, pyqtdarktheme: MIT
- PyArrow: Apache 2.0
- Saxon-HE: MPL-2.0 (externes Tool)
- Apache FOP: Apache 2.0 (externes Tool)

Keine Einschränkungen durch Dependencies - MIT License möglich.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-02 17:40:03 +01:00
info e49af98cc0 Ruff-Konfiguration erweitert und Code-Style-Fehler behoben
- extend-exclude für automatisch generierte *_ui.py Dateien hinzugefügt
- Unbenutzte Imports in Dialog-Dateien entfernt
- Unbenutzte Variable sample_keys in MainWindow entfernt
- f-strings ohne Platzhalter in Test-Datei korrigiert

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-14 15:16:57 +01:00
info c593ff145b XSL-Transformations-Engine mit Saxon, Apache FOP und diff-pdf implementiert
Fügt die komplette Transformations-Pipeline hinzu:
- Saxon XSLT-Transformation (XML → FO) mit vollständigem Classpath-Support
- Apache FOP PDF-Generierung (FO → PDF) mit plattformübergreifender Unterstützung
- Automatische diff-pdf Vergleichs- und Diff-Generierung
- Valide-PDF-Verwaltung (Referenz-PDFs beim ersten erfolgreichen Build)
- Up-to-Date-Prüfung basierend auf Datei-Zeitstempeln
- Asynchrone Ausführung via TransformationThread (QThread)
- Kontextmenü-Integration für XML- und XSL-Dateien
- Detailliertes Fehler-Reporting und Fortschritts-Feedback

Neue Dateien:
- src/transform.py: TransformationJob-Klasse mit vollständiger Pipeline

Erweiterte Dateien:
- src/ui/MainWindow.py: TransformationThread und Transformations-Methoden

Technische Details:
- Löst Saxon ClassNotFoundException durch Verwendung aller JARs im Saxon-Verzeichnis
- Verwendet -cp statt -jar für vollständigen Classpath-Zugriff
- Automatisches Cleanup temporärer FO-Dateien
- Thread-sicheres Shutdown-Handling

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-11 21:26:13 +01:00
info 590e844057 Test der Datenbank-Verbindung 2025-06-22 19:58:40 +02:00
info 262a61dc7a connectorx als Abhängickeit für SQL-Abfragen 2025-06-22 18:26:34 +02:00
info ea9324637f Konzept für Auswerten der SQL-Daten aus FN, parsen und schreiben der Pojekt-Datei 2025-06-21 21:20:37 +02:00
info 91098d2a1e pymupdf entfernt, zum 2ten... 2025-06-15 18:56:49 +02:00
info 6ed76bbc1a pymupdf entfernt 2025-06-15 18:47:33 +02:00
info 02cc60dd12 pydantic-settings um App-Eoinstellungen zu speichern 2025-06-01 15:48:07 +02:00
info 36372992c4 Dunkle Thema installiert 2025-05-30 17:19:22 +02:00
info f7d365af3d Ein PDF wird angezeigt. 2025-05-23 20:38:19 +02:00
info 7afbc634e7 Python-Dateien formatiert, zum 2ten 2025-05-23 19:43:08 +02:00
info c2e8fb592f init 2025-05-20 11:24:07 +02:00