- canvas стартует с opacity:0 и плавно проявляется (0.9s) при .is-ready - initPageMeshShader ставит is-ready после первого кадра - modulepreload page-mesh-shader.js для параллельной загрузки с main.js - пересборка страниц (build:pages)
90 lines
7.0 KiB
Markdown
90 lines
7.0 KiB
Markdown
# Подсказки для агента (Cursor)
|
||
|
||
## Сборка и деплой
|
||
|
||
Деплой автоматический, но **только по пушу в ветку `main`** → автодеплой на хостинг.
|
||
|
||
Пуш в любую другую ветку (включая `dev`) деплоя **не вызывает** — `dev` это обычная рабочая ветка, в неё можно пушить свободно.
|
||
|
||
Правило коммитов: **после каждой правки делай локальный git commit** (без пуша, если не просили). Пуш — только по явному запросу пользователя, и для деплоя он должен идти в `main`.
|
||
|
||
По запросу пользователя «собрать», «билд»:
|
||
|
||
1. При правках `src/pages/**` или `src/partials/**` — `npm run build:pages`.
|
||
2. При смене шрифтов/Plyr или `package.json` — `npm run build` (включает `vendor:copy`).
|
||
3. Для деплоя — пуш в `main` (предварительно сделав commit).
|
||
|
||
> Если пользователь просит «влить в мастер» — см. раздел «Влить в master» ниже. Это не то же самое, что пуш в `dev`.
|
||
|
||
## Git
|
||
|
||
Репозиторий: `http://x1qnvk08zec2u5cx6yh5iexh.155.212.186.39.sslip.io/admin/site-portfolio.git`
|
||
|
||
### Влить в `master`, оставаясь на текущей ветке
|
||
|
||
Запрос «влить в мастер» **не означает** `git checkout master`, если пользователь не просил переключиться.
|
||
|
||
- **Fast-forward** (ветка впереди `master`): на текущей ветке — `git branch -f master HEAD` или `git push . HEAD:master`.
|
||
- **Нужен merge-коммит** (`master` ушёл вперёд): `git checkout master` → `git merge <ветка>` → `git checkout -` (вернуться на прежнюю ветку).
|
||
- После влития **не меняй** активную ветку в IDE без запроса; при необходимости уточни, на какой ветке продолжать работу.
|
||
|
||
## Design System
|
||
|
||
Перед работой с UI **прочитай `DESIGN.md`** в корне проекта — там описаны токены, типографика, компоненты и правила их применения.
|
||
|
||
Страницы-каталоги (живые примеры):
|
||
- **`src/pages/cases/design-system.html`** → токены, типографика, кнопки, карточки, секции
|
||
- **`src/pages/cases/template-elements-demo.html`** → элементы лонгрида: медиа, галереи, видео, callout
|
||
- **`src/pages/cases/mini-projects-showcase.html`** → карточки активности (mp-card)
|
||
|
||
При **глобальных** правках стилей (токены в `public/css/main.css`, компоненты главной, блоки лонгрида кейса) **обновляй соответствующий каталог**: живой пример и краткое описание в секции, при необходимости — `docs/case-page-blocks.md`.
|
||
|
||
## Контент кейса в public (по запросу)
|
||
|
||
Обычный путь: `src/pages/cases/` → `npm run build:pages`. Если пользователь явно просит править **собранную** страницу под `npm run serve`, см. **`.cursor/rules/case-content-edit-in-public.mdc`**: правки в `.case-article` в `public/cases/`, синхронизация в `src` по запросу.
|
||
|
||
## Русские тексты (humanizer-ru)
|
||
|
||
При генерации и правке **русскоязычного контента** для сайта (кейсы, главная, `texts/**`, callout, meta) — читать скилл **`humanizer-ru`** и вычитывать текст по нему перед отдачей пользователю. Подробности: **`.cursor/rules/humanizer-ru-text.mdc`**.
|
||
|
||
## Правки контента (content-edits, localhost)
|
||
|
||
Режим на странице при `npm run serve` → очередь в **`texts/content-edits/pending.json`**. Apply по запросу **«примени правки»**: читать этот файл, править **`src/pages/`**, **humanizer-ru**, **`npm run build:pages`**; **`pending.json` не очищать** (пользователь удаляет пункты сам). Подробности: **`docs/content-edit-mode.md`**, **`.cursor/rules/content-edit-apply.mdc`**.
|
||
|
||
## PDF резюме (по запросу)
|
||
|
||
По запросу «обнови PDF», «перегенерируй PDF»:
|
||
|
||
1. Убедиться, что dev-сервер запущен (`localhost:4175`).
|
||
2. Запустить `npm run generate:resume-pdf`.
|
||
3. Файл обновится в `public/assets/resume/Mamadaev_Nik__CV__Product_Designer_UX-UI.pdf`.
|
||
|
||
Подробнее: **`docs/resume-pdf.md`**.
|
||
|
||
Скрипт требует запущенный сервер — нельзя встроить в обычный `build`.
|
||
|
||
## Vendor (шрифты, Plyr)
|
||
|
||
Локально в `public/`, без CDN. Обновление: **`docs/vendor-assets.md`**, команда `npm run vendor:copy`.
|
||
|
||
## Медиа на сайте (WebP / WebM)
|
||
|
||
По запросу «добавить/обновить картинку или видео» в разметке только **WebP** (изображения, постеры) и **WebM** (видео); исходник конвертировать скриптами, не ждать отдельного уточнения. Подробности: **`.cursor/rules/media-webp-webm-only.mdc`**, `docs/image-optimization.md`, `docs/video-conversion.md`.
|
||
|
||
## Остальное
|
||
|
||
Правила и таблица доков: **`.cursor/rules/read-docs-before-feature-dev.mdc`** (локально; папка `.cursor/` может быть в `.gitignore`).
|
||
|
||
### Ключевые файлы
|
||
|
||
| Файл | Назначение |
|
||
|---|---|
|
||
| `DESIGN.md` | Описание дизайн-системы для AI-агентов |
|
||
| `public/css/main.css` | Единый CSS: токены + все компоненты |
|
||
| `src/pages/cases/design-system.html` | Живой каталог токенов, типографики, кнопок, карточек |
|
||
| `src/pages/cases/template-elements-demo.html` | Элементы лонгрида: медиа, галереи, видео, callout |
|
||
| `src/pages/cases/mini-projects-showcase.html` | Карточки активности (mp-card) |
|
||
| `docs/case-page-blocks.md` | Инструкция по блокам лонгридов |
|
||
| `docs/resume-pdf.md` | Генерация PDF резюме (Puppeteer) |
|
||
| `docs/translation.md` | Локализация (ru/en) и перевод через apinex |
|