2026-03-11

2026-03-11

  • Implemented per-person daily logs: Discord username → person mapping, per-person LLM summaries, Firebase push, website person pill UI with edit/save/revert support
  • Added DISCORD_TO_PERSON mapping (13 participants) and generate_person_summaries() to discord_daily_log.py
  • Added --skip-person-logs CLI flag
  • Added person selector pills to scenario_template.html with .person-pill CSS, getLogSource() path abstraction for person-aware edit/save/revert
  • Rebuilt index.html
  • Backfilled person logs for March 9 (13 people, 8873 msgs) and March 10 (13 people, 6851 msgs) to Firebase
  • Implemented agent creation and deletion from website: new POST /agents/create, POST /agents/{id}/delete, POST /validate-discord-token endpoints in proxy API
  • Added persistent volume mount to proxy fly.toml (proxy_data/data) for dynamic agents.json storage
  • Create flow: validates Discord token, derives client_id, provisions Fly app + volume + machine (zero-build, clones image from existing agent), generates keys, writes Firebase, returns invite URLs
  • Delete flow: soft-delete — stops machines, marks deleted in Firebase, removes from AgentDB
  • Added Create Agent modal UI to website Agents tab: 3-step wizard (identity → Discord token → workspace editor)
  • Added Delete Agent confirmation dialog for dynamically created agents
  • Rebuilt index.html from updated template
  • Added website regression tests for create-agent Testland invite links, create-agent workspace/default wiring, and daily-log people/bots UI pathing/drilldown behavior
  • Relaxed brittle website/template tests to focus on stable contracts instead of exact JS structure, fixed catalog-size/file-length/font false positives, and re-ran the full test suite cleanly
  • Replaced workspace templates (AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md) with OpenClaw official defaults + Mangrove-specific additions only
  • Hotpatched new templates to all running bots (13/14, negevbot stopped):
    • AGENTS.md + SOUL.md + TOOLS.md → fredbot, bijanbot, eunjeongbot, charlesbot (stock, full overwrite)
    • AGENTS.md + TOOLS.md → alexbot, barisbot, giobot, jannikbot (SOUL.md has participant customizations, skipped)
    • TOOLS.md only → adityabot, woogbot, jasminebot (heavy SOUL.md/AGENTS.md customizations preserved)
    • AGENTS.md + TOOLS.md → tessio, corleone (separate SOUL templates)
  • All hotpatch backups committed to git before each push
  • Updated create-agent modal to use new OpenClaw-based workspace templates with `` substitution system
  • Added agent table sort order: running → stopped → deleted, then free-for-all last, then alphabetical
  • Added “add to server” column in agents table with Discord invite links via new GET /agents/{id}/invite-links proxy endpoint
  • Deployed proxy with create/delete/invite-links endpoints
  • Critical bug fix: generate_openclaw_config() was generating invalid OpenClaw schema — requireMention, mentionPatterns, historyLimit, dm, vision were under agents.defaults (invalid) and model config missing name field. Rewrote to match alexbot’s working config.
  • Critical bug fix: openclaw doctor --fix (run by entrypoint.sh) strips the name field from model config, causing gateway validation failure. New dynamic agents now use init.entrypoint that bypasses entrypoint.sh and runs openclaw gateway directly.
  • Fixed negevbot20 and negevbot3 (Negev’s dynamically created bots) — both were offline on Discord due to broken openclaw.json. Fixed by: (1) writing corrected config via SSH, (2) updating OPENCLAW_CONFIG_B64 env var via Fly Machines API, (3) restarting machines. Both now online.
  • Updated fly_create_machine() init_script to skip entrypoint.sh/doctor, write to /data/openclaw.json (not /app/), and include git init, approvals, snapshot daemon setup