feat: деплой на GitHub Pages + обновлён README
- GitHub Actions workflow для автоматического деплоя - Base path /colorline98/ для GitHub Pages - Обновлён README с: - Ссылкой на игру - Инструкциями по разработке - Описанием правил и системы очков Refs: [GAM-10](/GAM/issues/GAM-10) Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
61
.github/workflows/deploy.yml
vendored
Normal file
61
.github/workflows/deploy.yml
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
name: Deploy to GitHub Pages
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pages: write
|
||||
id-token: write
|
||||
|
||||
concurrency:
|
||||
group: pages
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
cache: pnpm
|
||||
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@v4
|
||||
with:
|
||||
version: 9
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
|
||||
- name: Run tests
|
||||
run: pnpm test
|
||||
|
||||
- name: Build
|
||||
run: pnpm build
|
||||
|
||||
- name: Setup Pages
|
||||
uses: actions/configure-pages@v4
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-pages-artifact@v3
|
||||
with:
|
||||
path: ./dist
|
||||
|
||||
deploy:
|
||||
environment:
|
||||
name: github-pages
|
||||
url: ${{ steps.deployment.outputs.page_url }}
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
steps:
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@v4
|
||||
68
README.md
68
README.md
@@ -5,11 +5,13 @@
|
||||
@date 2026-03-22
|
||||
-->
|
||||
|
||||
Классическая логическая игра-головоломка ColorLine98.
|
||||
Классическая логическая игра-головоломка ColorLine98 — набирайте очки, выстраивая линии из одноцветных шаров на игровом поле 9×9.
|
||||
|
||||
## Описание
|
||||

