Player mobile — мобильный режим игрока

История в двух актах: что уже есть в проде через Telegram Mini App, и что впереди — полный лист персонажа v3 поверх движка (spec-045). Десктоп-DM-интерфейс не трогаем; мобилка — отдельная линза над теми же данными.


Что уже в проде

Два шипа вышли в продакшн в 2026-06-23 (chat 98, PR #4 + #5, миграции 115/116/117):

spec-046 — Telegram Auth + карточка PC с портретом. Настоящая GoTrue-сессия из Telegram initData (без cookie, JWT по lib/telegram/init-data.ts). На странице /tg — карточка PC: имя, класс, уровень, портрет (31 портрет посеян). Привязка Telegram-аккаунта → /c/<slug>/settings/telegram (DM).

spec-044 — Mobile Ledger в Telegram Mini App (/tg). Поверх готовой бухгалтерии 009–019 — мобильный слой без новой бизнес-логики:

Что работает сейчасПоверхность
Кошелёк: баланс + деноминации/tg → PC → Ledger
Лента транзакцийWallet + feed
Создать расход/доход/перевод«+» из wallet
Перевод PC↔PC и PC↔общакTransfers
Просмотр общакаStash balance + recent
Realtime: новая транзакция → открытые экраны ≤ 2 смиграция 117 + клиент
Предметы — читалка значимых предметов (P2)Items tab

Общак для игрока — авто-апрув: put/take из общака не идёт в approval queue (delta C-05 из spec-044). Все остальные записи игрока → status='pending', как на десктопе.


Что впереди

spec-022 v3 — Полный лист персонажа

Статус: ожидает spec-045 Engine Core (Specify draft, Clarify pending).

Лист v3 — это не «перенести чарлист как есть». Это инструмент, которым пользуются на каждой сессии. Данные chat 90: 0 из 31 листа правились за 30 дней, чарники живут в Google-таблице Стасяна. Гипотеза: нужен не читалка, а живой лист с бросками кубов.

Три фазы:

ФазаСутьСпека
1Живой чарлист + кубы + импорт xlsx (система Стасяна)spec-022 v3 (ждёт 045)
2Компендиум: спеллы / классы / фиты / бэкграунды (парсер dnd.su)отдельная спека, слот при взятии
3Билдер персонажа + level-upотдельная спека

Фаза 1 строится поверх spec-045 Engine Core:

  • Модули (раса, класс, фит, предмет, бафф) как ноды; слой-0 деривации — формулы Стасяна (БМ, модификаторы, 18 навыков, спасы).
  • Живой чарлист вертикальный, тач-таргеты ≥ 44 px, без DM-табов.
  • Бросок кубов одним тапом с листа (d20+мод), adv/dis, дайс-пад.
  • Импорт xlsx из Google-таблицы: ≥90% полей канон-листов (Маркус, Бальтазар, Дамбиниус) автоматически; отчёт ✅/⚠️/❌ без молчаливых потерь.
  • Ресурсы (HP, ячейки, ци, вдохновение): «всего/осталось», инкремент тапом; кнопки short/long rest.

Деньги на листе в Фазе 1 — плейсхолдер; связка с ledger из spec-044 подключается отдельным шагом.

Роут: /m/... — PWA-точка входа; manifest ведёт туда; UA-автоопределения нет. (Telegram Mini App использует /tg; /m — отдельный роут для standalone PWA Фазы 1.)

Что не входит в мобильный режим

  • Грид энкаунтера — десктоп-only, останется DM-инструментом.
  • Правка чужих листов игроком.
  • Шаринг бросков в сессию/DM/encounter — будущий мост к spec-032.
  • Push-уведомления.

Зависимости

spec-046 (Telegram Auth) ← в проде
    ↓
spec-044 (Mobile Ledger) ← в проде
    
spec-045 (RPG Engine Core)
    ↓
spec-022 v3 (Player Mobile Mode — полный лист)

spec-022 v3 ждёт spec-045 потому что лист строится поверх модульной модели данных. Попытка построить лист без движка = ещё один хардкод «спеллы особая категория, фиты особая категория» — именно то, от чего уходили в пивоте chat 93.

engine-pivot.md, near-term.md (таблица эпика).