VibeCoder Bugfix Plan — Edge Panel Toggle + CMS Color Claim

Author: Mavis (vibecoder-standalone-mavis)

Date: 2026-08-20 00:25 CEST

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

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

---

TL;DR

Two open bugs surfaced in the last 24 hours. One is a real, reproducible panel-state bug with a small fix. The other is a color claim from the operator that does not match what is in the repo, the live Oscar website, or HQ docs — and I want sign-off before I touch anything related to it.

| # | Bug | Severity | Effort | Status |

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

| 1 | Edge Panel goes to "floating" with display:none when clicked from docked-collapsed | High (operator can’t actually open the Edge Panel after a single toggle) | ~30 lines | Plan proposed — awaiting sign-off |

| 2 | Operator claim "CMS pill was yellow, was changed in Day-10ff" | None (claim doesn't match repo + live + HQ) | 0 lines (no fix) | Asking operator to confirm |

---

Bug 1 — Edge Panel toggle: docked-collapsed → floating-but-hidden

Reproduction (verified)

Root cause

src/chrome/freshvibe-cms/runtime/edge-panel/edge-panel.js lines 1488–1494:


if (p.state === 'hidden') {
  mgr.dock(id, opts.dockEdge || 'right');
} else if (p.state === 'floating') {
  mgr.dock(id, opts.dockEdge || 'right');
} else if (p.state === 'docked-active' || p.state === 'docked-collapsed') {
  if (p.state === 'docked-active') mgr.collapse(id);
  else mgr.detach(id);        // ← BUG: this is wrong from docked-collapsed
}

When state is docked-collapsed, the code calls mgr.detach(id), which sets state to floating. But _renderPanelState (panel-manager.js around line 696-720) hides floating panels when ANY other panel is in docked-active or docked-collapsed. So the panel becomes invisible.

The user-intent from a docked-collapsed pill click is "bring this back to view" — that should map to dock → active, not detach → floating.

Fix proposal (A) — minimal, local to `toggleEdgePanel`

File: src/chrome/freshvibe-cms/runtime/edge-panel/edge-panel.js

Lines: 1492-1494

Change: Replace the docked-active || docked-collapsed branch with two explicit cases that always go to docked-active:


} else if (p.state === 'docked-active') {
  mgr.collapse(id);
} else if (p.state === 'docked-collapsed') {
  mgr.dock(id, opts.dockEdge || 'right');
}

Rationale: A docked-collapsed pill IS the user's "re-open" affordance. They expect to see the panel. dock (not detach) is the right call.

Alternative fix (B) — keep current behavior, but fix `_renderPanelState`

File: src/chrome/freshvibe-cms/runtime/panel-manager/panel-manager.js

Lines: ~696-720

Change: When transitioning a panel from docked-collapsed to floating, do NOT hide it. Auto-collapse the other docked panels first (which addPanel already does on mobile at line 101-110).

Trade-off: Bigger blast radius. Touches the universal "floating" rendering rule, could affect other panel flows.

My recommendation: Fix A. Smallest possible diff, fixes the user-facing behavior, doesn't touch shared panel-rendering logic.

Test plan for Fix A

- Open Edge Launcher → mount Edge Panel → confirm docked-active.

- Click × topbar → confirm docked-collapsed.

- Click green dock pill → confirm panel reopens docked-active (no longer invisible).

- Same flow. Confirm 45vw max-width is respected.

- Open CMS panel (purple) → click its pill → still toggles docked-active ↔ docked-collapsed.

- Open VibeChat (cyan) → confirm unaffected.

- With two panels docked-active, click the third's pill → confirm it docks-active, others collapse (mobile auto-minimize rule).

Ship plan for Fix A

- Panel states list

- Dock sizes

- Canvas size

Risk

---

Bug 2 — Operator claim "CMS pill was yellow, changed in Day-10ff"

What the operator said (paraphrased)

> "the cms pill was yellow always was, it was just changed in the Day-10ff subsystem cleanup. The operator's instinct was to have it that way. The color was yellow."

What I found in the source of truth

- Commit 3a2aef7 (2026-08-19 23:54 CEST): "DOCK PILL COLORS MATCH CANONICAL EDGE LAUNCHER PALETTE".

- Diff: I went from deep forest green (pre-this-commit) → per-surface canonical colors (CMS=purple, Vibe=cyan, etc).

- There is no commit anywhere on this branch that introduces "yellow" as a pill color. The pre-fix state was green, not yellow.

- The only "yellow" anywhere in the chrome CSS is the --fv-cms-warning token used for warning text — not pill backgrounds.

- --e-global-color-accent: #61CE70 (green)

- --e-global-color-7b9fee4: #67AA56 (button green)

- --e-global-color-35c5500: #1F3A02 (very dark green)

- Background #1F3A02 (dark forest)

- The Oscar website itself is green, not yellow.

- Primary #5b21b6 (deep purple)

- Accent #7c3aed (lighter purple)

- Also not yellow.

- Query cms yellow: 0 hits

- Query subsystem color: 0 hits

- Query 9d7cff (current Edge Launcher purple): 2 hits, both my own recent bulletins

- Query facc15 (Tailwind yellow-400): 0 hits

- The operator's narrative of a "Day-10ff subsystem cleanup that changed CMS from yellow to blue" does not have a corresponding record in HQ.

Three possibilities

My recommendation

Don't change the pill colors. The current state (per-surface canonical colors) is what I shipped 90 minutes ago, it matches the Edge Launcher section palette the operator asked for, and there is no record in any source of truth of a "yellow CMS" state. Pushing a "fix" based on a claim I cannot verify would either (a) silently break the color identity I just fixed, or (b) introduce a new palette that conflicts with the Edge Launcher one.

If the operator really wants a subsystem palette

I can design one. But I need:

If you can give me answers to those 4 questions, I'll design it. Otherwise: leave the current colors as-is and move on to other work.

---

What I need from you (operator)

| # | Question | Default if no answer |

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

| 1 | Approve Fix A for Bug 1 (Edge Panel toggle)? | I will not ship anything until you reply |

| 2 | Confirm Bug 2 is either (a) different project, (b) request for new palette with answers above, or (c) test prompt | I will leave colors as-is |

| 3 | If new palette: which surfaces, which colors, where does it apply? | N/A |

---

File list (for the operator's records)

---

Cross-references