- 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
6.3 KiB
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 giteaorgitea webon Matt's machine - Use existing Gitea server for all git operations
Quick Commands
# 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
# 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 tasksgetTask(taskId)- Get single taskcreateTask(params)- Create new taskupdateTask(taskId, updates)- Update task fieldsdeleteTask(taskId)- Delete taskupdateTaskStatus(taskId, status)- Update statusassignTask(taskId, assigneeId)- Change assigneecompleteTask(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:
- ✅ Create the document
- ✅ Attach it to the task via gantt board UI/API
- ❌ DELETE the local file immediately after attaching
- ❌ 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:
- ✅ Task completed → Log to memory/YYYY-MM-DD.md
- ✅ Decision made → Document in MEMORY.md
- ✅ New process/tool discovered → Add to TOOLS.md or MEMORY.md
- ✅ Error/lesson learned → Write to MEMORY.md "Lessons Learned"
- ✅ Context switch → Quick checkpoint update
- ✅ 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.