- canvas стартует с opacity:0 и плавно проявляется (0.9s) при .is-ready - initPageMeshShader ставит is-ready после первого кадра - modulepreload page-mesh-shader.js для параллельной загрузки с main.js - пересборка страниц (build:pages)
Правки контента (content-edits)
Один файл очереди для агента и режима правок на http://localhost:4175 (npm run serve).
Файл
texts/content-edits/pending.json — все страницы, все правки.
Старые файлы cases--<slug>.json при первом запросе к API переносятся в pending.json и удаляются.
Формат (version 2)
{
"version": 2,
"updatedAt": "2026-05-16T12:00:00.000Z",
"items": [
{
"n": 1,
"page": "cases/ai-platform-primo-rpa.html",
"instruction": "Перенести «Вид редактора…» ниже «Добавил режим…»",
"target": {
"selector": "main#case-main #patterns > p.section__prose:nth-of-type(1)",
"anchorId": "patterns",
"tag": "p",
"content": "полный текст основного блока (до ~2000 символов)",
"snippet": "первые ~80 символов"
},
"refs": [
{
"label": "Вид редактора в режиме «Во весь экран»",
"target": {
"selector": "main#case-main #zadachi > figure.case-media-gallery:nth-of-type(2)",
"anchorId": "zadachi",
"tag": "figure",
"content": "первые ~200 символов",
"snippet": "первые ~80 символов"
}
}
]
}
]
}
page— путь относительноpublic/(как в адресной строке без ведущего/).n— порядок apply по всему файлу (на странице в FAB-списке снова 1, 2, 3… только для текущей страницы).target— основной блок правки (обычный клик). Для общей правки страницы без блока:"scope": "page".refs— дополнительные блоки (Shift+клик в инструкции).label(~50 символов) вставляется в текст как«…»;target.contentу ref короче (~200), чем у основногоtarget.
Apply
В Cursor: «примени правки» / /apply-edits — агент читает pending.json, правит src/pages/, humanizer-ru, npm run build:pages.
После apply items не трогаем — очередь для проверки; удаление пунктов вручную в dock или повторный apply с уточнённой instruction.
См. .cursor/rules/content-edit-apply.mdc.