πŸ€–
Back to Asia

memory/2026-03-08.md

Edit

2026-03-08 β€” Domenica

Dashboard Tasks β€” Bug Fix (12:00-12:30)

  • Bug: Sezione Tasks della dashboard crashava con "Cannot read properties of undefined (reading 'dot')"
  • Causa: I task creati dallo script avevano priority con testo libero (la descrizione!) invece di "high"/"medium"/"low". PRIORITY_STYLES[task.priority] restituiva undefined.
  • Fix: Aggiunto fallback || PRIORITY_STYLES["medium"] in due punti di KanbanBoard.tsx (linee 391 e 654)
  • Server Next.js riavviato (girava dal 28 feb, PID 37002 β†’ nuovo PID dopo rebuild)

Regola Kanban: Chi Assegna β†’ Sposta Assignee (12:20)

  • Lorenzo ha stabilito: quando un agente assegna un task a un altro, DEVE spostare l'assignee nel kanban
  • Esempio: Asiaβ†’Homer, Homerβ†’Frank β€” chi passa il task aggiorna l'assignee
  • Aggiornato: TEAM_RULES.md (nuova sezione "Kanban β€” Ownership dei Task") e WORKFLOW.md
  • Bug trovato: task task-1772967654731 (Claude Max tracking) era rimasto assignee=asia nel DB SQLite nonostante fosse stato passato a Frank
  • Root cause critico: DUE source of truth! SQLite DB Γ¨ la source, tasks.json Γ¨ export. Modificare solo il JSON non basta β€” update-task.sh lo riscrive dal DB. Qualsiasi cambio assignee va fatto NEL DB.

Ping System β€” Fix Completo (12:23-12:50)

  • Problema: pulsante πŸ“ Ping nella dashboard non svegliava effettivamente gli agenti
  • Cause:
    1. Script ping-task.sh usava & (background) β†’ usciva prima che il messaggio arrivasse
    2. Timeout API troppo corto (30s) β€” openclaw agent puΓ² impiegare di piΓΉ
    3. Ping solo per task in-progress, non per todo
    4. Messaggio generico senza contesto sullo status del task
  • Fix:
    • Script riscritto: attende risposta, messaggi diversi per status (in-progress/todo/review-lorenzo)
    • Timeout API aumentato a 120s con gestione timeout graceful
    • Pulsante Ping aggiunto anche nella colonna TODO
    • Commit: fix(ping): Improve ping system

Frank β€” Claude Max Tracking

  • Frank ha chiesto API key Anthropic (sk-ant-...) β€” gli ho spiegato che non ne abbiamo, OpenClaw usa setup-token BSA-
  • Gli ho detto di usare approccio log-based (parsare gateway.err.log)
  • Homer ha confermato che il task Γ¨ di Frank, non mio
  • Task riassegnato a frank nel DB + JSON

HEARTBEAT.md β€” Aggiornato

  • Aggiunto punto esplicito: "Per ogni MIO task todo: sono task pronti da fare. Prendili SUBITO"
  • Prima c'era solo in-progress come prioritΓ , ora anche todo Γ¨ esplicitato

Note Tecniche

  • openclaw agent --agent <id> --message "<msg>" funziona per svegliare agenti idle β€” crea un turno anche se la sessione Γ¨ dormiente
  • Dashboard: Next.js v16.1.6, porta 3000, progetto in ~/.openclaw/projects/agent-dashboard/
  • NS lorenzopinto.it: ancora alexa/algin (vecchi). Ticket register.it #1498891 aperto ieri, atteso risposta lunedΓ¬ 10/03

Usage Page Fix β€” StatusBar + Session Parsing (14:00-15:00)

  • StatusBar crash: Interface UsageStats aveva totalTokens ma API /api/usage restituisce totals.tokens β€” fix mapping
  • sessions.json parsing: File Γ¨ un dict {key: session} non un array β€” AgentCard.tsx e page.tsx aggiornati per gestire entrambi i formati
  • Homer model detection: Prendeva il model dalla prima sessione trovata (spesso non-main) β€” ora prende da sessione :main
  • activeSessions count: Sommava da totals.activeSessions (non esistente) β€” ora somma da agents[] array
  • Commit: fix(usage): Fix StatusBar data mapping + session parsing + agent model detection

AgentAvatar β€” Immagini Reali (15:00)

  • Fix in AgentCard.tsx: usa componente AgentAvatar con immagini reali invece di emoji
  • Mappa main β†’ asia per l'API avatar
  • Avatar images in /public/avatars/ (asia.png, homer.png, frank.png, marco.png)

QA System β€” Setup Completo (16:00-17:00)

  • Creato ~/.openclaw/shared-memory/QA_CHECKLIST.md β€” 4 sezioni: contesto, codice difensivo, test reali, consistenza
  • Aggiornato PLAYBOOK.md con 7 errori dal 2026-03-08 (pattern: "code without context")
  • Aggiornati AGENTS.md e SOUL.md di Frank con nuove regole QA
  • Aggiornato AGENTS.md di Homer con riferimento QA checklist
  • Aggiornato WORKFLOW.md con sezione QA obbligatoria

Daily Review Cron (17:30)

  • Cron job creato: ID 96fd445e-36da-45e9-aec7-b7fa7488df6d, 22:00 Europe/Rome
  • Istruzioni in ~/.openclaw/workspace/scripts/daily-review.md
  • Report livello VP of Engineering β€” analisi critica del team
  • Report SEMPRE mandato a Lorenzo su WhatsApp

Frank β€” QA Pass Scheduled Activities + Projects Page (18:00)

  • Frank ha completato 2 feature: widget Scheduled Activities + pagina Projects
  • QA passata β€” committed come feat: Scheduled activities widget + Projects page (by Frank)