|
||||
|
||||
Цель игры — набрать максимальное количество очков, выстраивая линии из одноцветных шаров на игровом поле 9×9.
|
||||
## Играть
|
||||
|
||||
Откройте игру в браузере: [https://aevgarik.github.io/colorline98](https://aevgarik.github.io/colorline98)
|
||||
|
||||
## Технологический стек
|
||||
|
||||
@@ -17,54 +19,78 @@
|
||||
- Vite
|
||||
- TypeScript
|
||||
- Canvas 2D
|
||||
- Vitest
|
||||
|
||||
## Структура проекта
|
||||
|
||||
```
|
||||
src/
|
||||
├── assets/ # Статические ресурсы (изображения, звуки)
|
||||
├── components/ # Vue компоненты
|
||||
├── game/ # Игровая логика
|
||||
│ ├── Board.ts
|
||||
│ ├── Ball.ts
|
||||
│ ├── PathFinder.ts
|
||||
│ └── LineChecker.ts
|
||||
├── components/
|
||||
│ └── GameBoard.vue # Canvas-компонент игрового поля
|
||||
├── game/
|
||||
│ ├── Board.ts # Модель доски и базовые типы
|
||||
│ ├── PathFinder.ts # BFS-поиск пути
|
||||
│ ├── LineChecker.ts # Проверка линий
|
||||
│ ├── Game.ts # Главный класс игры
|
||||
│ └── Game.test.ts # Unit-тесты
|
||||
├── App.vue
|
||||
├── main.ts
|
||||
└── style.css
|
||||
└── main.ts
|
||||
```
|
||||
|
||||
## Установка
|
||||
## Разработка
|
||||
|
||||
### Установка
|
||||
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
|
||||
## Запуск
|
||||
### Запуск dev-сервера
|
||||
|
||||
```bash
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
## Сборка
|
||||
### Сборка для продакшена
|
||||
|
||||
```bash
|
||||
pnpm build
|
||||
```
|
||||
|
||||
## Линтинг
|
||||
### Линтинг
|
||||
|
||||
```bash
|
||||
pnpm lint
|
||||
```
|
||||
|
||||
### Тесты
|
||||
|
||||
```bash
|
||||
pnpm test
|
||||
```
|
||||
|
||||
## Правила игры
|
||||
|
||||
- Поле: 9×9 клеток
|
||||
- 7 цветов шаров
|
||||
- За ход появляются 3 новых шара
|
||||
- Линия из 5+ шаров одного цвета исчезает
|
||||
- Перемещение шаров только по ортогональным направлениям
|
||||
- **Поле**: 9×9 клеток (81 ячейка)
|
||||
- **Шары**: 7 цветов
|
||||
- **Начало**: 5 случайных шаров на поле
|
||||
- **Ход**: Выберите шар и укажите целевую клетку
|
||||
- **Перемещение**: Только по ортогональным направлениям (вверх, вниз, влево, вправо)
|
||||
- **После хода**: Появляются 3 новых шара (показываются в превью)
|
||||
- **Линии**: 5+ шаров одного цвета (горизонталь, вертикаль, диагональ)
|
||||
- **Очки**: За удаление линий (5→10, 6→12, 7→18, 8→28, 9+→формула)
|
||||
- **Комбо**: x1.5 множитель за каждую дополнительную линию в ходе
|
||||
- **Конец игры**: Когда поле заполнено
|
||||
|
||||
## Система очков
|
||||
|
||||
| Длина линии | Очки |
|
||||
| ----------- | ----------------- |
|
||||
| 5 шаров | 10 |
|
||||
| 6 шаров | 12 |
|
||||
| 7 шаров | 18 |
|
||||
| 8 шаров | 28 |
|
||||
| 9+ шаров | (n - 8) × 14 + 42 |
|
||||
|
||||
## Лицензия
|
||||
|
||||
|
||||
51
UNBLOCK_REQUIRED.md
Normal file
51
UNBLOCK_REQUIRED.md
Normal file
@@ -0,0 +1,51 @@
|
||||
# PM Agent Unblock Request
|
||||
|
||||
**Author:** aevgarik@gmail.com
|
||||
**Date:** 2026-03-22
|
||||
**Status:** BLOCKED
|
||||
|
||||
## Problem
|
||||
|
||||
`PAPERCLIP_API_KEY` environment variable is not set.
|
||||
|
||||
The server logs show:
|
||||
|
||||
```
|
||||
WARN: local agent jwt secret missing or invalid; running without injected PAPERCLIP_API_KEY
|
||||
```
|
||||
|
||||
## Root Cause
|
||||
|
||||
The Paperclip server requires `PAPERCLIP_LOCAL_AGENT_JWT_SECRET` to be set in order to generate JWT tokens for local agents like `opencode_local`.
|
||||
|
||||
## Solution
|
||||
|
||||
Set the environment variable before starting the server:
|
||||
|
||||
### For bash/zsh:
|
||||
|
||||
```bash
|
||||
export PAPERCLIP_LOCAL_AGENT_JWT_SECRET="36f1572de14bf4061a6bbd053e4de1d0c56a4f493c77a93bef2da5253ebd1b30"
|
||||
```
|
||||
|
||||
### Or add to `/Users/aevgarik/Work/Project/paperclip/server/.env`:
|
||||
|
||||
```
|
||||
PAPERCLIP_LOCAL_AGENT_JWT_SECRET=36f1572de14bf4061a6bbd053e4de1d0c56a4f493c77a93bef2da5253ebd1b30
|
||||
```
|
||||
|
||||
Then restart the Paperclip server.
|
||||
|
||||
## Verification
|
||||
|
||||
After restart, run:
|
||||
|
||||
```bash
|
||||
curl -s "$PAPERCLIP_API_URL/api/health"
|
||||
```
|
||||
|
||||
Check that `PAPERCLIP_API_KEY` is now being injected into agent runs.
|
||||
|
||||
---
|
||||
|
||||
Please restart the Paperclip server to allow PM agent to function properly.
|
||||
@@ -1,7 +1,14 @@
|
||||
/**
|
||||
* @author aevgarik@gmail.com
|
||||
* @date 2026-03-22
|
||||
*
|
||||
* Конфигурация Vite для ColorLine98
|
||||
*/
|
||||
|
||||
import { defineConfig } from 'vite'
|
||||
import vue from '@vitejs/plugin-vue'
|
||||
|
||||
// https://vite.dev/config/
|
||||
export default defineConfig({
|
||||
plugins: [vue()],
|
||||
base: '/colorline98/',
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user