Skip to content

Commit b744401

Browse files
Lukas Geigerclaude
andcommitted
chore: Ruff-Cleanup und Pipeline-Pflege (BUGS.md, llms.txt)
- Ruff auto-fix: 58 unused imports entfernt (F401/F541 pre-existing style) - src/__init__.py: Re-Exports auf X-as-X-Syntax umgestellt (Ruff F401) - Capability-Probe-Imports mit # noqa: F401 markiert (ftfy, PIL.Image, pip_licenses) - BUGS.md angelegt: 2 bekannte nicht-kritische Defekte dokumentiert (B-001: Modell-Auswahl silent broken; B-002: roter Border bleibt) - llms.txt committed (Projekt-Metadaten fuer LLM-Agents) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent af6554e commit b744401

19 files changed

Lines changed: 100 additions & 54 deletions

BUGS.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Bekannte Defekte (BUGS.md)
2+
3+
Defekte, die beim Bug-Sweep identifiziert, aber nicht im laufenden Sweep behoben wurden.
4+
Format: `[Status] Titel — Kurzbeschreibung`
5+
6+
---
7+
8+
## Offen
9+
10+
### B-001: Modell-Auswahl nicht funktional
11+
**Status:** Offen
12+
**Datei:** `src/gui/main_window.py``_apply_settings()`
13+
**Schwere:** Mittel (Feature silent broken)
14+
**Beschreibung:**
15+
`_apply_settings()` liest `ai.model` aus den Einstellungen, ruft aber `ai_service.set_model()` nie auf. Der gespeicherte Wert ist zudem der Anzeigename (z. B. "Claude Haiku") statt der API-ID. Die Modell-Auswahl in den Einstellungen wird daher vollständig ignoriert.
16+
**Workaround:** Keiner. Das KI-Modell bleibt beim Standardwert der `AIService`-Instanz.
17+
18+
### B-002: Rotes Validierungs-Rahmen in NewProjectDialog wird nicht zurückgesetzt
19+
**Status:** Offen
20+
**Datei:** `src/gui/dialogs/new_project_dialog.py``_validate_input()` / `name_edit`
21+
**Schwere:** Gering (kosmetischer UX-Defekt)
22+
**Beschreibung:**
23+
Wenn der Benutzer im `NewProjectDialog` einen ungültigen Projektnamen eingibt und auf "Erstellen" klickt, setzt `_validate_input()` einen roten Rahmen auf `name_edit`. Sobald der Benutzer dann wieder zu tippen beginnt, wird dieser Rahmen nicht automatisch zurückgesetzt. Der rote Rahmen bleibt, bis das Formular neu validiert wird.
24+
**Workaround:** Nutzer muss das Formular erneut absenden, um den Rahmen zu entfernen.
25+
26+
---
27+
28+
_Zuletzt aktualisiert: 2026-06-05 (Bug-Sweep Session)_

llms.txt

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# DevCenter
2+
3+
Canonical repository: https://github.com/dev-bricks/DevCenter
4+
5+
DevCenter is a local-first Python desktop IDE and developer toolkit from dev-bricks. It combines a PySide6 editor, static analysis, encoding repair, PyInstaller build helpers, icon conversion, third-party license collection, project/file indexing, backup-oriented sync helpers and an optional Claude/Anthropic AI assistant.
6+
7+
Primary audience:
8+
- Python developers who want a lightweight Windows-first desktop IDE.
9+
- Maintainers who need local analysis, build and release helpers in one app.
10+
- LLM agents that need project metadata and redacted status exports without uploading full source trees.
11+
12+
Positioning:
13+
- This is not Azure DevCenter, Microsoft Dev Box, Moderne DevCenter or Devbox.
14+
- This is not a hosted cloud IDE.
15+
- The desktop app is authoritative; the Web/PWA companion is planned as a read-only viewer for redacted `devcenter-workspace-v1.json` exports.
16+
17+
Privacy and safety:
18+
- Projects, settings, file indexes and build artifacts stay local by default.
19+
- Network access is only expected for explicitly configured integrations such as the optional Claude/Anthropic API or package installation commands started by the user.
20+
- API keys, tokens, local absolute paths and full source contents must not be written into public exports.
21+
22+
Important files:
23+
- `README.md`: user-facing overview, screenshots, installation and feature list.
24+
- `PRIVACY_POLICY.md`: privacy scope for local settings, indexes, build artifacts and optional API use.
25+
- `EXPORTFORMAT.md`: planned redacted workspace export contract.
26+
- `PORTIERUNGSPLAN.md`: desktop, Web/PWA, Linux, macOS and Store strategy.
27+
- `.github/workflows/tests.yml`: Windows smoke tests for Python 3.10, 3.11 and 3.12.
28+
29+
Useful search phrases:
30+
- local-first Python IDE
31+
- PySide6 Python development suite
32+
- Windows Python IDE with PyInstaller build helper
33+
- offline Python code editor and static analyzer
34+
- Python developer toolkit with license collector