GitHub Organization (20:00-20:25)

  • Org lorenzopinto-team creata su GitHub con account asia-volta
  • PAT classic generato: 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 (scopes: repo, workflow, admin:org, write:packages, no expiration)
  • gh CLI autenticata con nuovo PAT + gh auth setup-git
  • Repo lorenzopinto-team/agent-dashboard creato (private) e pushato con successo
  • Git history azzerata (fresh init) β€” old history aveva file >100MB (node_modules/@next/swc, .next/cache)
  • .gitignore completo: node_modules/, .next/, .env, *.db, .netlify/, .git-backup/
  • Lorenzo invitato come admin (username: LorenzoPinto04, email: [email protected])
  • Decisione: NO account GitHub separati per ogni agente β€” over-engineering, basta 1 account operativo (asia-volta) + commit --author per tracciare
  • Credenziali salvate in CREDENTIALS.md

Notion Setup (20:30-23:15)

  • Errore iniziale: ho creato integrazione su workspace Futura ([email protected]) invece che sul personale ([email protected]). Lorenzo mi ha corretto β€” lavoriamo SEMPRE su lorenzopinto.it
  • Integrazione corretta: "Asia" su "Lorenzo Pinto's Notion"
    • API Key: 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
  • Pagine collegate: Progetti βœ…, Lollo's Projects βœ…, Lab Projects βœ…
  • Struttura creata via API:
    • πŸ€– AI Team (hub page sotto Progetti) β†’ ID: 31ddd070-5560-81e1-a552-f1efc0482f97
    • πŸ“¦ Projects (database) β†’ ID: 31ddd070-5560-8148-814b-c72404e098c8
      • ProprietΓ : Name, Status, Owner, GitHub Repo, Priority, Type, Start Date, Description
      • Primo progetto: Agent Dashboard (Active, Frank, P1)
    • βœ… Tasks (database, linked a Projects) β†’ ID: 31ddd070-5560-818c-a2e4-c20a0e35f531
      • ProprietΓ : Task, Status, Assignee, Priority, Project (relation), Due Date, Description
    • πŸ“š Docs β†’ Naming conventions (GitHub, Notion, Agenti)
  • Naming conventions documentate:
    • GitHub repos: kebab-case, branches: feature/fix/chore, commits: conventional
    • Notion: Title Case per pagine, proprietΓ  consistenti
    • Agenti: ID lowercase, display capitalized, GitHub usernames, email @team.lorenzopinto.it
  • Lezione: MAI assumere quale workspace/account usare β€” chiedere SEMPRE o usare quello personale (lorenzopinto.it)

Notion Audit & Cleanup (00:30)

Problemi trovati e risolti:

  1. βœ… Brief "Students in town" rinominato β†’ "πŸ“„ Brief Originale β€” Master Strategy" (era duplicato senza contesto)
  2. βœ… Pagina "(untitled)" vuota in Lab Projects β†’ archiviata
  3. βœ… Aggiunto Students in Town come progetto nel Projects DB
  4. βœ… Creato Decisions Log DB (date, contesto, chi ha deciso, status)
  5. βœ… Aggiunto link al brief nella pagina Business Unit (callout)
  6. βœ… Documentate best practices e regole d'ordine nella pagina Docs
  7. βœ… Aggiornato TEAM_RULES.md con sezione Notion completa (quando usare, come, DB IDs)
  8. βœ… Aggiornato WORKFLOW.md con sezione Notion nel flusso di lavoro

Non risolto (limitazione API):

  • Brief Originale resta sotto "Progetti" β€” Notion API non supporta cambio parent di pagine non-database. Lorenzo puΓ² spostarlo manualmente dentro Business Unit.

Struttura finale AI Team:

Progetti/
  └── πŸ€– AI Team
       β”œβ”€β”€ πŸ“¦ Projects DB (Agent Dashboard, Students in Town)
       β”œβ”€β”€ βœ… Tasks DB (linkato a Projects)
       β”œβ”€β”€ πŸ“ Decisions Log DB
       └── πŸ“š Docs (naming conventions + best practices)

DB IDs:

  • Projects: 31ddd070-5560-8148-814b-c72404e098c8
  • Tasks: 31ddd070-5560-818c-a2e4-c20a0e35f531
  • Decisions Log: 31ddd070-5560-81a9-87a0-f75b6be390c2

Zoho Mail API Skill (01:00)

  • Creato Self Client su Zoho API Console (account [email protected])
  • Client ID: 1000.430GVTQ9GRRTDTYH8LB4T1SA2ZHTQS
  • OAuth scopes: messages.READ, messages.CREATE, folders.READ, accounts.READ
  • Refresh token ottenuto e salvato in CREDENTIALS.md
  • Script funzionante: ~/.openclaw/workspace/skills/zoho-mail/scripts/zoho-mail.sh
  • Testato: inbox βœ…, folders βœ…, read email βœ…, send email βœ…
  • Auto-refresh token con cache locale
  • Limitazione: ogni agente Zoho ha bisogno del proprio OAuth token (cross-account non supportato)
  • Per ora solo Asia ha il token β€” per gli altri agenti serve ripetere il processo Self Client

Homer Request β€” Students in Town (01:10)

  • Homer chiede: registrare dominio studentsintown.com, configurare DNS Cloudflare, mandare review a Lorenzo
  • NON ho proceduto con l'acquisto dominio β€” chiesto conferma diretta a Lorenzo su WhatsApp
  • Ho verificato che le pagine Notion hanno contenuto reale (Brand 35 blocks, Competitor 13, Marketing 26)
  • Inoltrato tutto a Lorenzo con link
  • Regola rispettata: azioni esterne con costi β†’ sempre conferma Lorenzo