claude sync: Memories (Archiv/Wiki/Command-Panel), Archiv-Testdokument, Settings
This commit is contained in:
@@ -14,11 +14,13 @@
|
||||
},
|
||||
"permissions": {
|
||||
"additionalDirectories": [
|
||||
"~/projects/ai-control"
|
||||
"~/projects/ai-control",
|
||||
"~/claude-projects/claude-ai-control/archive"
|
||||
],
|
||||
"allow": [
|
||||
"Edit(~/projects/ai-control/**)",
|
||||
"Edit(~/claude-projects/claude-ai-control/**)"
|
||||
"Edit(~/claude-projects/claude-ai-control/**)",
|
||||
"Edit(~/claude-projects/claude-ai-control/archive/**)"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -3,5 +3,6 @@
|
||||
"terminal": {
|
||||
"theme": "monokai",
|
||||
"icon": "ai-control.png"
|
||||
}
|
||||
},
|
||||
"archiveHome": "~/claude-projects/claude-ai-control/archive"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
title: "Ein test für's archiv"
|
||||
project: ai-control
|
||||
created: 2026-07-19T12:05:33Z
|
||||
source: ai-control
|
||||
---
|
||||
|
||||
Ein test für's archiv
|
||||
+10
-2
@@ -1,10 +1,18 @@
|
||||
# Memory Index
|
||||
|
||||
- [Go-Pflicht](feedback-go-pflicht.md) — weitreichende Änderungen nie ohne ausdrückliches Go; eine Rückfrage von Marcus ist kein Go (Vorfall 2026-07-04)
|
||||
- [Nicht suchen, fragen](feedback-nicht-suchen-fragen.md) — fehlt ein Tool/Pfad: fragen statt find/ls/which; cargo/rustc unter ~/tools (aus build.sh)
|
||||
- [Go-Pflicht](feedback-go-pflicht.md) — NIE ohne Go handeln, Fragen sind keine Aufträge; gilt für jede Aktion inkl. write_panel (Vorfälle 2026-07-04, 2026-07-13)
|
||||
- [Keine Sleeps](feedback-keine-sleeps.md) — keine sleep/wait/Timer-Fenster als Race-Workaround; deterministisch auf Events/Zustand reagieren (Vorfall 2026-07-16 PopupBlurGuard)
|
||||
- [Keine Zusagen ohne Test](feedback-keine-zusagen-ohne-test.md) — kein „sollte passen" für ungetestete Umgebungen; Fakt und ungetestete Erwartung trennen (Vorfall 2026-07-16/17 XFCE/Kubuntu)
|
||||
- [USB-Kopien verifizieren](feedback-usb-kopien-verifizieren.md) — Wechselmedien: nach cp erst sync + Direct-I/O-Hash, dann Vollzug melden (Vorfall 2026-07-17)
|
||||
- [Nicht suchen, fragen](feedback-nicht-suchen-fragen.md) — fehlt ein Tool/Pfad: fragen statt find/ls/which; Lesen im Projektordner immer ok; cargo/rustc unter ~/tools (aus build.sh)
|
||||
|
||||
- [Multi-Account & Keychain](multi-account-keychain.md) — Stand 2.1.199: suffixierter Keychain-Eintrag pro Config-Dir verifiziert; Pools umbenannt, Keychain-Endstand ein Eintrag 096c4ef9 (privateDefault); Kaltstart über Starter läuft (2026-07-04), Qualität laut Marcus noch nicht zufriedenstellend
|
||||
- [Pool-Setup Stand](ai-control-pool-setup.md) — Layout ~/.config/ai-control (pools, projects.json-Registry, icons, settings.json mit claudeCommand); eingebautes Terminal + Tray mit Statuspunkten; Stand 2026-07-05 GitHub-reif (README en, MIT, Screenshots); Deploy braucht lsregister
|
||||
- [Linux-Umzug](linux-umzug.md) — ab 2026-07-05 laufen die Sessions auf der Linux-Box; Start per start-claude.sh (Einzeiler, Pool private); macOS-Code muss noch hinter cfg(target_os)
|
||||
- [Linux-Release-Prep](linux-release-prep.md) — Panel/MCP-Feature auf origin (165501c); Verifikations-Checkliste für Linux + offene Port-Lücke (sips); README außer sync, beim Release überarbeiten
|
||||
- [Command-Panel-Konzept](command-panel-konzept.md) — umgesetzt: show_commands, Kachel-Löschen, History flüchtig; seit 2026-07-19 eigener Befehle-Tab in der Header-Tab-Leiste, in der App verifiziert
|
||||
- [Dokument-Index-Konzept](dokument-index-konzept.md) — Session-Index per Hook + persistenter Archiv-Index aus dem Watcher; Konzeptphase, kein Go
|
||||
- [Archiv-Suchindex-Konzept](archiv-suchindex-konzept.md) — umgesetzt 2026-07-19: FTS5 in-memory pro Anfrage, search_archive, Treffer-Kacheln als dritter Panel-Modus; App-Verifikation offen
|
||||
- [Archiv-Home-Konzept](archiv-home-konzept.md) — umgesetzt 2026-07-19: archiveHome (alias archiveDir), archive_panel mit folder/description/tags; HTTPS-Sync + migrate offen
|
||||
- [Archiv-Wiki-Konzept](archiv-wiki-konzept.md) — umgesetzt + UI-Umbauten + Refinement 2026-07-19: Header-Tabs, rahmenlose Fenster mit Theme-Variablen, Live-Suche mit #tag, Archiv-Formular, Archiv wähl-/abwählbar, 27 Frontend-Tests (vitest); Panel-Hänger war fehlende Window-ACL; offen: publish, macOS/Windows-Angleich
|
||||
- [Linux-Install-TODOs](linux-install-todos.md) — GNOME-Extension via deb/rpm nach /usr/share ausrollen (postinst nur GNOME, prerm für dconf); AppImage-Start unter GNOME sperren mit Verweis aufs deb
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
---
|
||||
name: archiv-home-konzept
|
||||
description: "Geplantes Archiv-Home pro Projekt (Verzeichnis oder URL, local-first, migrierbar) als Storage-Schicht unter den Panel-Tools; Konzeptphase, kein Go"
|
||||
metadata:
|
||||
node_type: memory
|
||||
type: project
|
||||
originSessionId: 836a1699-2525-4d4b-8164-7efdb98d3b9b
|
||||
modified: 2026-07-19T09:30:22.589Z
|
||||
---
|
||||
|
||||
Marcus' Idee (2026-07-17): Pro Projekt ein wählbares Zuhause für Archiv + Indizierung — Verzeichnis oder URL, „einmal sagen, dann völlig transparent", online/offline egal, im Idealfall migrierbar. Abgestimmtes Konzept:
|
||||
|
||||
- **`archiveHome` pro Projekt** in `ai-control.json` (Nachfolger von `archiveDir`): Verzeichnis oder URL. Alle Tools (`archive_panel`, `search_archive`, `path`-Laden) laufen über eine Storage-Schicht im MCP-Server; oberhalb ändert sich nichts.
|
||||
- **Protokoll entschieden (2026-07-19):** Alle Funktionen laufen lokal mit direkten Dateisystem-Writes — kein lokaler HTTP-Server in Tauri (wurde erwogen und verworfen: nur Umweg zum selben FS plus App-Lebenszyklus-Kopplung). HTTPS ist ausschließlich das Protokoll des optionalen Sync-Ziels für die Markdown-Nutzdaten; der MCP-Client schreibt nie direkt gegen Remote.
|
||||
- **Local-first:** Schreiben immer lokal, Abgleich mit dem URL-Home nebenher; Suchindex ([[archiv-suchindex-konzept]]) bleibt lokal und reproduzierbar. Offline ist damit Normalzustand ohne erreichbares Remote, kein Sonderfall. Gesynct werden nur Nutzdaten — nie Indizes oder anderes Abgeleitetes (Binär-DB nicht mergebar, Konsistenz zum lokalen Stand, jede Maschine baut ihren Index selbst).
|
||||
- **Migration:** Dokumente ins neue Home kopieren, Index neu bauen, `archiveHome` umstellen — als `migrate`-Kommando; folgt aus dem Reproduzierbarkeits-Prinzip von [[dokument-index-konzept]].
|
||||
|
||||
Stand 2026-07-19: umgesetzt (Go am 2026-07-19) — `archiveHome` in ai-control.json (liest `archiveDir` als Alias weiter), `archive_panel` mit `folder`/`description`/`tags` (Frontmatter), Ordner-Validierung relativ ohne `..`. Remote-Sync über HTTPS und `migrate` bewusst noch nicht gebaut. Cargo-Tests grün; Verifikation in der laufenden App steht aus (rpm-Reinstall + Neustart). Baustein des „Textpanel viel besser machen"-Blocks ([[command-panel-konzept]], [[dokument-index-konzept]], [[archiv-suchindex-konzept]], [[archiv-wiki-konzept]]).
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
name: archiv-suchindex-konzept
|
||||
description: "Geplanter Volltext-Suchindex fürs Panel-Archiv — SQLite FTS5 (Empfehlung) oder tantivy, MCP-Tool search_archive; Konzeptphase, kein Go"
|
||||
metadata:
|
||||
node_type: memory
|
||||
type: project
|
||||
originSessionId: 836a1699-2525-4d4b-8164-7efdb98d3b9b
|
||||
modified: 2026-07-19T09:30:27.994Z
|
||||
---
|
||||
|
||||
Marcus' Idee (2026-07-17): Inhalts-Index für das Panel-Archiv für schnelles Suchen — „vielleicht ein leichter Elastic-Clone". Abgestimmtes Konzept:
|
||||
|
||||
- **Engine:** Empfehlung SQLite FTS5 (rusqlite) — eine DB-Datei neben dem Archiv, BM25, Phrasen/Präfix, inkrementelles Update; für Markdown-Archive pro Projekt ausreichend. Alternative tantivy (Rust-Lucene, wörtlich der leichte Elastic-Clone) erst, wenn Fuzzy/Facetten gebraucht werden. Wechsel bleibt möglich, weil Tool-Schnittstelle und Panel-Darstellung engine-unabhängig sind.
|
||||
- **Einbindung:** `archive_panel` aktualisiert den Index beim Archivieren (serverseitig, deterministisch). Neues MCP-Tool `search_archive(query)` → Treffer mit Pfad + Snippet, im Panel als Kacheln ([[command-panel-konzept]]); Treffer-Klick lädt das Dokument über den `path`-Parameter von write_panel.
|
||||
- **Reproduzierbarkeit:** Index jederzeit aus dem Archiv-Ordner neu baubar, Rebuild-Kommando gehört dazu — gleiches Prinzip wie [[dokument-index-konzept]].
|
||||
|
||||
Stand 2026-07-19: umgesetzt (Go am 2026-07-19) — FTS5 über rusqlite (bundled), Index wird pro Anfrage in-memory aus dem Archiv-Baum gebaut statt persistiert (bei dieser Archiv-Größe Millisekunden; keine Staleness, nichts zu syncen, Rebuild-Kommando überflüssig — Persistenz kann später nachgerüstet werden, Tool-Schnittstelle bleibt gleich). MCP-Tool `search_archive(query, tag)`; Treffer als Kacheln im Panel (Suchtreffer-Datei + AI_CONTROL_SEARCH + Watcher `search-update`, dritter Panel-Modus „Suche"), Klick lädt das Dokument. Cargo-Tests grün; App-Verifikation steht aus. Baustein des Blocks ([[archiv-wiki-konzept]]).
|
||||
@@ -0,0 +1,22 @@
|
||||
---
|
||||
name: archiv-wiki-konzept
|
||||
description: "Archiv als kleines Wiki im Panel: Live-Rendering Markdown→HTML mit Wikilinks/Backlinks/Startseite; explizites publish (statischer Export) später; Konzeptphase, kein Go"
|
||||
metadata:
|
||||
node_type: memory
|
||||
type: project
|
||||
originSessionId: ab462db0-45d2-4935-b32e-4ce2fafda1ae
|
||||
modified: 2026-07-19T15:08:23.226Z
|
||||
---
|
||||
|
||||
Marcus' Entscheidung (2026-07-19): Das Panel-Archiv bekommt eine Wiki-Schicht — **erst mal nur live**, ein explizites `publish` (statischer HTML-Export) kommt später als eigenes Kommando.
|
||||
|
||||
- **Live-Rendering:** Panel rendert archivierte Markdown-Dokumente zu HTML; HTML ist reine Darstellung, nichts wird gespeichert.
|
||||
- **Wikilinks:** `[[dokument-name]]` wird beim Rendern als Link aufgelöst; Klick lädt das Ziel über den `path`-Parameter von write_panel (derselbe Mechanismus wie der Treffer-Klick aus `search_archive`, [[archiv-suchindex-konzept]]). Namensauflösung über den Dokument-Index ([[dokument-index-konzept]]); Backlinks fallen als Nebenprodukt der Indizierung ab.
|
||||
- **Einstiegsseite:** Index-/Startseite pro Archiv (generiert aus dem Dokument-Index oder gepflegte `index.md`).
|
||||
- **Später — publish:** statisches HTML aus dem Archiv generieren; abgeleitete Daten wie der Suchindex (reproduzierbar, nie gesynct), standalone im Browser lesbar.
|
||||
|
||||
Fügt sich in das Modell aus [[archiv-home-konzept]]: alle Funktionen lokal, gesynct nur Markdown-Nutzdaten.
|
||||
|
||||
Stand 2026-07-19 (zweiter Umbau nach UI-Kritik „strukturlos, keine Nutzerführung"): Das Wiki hat einen **eigenen vierten Tab** mit eigenem Puffer (`<project>.wiki.json`, env `AI_CONTROL_WIKI`, Event `wiki-update`) — der Entwurf wird nicht mehr verdrängt. `archive_page` liefert strukturierte Daten (`WikiPage`: Ordner-Gruppen neueste zuerst, Tag-Zähler; `kind` page/doc), `wiki_doc` ein Dokument mit Frontmatter-gestripptem Markdown + Backlinks; `resolve`/`resolve_path`/`panel_load` sind ersetzt. `src/wiki-view.ts` rendert: Kopf (Titel #tag/Archiv, Home-Pfad, Dokumentzahl), Tag-Chips mit „Alle", Ordner-Eyebrows, klickbare Dokumentzeilen, Dokumentseite mit „‹ Archiv"-Rücksprung und Backlinks-Fußzeile, Leerzustand mit Anleitung; Klick auf den leeren Wiki-Tab lädt die Übersicht automatisch. Wikilinks, Chips und Suchtreffer öffnen alle über `wiki_open` im Wiki-Tab.
|
||||
|
||||
Dritter Umbau am selben Tag (in der App verifiziert, Commits 994d507 + 81a663e auf lintus): **Tab-Leiste im Fenster-Header** beider Fenster — `Befehle │ Dokument · Wiki · Suche │` rechtsbündig vor Pool-Badge bzw. Fensterknöpfen; „Entwurf" heißt überall „Dokument". Das abgelöste Fenster ist unter Linux rahmenlos mit eigener 40-px-Kopfleiste (Andocken/Min/Max/Schließen), Theme-gekoppelt über gemeinsames `src/themes.ts`; beide Fenster mit 1-px-Rahmen in Theme-Rahmenfarbe. Archivieren flusht offene Bearbeitung (`view.flush()`), Tab-Wechsel speichert statt zu blockieren, Fehler erscheinen als Panel-Toast (`panelToast`). Such-Tab hat ein Suchfeld: Live-Suche ab 3 Zeichen mit 300-ms-Debounce und Auto-Präfix (`arch` → `arch*`), Enter wörtlich; läuft über Tauri-Kommando `search_run` durch dieselbe FTS5-Engine wie `search_archive`. Refinement-Runde + Folge-Fixes (Commits 286513d, in der App verifiziert bis auf die letzten Fixes): Slug transliteriert Umlaute; aktiver Tab mit Akzent/Unterstrich, kein aktiver Tab bei zugeklapptem Panel; Suche mit Live-Update beim Löschen, `#tag`-Filter, Treffer öffnen im Dokument-Tab (`panel_load`, Frontmatter gestrippt), Wiki-Sprung-Button im Dokument; Archiv-Formular (Ordner/Beschreibung/Tags) am Archiv-Button; Wiki-Übersicht mit Zuletzt-Sektion + Backlink-Zählern; Panel-Farben als CSS-Variablen, `applyTheme` leitet sie pro Theme ab; Fenster: Doppelklick maximiert, gelöstes Fenster merkt Geometrie. **Archiv pro Projekt wähl-/abwählbar** im Einstellungsdialog (setzt/entfernt archiveHome + Permissions; `require_archive_home` legt den Ordner an); ohne Archiv zeigt das Panel nur Befehle│Dokument. **Frontend-Tests**: vitest + happy-dom, 27 Tests (`npm test`) über Modus-/Such-/Wiki-/Editor-/Formular-Logik. Panel-Hänger beim Ablösen geklärt: fehlende Window-ACL (set-position/outer-position/inner-size) killte den Fensterstart; zusätzlich `open_panel_window` async und JS-Fehler-Spiegelung ins Dev-Log. Offen: `publish`, macOS/Windows-Angleich. Teil des „Textpanel viel besser machen"-Blocks ([[command-panel-konzept]]).
|
||||
@@ -0,0 +1,21 @@
|
||||
---
|
||||
name: command-panel-konzept
|
||||
description: "Command-Panel umgesetzt: write_commands-History plus show_commands (Anzeigen) und Kachel-Löschen (commands_delete); Default flüchtig; seit 2026-07-19 eigener Befehle-Tab in der Header-Tab-Leiste, in der App verifiziert"
|
||||
metadata:
|
||||
node_type: memory
|
||||
type: project
|
||||
originSessionId: 836a1699-2525-4d4b-8164-7efdb98d3b9b
|
||||
modified: 2026-07-19T13:32:49.755Z
|
||||
---
|
||||
|
||||
Command-Panel in ai-control: Befehle als kopierbare Kachel-History im Panel statt Chat-Codeblöcke (MCP-Tool `write_commands`, JSONL pro Projekt, Watcher → Panel). Grundausbau war schon in der App; am 2026-07-17/18 mit Go ergänzt:
|
||||
|
||||
- **`show_commands`** (mcp.rs): argumentloses MCP-Tool, fasst nur die mtime der History-Datei an → Watcher meldet `commands-update`, Panel schaltet auf die Kachel-Ansicht; hängt nichts an. In panel-skill.md dokumentiert („zeig die Befehle/Befehlsliste").
|
||||
- **Kachel-Löschen**: Lösch-Button pro Kachel (Hover rot) → Tauri-Command `commands_delete(project, line, entry)` in terminal.rs (registriert in app.rs); entfernt Eintrag aus der JSONL-Zeile, leerer Record fällt mit weg, Watcher rendert neu. Index = nicht-leere JSONL-Zeile, Frontend/Backend parsen identisch.
|
||||
- Geändert: mcp.rs, terminal.rs, app.rs, commands-view.ts, panel.ts, terminal.ts, panel.html, terminal.html, panel-skill.md.
|
||||
|
||||
Verifiziert: cargo check/build, vue-tsc sauber; show_commands end-to-end gegen den MCP-Server (stdio) getestet — mtime springt, Inhalt byte-identisch. **Ungetestet:** Klickpfad Lösch-Button in der laufenden App.
|
||||
|
||||
**Flüchtig im Default (Entscheidung + Go 2026-07-18, umgesetzt):** Command-History gilt nur innerhalb der Session — `term_start` leert die JSONL wie die Panel-Datei (terminal.rs); Doku-/Beschreibungstexte angepasst (paths.rs, mcp.rs write_commands-Description, panel-skill.md). Buttons/Bedienung unverändert; Session-Marker-Record bleibt (harmlos, markiert Session-Startzeit). cargo check sauber; Laufzeitverhalten in der App ungetestet. Positionierung des Panels: Marcus überlegt noch, später.
|
||||
|
||||
**Stand 2026-07-19:** Positionierungsfrage entschieden — die Befehls-History ist einer von vier Tabs (Befehle │ Dokument · Wiki · Suche) in der Fenster-Kopfleiste, siehe [[archiv-wiki-konzept]]; in der laufenden App verifiziert (mehrere Reinstall-Runden). AppImage-Bundling bricht auf der Linux-Box weiter mit `failed to run linuxdeploy` ab; rpm-Weg funktioniert. Voller `npm run tauri build` dauert gut über 2 Minuten. Weiter offen: Panel zeigt repo-relative Bilder als WebKit-„?". Siehe [[linux-release-prep]], [[ai-control-pool-setup]], [[feedback-keine-zusagen-ohne-test]].
|
||||
@@ -0,0 +1,18 @@
|
||||
---
|
||||
name: dokument-index-konzept
|
||||
description: "Geplanter Dokument-Index für ai-control — flüchtiger Session-Index (Hook) + persistenter, reproduzierbarer Archiv-Index; Konzeptphase, kein Go"
|
||||
metadata:
|
||||
node_type: memory
|
||||
type: project
|
||||
originSessionId: 836a1699-2525-4d4b-8164-7efdb98d3b9b
|
||||
---
|
||||
|
||||
Marcus' Idee (2026-07-17): Jedes in einer Session berührte Dokument soll indexiert sein, damit „zeig Dokument X" ein Lookup ist statt einer Suche. Abgestimmtes Konzept:
|
||||
|
||||
- **Flüchtiger Session-Index:** Claude-Code-Hook (PostToolUse auf Read/Write/Edit + `write_panel`) loggt jeden Dokumentpfad mit Zeitstempel in eine Session-Index-Datei — im Harness, deterministisch, ohne Modell-Beteiligung.
|
||||
- **Persistenter Archiv-Index:** Der vorhandene Session-Watcher faltet den Session-Index beim Session-Ende in einen Projekt-Index (dedupliziert, letzter Zugriff je Dokument). Reproduzierbar: dieselbe Information steht in den Session-Transcripts des Pools, der Index ist nur die schnelle Sicht und jederzeit neu baubar.
|
||||
- **Nutzung:** MCP-Server liest beide Indizes; Panel-Aufruf mit Dokumentname löst darüber auf. Der Index ist auch als Dokumentliste im Panel darstellbar — passt zum Kachel-/History-Modus aus [[command-panel-konzept]].
|
||||
|
||||
Einordnung: Der Index beseitigt den Suchanteil der Latenz; der Verhaltensanteil (ungefragte Gegenprüfungen, Text durch den Chat streamen) ist davon getrennt — siehe [[feedback-nicht-suchen-fragen]], `path`-Parameter von write_panel.
|
||||
|
||||
Stand: Konzeptphase, kein Go. Gehört zum selben „Textpanel viel besser machen"-Block wie [[command-panel-konzept]].
|
||||
@@ -1,14 +1,14 @@
|
||||
---
|
||||
name: feedback-go-pflicht
|
||||
description: Weitreichende Änderungen NIE ohne ausdrückliches Go; eine Rückfrage von Marcus ist kein Go
|
||||
description: NIE ohne ausdrückliches Go handeln — Fragen (auch „wie machen wir das?") sind KEINE Handlungsaufträge; gilt für jede Aktion inkl. write_panel
|
||||
metadata:
|
||||
node_type: memory
|
||||
type: feedback
|
||||
originSessionId: 6c3fc02d-bc5c-4476-9384-8062394a85ff
|
||||
---
|
||||
|
||||
Weitreichende Änderungen (Verhaltensänderungen im Backend, Löschlogik, alles mit Datenverlust-Potenzial) nie umsetzen, bevor Marcus ausdrücklich Go gegeben hat. Eine Rückfrage oder Diskussionsfrage von Marcus („was machen wir dann mit X?") ist KEIN Go — Frage beantworten, dann stoppen und warten.
|
||||
Nie handeln, bevor Marcus ausdrücklich Go gegeben hat — das gilt für JEDE Aktion, nicht nur weitreichende Änderungen: auch Tool-Aufrufe wie write_panel (überschreibt den vorhandenen Panel-Inhalt!), Datei-Schreiben, Befehle. Eine Frage von Marcus („was machen wir dann mit X?", „wie machen wir das?") ist KEIN Go und KEIN Handlungsauftrag — Frage beantworten, dann stoppen und warten.
|
||||
|
||||
**Why:** 2026-07-04: Nach Marcus' Rückfrage zur Pool-Löschung habe ich direkt implementiert; Marcus hat abgebrochen („ICH HATTE NICHT GESAGT, DASS DU DAS TUN SOLLST"). Sein „ja" galt dem Plan davor, seine Folgefrage hat die Diskussion wieder geöffnet.
|
||||
**Why:** 2026-07-04: Nach Marcus' Rückfrage zur Pool-Löschung direkt implementiert; Marcus hat abgebrochen („ICH HATTE NICHT GESAGT, DASS DU DAS TUN SOLLST"). 2026-07-13 wiederholt: Auf die Frage „wie machen wir das?" (kopierbarer Befehl) direkt write_panel aufgerufen und damit den Refactor-Plan im Panel überschrieben. Zweimal derselbe Fehler — Fragen als Aufträge gelesen.
|
||||
|
||||
**How to apply:** Bei jedem Plan mit offener Designfrage: erst alle offenen Punkte klären, dann explizites Go für den Gesamtumfang abwarten. Antwort auf eine Frage endet mit der Antwort, nicht mit Tool-Calls.
|
||||
**How to apply:** Vor jedem Tool-Call prüfen: Hat Marcus diese Aktion ausdrücklich angeordnet, oder hat er gefragt? Bei Frage: nur antworten (ggf. mit dem Vorgehen als Text), kein Tool-Call. Bei Plan mit offenen Punkten: erst klären, dann explizites Go für den Gesamtumfang abwarten.
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: feedback-keine-sleeps
|
||||
description: Keine Sleeps/Waits/Timeouts als Synchronisation oder Race-Workaround — deterministisch auf Ereignisse/Zustand reagieren
|
||||
metadata:
|
||||
node_type: memory
|
||||
type: feedback
|
||||
originSessionId: a4284fc3-c5d0-4519-bc1a-d9516537eea5
|
||||
---
|
||||
|
||||
Keine `sleep`/`wait`/Timer-Fenster, um Races oder Event-Reihenfolgen zu „überbrücken" — weder in Rust noch in Scripts. Timing-Konstanten wie „350 ms gegen KDE kalibriert" sind verboten.
|
||||
|
||||
**Why:** Marcus hat das mehrfach untersagt; erneuter Vorfall 2026-07-16 (PopupBlurGuard in ai-control `app.rs`: Flag + `sleep(350ms)` gegen spurioses KDE-Blur). Timing-Werte sind auf einer Maschine geraten und auf der nächsten falsch.
|
||||
|
||||
**How to apply:** Statt Zeitfenster: auf das auslösende Ereignis oder den abfragbaren Zustand reagieren (z. B. Blur erst scharf schalten, nachdem `Focused(true)` eingetroffen ist; Zustand synchron prüfen statt abwarten). Wo Polling unvermeidbar scheint, erst fragen. Siehe [[feedback-go-pflicht]].
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: feedback-keine-zusagen-ohne-test
|
||||
description: Keine Funktions-Zusagen für ungetestete Umgebungen — Erwartungen klar als ungetestet/unklar markieren
|
||||
metadata:
|
||||
node_type: memory
|
||||
type: feedback
|
||||
originSessionId: a4284fc3-c5d0-4519-bc1a-d9516537eea5
|
||||
---
|
||||
|
||||
Keine Aussagen wie „sollte passen" / „läuft ohne weitere Handgriffe" über Verhalten, das auf der Zielumgebung nicht verifiziert ist. Erwartung und verifizierter Fakt strikt trennen; Ungeprüftes als „ungetestet" oder „unklar" benennen, nicht als Zusage formulieren.
|
||||
|
||||
**Why:** Vorfall 2026-07-16/17 (ai-control Linux-Tests): mehrfach „XFCE müsste mit demselben deb laufen" u. Ä. zugesagt — dann scheiterte Kubuntu erst am Laden (KPackageStructure), dann an Qt.rect, XFCE am Linksklick-Mapping des Panels. Marcus: „ständig völlig unhaltbare Versprechen".
|
||||
|
||||
**How to apply:** Bei Cross-Desktop/Cross-Plattform-Fragen: benennen, welcher Codepfad greift (Fakt), und getrennt, was davon auf der Zielumgebung ungetestet ist. Prognosen höchstens als Hypothese mit dem offenen Punkt. Siehe [[feedback-go-pflicht]], [[feedback-keine-sleeps]].
|
||||
@@ -11,4 +11,4 @@ Wenn etwas nicht da ist (Binary nicht im PATH, Datei fehlt), NICHT eigenmächtig
|
||||
|
||||
**Why:** Marcus wurde mehrfach deutlich (2026-07-11), als ein `find "$HOME" -maxdepth 4 -name cargo` seinen Home-Ordner gescannt hat. Verstößt gegen die CLAUDE.md-Regel „NUR SUCHEN, WENN AUSDRÜCKLICH ANGEWIESEN".
|
||||
|
||||
**How to apply:** Toolchain-Pfade stehen in den Projekt-Scripts. `cargo`/`rustc` liegen unter `~/tools` — Pfad kommt aus `build.sh` (Repo-Datei lesen ist ok, Home-Scan nicht). Fehlt Info trotzdem, fragen. Siehe [[feedback-go-pflicht]].
|
||||
**How to apply:** Toolchain-Pfade stehen in den Projekt-Scripts. `cargo`/`rustc` liegen unter `~/tools` — Pfad kommt aus `build.sh` (Repo-Datei lesen ist ok, Home-Scan nicht). Fehlt Info trotzdem, fragen. Ausnahme (Marcus, 2026-07-15): Lesen/Suchen **im Projektordner** ist immer ok, ohne Go. Siehe [[feedback-go-pflicht]].
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: feedback-usb-kopien-verifizieren
|
||||
description: Kopien auf Wechselmedien erst nach sync + Direct-I/O-Hash-Vergleich als erledigt melden
|
||||
metadata:
|
||||
node_type: memory
|
||||
type: feedback
|
||||
originSessionId: 836a1699-2525-4d4b-8164-7efdb98d3b9b
|
||||
---
|
||||
|
||||
Eine Kopie auf ein Wechselmedium (USB-Stick „2TB", exFAT) kam zweimal als 0-Byte-Datei an, obwohl `cp` + `ls` Erfolg zeigten — `ls` las nur den Page-Cache, die Daten waren nie auf dem Gerät (Vorfall 2026-07-17, deb-Transfer zum Mint-Test).
|
||||
|
||||
**Why:** `cp` schreibt in den Page-Cache; ohne `sync`/Unmount erreicht nichts das Medium. Ein Lese-Check ohne Direct I/O bestätigt nur den Cache. Marcus erwartet, dass „liegt auf dem Stick" verifiziert ist ([[feedback-keine-zusagen-ohne-test]]).
|
||||
|
||||
**How to apply:** Nach dem Kopieren `sync -f <mountpoint>`, dann `dd iflag=direct | sha256sum` gegen die Quelle vergleichen; erst bei Hash-Gleichheit Vollzug melden.
|
||||
@@ -19,6 +19,10 @@ Stand 2026-07-11: Das Entwurfs-Panel samt MCP-Tool ist fertig und auf `origin` (
|
||||
- Abgelöstes Panel-Fenster: auf Linux baut es mit Default-Dekorationen (die Terminal-Fenster sind `decorations(false)`); prüfen, dass es sinnvoll aussieht.
|
||||
- Zwei-Zeilen-Kopf + SVG-Icons rendern.
|
||||
|
||||
**Stand Desktop-Tests 2026-07-17:** Kubuntu läuft (Marcus bestätigt). XFCE/Xubuntu offen — kleinste Prio, später: Linksklick zeigt dort das Menü, weil auf der Box `menu-is-primary` im xfce4-panel-Systray gesetzt ist (Mittelklick = Activate). Panel-Setting umstellen hat Marcus abgelehnt (verstellt die ganze Box). Beschlossener Lösungsweg (noch ohne Go, nicht umgesetzt): Tray-Menü ganz entfernen („Beenden" gibt es im Popup, Popup.vue `quit_app`) + ksni-0.1.3-Fork, der die Menu-Property weglässt — sn-button.c aktiviert bei `menu == NULL` auch mit `menu-is-primary=true`; leeres Menü reicht NICHT. Offene Annahme: Panel behandelt fehlende Menu-Property als „kein Menü". Die Bundles 0.2.0 vom 16.07. enthalten den Blur-Guard-Fix `be1e4aa` noch nicht.
|
||||
|
||||
**Mint/Cinnamon-Test 2026-07-17:** deb-Installation über die CLI schlug fehl (Fehlermeldung liegt nicht vor), über die GUI installierbar. Popup bekam beim Öffnen keinen Fokus → schloss weder bei Klick daneben noch bei App-Wechsel. Fix (Commit `d4d455f` auf origin): map-event-Handler ruft `present()` — GTK holt unter X11 den echten Server-Timestamp, Muffin gewährt den Fokus; `gtk = "0.18"` als Linux-Dep. Ungegated brach der Handler den Klick-Weg auf GNOME- und KDE-Wayland (Ubuntu/Kubuntu-Regression), daher registriert nur unter X11 und außerhalb GNOME. Von Marcus bestätigt auf Mint, Ubuntu und Kubuntu (Erst-Test zeigte das alte, noch laufende Binary — App-Neustart nötig). Weiter offen auf Mint: Placement stimmt erst ab dem zweiten Öffnen (outer_size vor dem ersten Map). Nächster Schritt: Back-Testing auf macOS.
|
||||
|
||||
**Offene Linux-Port-Lücke (unabhängig vom Panel):** `sips` (Icon-Resize, lib.rs ~1114) ist macOS-only und braucht einen Linux-Pfad. `security`-Aufrufe sind der apiKeyHelper (bereits cfg-verzweigt). Siehe [[linux-umzug]].
|
||||
|
||||
**README:** komplett außer sync (nur macOS, kein Panel/MCP, keine Linux/Windows-Angaben, fehlende settings-Keys `terminalFontSize`/`spellcheckLang`). Beim Release überarbeiten — Framing (Linux/Windows „supported" vs. „to follow") hängt am Verifikations-Ergebnis auf der Box.
|
||||
|
||||
Reference in New Issue
Block a user