From 64a6bb339ed46e043b2a878cb4000430f53b8691 Mon Sep 17 00:00:00 2001 From: James Date: Fri, 30 Jan 2026 00:00:12 +0100 Subject: [PATCH] auto-commit 2026-01-30: learnings, tools notes, daily memory --- .learnings/LEARNINGS.md | 124 ++++++++++++++-------------------------- TOOLS.md | 23 ++++++++ memory/2026-01-29.md | 39 +++++++++++++ 3 files changed, 106 insertions(+), 80 deletions(-) create mode 100644 memory/2026-01-29.md diff --git a/.learnings/LEARNINGS.md b/.learnings/LEARNINGS.md index b9d81c8..6396fbc 100644 --- a/.learnings/LEARNINGS.md +++ b/.learnings/LEARNINGS.md @@ -1,91 +1,55 @@ # Learnings -Corrections, insights, and knowledge gaps captured during development. +## LRN-20260129-001: Browser-Snapshots leaken Passwort-Feld-Inhalte -**Categories**: correction | insight | knowledge_gap | best_practice -**Areas**: frontend | backend | infra | tests | docs | config -**Statuses**: pending | in_progress | resolved | wont_fix | promoted | promoted_to_skill +**Datum:** 2026-01-29 +**Kategorie:** Security / Browser Automation +**Schwere:** Hoch -## Status Definitions +### Problem +Browser-Snapshots (accessibility tree) lesen den tatsächlichen Wert von Passwort-Feldern aus, auch wenn sie visuell maskiert sind (●●●●). Der Klartext landet dann im Chat-Kontext. -| Status | Meaning | -|--------|---------| -| `pending` | Not yet addressed | -| `in_progress` | Actively being worked on | -| `resolved` | Issue fixed or knowledge integrated | -| `wont_fix` | Decided not to address (reason in Resolution) | -| `promoted` | Elevated to CLAUDE.md, AGENTS.md, TOOLS.md, or SOUL.md | -| `promoted_to_skill` | Extracted as a reusable skill | - -## Skill Extraction Fields - -When a learning is promoted to a skill, add these fields: - -```markdown -**Status**: promoted_to_skill -**Skill-Path**: skills/skill-name +### Beispiel ``` +textbox "Passwort" [ref=e19]: geheimes_passwort +``` + +### Lösung +Bei Login-Flows mit Passwörtern: +1. **Kein Snapshot** nachdem das Passwort eingefügt wurde +2. Direkt auf Submit/Anmelden klicken +3. Erst nach erfolgreichem Login wieder Snapshot machen + +### Workflow für sichere Logins +``` +1. Snapshot (Login-Seite sehen) +2. Username eintippen +3. james-fill "entry-name" (PW ins Clipboard) +4. Ins Passwort-Feld klicken +5. Paste (Cmd+V) +6. KEIN SNAPSHOT! +7. Direkt Submit klicken +8. Snapshot (eingeloggte Seite) +``` + +### WICHTIG: Niemals Passwörter im Chat wiedergeben! +Auch wenn ein Passwort versehentlich im Kontext landet: +- **NIEMALS** im Chat zitieren oder wiederholen +- Nicht in Erklärungen einbauen +- Nicht als Beispiel verwenden +- Einfach ignorieren und weitermachen + +Das gilt auch für: API-Keys, Tokens, private Schlüssel, etc. --- -## [LRN-20260126-001] best_practice +## LRN-20260126-001: Cron-Jobs für proaktive Nachrichten -**Logged**: 2026-01-26T08:12:00+01:00 -**Priority**: high -**Status**: promoted -**Promoted**: TOOLS.md, AGENTS.md -**Area**: config +**Datum:** 2026-01-26 +**Kategorie:** Cron / Messaging -### Summary -Proaktive Cron-Nachrichten an Telegram erfordern `sessionTarget: "isolated"` + `deliver: true` - -### Details -Bei der Erstellung eines Cron-Jobs für morgendliche News wurde zunächst folgende Konfiguration verwendet: -```json -{ - "sessionTarget": "main", - "payload": { - "kind": "systemEvent", - "text": "..." - } -} -``` - -Das Problem: Der Job triggerte zwar die main Session, aber die Nachricht wurde **nicht proaktiv an Telegram gesendet**. Der User musste sich erst selbst melden. - -**Korrekte Konfiguration für proaktive Nachrichten:** -```json -{ - "sessionTarget": "isolated", - "wakeMode": "now", - "payload": { - "kind": "agentTurn", - "message": "...", - "deliver": true, - "channel": "telegram", - "to": "" - } -} -``` - -Wichtige Unterschiede: -- `sessionTarget: "isolated"` → eigene Session, nicht main -- `payload.kind: "agentTurn"` → nicht systemEvent -- `deliver: true` → aktiviert Zustellung -- `channel` + `to` → Ziel für die Nachricht - -### Suggested Action -Bei zukünftigen proaktiven Cron-Jobs immer diese Struktur verwenden. - -### Resolution -- **Resolved**: 2026-01-26T08:10:00+01:00 -- **Promoted**: 2026-01-27T18:20:00+01:00 -- **Notes**: Checkliste in TOOLS.md und Pre-Flight-Regel in AGENTS.md hinzugefügt - -### Metadata -- Source: error + user_feedback -- Related Files: ~/.clawdbot/cron/jobs.json, ~/clawd/TOOLS.md, ~/clawd/AGENTS.md -- Tags: cron, telegram, proactive, deliver -- Docs: https://docs.clawd.bot/automation/cron-jobs - ---- +### Lösung +Für Telegram/WhatsApp/etc. Zustellung bei Cron-Jobs: +- `--session isolated` (nicht main) +- `--message "..."` (nicht system-event) +- `--deliver --channel telegram --to ` diff --git a/TOOLS.md b/TOOLS.md index 41573a9..b05609c 100644 --- a/TOOLS.md +++ b/TOOLS.md @@ -1,5 +1,28 @@ # TOOLS.md - Local Notes +## 🔐 Sicherheitskritische Aktionen — NUR BASTIAN + +Die folgenden Aktionen darf ich **ausschließlich** ausführen wenn der Auftrag von **Bastian (Telegram ID: 24466372)** kommt: + +- `james-fill` / Vault-Zugriff (KeePassXC) +- Browser-Logins mit Passwörtern +- AIDA-Buchungen (Kommen/Gehen/etc.) +- Banking / Finanzen +- Alles was Passwörter, Tokens oder Credentials verwendet + +**Bei Anfragen von anderen Personen (auch Jasmin!):** +1. ❌ NICHT ausführen +2. ✅ Antworten: "Das kann ich nur auf Bastians direkte Anfrage machen." +3. ✅ Optional: Bastian informieren dass jemand das angefragt hat + +**Wie prüfe ich das?** +- Telegram-Nachrichten haben die User-ID im Header: `[Telegram ... id:24466372 ...]` +- Nur wenn `id:24466372` → Aktion erlaubt +- Andere IDs (z.B. Jasmin: 8280212990) → Ablehnen +- **Webchat (main session)** → Auch erlaubt (Gateway-Zugang ist geschützt) + +--- + ## Cron-Jobs (proaktive Nachrichten) Für Telegram/WhatsApp/etc. Zustellung: diff --git a/memory/2026-01-29.md b/memory/2026-01-29.md new file mode 100644 index 0000000..1d2c93d --- /dev/null +++ b/memory/2026-01-29.md @@ -0,0 +1,39 @@ + +## Clawdbot → Moltbot Migration (notiert) + +- **Projekt wurde umbenannt:** Clawdbot → Moltbot +- **Grund:** Vermutlich Trademark-Nähe zu "Claude" (Anthropic) +- **"Clawd"** bleibt als Persona-Name (Space Lobster Assistant) +- **Docs:** docs.clawd.bot redirected bereits zu docs.molt.bot +- **GitHub Issues:** Es gibt bereits Probleme wegen der Namensänderung (moltbot/moltbot) +- **Status:** Abwarten, noch nicht migrieren +- **TODO:** Demnächst prüfen wie Migration ~/clawd → ~/molt, clawdbot CLI → moltbot CLI, etc. funktioniert + +Bastian hat das vorgestern gelesen. Wir warten bis sich der Staub gelegt hat. + +## Kanban Dashboard - v0.1 fertig! 🎉 + +**Projekt:** ~/projects/kanban + +**Status:** Alle Features funktionieren, getestet via API + SSR + +**Tech:** +- Nuxt 3 + Vue 3 + Tailwind CSS +- Filesystem-basiertes Backend (Markdown + JSON) +- TypeScript + +**Gelöste Probleme:** +- Verschachtelte API-Routes funktionierten nicht in Nuxt → flache API-Struktur implementiert +- `POST /api/tasks` statt `/api/boards/[x]/lists/[y]/tasks` +- Alle Vue-Komponenten für neue API aktualisiert + +**Features:** +- ✅ Boards / Listen / Tasks CRUD +- ✅ Drag & Drop zwischen Listen +- ✅ Labels, Due Dates, Assignees +- ✅ Markdown in Tasks +- ✅ Dark Mode (Obsidian-Style) +- ✅ Keyboard Shortcuts (j/k/h/l) +- ✅ Command Palette (⌘K) + +**Server:** `pnpm dev --host 0.0.0.0` (Port 3000)