# Panel System

**Module id:** `system.panel-system`
**Version:** 1.0.0 (v0.6 Day 1)
**Path:** `modules/system/panel-system/`
**Imports as:** `import { PanelSystem } from '@fvcms/system/panel-system';`

The Panel System is the single unified runtime for every panel in the FreshVibe workspace. It replaces the older `fvcms-panel-manager` (ID43) for non-CMS panels, eliminates the dead `__fvcmsOpenEdgePanel` bug, and removes the S1/S2/S3 multi-surface OS model.

## Public API

```js
PanelSystem.createPanel(spec)   // create a new panel
PanelSystem.destroyPanel(id)     // destroy a panel
PanelSystem.float(id)            // float a panel
PanelSystem.pin(id, edge)        // pin a panel L or R
PanelSystem.dock(id, edge)       // dock a panel to an edge
PanelSystem.minimize(id)         // minimize to pill (Pro Mode gated)
PanelSystem.maximize(id)         // maximize from pill
PanelSystem.resize(id, opts)     // resize a panel
PanelSystem.list()               // list all panels
PanelSystem.on(event, cb)        // subscribe to events
PanelSystem.collapse(id)         // auto-hide a panel (Edge Panel)
```

See `examples.md` for usage.

## Pact rules

See `rules.md` for the full list (11 functional + 6 invariant + 2 mobile + 1 Pro Mode = 20 rules).

## Invariants

See `DNA.md` for the 5 DNA-level invariants.

## Build plan

See `plan.md` for the day-by-day breakdown.

## Tests

See `tests.md` for the test plan (12 unit + 8 integration + 15 drift + 20 pact = 55 tests).
