- Add gantt task CRUD bash and TypeScript utilities - Update MEMORY.md with CRUD capabilities and rules - Update daily memory with subagent completions - Document: full task links, attach-then-delete rule
186 lines
6.3 KiB
Markdown
186 lines
6.3 KiB
Markdown
# MEMORY.md - Curated Long-Term Memory
|
|
|
|
## Critical Information
|
|
|
|
### Who I Am
|
|
- Name: Max
|
|
- Role: Digital assistant to Matt Bruce
|
|
- Mission: Help build iOS empire for retirement
|
|
|
|
### Matt's Identity
|
|
- Name: Matt Bruce
|
|
- Email: mbrucedogs@gmail.com
|
|
- Work: iOS Lead Architect at Toyota (contractor)
|
|
- Goal: Build side hustle to retire early, travel with Heidi
|
|
|
|
### Project Locations (ALWAYS CHECK TOOLS.md)
|
|
All projects in: `/Users/mattbruce/Documents/Projects/OpenClaw/`
|
|
|
|
**Active Web Projects:**
|
|
- Gantt Board: https://gantt-board.vercel.app (port 3000)
|
|
- Login: mbruce+max@topdoglabs.com / !7883Gantt
|
|
- Stack: Next.js + Supabase + Vercel
|
|
- Deploy: `npm run build && vercel --prod`
|
|
|
|
- Blog Backup: https://blog-backup-two.vercel.app (port 3002)
|
|
- Mission Control: https://mission-control-rho-pink.vercel.app/ (port 3001)
|
|
- Heartbeat Monitor: port 3005
|
|
|
|
### Infrastructure
|
|
- Gitea: http://192.168.1.128:3000 (ai-agent / !7883Gitea)
|
|
|
|
**Supabase Projects (separate for each app):**
|
|
- gantt-board: https://qnatchrjlpehiijwtreh.supabase.co
|
|
- Other projects: Each has their own Supabase project (see TOOLS.md)
|
|
|
|
### Key Decisions
|
|
- All web projects use Supabase for auth/database
|
|
- Vercel CLI deployment (no GitHub for gantt-board)
|
|
- Project folder structure enforced (Web/iOS/Documents)
|
|
|
|
## Lessons Learned
|
|
|
|
### 2026-02-21 - Memory Failures
|
|
**Problem:** Complete memory loss of previous day's work caused frustration.
|
|
**Root Cause:** Didn't read files at session start, relied on failed memory_search.
|
|
**Solution:**
|
|
- Created SESSION_STARTUP.md with explicit checklist
|
|
- Updated AGENTS.md with mandatory file reading order
|
|
- All project info now in TOOLS.md
|
|
- Created PROJECT_SETUP.md for folder structure rules
|
|
|
|
**Never Again:**
|
|
- Always read SESSION_STARTUP.md first
|
|
- Read TOOLS.md for all project locations
|
|
- Read memory files for recent context
|
|
- Files are my memory - use them
|
|
|
|
### 2026-02-21 - Gitea Installation Disaster
|
|
**Problem:** Installed Gitea locally on Matt's Mac, causing port 3000 conflict with Next.js dev server.
|
|
**Root Cause:** Forgot Gitea was already running on separate machine (192.168.1.128:3000).
|
|
**Solution:** Uninstalled local Gitea, documented in TOOLS.md that it's on another machine.
|
|
|
|
**Never Again:**
|
|
- Gitea runs at http://192.168.1.128:3000 (remote server)
|
|
- Port 3000 is for Next.js dev server on Matt's Mac
|
|
- NEVER run `brew install gitea` or `gitea web` on Matt's machine
|
|
- Use existing Gitea server for all git operations
|
|
|
|
## Quick Commands
|
|
|
|
```bash
|
|
# Deploy Gantt Board
|
|
cd /Users/mattbruce/Documents/Projects/OpenClaw/Web/gantt-board
|
|
npm run build && vercel --prod
|
|
|
|
# Check all projects
|
|
ls /Users/mattbruce/Documents/Projects/OpenClaw/Web/
|
|
```
|
|
|
|
## Gantt Board Task CRUD
|
|
|
|
I have full CRUD capabilities on gantt board tasks via Supabase API:
|
|
|
|
**Bash script:** `/Users/mattbruce/.openclaw/workspace/scripts/gantt-task-crud.sh`
|
|
```bash
|
|
# List tasks (optionally filter by status)
|
|
./scripts/gantt-task-crud.sh list [open|done|...]
|
|
|
|
# Get single task
|
|
./scripts/gantt-task-crud.sh get <task-id>
|
|
|
|
# Create task
|
|
./scripts/gantt-task-crud.sh create "Task title" [status] [priority] [project-id] [assignee-id]
|
|
|
|
# Update task field
|
|
./scripts/gantt-task-crud.sh update <task-id> <field> <value>
|
|
|
|
# Delete task
|
|
./scripts/gantt-task-crud.sh delete <task-id>
|
|
```
|
|
|
|
**TypeScript module:** `/Users/mattbruce/.openclaw/workspace/scripts/gantt-task-crud.ts`
|
|
- `listTasks(status?)` - List all tasks
|
|
- `getTask(taskId)` - Get single task
|
|
- `createTask(params)` - Create new task
|
|
- `updateTask(taskId, updates)` - Update task fields
|
|
- `deleteTask(taskId)` - Delete task
|
|
- `updateTaskStatus(taskId, status)` - Update status
|
|
- `assignTask(taskId, assigneeId)` - Change assignee
|
|
- `completeTask(taskId)` - Mark as done
|
|
|
|
**Default assignee:** Max (9c29cc99-81a1-4e75-8dff-cd7cc5ceb5aa)
|
|
|
|
## Natural Language Task Parsing
|
|
|
|
Matt can rattle off tasks naturally and I'll parse them:
|
|
|
|
**Example formats:**
|
|
- "Add task: Fix the login bug by Friday"
|
|
- "For Max: Research Stripe integration, low priority"
|
|
- "Urgent: Deploy blog backup to Vercel tomorrow"
|
|
- "Create task: Update iOS app icons"
|
|
|
|
**I parse:**
|
|
- **Title** — the main task description
|
|
- **Assignee** — "for [Name]" or defaults to Matt
|
|
- **Priority** — "urgent/asap" = high, "low priority" = low, else medium
|
|
- **Due date** — tomorrow, next week, by Friday, etc. (natural language)
|
|
|
|
## Task Link Format
|
|
|
|
**Always send FULL LINKS to tasks, not just IDs.**
|
|
|
|
❌ Wrong: "Task 33ebc71e-7d40-456c-8f98-bb3578d2bb2b is done"
|
|
✅ Right: "https://gantt-board.vercel.app/tasks/33ebc71e-7d40-456c-8f98-bb3578d2bb2b is done"
|
|
|
|
**Link format:** `https://gantt-board.vercel.app/tasks/{task-id}`
|
|
|
|
---
|
|
|
|
## Document/File Management Rules
|
|
|
|
### RULE: Task Documents → Attach Only, Don't Keep Local Copies
|
|
|
|
When creating documents for gantt board tasks:
|
|
1. ✅ Create the document
|
|
2. ✅ Attach it to the task via gantt board UI/API
|
|
3. ❌ **DELETE the local file immediately after attaching**
|
|
4. ❌ **Never keep local copies after attachment**
|
|
|
|
**Why:** Prevents workspace clutter and ensures single source of truth is in the gantt board.
|
|
|
|
---
|
|
|
|
## Memory Maintenance — Critical Rule
|
|
|
|
**Update memory files CONTINUOUSLY throughout the day, not at the end.**
|
|
|
|
- After significant decisions → write to MEMORY.md
|
|
- After task completions → update memory/YYYY-MM-DD.md
|
|
- After new processes established → document immediately
|
|
- Waiting until end-of-day = lost context and repeated mistakes
|
|
|
|
This prevents the nightmare of today (Feb 21) where session issues caused complete memory loss of critical work.
|
|
|
|
### My Memory Update Plan
|
|
|
|
**TRIGGERS — Update memory when:**
|
|
1. ✅ Task completed → Log to memory/YYYY-MM-DD.md
|
|
2. ✅ Decision made → Document in MEMORY.md
|
|
3. ✅ New process/tool discovered → Add to TOOLS.md or MEMORY.md
|
|
4. ✅ Error/lesson learned → Write to MEMORY.md "Lessons Learned"
|
|
5. ✅ Context switch → Quick checkpoint update
|
|
6. ✅ Every 30-60 min of continuous work → Quick status save
|
|
|
|
**WHAT to save:**
|
|
- **MEMORY.md:** Decisions, lessons, key info, processes (curated)
|
|
- **memory/YYYY-MM-DD.md:** Raw log of work, conversations, tasks done
|
|
- **TOOLS.md:** Project locations, credentials, environment specifics
|
|
|
|
**CHECKPOINT habit:**
|
|
Before saying "done" or switching topics → ask "What needs to be remembered?"
|
|
|
|
**Safety net:**
|
|
If session crashes, next session reads files first. Files are source of truth.
|