src/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@
1515
__author__ = "Lukas"
1616
__app_name__ = "DevCenter"
1717

18-
from .core import ProjectManager, SettingsManager, EventBus
18+
from .core import ProjectManager as ProjectManager, SettingsManager as SettingsManager, EventBus as EventBus

src/gui/dialogs/build_dialog.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
import os
88
from PySide6.QtWidgets import (
99
QDialog, QVBoxLayout, QHBoxLayout, QFormLayout, QLineEdit,
10-
QCheckBox, QComboBox, QPushButton, QLabel, QGroupBox,
10+
QCheckBox, QPushButton, QLabel, QGroupBox,
1111
QFileDialog, QProgressBar, QTextEdit, QTabWidget, QWidget,
12-
QListWidget, QListWidgetItem
12+
QListWidget
1313
)
14-
from PySide6.QtCore import Qt, Signal, QThread
14+
from PySide6.QtCore import Signal, QThread
1515
from typing import Optional
1616

1717

src/gui/dialogs/new_project_dialog.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
QLineEdit, QTextEdit, QPushButton, QFileDialog,
1212
QLabel, QComboBox, QGroupBox, QCheckBox
1313
)
14-
from PySide6.QtCore import Qt
1514

1615

1716
class NewProjectDialog(QDialog):

src/gui/dialogs/settings_dialog.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,11 @@
44
Einstellungen für Editor, Build, AI und mehr
55
"""
66

7-
import os
87
from PySide6.QtWidgets import (
98
QDialog, QVBoxLayout, QHBoxLayout, QTabWidget, QWidget,
109
QFormLayout, QLineEdit, QSpinBox, QCheckBox, QComboBox,
1110
QPushButton, QLabel, QFileDialog, QGroupBox, QMessageBox
1211
)
13-
from PySide6.QtCore import Qt
14-
from PySide6.QtGui import QFont
1512

1613

1714
class SettingsDialog(QDialog):

src/gui/main_window.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,17 @@
1212

1313
from PySide6.QtWidgets import (
1414
QMainWindow, QApplication, QWidget, QVBoxLayout, QHBoxLayout,
15-
QTabWidget, QMenuBar, QMenu, QToolBar, QStatusBar, QSplitter,
16-
QLabel, QPushButton, QMessageBox, QFileDialog, QDockWidget, QInputDialog
15+
QTabWidget, QToolBar, QStatusBar, QSplitter,
16+
QLabel, QPushButton, QMessageBox, QFileDialog, QInputDialog
1717
)
18-
from PySide6.QtCore import Qt, QTimer, QSize, Signal
19-
from PySide6.QtGui import QAction, QFont, QKeySequence, QIcon, QTextCursor
18+
from PySide6.QtCore import Qt, QSize
19+
from PySide6.QtGui import QAction, QKeySequence, QIcon, QTextCursor
2020

2121
# Lokale Imports
2222
sys.path.insert(0, str(Path(__file__).parent.parent))
2323
from core.project_manager import ProjectManager, ProjectConfig
24-
from core.settings_manager import SettingsManager, get_settings
25-
from core.event_bus import EventBus, EventType, get_event_bus
24+
from core.settings_manager import get_settings
25+
from core.event_bus import EventType, get_event_bus
2626
from core.workspace_export import export_workspace
2727
from modules.editor.code_editor import CodeEditor
2828
from modules.analyzer import MethodAnalyzer, AnalysisResult

src/gui/panels/explorer_panel.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,11 @@
55
"""
66

77
import os
8-
from pathlib import Path
98
from PySide6.QtWidgets import (
109
QWidget, QVBoxLayout, QHBoxLayout, QTreeView, QLineEdit,
1110
QPushButton, QMenu, QLabel, QMessageBox, QInputDialog
1211
)
13-
from PySide6.QtCore import Qt, Signal, QDir, QModelIndex
14-
from PySide6.QtGui import QAction
12+
from PySide6.QtCore import Qt, Signal, QModelIndex
1513
from PySide6.QtWidgets import QFileSystemModel
1614

1715

src/gui/panels/output_panel.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
import sys
99
from PySide6.QtWidgets import (
1010
QWidget, QVBoxLayout, QHBoxLayout, QPlainTextEdit,
11-
QPushButton, QComboBox, QLabel, QToolBar
11+
QPushButton, QLabel
1212
)
13-
from PySide6.QtCore import Qt, Signal, QProcess, QTimer
13+
from PySide6.QtCore import Signal, QProcess
1414
from PySide6.QtGui import QFont, QTextCharFormat, QColor, QTextCursor
1515

1616

src/gui/panels/problems_panel.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
QPushButton, QLabel, QComboBox, QLineEdit
1010
)
1111
from PySide6.QtCore import Qt, Signal
12-
from PySide6.QtGui import QColor, QIcon
12+
from PySide6.QtGui import QColor
1313
from dataclasses import dataclass
14-
from typing import List, Optional
14+
from typing import List
1515
from enum import Enum
1616

1717

0 commit comments

Comments
 (0)