Several panels
Lives in: theme presets + story panel_id / panel commands
Use more than one panel when two conversations should stay visible, or a side box holds a note while main advances.
Create another box
Ask for a new id on a node or command:
{ "id": "aside", "panel_id": "side", "panel": "side", "talking": ["hana"], "text": "…" }
{ "type": "panel", "panel_id": "side", "preset": "side", "show": true }
If theme panel.side exists, routing can pick that preset by matching the id name. Otherwise set "panel": "…" or pack default_panel_preset explicitly.
main always exists. Extra ids are created when first used (capped — keep the cast of boxes small).
Stacking
| Field | Effect |
|---|---|
z on a panel command | Draw order among panels; also feeds which visible panel gets input |
Higher z draws above. Keep the active reading box easy to see.
Patterns that work
| Pattern | Idea |
|---|---|
| Whisper | Same main id, different preset — no second box |
| Side commentary | panel_id: "side" + smaller preset; main keeps the primary line |
| Sticky note | Keep side visible while focus returns to main — Presence and quiet panels |
| Side / phone log | Tall preset + sticky append — see below |
Stage character places (left / center) are a different system — Places on stage. Drawing characters above/behind the box is draw_layer, not a second panel.
Side log (append + scroll)
A common second box: full-height (or tall) side panel that collects lines and scrolls inside the plate.
- Theme preset with
"max_height": "full"(or"80%") and"scrollbar_layout": "reserve"— How a panel looks - Sticky
{ "type": "panel", "panel_id": "side", "preset": "side_log", "text_mode": "append" } - Moments that write to
"panel_id": "side"(or packdefault_panel_id) - Optional
[panel panel_id side clear_append]when the thread should restart — Appending text
Keep main on normal replace dialogue while the log accumulates.
Usually you need
| Want | Do |
|---|---|
| Soft look only | One id, second preset |
| Two texts at once | Two ids + presence / readonly policy |
| Force a side box up | panel command show: true on that id |
| Scrollable log | Tall max_height + sticky text_mode: append |