auto-commit 2026-01-30: learnings, tools notes, daily memory
This commit is contained in:
@@ -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": "<telegram_user_id>"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
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 <id>`
|
||||
|
||||
23
TOOLS.md
23
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:
|
||||
|
||||
39
memory/2026-01-29.md
Normal file
39
memory/2026-01-29.md
Normal file
@@ -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)
|
||||
Reference in New Issue
Block a user