Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,11 @@ TODO.txt
DONE.md
DONE.txt
ERLEDIGT.txt
BEFUNDE.md
MARKETING-LOG.txt
TASKPLAN_STATUS_*.md
_after-care/


# Node / Web / Test Caches
node_modules/
Expand Down
22 changes: 0 additions & 22 deletions BEFUNDE.md

This file was deleted.

5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ Alle wesentlichen Änderungen an CodeBox werden hier dokumentiert.

## [Unreleased]

### Repository-Hygiene & interne Dateien [2026-09-28]
- **Interne Dateien geschuetzt (`.gitignore`):** `BEFUNDE.md`, `MARKETING-LOG.txt`, `TASKPLAN_STATUS_*.md` und `_after-care/` in `.gitignore` aufgenommen.
- **Git-Tracking bereinigt:** `BEFUNDE.md` aus dem Git-Tracking entfernt (`git rm --cached`), bleibt lokal erhalten.
- **Vertragstests (`tests/test_metadata.py`):** `test_gitignore_internal_file_hygiene` hinzugefuegt (T-20260926-434768981).

### Fixed (2026-10-02: Editor-Dateien bei Speicherfehlern erhalten)
- Editor-Tabs kodieren UTF-8 vor dem Öffnen der Ausgabe und verwenden QSaveFile ohne direkten Schreib-Fallback. Teilwrites und fehlgeschlagene Commits überschreiben den bisherigen Code nicht.
- Ungültiges UTF-8 wird als Speicherfehler gemeldet; geänderte Dokumente und geteilte Ansichten werden erst nach erfolgreichem Commit als unverändert markiert.
Expand Down
7 changes: 7 additions & 0 deletions tests/test_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,13 @@ def test_bundled_plugins_valid_json() -> None:
assert isinstance(data["auto_close_pairs"], dict)


def test_gitignore_internal_file_hygiene() -> None:
"""Verify internal maintenance files are protected in .gitignore."""
gitignore = (PROJECT_ROOT / ".gitignore").read_text(encoding="utf-8")
for pattern in ["BEFUNDE.md", "MARKETING-LOG.txt", "TODO.md", "DONE.md", "DECISIONS.md"]:
assert pattern in gitignore, f"{pattern} must be ignored in .gitignore"


def test_welcome_and_stale_workflow_hardening() -> None:
"""Verify welcome.yml and stale.yml contain least-privilege permissions, concurrency, and timeouts."""
welcome_path = PROJECT_ROOT / ".github" / "workflows" / "welcome.yml"
Expand Down
Loading