Defekte, die beim Bug-Sweep identifiziert, aber nicht im laufenden Sweep behoben wurden.
Format: [Status] Titel — Kurzbeschreibung
Status: Offen, Release-blockierend
Fundort: OneDrive-Projektion store_package.json und WINDOWS_STORE_PREP.md
Befund: Beide Store-Flächen nennen MIT, während das kanonische Repository und
LICENSE GPL-3.0-only festlegen. Vor MSIX-/Store-Einreichung müssen Store-Metadaten,
Listing und Tests auf GPL-3.0 korrigiert und gegen den kanonischen Klon verifiziert werden.
Status: Offen
Fundort: requirements.txt, pyproject.toml, _sources/CROSSCHECK.md
Befund: Es gibt weder Lockfile noch transitive SBOM; requirements.txt besitzt
keine Obergrenzen, während pyproject.toml Major-Grenzen setzt. Der aktuelle
pip-audit-Resolver fand keine bekannte Schwachstelle, attestiert damit aber keinen
eingefrorenen Produktstand. Verträge angleichen und einen verifizierten Lock-/SBOM-Stand
für Releases erzeugen.
Status: Behoben (2026-09-20)
Dateien: resources/WinStorePackager/WindowsStorePublisher_3.py, tests/test_security_license_contract.py
Fix: Unkontrollierte subprocess.check_call-Aufrufe von pip install bei Modulimport vollständig eliminiert. Umstellung auf seiteneffektfreie Vorabprüfung ensure_dependencies() unter if __name__ == '__main__': sowie robuste try...except ImportError-Guards für optionale Bibliotheken (PIL, pygetwindow, keyring). Verifiziert durch Regressionstest test_winstorepackager_resource_no_unpinned_pip_install.
Status: Behoben (2026-09-16)
Dateien: THIRD_PARTY_LICENSES.txt, THIRD_PARTY_LICENSES.md, tests/test_security_license_contract.py
Fix: Umfassendes Lizenzinventar (SPDX-identifiziert für alle Runtime-, Transitive-, Build- und Test-Abhängigkeiten) und SBOM im kanonischen Repository angelegt und committet. Automatisierte Absicherung über Regressionstests test_third_party_licenses_complete_and_accurate und test_third_party_licenses_md_comprehensive_sbom.
Status: Behoben (2026-09-08)
Dateien: src/core/workspace_export.py, tests/test_workspace_export.py
Fix: TASK_LINE_PATTERN auf ^\s*(?:[-*+]\s+)?\[\s\]\s*(.+?)$ erweitert, um Standard-Listenpunkte (- [ ], * [ ], + [ ], eingerückte Aufgaben) sowie bare [ ] robust zu parsen. PRIORITY_PATTERN unterstützt nun sowohl P0: ... als auch [P0] .... Robuste Fehlerbehandlung mit errors="replace". Regressionstest test_parse_open_tasks_standard_markdown_lists hinzugefügt.
Status: Behoben (2026-09-08)
Dateien: src/core/workspace_export.py, tests/test_workspace_export.py
Fix: REQUIREMENT_PATTERN auf ^([A-Za-z0-9_.-]+)(?:\[([A-Za-z0-9_.,\s-]+)\])?\s*([<>=!~].+)?$ erweitert, um PEP-508 Extras (requests[security]>=2.28, pydantic[email,dotenv]) sauber zu extrahieren (extras: [...]), Inline-Kommentare (#) und Environment-Marker (;) vor dem Parsing abzuspalten. Regressionstest test_parse_requirements_supports_pep508_extras_and_markers hinzugefügt.
Status: Behoben (2026-09-08)
Dateien: src/core/workspace_export.py, tests/test_workspace_export.py
Fix: IGNORED_DIRS um .venv, venv, env, node_modules, .ruff_cache, .mypy_cache, .tox, .idea, .vscode erweitert. Performance-Optimierung: Umstellung von teurem rglob("*") auf os.walk() mit In-place Directory-Pruning (dirs[:] = [...]), wodurch nicht rekursiv in Drittanbieter- und Cache-Verzeichnisse abgestiegen wird (Testsuite-Laufzeit von ~26s auf ~15s beschleunigt). Regressionstest test_count_project_files_prunes_venv_node_modules_and_caches hinzugefügt.
Status: Behoben (2026-09-08)
Dateien: src/core/workspace_export.py, tests/test_workspace_export.py
Fix: QT_FRAMEWORKS = {"PySide6", "PyQt6", "PyQt5", "PySide2"} definiert. _infer_frameworks fügt den PySide6-Fallback nur noch ein, wenn kein anderes Qt-Framework in den Abhängigkeiten erkannt wurde. Reines PyQt6 bleibt rein PyQt6. Regressionstest test_infer_frameworks_preserves_pure_pyqt6 hinzugefügt.
B-004: Datenverlust und Absturz in ProjectManager bei unvollständigen Metadaten und Überschreiben benutzerdefinierter Felder
Status: Behoben (2026-09-07)
Dateien: src/core/project_manager.py, tests/test_bugsweep_regressions.py
Fix:
open_project()sichert Pflichtfelder (name,path,created,last_opened) mit sinnvollen Fallbacks ab, statt mitTypeErrorabzustürzen, wenn einedevcenter.jsonminimal ist oder Felder fehlen.open_project(),save_project()undcreate_project()aktualisieren bestehende JSON-Daten (data.update(asdict(...))), statt das Dateiformat durchasdict(...)auf Basisfelder zu reduzieren. Benutzerdefinierte Einstellungen, Erweiterungen und Plugins indevcenter.jsonbleiben erhalten.get_recent_projects()filtert leere oder Whitespace-Pfadstrings explizit aus (in Python liefertPath("").exists()Truefür das aktuelle Arbeitsverzeichnis)._create_template_files()überschreibt keine vorhandenen Projektdateien (src/main.py,src/__init__.py,README.md,requirements.txt) mehr, wenn in ein bestehendes Verzeichnis initialisiert wird.- Umstellung von rohen
print()-Meldungen auf das Modul-Logging (logger.warning/logger.error). - 5 Regressionstests in
tests/test_bugsweep_regressions.pyhinzugefügt.
Status: Behoben (2026-08-14)
Dateien: src/core/settings_manager.py, src/gui/dialogs/settings_dialog.py
Fix: Persistenz auf den System-Keyring begrenzt, Legacy-Klartext migriert,
JSON-/Export-/Importpfade redigiert und Keyring-Fehler fail-closed behandelt.
Status: Behoben (2026-06-05)
Datei: src/gui/main_window.py — _apply_settings()
Fix: _apply_settings() liest nun ai.model und ruft set_model() mit dem korrekten AIModel-Enum-Wert auf. Auch max_tokens wird übertragen.
Status: Behoben (2026-06-05)
Datei: src/gui/dialogs/new_project_dialog.py — _reset_name_style()
Fix: name_edit.textChanged ist nun mit _reset_name_style() verbunden, das setStyleSheet("") aufruft und so den roten Rahmen beim nächsten Tastendruck löscht.
Status: Behoben (2026-06-05)
Datei: src/gui/panels/output_panel.py — append_output()
Fix: append_output() verwendet nun explizit QTextCharFormat mit Farbe #cccccc, sodass stdout-Ausgabe immer in der Standardtextfarbe erscheint und nicht die Farbe des vorherigen Texts (grau von info, rot von error) erbt.
Zuletzt aktualisiert: 2026-09-07 (Bug-Sweep B-004 Behoben, B-005 bis B-008 erfasst)