# Scenes: your page and your stream, arranged per screen

One set of blocks, arranged for each screen people use: your page on a computer, on a phone held upright, on a phone held sideways, and your stream at 16:9 and 9:16. A **scene** is one named arrangement of all of them, for example "Home", "Event day", "Starting soon", "Live" or "Be right back". [Preview]

Not switched on at neverlogoff.com yet.

## The screens [Preview]

| Screen | Key | How blocks are placed |
|---|---|---|
| Computer | `desktop` | columns (1 to 3), in an order you choose |
| Phone upright | `phone_portrait` | columns, usually 1 |
| Phone sideways | `phone_landscape` | columns, usually 2 |
| Stream 16:9 | `stream_16x9` (1920×1080) | free placement in layers |
| Stream 9:16 | `stream_9x16` (1080×1920) | free placement in layers |

- A screen you have not arranged is made from your main layout (the computer one): the same order, fewer columns on a phone, and on a stream your camera, game and chat with your first blocks beside them.
- Your page picks the phone screen by itself when someone turns their phone round. No reload.
- On a stream screen, `camera`, `game` and `chat` are places you keep free: your own sources go there in OBS.

## Draft or at once [Preview]

- **Computer and phone screens** are part of your page: changes are a draft until you publish, like every other page change.
- **Stream screens and switching scenes** happen at once: whoever is watching sees the change within a few seconds.

## Who sees what on a stream [Preview]

- A block's audience still applies on every screen.
- Your stream overlay only ever shows blocks that **everyone** may see. A block for your followers, people you approved, members, a list or only you is left out of the overlay completely.
- The one exception: when you stream to a private space, the overlay can also show blocks whose audience is exactly that space. This needs the overlay key from `/me/page` › Scenes, and only works while that space stream is live.
- The overlay never shows your unpublished draft.

## Put it in OBS [Preview]

1. Open `/me/page` › Scenes › "Your stream overlay (OBS)" and copy the address for 16:9 (or 9:16).
2. In OBS: **Sources › + › Browser**. Paste the address. Width 1920, height 1080 (or 1080 × 1920 for 9:16).
3. The overlay is see-through. Put your camera, game and chat sources **under** it, where your scene keeps them free.
4. Switching scene on NeverLogOff changes the overlay by itself: one browser source is enough.

The address looks like `https://<user-content site>/_u/<yourname>/_scene/active?canvas=stream_16x9&overlay=1`. It is served from a separate site that never sees your sign-in. Leave out `&overlay=1` to see a preview with the free places outlined.

## Switch scenes from an OBS hotkey [Preview]

Nothing of OBS runs on our side. If you want a hotkey, a small script on your own computer can call the switch for you:

- Make a key for your AI at `/me/page` (it lasts 60 minutes) and keep it on your computer only.
- Bind a hotkey (for example with OBS's Advanced Scene Switcher, or any hotkey tool) to run:

```
curl -X POST "https://neverlogoff.com/api/scenes?op=switch" -H "Authorization: Bearer <your key>" -H "Content-Type: application/json" -d "{\"scene\":\"brb\",\"confirm_public\":true}"
```

`confirm_public: true` means you, the person, already said yes to this switch. An AI acting for you must ask you first.

## Let someone else switch scenes [Preview]

You can let an officer of one of your guilds or spaces switch your scenes, and nothing else:

- They must be an officer (a mod) of a guild or space you run, now and every time they switch.
- It ends on a date you pick (at most a year away), after 90 days if you pick nothing, or when you remove it. "Until I remove it" is a choice you make on purpose.
- They cannot edit layouts, change your page, see private blocks, or give the right to anyone else.

## For your AI [Preview]

Tools: `/agents/tools-scenes.json`. The page JSON (`/schemas/nlo-page-v0.json`) carries `scenes` and `active_scene`:

```
{ "scenes": [ { "id": "home", "name": "Home", "layouts": {
    "desktop": { "columns": 2, "order": ["about", "links"], "hide": [] },
    "stream_16x9": { "layers": [ { "id": "cam", "source": "camera", "x": 75, "y": 0, "w": 25, "h": 30, "z": 2 },
                                 { "id": "a1", "block": "about", "x": 2, "y": 78, "w": 40, "h": 18, "z": 3 } ] } } } ],
  "active_scene": "home" }
```

- `x`, `y`, `w`, `h` are percent of the screen; a layer must fit inside it (`x + w ≤ 100`, `y + h ≤ 100`, at least 2 wide and high). `z` is 0 to 99, higher is in front. At most 24 layers per screen and 12 scenes.
- Scene ids: lowercase letters, numbers and hyphens. `active` is reserved (it means "whatever scene is live").
- Computer and phone screens go through `put_page` (draft, then publish). Stream screens and switching go through the scene tools and happen at once.
- A switch, or a change to the live scene, answers `409 needs_confirm` until you send `confirm_public: true` — ask your human first.
