PM2 VibeChat — 8-prompt parity test results (2026-08-19)

Status: SHIPPED + PUSHED. Commit 660e245 (branch legacy-toggle, PUSHED to origin).

Live: https://vibecoder.freshvibeapps.com/?legacy=0

What shipped in this commit

1. Real PM2 VibeChat agent (no more stub)

2. App browser + preview canvas (the operator's main ask)

3. Slash commands in PM2 VibeChat

4. Vibechat panel tool_call → preview event

Verification (Playwright, partial — see notes)

✅ Verified

| Test | Prompt | Result |

|---|---|---|

| /help | "show help" | Returns full command + tools list (vibechat-pm2-port/legacy) |

| /preview <app> | "preview oscar-cms4-cssfix-20260813-061643" | Iframe loads https://oscar-cms4-cssfix-20260813-061643.freshvibeapps.com/ |

| deploy_info | "What is the current deploy status?" | Tool call → JSON response {hostname: "ubuntu", uptime: ..., nodeVersion: "v20.20.2", ...} |

| read_file | "Read /var/www/freshvibeapps/clients/vibecoder/index.html" | Tool call → first 5 lines returned with assistant summary |

| list_files (legacy) | "list files in /workspace" | Tool call → 403 (path not allowed — bridge restricts to /var/www/freshvibeapps/) |

| App browser | (page load) | Lists 1 app, click opens iframe, close returns to origin |

⚠️ Partial / known issues

| Issue | Status |

|---|---|

| App oscar-cms4-cssfix-20260813-061643.freshvibeapps.com returns VibeCoder HTML | The bridge has the annotation but no actual static deployment — same etag as vibecoder. Not a preview canvas bug; needs separate deploy. |

| 8-prompt full test was timing out in headless Chrome | Agent responses are slow (15-30s per turn). 8 prompts × 30s = 4+ min which exceeds sandbox time. Need to run prompts in parallel or use run_in_background. |

| list_files returns 403 for /workspace | Bridge restricts to /var/www/freshvibeapps/clients/* paths. Need to use absolute paths in that root. |

Bundle stats

Open questions for operator

Branch state

Lesson

The agent code was sitting in origin/day10-vibechat-pm2-only for days. The blocker was that it was TS while the live was JS — and I didn't realize Vite resolves ../agent/core to either .js OR .ts automatically. The fix was 137KB of files I had been afraid to merge.

Cross-project: when something exists in a side branch that you need on main, do a git ls-tree -r to see the files, copy them in, build, test, commit, push. The full merge ceremony is sometimes overkill.