qol-world-canvaslisted
Install: claude install-skill qol-tools/qol-skills
# qol-tray World Canvas Reference
## Model
The world is one continuous 2D coordinate space plus a layer axis (see `docs/specs/2026-04-11-world-confinement-design.md`). Pages live at world coordinates; the camera pans/zooms/changes layer. Dive frames are pushed on a LIFO stack; ascend pops one frame at a time.
Each divable element declares a **DiveTarget** (source selector, claim rect, page list) and may carry a `traits` map. Traits are orthogonal capabilities that affect how the divable is rendered or behaves while the user is inside it.
Design spec: `docs/specs/2026-04-15-divable-traits-design.md`.
## Trait registry
The trait map carried by `DiveTarget` is the extension surface. Discover
recognized traits from their consumers and the design spec; do not treat the
named semantics below as an exhaustive registry.
| Trait | Config | Effect |
|---|---|---|
| `confined` | `{}` | Walls off the world outside the divable's claim. Already in place; this trait formalized it. |
| `peripheral-preview` | `{ neighbors: int }` | Renders ±N sibling miniatures at viewport edges. Non-interactive. |
| `atmosphere` | `{ preset, background, tint, audio }` | Paints a backdrop inside the confined region. Preset-driven with per-divable overrides. |
A DiveTarget with no `traits` field gets defaulted to `{ confined: {} }` by `addDiveTarget`. Non-traited targets preserve default behavior by construction.
## Files
### Navigation + registry (shape + propagation)
- `ui/lib/world-registry.js` —