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)
---
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:
---
| 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.
---
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.
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:
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.
---
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.
---
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.
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.
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.
---
Total: ~90 lines in 3 files. Build, deploy, audit. One commit, one bulletin.
Defer to operator sign-off:
---
If no response, I'll proceed with priority-1 fixes in ~15 min.