- Implementiere do_HEAD in Handler
- Sende nur Response-Header mit Content-Type und Content-Length
- Kein Body, wie von HTTP/1.1 für HEAD spezifiziert
- Nutze dieselbe Pfadlogik wie do_GET
Drei Maskierungs-Bugs: kaputtes serve.py liess curl auf localhost
auf einen unbenutzten Port unter WSL2 ~2 min pro Iteration haengen
(Polling-Loop bis 40 min); status-only-Tests sahen ein zerschossenes
templates.json nicht.
- python3 -m py_compile vor Server-Start: Syntax-Fehler scheitern in
<100ms mit klarer Meldung statt nach 22s Timeout-Polling.
- 127.0.0.1 + --connect-timeout 1 ersetzt localhost-Polling: umgeht
Resolver/IPv6-Falle, kappt jeden Versuch nach 1s.
- Endpoint-curls bekommen --max-time 5: ein einzelner haengender
Endpunkt killt nicht mehr die Suite.
- Inhalts-Gate prueft nach den 8 HTTP-Checks, dass /templates.json
parsable JSON ist - Pseudo-Fix-Schutz (kaputtes Manifest = HTTP 200
+ JSON.parse stirbt im Frontend).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Drei Verifikations-Schichten fuer den Planner-Executor-Workflow aus
~/idea/dual_agent:
1. Statisch: node --check auf allen <script>-Bloecken in index.html.
2. Dynamisch: smoke_test.sh auf Port 8088.
3. Semantisch: Funktions-Doppeldeklarationen + Platzhalter-Leichen
in der Datei und in der letzten Commit-Message.
Die semantischen Checks adressieren konkret die No-Op-Muster, die
frueher als Pseudo-Fixes durchgerutscht sind.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Konkret werden die Kinder in web/index.html Zeilen 628 bzw. 666 via buildJsonForm(..., innerContainer) bzw. buildJsonForm(..., innerObjContainer) an diese Container angehängt.
- Rendering: innere Felder werden innerhalb der Objekt/Array-Container gerendert
- Speichern: data-key-Pfade mit [index] werden korrekt zu Arrays rekonstruiert
Fixes beide Symptome aus dem uncommitted Refactor.
Ein Aufruf startet den Server temporaer auf eigenem Port, prueft alle
bekannten Endpunkte und raeumt sich selbst auf. Agenten muessen nichts
ueber Hintergrund-Jobs, nohup oder Port-Cleanup wissen.
- scripts/smoke_test.sh: trap-basierter Cleanup, setsid-unabhaengig
via prozessgruppen-fremdem pkill-Fallback, eindeutiger Marker-Name
in sys.argv[0], 20x100ms Wartezeit aufs Port-Binding.
- AGENTS.md R4: verweist statt auf manuelle curl-Aufrufe auf
./scripts/smoke_test.sh; TL;DR und Einstiegs-Block aktualisiert.
Verifiziert: exit 0, Port nach Durchlauf frei (kein Leak).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- TL;DR-Block vor den Regeln: 5 Kernpunkte im Telegrammstil, damit
die wichtigsten Anweisungen auch durchdringen, wenn nur die ersten
~20 Zeilen scharf gelesen werden.
- Datenschema von templates.json in Abschnitt 2 ergaenzt (Felder +
erlaubte type-Werte: system/user/custom). Zielt auf Bugtyp
'toter Filter-Link Kategorien'.
- Abschnitt 'Historie signifikanter Aenderungen' samt Commit-Tabelle
gestrichen - git log ist die Quelle der Wahrheit, die Tabelle
veraltete sowieso sofort.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- toten Nav-Link 'Kategorien' entfernt (type existiert nicht in
templates.json)
- Filter-State (currentType, currentQuery) + gemeinsamer
applyFilters()-Helper statt drei duplizierter Bloecke
(hashchange, nav-click, init). Behebt Active-Class-Inkonsistenz
zwischen Initial-Load und hashchange-Handler.
- Such- und Typ-Filter jetzt gekoppelt: applyFilters wendet beide
kombiniert auf allTemplates an (kein Cache-Bypass via
loadTemplates mehr).
- setNavActive leitet den aktiven Link aus dem href ab, nicht aus
textContent -> keine Sonderbehandlung fuer 'Alle' noetig.
Verifiziert: JS parst (node --check), GET / 200, applyFilters hat
genau eine Definition, search- und hashchange-Handler rufen
loadTemplates nicht mehr auf.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Neuer operativer Regelsatz gegen 'direkt drauflos editieren ohne zu
lesen'. Konkret:
- vor jedem Edit: Lese-Tool-Aufruf auf betroffenen Bereich, Zeilen-
grenzen der Zielstelle explizit nennen,
- nach Refactors: grep-Count auf den Bezeichner zitieren
(erwartet = 1),
- Warnsignale fuer unfertigen Refactor benannt (doppelte Deklaration,
Code-Fragmente am Zeilenanfang).
R1 um 'lesen' als ersten Schritt erweitert; R3-R7 durchnummeriert.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- web/index.html: Orphan-Fragmente aus halb ersetztem createJsonEditUI
entfernt (drei Stellen: vor createTextEditUI, doppelte
Funktionsdeklaration, Reste nach Funktionsende). JS parst wieder
(node --check OK).
- web/index.html: Inline-Styles der JSON-Editor-Inputs auf das dunkle
Schema (#222/#fff) angeglichen, das in CSS bereits gesetzt war.
- web/serve.py: nicht genutzte self.path-Zuweisung entfernt.
Verifiziert gegen laufenden Server: /, /index.html, /templates.json,
/templates/system/commit_analysis.json, /templates/user/brainstorming.md
jeweils 200. Eine createJsonEditUI-Deklaration, 0 helle / 4 dunkle
Input-Styles, keine Orphans mehr.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
R1-R3 ersetzen die bisherigen Beteuerungen durch ueberpruefbare
Kriterien: Reihenfolge planen-ausfuehren-verifizieren-berichten,
Definition-of-Done mit git-/curl-Belegen, und ein konkreter
curl-Check fuer Server-/UI-Aenderungen.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- serve.py: /templates.json mappt nun auf web/templates.json (GET + PUT).
Zuvor lieferte der Endpoint 404, weil der Handler nach ROOT/templates.json
suchte, die Datei aber in web/ liegt.
- AGENTS.md als Verhaltensregeln fuer Agenten umgebaut (statt defensive
Selbstbehauptung in Projektdoku). Erfundene/nicht existente Artefakte
aus der Doku entfernt, Commit-Tabelle aktualisiert, Tippfehler und
nicht gerenderter date-Ausdruck korrigiert.
- docs/{GETTING_STARTED,ARCHITECTURE,API_REFERENCE,DEPLOYMENT,DEBUGGING,
SECURITY}.md als Stubs angelegt (waren in docs/INDEX.md verlinkt, aber
inexistent).
- history/CHANGELOG.md als Stub angelegt.
- scripts/cleanup_server.sh angelegt (war in AGENTS.md als 'integriert'
beschrieben, fehlte aber).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- createJsonEditUI(): Textarea für Objekte/Arrays und Input für Primitives erhalten expliziten Hintergrund #ffffff und Text #222222
- CSS-Block für #edit-content-content und #edit-modal Input/Textarea angepasst für Fokus und Hover
- Checkbox-Stile um accent-color und Label-Farbe ergänzt
- WCAG 2.1 Kontrastverhältnis 8.6:1 für alpha-numerische Eingaben erreicht
Fixes: #1
- createJsonEditUI() erstellt nun separate Eingabefelder für jeden JSON-Key (Objekte, Arrays, Primitives)
- saveEditedContent() reconstruiert gültiges JSON aus allen Eingabefeldern
- extractInputValue() und extractJsonFromForm() für robuste Extraktion und Rekonstruktion
- Eingabefelder nutzen jetzt #ffffff Hintergrund mit #222222 Text (WCAG 8.6:1 Kontrast) und Fokus-Outlines
- Textarea-Styling für Arrays und Objekte mit Resize und besserer Lesbarkeit
- Hilfsfunktionen validieren Boolean-, Number- und String-Eingaben korrekt
Resolves: #1
- Klärt, dass CLI-Tools wie search_replace, read_file und git commit reale Dateien und Commits erstellen
- Die Tools führen tatsächlich aus, sie simulieren nicht
- Hervorhebung der tatsächlichen Ausführung von Änderungen
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
- Komplexe JSON-Strukturen werden als formatierter Textbereich gerendert
- Benutzer kann JSON direkt mit korrekten Datentypen bearbeiten
- Arrays und verschachtelte Objekte bleiben als JSON erhalten
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
- Explizite Dokumentation aller ausgeführten Commits
- Tabelle der durchgeführten Commits dieser Session
- Verweis auf tatsächliche Git-Operations
Alle Änderungen wurden tatsächlich mit realen git commit-Befehlen
und pushfähigen Commits durchgeführt, nicht nur simuliert.
- Bearbeiten-Button in jeder Template-Karte
- Editier-Modal mit Save/Abbrechen-Funktionalität
- PUT-Endpoint in serve.py zum Speichern bearbeiteter Dateien