Пост может иметь атмосферу — то, что стоит за текстом: живой фон или последовательность картинок, и, если хотите, звук.
Читатель при этом всегда остаётся главным: с 1.0.8 открытие поста открывает его картинку — в пределах того, что вы выставили для атмосфер (выкл, постер, спокойно, полностью), что разрешает пространство и что говорит системный reduce motion. Звук — единственное, что по-прежнему спрашивает.

Из чего она состоит
| часть | обязательна | что это |
|---|---|---|
| картинка | да, одна из двух | либо движущаяся сцена, либо картинки по мере чтения — вместе нельзя |
| звук | нет | одна дорожка, играет за постом |
| слова | да | что читатель получит, если картинку показать нельзя |
Последнее — не формальность. Правило простое: рендерер может деградировать, смысл — нет. Клиент, который не знает вашу сцену, старый телефон, включённый режим «меньше движения» — во всех этих случаях читатель получает вашу фразу, а не пустоту. Редактор пишет её сам («Nebula — a slow moving background»), и её можно заменить своей.
Как добавить
Открыть композер (✍ New post) и найти панель Atmosphere.
1. Звук — первым
Панель открывается на звуке намеренно: у всего визуального есть рабочие значения по умолчанию, а вот «должен ли этот пост звучать» не угадает никто.
♫ Add a sound → выбрать файл. Появятся:
- loop / once — играть по кругу или один раз;
- volume — громкость.
Звук играет только у того, кто открыл пост со звуком. Мягкое появление и затухание уже настроены.
2. Движущаяся сцена
Под Customize — живой предпросмотр через тот же движок, который увидит читатель (не макет и не скриншот: иначе автор настраивал бы картинку, которой ни у кого не будет).
С 1.0.7 на выбор — четыре сцены, и каждая это фрагментный шейдер: крошечная программа без памяти, без сети и без глаз, измеряемая тем же полом яркости, что бы она ни вычислила:
| сцена | характер |
|---|---|
| Nebula | облака из собственных цветов поста и несколько seeded-звёзд |
| Aurora | занавеси света над тёмной землёй |
| Caustics | сеть света на дне бассейна |
| Silk | полотна ткани, складывающиеся в медленном воздухе |
Прежние шесть (Drift, Tide, Orbit, Dust, Ember, Pulse) ушли на покой, но не удалены: композер их больше не предлагает, а каждый пост, который уже называет одну из них, сохраняет свою картинку на каждом устройстве — id сцены, однажды опубликованный, это обещание.
Ниже — Seed с кнопкой ⚄ Reroll (одна и та же сцена с другим зерном выглядит иначе, и это воспроизводимо) и три ручки, одинаковые везде: drift, density, glow. Смена сцены их сбрасывает — они принадлежат сцене.
Ниже — палитра (из неё же считается затемнение под текстом), слова и происхождение, если атмосфера взята у другого поста.
3. Картинки по мере чтения
Другой режим: фон меняется, пока человек читает.
- В панели Atmosphere переключить режим на Pictures as you read.
- В списке блоков нажать + 🖼 Background — и выбрать картинку.
Картинка привязывается к месту в посте: она стоит прямо перед своим блоком и означает «отсюда и ниже — этот фон». Поэтому она и живёт среди блоков: её можно двигать и удалять, как блок.
- До 12 картинок на пост.
- Клик по миниатюре — заменить.
- Порядок всегда приводится к порядку документа: «здесь», а не «третьей».
- Если блок-якорь удалён, картинка не пропадает молча — редактор покажет, что ей нужен новый якорь.
Сцена и картинки — альтернативы. Переключение режима честно предупредит, что от генеративной половины ничего не останется.
Звук у каждой картинки отдельно в контракте предусмотрен, но не проигрывается и в редакторе не предлагается. Показывать автору поле, которого читатель не услышит, значило бы продавать несуществующее.
Что видит читатель
В ленте — карточка с неподвижным первым кадром (или постером):
◌ Атмосфера Nebula · Со звуком
Живых циклов в ленте нет вообще: один кадр на видимую карточку, и тот пропадает, когда карточка уезжает с экрана.
Клик по карточке открывает пост, а пост открывает свою картинку — полоса читает moving с первого кадра, с Pause и Leave. Со звуком — единственная оставшаяся дверь, и она читается как дверь, а не как тумблер, намекающий, что звук когда-то был включён.
Внутри поста атмосфера — слой позади всей статьи, а не вставка между абзацами. Между ней и текстом лежит затемнение, которое пересчитывается под каждую картинку: яркое фото не съест текст.
Полоска управления после входа:
| кнопка | что делает |
|---|---|
| Pause | замирает на текущем кадре, а не отматывает к началу |
| Resume | продолжает оттуда же |
| Mute / Unmute | только звук; картинка не трогается |
| Leave | выйти: детерминированный первый кадр и снова двери |
| Use this atmosphere | забрать рецепт себе в новый черновик |
Последнее стоит отдельного слова: копируется рецепт, а не картинка, и в нём остаётся отметка, от чего он произошёл — проверяемая, а не на словах.
Безопасность и уважение к читателю
Это не декларация, а то, что заложено в механику:
- Сцены не умеют мигать. Скорость и амплитуда изменения яркости ограничены на уровне API сцен, а не доверием к автору. Каждая встроенная сцена прогоняется автоматической проверкой по всему диапазону параметров.
- Сцены не рисуют текст. Сцена, умеющая нарисовать буквы, умеет подделать системное сообщение.
- «Меньше движения» в системе — фиксированное безопасное затухание вместо авторского, никаких сдвигов.
- Вкладка в фоне — рисование останавливается.
- Одна сцена за раз на всё приложение.
- Звук уступает. Если идёт комната прослушивания, фон поста не начнёт играть поверх неё, а честно скажет почему.
- Ничего из происходящего у читателя не отправляется обратно: движение и звук — это исполнение рецепта, а не данные.
Если атмосферы не видно
| признак | причина |
|---|---|
| пост открылся без движения | так сказали ваша настройка атмосфер, разрешение пространства или системный reduce motion — сцена слушается самого тихого |
| вместо картинки — фраза | этот клиент не знает вашу сцену, или включено «меньше движения». Читатель получил смысл |
| звук не начался | другой звук уже играет (например, комната прослушивания) — причина написана в полоске |
| «A sequence needs at least one picture» | выбран режим картинок, но не добавлено ни одной |
| «Write something first» | картинка отмечает место в посте, а блоков ещё нет |