С помощью ИИ
Приложение для Pairx можно не писать самому: любой чат с ИИ напишет его по описанию, если знает правила песочницы и мост. Ниже — запрос, который их перечисляет. Скопируйте его, допишите в конце, что должно делать приложение, а ответ вставьте в Pairx: «+» → «Приложение» → «Новое из кода» → «Вставить».
Напиши мини-приложение для мессенджера Pairx: один HTML-файл со встроенными CSS и JavaScript, до 512 КБ. Название — в <title>.
Песочница Pairx:
- Сети нет: никаких fetch, XMLHttpRequest, WebSocket, внешних скриптов, шрифтов, картинок и CDN. Всё — внутри файла (картинки — data: URL или SVG).
- Нет WebGL, WebAudio, IndexedDB, WebAssembly, камеры, микрофона, геолокации, всплывающих окон и внешних ссылок.
- Светлая и тёмная тема через @media (prefers-color-scheme: dark). Вёрстка под телефон, ширина от 320 px. Шапку с названием рисует Pairx.
Мост: объект window.pairx уже есть. Вызовы асинхронные: await pairx.call(метод, параметры); ошибка — исключение с полем code
(unsupported, forbidden, consent_required, rate_limited, too_large, conflict, offline, not_found, internal). События: pairx.on(имя, функция).
- pairx.call('app.ready') — когда первый экран нарисован (убирает заставку).
- pairx.call('user.get') → {id, locale}: id человека внутри этого приложения.
- pairx.call('context.get') → {kind: 'chat' | 'personal' | 'preview'}.
- pairx.call('ui.mainButton', {text, visible, enabled, progress}) и событие 'ui.mainButton.clicked' — нативная кнопка Pairx внизу.
- pairx.call('ui.backButton', {visible}) и событие 'ui.backButton.clicked' — «Назад» в шапке для своих экранов.
- pairx.call('ui.popup', {message, buttons: [{id, text, type: 'cancel' | 'destructive'}]}) → id нажатой кнопки, до трёх кнопок.
- pairx.call('ui.toast', {text}); pairx.call('ui.theme') → {scheme, colors: {accent, background, surface, text, muted}}.
Общие данные чата хранит Pairx. Хранилища объявляются в странице:
<script type="application/pairx+json">{"stores": {"имя": {"type": "log"}}}</script>
Типы: log — журнал записей по порядку (убрать можно только свою), slot — одно значение на человека,
doc — один общий документ с версией, counter — суммы по ключам (per_user_limit ограничивает вклад одного человека).
- await pairx.call('storage.snapshot') → {seq, stores}: log → {entries: [{entry, user, value, at, retracted}]},
slot → {slots: {user: value}}, doc → {value, version}, counter → {totals: {key: n}, mine: {key: n}}.
- await pairx.call('storage.write', {op, store, ...}): {op: 'log.append', value}, {op: 'log.retract', entry},
{op: 'slot.set', value}, {op: 'slot.clear'}, {op: 'doc.set', value, version}, {op: 'counter.add', key, amount}.
doc.set с устаревшей version отклоняется с кодом conflict — перечитай снимок, примени изменение заново и повтори.
- pairx.on('storage.changed', ({changes}) => …) — изменения всех участников, и свои тоже, по порядку seq. Каждое несёт seq, store, op:
log {entry, user, value, at}, retract {entry}, slot {user, value}, doc {value, version, by}, counter {key, total, user, mine}.
Изменения с seq не больше seq снимка пропускай. pairx.on('storage.reset', …) — перечитай снимок.
- Личное (видно только самому человеку) — обычный localStorage, до 256 КБ; Pairx сохраняет его сам.
- Значение записи до 16 КБ, запись журнала до 4 КБ, не больше 10 записей в секунду от человека.
Само приложение: [опиши, что оно должно делать]Если ИИ умеет читать ссылки#
Дайте ему полное описание платформы одним файлом — оно собирается из этого сайта и всегда совпадает с ним:
https://dev.pairx.org/llms.txt— коротко: что такое приложение Pairx и где что описано;https://dev.pairx.org/llms-full.txt— весь сайт одним текстом: руководства, справочник моста и хранилища, пределы, примеры.
Например: «Прочитай https://dev.pairx.org/llms-full.txt и напиши приложение для Pairx: …».
Как получить хороший результат#
- Опишите, что видит и делает каждый участник. «Каждый может встать в очередь и выйти; первый видит „Ваша очередь“» лучше, чем «сделай очередь».
- Скажите, что общее, а что личное. Общее — в хранилищах чата, личное — в
localStorage. - Проверьте в эмуляторе.
pairx dev app.htmlпокажет приложение у двух участников сразу; ошибки скриптов видны в консоли браузера. Вставьте ИИ текст ошибки — он исправит. - Проверьте до отправки.
pairx check app.htmlскажет, примет ли сервис приложение и не уйдёт ли версия на ручную проверку.