diff --git a/AGENTS.md b/AGENTS.md index 4a57690..7f8a275 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -61,8 +61,7 @@ ## Границы изменений -- Production-UI — `web/src/routes/**` и `web/src/lib/components/**`. Старый UI - (`/v1/**`) удалён и не возвращается. +- Production-UI — `web/src/routes/**` и `web/src/lib/components/**`. - `web/src/lib/core/**` и `web/src/lib/theme.svelte.ts` — общие модули: их правка проверяется unit-тестами и smoke-сценариями production-потребителей. - Направление зависимостей, точки расширения и рецепт правки (инструмент, вид diff --git a/docs/backlog.md b/docs/backlog.md index e0e6674..e09dcdc 100644 --- a/docs/backlog.md +++ b/docs/backlog.md @@ -14,10 +14,6 @@ ## lint и прочие правила -- [ ] расширить `i18n/no-hardcoded-user-text` на `web/src/routes/**`: сейчас - правило навешено только на `components/**` (без `/kit`), поэтому - захардкоженный текст в `routes/**` проходит молча (`web/eslint.config.js`, - `web/eslint-plugins/README.md`) - [ ] `tseslint.config(...)` deprecated: сигнатура `(...configs: InfiniteDepthConfigWithExtends[]): ConfigArray` помечена устаревшей, нужен переход на `defineConfig` из `typescript-eslint` — @@ -103,8 +99,8 @@ ## SEO/GEO -Общий план: `docs/plan-seo.md` (S0–S4). Переезд preview на реальные маршруты -выполнен; старт возможен — пока только domain-free часть S1. +Общий план: `docs/plan-seo.md` (S0–S4). Старт возможен — пока только domain-free +часть S1. - [ ] переименование бренда + домен: чек-лист в локальном плане `docs/plan-domain.local.md` (вне git, имя домена в репо не публикуется; diff --git a/docs/plan-seo.md b/docs/plan-seo.md index aa812ab..e1a1c0d 100644 --- a/docs/plan-seo.md +++ b/docs/plan-seo.md @@ -1,12 +1,11 @@ # План: SEO + GEO — индексация и конкуренция в image tools -> **Статус (2026-09-11; уточнено 2026-09-27):** план к выполнению. Переезд -> `preview/*` на реальные маршруты выполнен. **`noindex` на страницах -> инструментов не выставляется** — снимать нечего, каталог открыт для -> индексации; запрет индексации держится только на служебных путях -> (`robots.txt`). Домен не был блокером переезда (см. §6). Задачи S1 разбиты на -> domain-free (можно делать параллельно с покупкой домена) и domain-required -> (после покупки и настройки домена). +> **Статус (2026-09-11; уточнено 2026-09-27):** план к выполнению; маршруты +> инструментов — корневые (`/tools/[id]`). **`noindex` на страницах инструментов +> не выставляется** — снимать нечего, каталог открыт для индексации; запрет +> индексации держится только на служебных путях (`robots.txt`). Задачи S1 +> разбиты на domain-free (можно делать параллельно с покупкой домена) и +> domain-required (после покупки и настройки домена). > > **Цель:** каждая страница инструмента — индексируемый лендинг под конкретный > интент («crop png», «make png transparent», «jpg to png»…), конкуренция с diff --git a/docs/roadmap.md b/docs/roadmap.md index ebafdb3..cbd6ed2 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -1,14 +1,13 @@ # План развития: easy-png-tools > **Статус (2026-09):** Фаза 1 (полноценный TS-сайт) в основном выполнена — сайт -> живёт, каталог переведён в типизированный `registry`, новый дизайн стал -> единственным production UI на корневых маршрутах, UI-v1 удалён. Tech debt не -> закрыт полностью; состав quality-проверок — `docs/quality-gates.md`, -> архитектура кода — `docs/architecture.md`, список инструментов — -> `docs/tools-map.md`. Текущий фокус: SEO S1-free (`docs/plan-seo.md`) + -> продуктовые задачи из `docs/backlog.md`. Домен нужен для SEO (`plan-seo.md`, -> S1-domain). Фазы 2–8 — будущие; фазы 9–10 спланированы в -> `docs/plan-platform.md`. +> живёт, каталог переведён в типизированный `registry`, production UI — корневые +> маршруты. Tech debt не закрыт полностью; состав quality-проверок — +> `docs/quality-gates.md`, архитектура кода — `docs/architecture.md`, список +> инструментов — `docs/tools-map.md`. Текущий фокус: SEO S1-free +> (`docs/plan-seo.md`) + продуктовые задачи из `docs/backlog.md`. Домен нужен +> для SEO (`plan-seo.md`, S1-domain). Фазы 2–8 — будущие; фазы 9–10 спланированы +> в `docs/plan-platform.md`. > > **Нумерация фаз этого документа не совпадает с волнами разработки** (`Q*`/`C*` > в других документах) и не используется как идентификатор задач: ссылаться на diff --git a/web/eslint-plugins/README.md b/web/eslint-plugins/README.md index 0752f4f..214a40e 100644 --- a/web/eslint-plugins/README.md +++ b/web/eslint-plugins/README.md @@ -42,9 +42,13 @@ `__fixtures__/` дописать их туда же. - design-tokens правила применяются к тем же scoped-путям (`src/lib/components/**`, `src/routes/**`). -- `i18n/no-hardcoded-user-text` применяется к `src/lib/components/**` (`/kit` - исключён как витрина с намеренно hardcoded-подписями) и настраивается опцией - `allowWords` —brand не хардкодится в правиле. +- `i18n/no-hardcoded-user-text` применяется к обоим scoped-путям + (`src/lib/components/**` и `src/routes/**`): хардкод в `+page.svelte` и + `+layout.svelte` — такой же production-UI. Исключение одно — `/kit`, витрина с + намеренно латинскими подписями; выключается отдельным объектом конфига с + `files: ["**/src/routes/kit/**/*.svelte"]`, потому что негативные паттерны в + `files` не сужают область действия правила. Опция `allowWords` — brand не + хардкодится в правиле. ## Правила плагина design-tokens @@ -115,9 +119,10 @@ report-only (`warn`), baseline — 0 срабатываний. `tone`, `type`, `icon`, `size`, `href`, `class`) не проверяются, значения в скобках (`{expr}`) тоже — они считаются в другом месте. - Исключения списком, а не «на глаз»: форматы и единицы (`PNG`, `px`, `×`), - имена файлов и версии (`result.png`, `v0.1.0`), размеры (`512×512`), + имена файлов и версии (`result.png`, `v0.1.0`, `v1`), размеры (`512×512`), registry-строки и прочие ALL CAPS идентификаторы (`BACKGROUND`), а также - `/kit` — витрина компонентов с намеренно латинскими подписями. + `/kit` — витрина компонентов с намеренно латинскими подписями (исключение + живёт в `eslint.config.js`, а не в правиле). - Опция `allowWords: string[]` — brand и прочие собственные имена. Название продукта передаётся конфигом, а не зашито в правило. - Содержимое `