Files
easy-png-tools2/docs/plan-c17.md
T
2026-09-10 15:34:48 +05:00

123 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# План C17: перенос preview → корень + (old) → /v1/
> Статус: план к выполнению. Предпосылки: tech debt закрыт, backlog №14 (старые
> файлы → lib/old/) выполнен. Домен НЕ блокер (см. plan-redesign.md §10,
> plan-seo.md §6).
## Цель
Новый дизайн становится основным на корневых маршрутах (`/`, `/tools/[id]`,
`/list-tools`). Старый дизайн переезжает на `/v1/*` как архив для справки.
Удаление старого кода (C19) откладывается до полной приёмки нового дизайна.
## Структура маршрутов (до → после)
**До:** `(old)/` даёт URLs `/`, `/demo`, `/list-tools`, `/tools/[id]`.
`preview/` даёт `/preview`, `/preview/list-tools`, `/preview/tools/[id]`,
`/preview/kit`.
**После:** `v1/` даёт `/v1/`, `/v1/demo`, `/v1/list-tools`, `/v1/tools/[id]`.
Корень даёт `/`, `/list-tools`, `/tools/[id]`. Витрина kit — на реальном
маршруте `/kit` (дизайн в стадии тестирования).
## Решения
1. **`v1/` — реальная папка, НЕ route group** — group `(v1)/` не меняет URL, а
нам нужно чтобы старые страницы жили по `/v1/*`.
2. **Корневой layout: shell нового дизайна** — TopBar, Footer, тема, хлебные
крошки, импорт `app.css`, `@layer app, design;`.
3. **`v1/+layout.svelte` — только импорт `app_v1.css`** — без header/footer/shell.
4. **Тема:** использовать `theme.svelte.ts` (не дублировать локальный `$state`).
5. **`@layer app, design;`** остаётся — design выигрывает у app везде.
6. **`noindex` остаётся** на `tools/[id]/+page.svelte` до покупки домена.
7. **CSS-файлы переименовываются:** `preview.css``app.css`, `old.css`
`app_v1.css`. Все ссылки обновляются.
8. **`kit/` витрина → `/kit`** — переносится на реальный маршрут вместе с
остальными preview-страницами; отдельный `preview/+layout` удаляется
(`/kit` наследует корневой shell).
## Что делать (шаги)
### 1. Rename `(old)/` → `v1/`
Переименовать папку. Обновить `v1/+layout.svelte`:
убрать «Preview v2» ссылку, обновить пути навигации, поправить импорт CSS.
### 2. Новый корневой `+layout.svelte` + rename CSS
Перезаписать текущий нейтральный layout содержимым из `preview/+layout.svelte`
(с правками: тема через `theme.svelte.ts`, путь к CSS). Переименовать
`src/preview.css``src/app.css`, `src/old.css``src/app_v1.css`.
Обновить все ссылки на эти файлы в проекте ( layout, лайнтеры, eslint-плагины,
скрипты, тесты).
### 3. Move preview pages → корень
Переместить страницы из `preview/` в корень `routes/`: `+page``/`,
`list-tools``/`, `tools/[id]``/`, витрину `kit``/kit`. Удалить
`preview/+layout.svelte` (корневой shell заменяет его).
### 4. Flatten `kit/` → `components/`
Перенести компоненты из `lib/components/kit/` в `lib/components/`, обновить
все импорты, удалить пустую `kit/`.
### 5. Update hardcoded `/preview/` URLs
В компонентах с захардкоженными путями `/preview/` заменить на корневые.
### 6. E2E тесты + playwright config
Заменить `/preview/...` на `/...` во всех e2e файлах и конфиге playwright.
### 7. ESLint config + AGENTS.md
Обновить glob-паттерны: `routes/preview/**``routes/**`,
`components/kit/**``components/**`. Обновить `AGENTS.md`.
### 8. Isolation plugin
Обновить `DEFAULT_OLD`: `routes/(old)/**``routes/v1/**`.
Убрать `routes/preview/**` из `DEFAULT_NEW`.
### 9. Archive audit scripts
Перенести скрипты аудита в `scripts/archive/`, убрать вызовы из манифестов.
## Порядок коммитов
| # | Описание | Зависит от |
| --- | ----------------------------------------------- | ---------- |
| 1 | Rename `(old)/``v1/`, правки v1/layout | — |
| 2 | Новый корневой layout + rename CSS | — |
| 3 | Move preview pages → корень (+ `/preview/kit` → | 2 |
| | `/kit`, удалить `preview/+layout`) | |
| 4 | Flatten kit/ → components/, обновить импорты | — |
| 5 | TopNav + ToolCard: убрать `/preview/` из URL | 3 |
| 6 | E2E тесты + playwright config | 3 |
| 7 | ESLint config + AGENTS.md | 3, 4 |
| 8 | Isolation plugin | 1 |
| 9 | Archive audit scripts + убрать из манифестов | — |
> **3+5 делаются вместе (один коммит):** после переноса страниц в корень
> `ToolCard`/`TopNav` продолжают линковать `/preview/...`, prerender падает на
> 404 — между шагами 3 и 5 билд не зелёный.
После каждого коммита: `pnpm --dir web lint` + `pnpm --dir web build` (+
`pnpm --dir web test` если затронуты e2e).
## Что НЕ меняется
- `$lib/preview/`, `$lib/registry-new/` — без изменений
- `$lib/old/components/` — без изменений (каждая сторона хранит свою копию)
- `routes/+layout.ts` — prerender = true остаётся
- Слаги инструментов (`*-png`) — без изменений
- `/kit` — витрина дизайна остаётся (в стадии тестирования)
## Риски
- **v1/ без shell** — старый дизайн без header/footer.
- **`@layer` взаимодействие** — проверить что design-токены перекрывают
app-токены на обоих маршрутах.
- **Isolation: shared-классификация** — маршруты нового дизайна shared до C19.