# 🎮 Шашки Рояль - Полная инструкция для следующего агента

## 📋 Текущий статус проекта

**Версия:** 2.1 (Capacitor + React + Vite)  
**Язык:** TypeScript + React  
**Платформы:** Web (PWA), Android (APK)  
**Статус:** 95% готово, осталась одна критическая ошибка Supabase

---

## 🔴 КРИТИЧЕСКАЯ ПРОБЛЕМА (ГЛАВНАЯ ЗАДАЧА)

### Ошибка: "Supabase не настроен" при входе в приложение

**Где видна:** На экране авторизации в мобильном приложении (APK)  
**Скриншот:** Экран входа с кнопкой "Вход" и ошибкой внизу "Supabase не настроен"

### Что уже было попробовано:
1. ✅ Создан гостевой режим в `src/lib/auth.ts` (функции `signIn()` и `getCurrentUser()`)
2. ✅ Обновлена `ProtectedRoute.tsx` для пропуска неавторизованных пользователей
3. ✅ Убраны зависимости от Supabase в `useAuthState.ts`
4. ❌ **ПРОБЛЕМА:** Ошибка всё ещё показывается на экране авторизации

### Корневая причина:
Компонент авторизации (вероятно `src/pages/Auth.tsx` или `src/pages/AuthPage.tsx`) напрямую проверяет `supabaseConfigured` и показывает ошибку, не используя fallback механизм.

---

## ✅ ЧТО УЖЕ РЕАЛИЗОВАНО

### 1. Игровой процесс
- ✅ Полная логика русских шашек (8x8 доска)
- ✅ **Плавная анимация движения** шашек (350ms cubic-bezier)
- ✅ **Зелёные подсветки** выбранной шашки и возможных ходов
- ✅ **Жёлтый отклик** при клике на неактивную зону
- ✅ Захват фигур с частицами взрыва
- ✅ Превращение в дамки
- ✅ Локальная игра (два игрока на одном устройстве)

### 2. Интерфейс
- ✅ Красивый деревянный стиль доски (коричневые тона)
- ✅ Главное меню с кнопками "Играть локально", "Правила"
- ✅ Профиль игрока (гостевой режим)
- ✅ Поддержка русского и узбекского языков

### 3. Валюта
- ✅ Виртуальная валюта (монеты) вместо реальных денег
- ✅ Убраны все упоминания deposit/withdraw
- ✅ Система ставок работает с виртуальными монетами

### 4. Мобильное приложение
- ✅ Capacitor интеграция для Android/iOS
- ✅ APK собирается успешно (8.1 MB)
- ✅ Работает на Android 10+

---

## 🔧 ГЛАВНАЯ ЗАДАЧА ДЛЯ СЛЕДУЮЩЕГО АГЕНТА

### Задача: Полностью убрать ошибку Supabase и сделать приложение работающим в гостевом режиме

**Шаги:**

1. **Найти компонент авторизации** - поищи файлы:
   - `src/pages/Auth.tsx`
   - `src/pages/AuthPage.tsx`
   - `src/pages/LoginPage.tsx`
   - `src/components/AuthForm.tsx`
   - Или поищи где выводится сообщение "Supabase не настроен"

2. **Удалить/заменить проверку Supabase** в компоненте авторизации:
   - Если есть `if (!supabaseConfigured)` - заменить на гостевой вход
   - Если есть проверка `supabase === null` - добавить fallback
   - Кнопка "Вход" должна вызывать `signIn()` из `src/lib/auth.ts` (там уже есть гостевой режим)

3. **Тестирование:**
   - Собрать APK: `cd android && ./gradlew assembleDebug`
   - Установить на телефон
   - Нажать "Вход" - должно пропустить в приложение БЕЗ ошибки
   - Нажать "Играть локально" - должна открыться доска с шашками
   - Сделать несколько ходов - проверить плавную анимацию

4. **Финальная сборка:**
   - Собрать финальный APK
   - Положить в `/home/ubuntu/Downloads/shashki-royal-final.apk`

---

## 📁 Структура проекта

