mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-11-13 17:08:20 +00:00
docs: review all
This commit is contained in:
+23
-19
@@ -3,7 +3,7 @@
|
||||
> **Статус: active.** Этот план добавляет к `docs/roadmap.md` то, чего там нет:
|
||||
> **API** (фаза 9, возможная монетизация) и **PWA** (фаза 10, оффлайн +
|
||||
> установка), плюс шрифты (раздел 4 — частично относится к фазе 8, поэтому
|
||||
> решения-phase 8 здесь дублируются). WASM-ядро, эталоны и CLI — фазы 2–8
|
||||
> решения фазы 8 здесь дублируются). WASM-ядро, эталоны и CLI — фазы 2–8
|
||||
> `docs/roadmap.md`, они здесь не пересказываются. Оба трека стартуют после
|
||||
> wasm-фаз; PWA не ждёт API и может идти раньше.
|
||||
|
||||
@@ -11,19 +11,20 @@
|
||||
|
||||
- **Одно ядро — три потребителя.** Rust-крейт `core/` (roadmap фаза 4) даёт:
|
||||
wasm-пакет для сайта (фаза 5), нативный CLI (фаза 6), серверный слой API (фаза
|
||||
9). Единый контракт — JSON-пайплайн `{tool, params}` (заложен в roadmap §0,
|
||||
реализуется в фазе 11); эталонные файлы и harness (фазы 2, 3, 7) гарантируют
|
||||
одинаковый результат во всех рантаймах.
|
||||
9). Единый контракт — JSON-пайплайн `{id, params}` (заложен в roadmap §0 и
|
||||
совпадает с `Page.steps`, реализуется в фазе 11); эталонные файлы и harness
|
||||
(фазы 2, 3, 7) гарантируют одинаковый результат во всех рантаймах.
|
||||
- **API — нативный Rust на сервере, не wasm.** В браузере wasm нужен ради
|
||||
доставки и песочницы; на сервере крейт линкуется напрямую — быстрее и проще.
|
||||
Исключение — edge-воркеры (см. спайк ниже): там исполняется тот же
|
||||
wasm-артефакт фазы 5.
|
||||
- **PWA не трогает SEO-схему.** Сайт остаётся полностью prerendered-статикой;
|
||||
service worker добавляет оффлайн-слой поверх и не отвечает за HTML ботовам.
|
||||
- **Монетизация не ломает позиционирование.** Браузерные инструменты — бесплатны
|
||||
и без трекинга; API — отдельный продукт для автоматизации/бизнеса. Файлы в API
|
||||
обрабатываются в памяти: без хранения и логирования содержимого — продолжение
|
||||
«privacy»-истории.
|
||||
- **Монетизация не ломает позиционирование.** Браузерные инструменты —
|
||||
бесплатные, картинка обрабатывается в браузере и никуда не отправляется.
|
||||
Счётчик посещений GA4 этому не противоречит (границы — `docs/plan-seo.md` §0).
|
||||
API — отдельный продукт для автоматизации/бизнеса. Файлы в API обрабатываются
|
||||
в памяти: без хранения и логирования содержимого.
|
||||
|
||||
## 1. Фаза 9 — API (после фаз 5–7)
|
||||
|
||||
@@ -40,7 +41,7 @@
|
||||
запросам/размеру файла. Только после стабильного free tier.
|
||||
- [ ] **[A5]** Документация как лендинг: `/api` — индексируемая страница
|
||||
(туториал, примеры curl/JS), OpenAPI, ссылка из `llms.txt`. Dev-аудитория
|
||||
— источник бэклинков (план-seo S4c).
|
||||
— источник бэклинков (`docs/plan-seo.md`, S4c).
|
||||
- Гейт: один и тот же пайплайн даёт пиксельно идентичный результат в браузере,
|
||||
CLI и API (harness фазы 7 расширяется третьим рантаймом).
|
||||
|
||||
@@ -68,17 +69,17 @@
|
||||
фича — фаза 11 того же документа.
|
||||
- PWA — после S1 `plan-seo.md`; API — после фаз 5–7.
|
||||
- Синергия с дистрибуцией: «works offline, installable» и публичный API —
|
||||
аргументы для Product Hunt / alternative.to / GitHub (plan-seo S4c) и для
|
||||
GEO-текстов (`llms.txt`, описания категорий).
|
||||
аргументы для Product Hunt / alternative.to / GitHub (`docs/plan-seo.md`, S4c)
|
||||
и для GEO-текстов (`llms.txt`, описания категорий).
|
||||
|
||||
## 4. Шрифты: лицензирование и DOM-free рендер текста
|
||||
|
||||
Текст — один из canvas-зависимых классов, которые roadmap (фаза 8) держит в TS
|
||||
(там их четыре: текст, градиенты, штампы, `ctx.filter`); для текста выбран курс
|
||||
на реимплементацию, остальные классы не переносятся. Для CLI/API текст всё равно
|
||||
придётся рендерить в Rust, поэтому решение: **перевести text-инструменты в
|
||||
ядро** (в браузере canvas-рендер остаётся TS-фолбэком для A/B). Два вопроса —
|
||||
легальность шрифтов в дистрибутиве и рендер без DOM.
|
||||
(перечень — там же); для текста выбран курс на реимплементацию, остальные классы
|
||||
не переносятся. Для CLI/API текст всё равно придётся рендерить в Rust, поэтому
|
||||
решение: **перевести text-инструменты в ядро** (в браузере canvas-рендер
|
||||
остаётся TS-фолбэком для A/B). Два вопроса — легальность шрифтов в дистрибутиве
|
||||
и рендер без DOM.
|
||||
|
||||
**Когда начинать:** блока F1–F4 нет — они не привязаны к фазе roadmap, но F5/F6
|
||||
без них бессмысленны (нечего рендерить). Реализуется всё это в фазе 8, поэтому
|
||||
@@ -102,15 +103,18 @@
|
||||
`pnpm verify` по правилам `docs/quality-gates.md` (решение о fail-режиме —
|
||||
`docs/decisions.md`). Браузер грузит шрифты из бандла, не из ОС и не с
|
||||
`fonts.googleapis.com`-CDN (сторонний запрос = утечка IP пользователя,
|
||||
противоречит «no tracking»), — одинаковый результат у всех пользователей и
|
||||
во всех рантаймах.
|
||||
лишняя зависимость от чужой инфраструктуры), — одинаковый результат у всех
|
||||
пользователей и во всех рантаймах.
|
||||
- [ ] **[F4]** Кириллица: приоритет семействам с полным покрытием — Liberation
|
||||
Sans, PT Sans/PT Serif, Noto Sans, Inter, Roboto (OFL/Apache), DejaVu Sans
|
||||
(пермиссивная лицензия Bitstream Vera: редистрибуция и коммерческое
|
||||
использование разрешены) — закрывает и backlog-вопрос про «только с
|
||||
кириллицей».
|
||||
- **Стартовый набор** (все OFL/Apache, с кириллицей; состав не догма —
|
||||
расширяется по запросам, каждый проходит паспорт F3):
|
||||
расширяется по запросам, каждый проходит паспорт F3). Сейчас в бандле сайта
|
||||
лежат `@fontsource/ibm-plex-sans` и `@fontsource/ibm-plex-mono` (тоже OFL) — в
|
||||
наборе ниже их нет, и при введении паспорта F3 их судьбу нужно решить явно:
|
||||
оставить или заменить.
|
||||
- базовый sans: **Inter** (дефолт add-text), **PT Sans** / **Golos Text**
|
||||
(профессиональная русская типографика), **Noto Sans** (фолбэк покрытия);
|
||||
- serif: **PT Serif**, **Lora**, **Playfair Display** (display);
|
||||
|
||||
Reference in New Issue
Block a user