docs: update plans

This commit is contained in:
2026-09-10 15:34:48 +05:00
parent 3834dadd03
commit 570876b18d
4 changed files with 185 additions and 35 deletions
+122
View File
@@ -0,0 +1,122 @@
# План 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.