```
/home/ubuntu/shashki-royal/
├── src/
│   ├── lib/
│   │   ├── auth.ts                 ← ✅ Уже исправлен (гостевой режим)
│   │   ├── supabase.ts             ← Инициализация Supabase
│   │   └── ...
│   ├── pages/
│   │   ├── Auth.tsx                ← 🔴 ВЕРОЯТНО ЗДЕСЬ ОШИБКА
│   │   ├── Index.tsx               ← Главное меню
│   │   ├── LocalGame.tsx           ← Локальная игра
│   │   └── ...
│   ├── components/
│   │   ├── Board.tsx               ← ✅ Доска с анимацией
│   │   ├── Piece.tsx               ← ✅ Шашка
│   │   ├── ProtectedRoute.tsx       ← ✅ Уже исправлена
│   │   └── ...
│   ├── hooks/
│   │   ├── useAuthState.ts          ← ✅ Уже исправлена
│   │   └── ...
│   ├── game/
│   │   ├── gameLogic.ts            ← Логика игры
│   │   ├── rules.ts                ← Правила шашек
│   │   └── ...
│   └── index.css                   ← ✅ Анимации добавлены
├── android/
│   ├── app/
│   │   ├── build.gradle            ← Конфиг сборки
│   │   └── ...
│   └── gradlew                     ← Gradle wrapper
├── package.json
├── vite.config.ts
├── tsconfig.json
└── .env                            ← VITE_SUPABASE_* пусто (это нормально)
```

---

## 🔑 Ключи и конфигурация

### .env файл (уже создан)
```
VITE_SUPABASE_URL=
VITE_SUPABASE_ANON_KEY=
```
**Статус:** Пусто (это нормально для гостевого режима)

### Важные переменные в коде:
- `supabaseConfigured` в `src/lib/supabase.ts` - проверяет наличие ключей
- Когда `supabaseConfigured === false` - приложение должно работать в гостевом режиме

---

## 🛠️ Команды для сборки

### Веб-версия (тестирование)
```bash
cd /home/ubuntu/shashki-royal
npm install
npx vite build
npx vite --host 0.0.0.0 --port 5173
```

### Android APK
```bash
cd /home/ubuntu/shashki-royal/android
./gradlew assembleDebug
# APK будет в: app/build/outputs/apk/debug/app-debug.apk
```

### Копирование APK в Downloads
```bash
cp /home/ubuntu/shashki-royal/android/app/build/outputs/apk/debug/app-debug.apk /home/ubuntu/Downloads/shashki-royal-final.apk
```

---

## 🎯 Что проверить перед финалом

- [ ] Нет ошибки "Supabase не настроен" при входе
- [ ] Кнопка "Вход" работает и пропускает в приложение
- [ ] Кнопка "Играть локально" открывает доску
- [ ] Шашки движутся плавно с анимацией
- [ ] Зелёные подсветки видны при выборе шашки
- [ ] Жёлтая вспышка при клике на неактивную зону
- [ ] Захват фигур работает
- [ ] Нет ошибок в консоли браузера/Android

---

## 📝 Файлы, которые могут содержать ошибку

**Приоритет поиска:**
1. `src/pages/Auth.tsx` или похожий файл авторизации - ищи "Supabase не настроен"
2. `src/components/` - поищи компоненты с проверкой `supabaseConfigured`
3. `src/App.tsx` - может быть ошибка в роутинге

**Команда поиска:**
```bash
grep -r "Supabase не настроен" /home/ubuntu/shashki-royal/src/
grep -r "supabaseConfigured" /home/ubuntu/shashki-royal/src/
```

---

## 💡 Советы

1. **Гостевой режим уже реализован** - в `src/lib/auth.ts` функции `signIn()` и `getCurrentUser()` возвращают mock user когда Supabase не настроен
2. **Не нужно подключать реальный Supabase** - приложение должно работать полностью локально
3. **Ошибка показывается на UI** - значит какой-то компонент проверяет `supabaseConfigured` и выводит ошибку вместо использования гостевого режима
4. **Проверь все компоненты авторизации** - может быть несколько мест, где нужно добавить fallback

---

## 📞 Контакт

Если что-то непонятно - ищи комментарии в коде с префиксом `// GUEST MODE` или `// TODO`.

**Главное:** Приложение должно работать БЕЗ Supabase, полностью в гостевом режиме!

---

**Дата создания:** 28 апреля 2026  
**Версия инструкции:** 1.0  
**Статус:** Готово к передаче
