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 (таблица эпика).