Edge Launcher Wiring Audit + Fix Plan — 2026-08-20

Author: Mavis (vibecoder-standalone-mavis)

Date: 2026-08-20 00:55 CEST

Worktree: /workspace/vc-source.worktrees/legacy-toggle/ at commit 3a2aef7 PUSHED

Live bundle: https://vibecoder.freshvibeapps.com/ → main-DJSvSaGk.js (697KB)

---

TL;DR

The Edge Launcher is functioning as designed (it IS a launcher, not a container — panels open on their own when you click a tile). But the launcher is full of decoration (30+ tiles, 21 are no-ops that show "coming soon" toasts). The operator wants me to:

3 things the operator is right about, 1 thing they have a design choice on:

---

Inventory: what the Edge Launcher actually does today

8 sections, 30+ tiles

| Section | # tiles | Real wired | No-op ("coming soon") |

|---|---:|---:|---:|

| CMS | 6 | 6 (Structure, Content, Widgets, Media, Theme, Regions) | 0 |

| Vibe | 4 | 2 (VibeChat, History) | 2 (AI Tools, FvRE) |

| Workspace | 4 | 0 | 4 (Presets, Switch Workspace, Switch Project, A/B Testing) |

| FreshVibe App | 3 | 1 (FreshVibeOrigin) | 2 (Origin Switcher, Preview Engine) |

| Custom Panels | 5 | 0 | 5 (New Panel, Manage, Export, Import, Sync) |

| History | 5 | 1 (Revert → undo) | 4 (AI Changes, User Changes, Replay, Pin Preset) |

| App | 4 | 0 | 4 (App Builder, Deploy, Preview, Settings) |

| VSIL | 4 | 0 | 4 (Inspector, Preview, Tools, Scene Ops) |

| Total | 35 | 10 | 25 |

Wired tiles call real functions: openStructure, openWidgetsPicker, openMediaPicker, openThemePicker, openRegionsPicker, focusVibeChatPanel, openHistory, focusMainCanvas, openUndo (= document.execCommand('undo')).

No-op tiles all call showToastAction('X — coming soon') which just shows a toast for 1.8s and does nothing else.

---

What's missing (the 3 buckets)

Bucket A: SURFACES panels that exist but need to be CREATED at boot

The SURFACE_TO_PANELS map references these PM2 panel ids:

So 2 panels (fvcms-history, fvcms-vsil-panel) referenced in SURFACE_TO_PANELS don't exist as PM2 panels. The "show all / hide all" toggle for those sections will always be a no-op.

Bucket B: FES endpoints that need to exist

Operator's instinct was right: many tiles reference backend functionality that needs FES endpoints:

| Tile | Action needed | FES endpoint |

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

| Origin Switcher | List + switch origin | GET /api/agent/origins (404 today) |

| Preview Engine | Get/set preview mode | GET /api/agent/preview-modes (404 today) |

| App Builder | Build a freshvibe app | POST /api/agent/apps/build (404 today) |

| App Deploy | Deploy a built app | POST /api/agent/apps/deploy (404 today) |

| App Preview | Preview a deployed app | GET /api/agent/apps/:id (404 today) |

| VSIL Inspector | Render VSIL scene inspector | GET /api/agent/vsil/scene (404 today) |

| VSIL Preview | Render VSIL scene | GET /api/agent/vsil/scene/:id (404 today) |

| History (real one) | List AI/user changes | GET /api/agent/history (404 today) |

| Workspace Presets | Save/load presets | GET /api/agent/presets (404 today) |

| Switch Project | List + switch projects | GET /api/agent/projects (404 today) |

FES today has:

Bucket C: Action handlers missing in `EDGE_PANEL_HOST`

src/host/host-boot.js lines 507-602 defines EDGE_PANEL_HOST with 18 functions. Missing handlers for the new sections:

Most of these can be implemented as FES-backed actions or local panel toggles.

---

The "panels open on their own" complaint

This is a design question, not a bug. The Edge Launcher is architecturally a launcher (tiles trigger actions to open other panels), not a container (panels live inside the Edge).

The operator said: *"panels open on their own not inside it"*. They want the latter. That requires a structural change to the Edge Panel:

Option A (small change): keep the launcher design, but make it clearer. Add a "container" mode where clicking a tile loads a SUB-VIEW inside the Edge (instead of opening a new window). The Edge becomes a single panel that hosts sub-views: CMS, VibeChat, History, etc.

Option B (medium change): convert the Edge from launcher to multi-tab container. Tabs at top: CMS, VibeChat, History, etc. Click a tab → switch to that sub-view. Each tab loads its panel's content into the Edge's body.

Option C (no change): keep the launcher. Just wire the no-op tiles to real actions, and add FES endpoints for the missing ones. The "panels open on their own" is by design.

My recommendation: Option C now, Option B later. Option B is a real architectural change that affects the whole chrome. The operator's actual pain is "panels don't open at all" (because actions are no-ops), not "panels open in a different window" (which is the standard launcher pattern). Fix the no-ops first; the container pattern is a separate design discussion.

---

Proposed fixes (in priority order)

Priority 1: Wire what we can NOW (no FES run needed)

Fix 1.1 — Hide 25 no-op tiles, OR show them as "coming soon" disabled. Two options:

My pick: (b). Add disabled: true to each no-op tile. CSS dims them. They stay visible so the operator sees the roadmap, but clicks do nothing.

Fix 1.2 — Wire 5 high-value no-op tiles to existing functionality:

Fix 1.3 — Create the 2 missing PM2 panels at boot:

Both as PM2 panels with empty content + a "Coming soon — registered as panel for SURFACE_TO_PANELS" placeholder. This makes the "show all / hide all" toggle work.

Fix 1.4 — Add missing action handlers to EDGE_PANEL_HOST:

Effort: ~80 lines in 2 files (host-boot.js + edge-panel.js). Low risk.

Priority 2: FES run to create missing endpoints

Per operator directive, run a VPS-side FES update to add:


GET  /api/agent/origins              → list of available origins
GET  /api/agent/preview-modes        → available preview modes
POST /api/agent/apps/build           → build a freshvibe app
POST /api/agent/apps/deploy          → deploy a built app
GET  /api/agent/apps/:id             → app metadata
GET  /api/agent/vsil/scene           → current VSIL scene
GET  /api/agent/vsil/scene/:id       → specific scene
GET  /api/agent/history              → list of changes
GET  /api/agent/presets              → workspace presets
GET  /api/agent/projects             → project list

10 endpoints. Some can be hardcoded responses for now, others need real backend logic.

Effort: depends on FES architecture. Need to read the existing FES code to know how to add endpoints. Will file a separate plan for this.

Priority 3: Topbar / header fix (from previous turn, deferred)

The previous turn's complaint about "the header has been changed, the app picker is floating on top of the hero" is a separate fix. Defer to a different plan to keep this one focused.

---

What I'll do now (no operator sign-off needed — these are small, low-risk)

Total: ~90 lines in 3 files. Build, deploy, audit. One commit, one bulletin.

Defer to operator sign-off:

---

What I need from operator

If no response, I'll proceed with priority-1 fixes in ~15 min.