# Frontend roadmap

## 1. Назначение документа

Этот документ фиксирует оставшийся фронтенд-backlog после уже выполненных крупных cleanup и refactoring slices.

Он заменяет старые review-документы и должен использоваться вместе с `TASKS.md`.

## 2. Что уже считается закрытым

Выполненными считаются следующие большие треки:

- базовая локализация и plural rules;
- XSS hardening основных dynamic render paths;
- template safety cleanup;
- CSS state cleanup;
- frontend build pipeline;
- wizard modularization;
- базовая frontend observability and testability;
- websocket test-run polish;
- command palette removal;
- settings honesty initial pass.

## 3. Что остается актуальным

### 3.1. Product gating by edition

UI должен честно отражать различия редакций:

- Community не должен показывать доступные к настройке `WebSocket`, `SOAP`, `gRPC streaming`, если они не входят в открытую поставку;
- `security_level = elevated` и `security_level = strict` не должны выглядеть рабочими в Community;
- multi-user и enterprise controls должны скрываться или отображаться как capability-locked.

Основные файлы:

- `apps/ui/js/wizard.js`
- `apps/ui/js/operations.js`
- `apps/ui/js/agents.js`
- `apps/ui/js/api-keys.js`
- `apps/ui/js/settings.js`
- `apps/ui/js/i18n.js`

### 3.2. Agent key UX

После перехода от platform/workspace keys к agent keys UI должен быть доведен до продуктового состояния:

- список ключей должен уметь показывать привязку к AI-агенту;
- модалка создания ключа должна позволять выбрать режим и область применения;
- copy должен объяснять, зачем нужен agent-scoped key и чем он отличается от будущих токенных режимов.
- `API Keys` page должна подтягивать `GET /api/admin/capabilities` и честно показывать, какие machine access modes доступны в текущей сборке, не притворяясь, что commercial token issuance уже работает в Community.

Основные файлы:

- `apps/ui/js/api-keys.js`
- `apps/ui/js/agents.js`
- `apps/ui/html/api-keys.html`
- `apps/ui/html/agents.html`
- `apps/ui/js/i18n.js`

### 3.3. Mobile-first restructuring for data-heavy pages

На мобильных экранах нужно убрать desktop-table anti-pattern для:

- `API Keys`
- `Secrets`
- `Usage`
- частично `Agents`

Целевой подход:

- карточки вместо широких таблиц;
- постоянная видимость primary actions;
- отсутствие скрытого горизонтального скролла как обязательного пути.

Основные файлы:

- `apps/ui/js/api-keys.js`
- `apps/ui/js/secrets.js`
- `apps/ui/js/usage.js`
- `apps/ui/js/agents.js`
- `apps/ui/css/*`

### 3.4. Workspace and settings polish

Остаются открытые UI/UX-проблемы:

- глобальная терминология `workspace` против `пространство`;
- структура `Account Settings`;
- честное состояние раздела `Notifications`;
- mobile navigation overlap / sticky bug;
- выравнивание dropdown и workspace switcher behavior.

Основные файлы:

- `apps/ui/js/settings.js`
- `apps/ui/js/workspace-setup.js`
- `apps/ui/js/auth.js`
- `apps/ui/index.html`
- `apps/ui/css/*`

### 3.5. Agent creation and operations wizard clarity

Нужно добить:

- copy для причин существования отдельных agent endpoints;
- empty states без багов с пустыми запросами;
- пояснения вокруг `slug`;
- более явное описание security level на операции;
- capability-based hiding недоступных протоколов и execution modes.

Основные файлы:

- `apps/ui/js/agents.js`
- `apps/ui/js/wizard.js`
- `apps/ui/js/wizard-live.js`
- `apps/ui/js/wizard-model.js`
- `apps/ui/js/i18n.js`

## 4. Глобальные правила для UI

- никакой developer-facing copy в пользовательском интерфейсе;
- capability-locked функция либо скрыта, либо помечена честно;
- мобильная версия не должна требовать обязательного горизонтального скролла для primary actions;
- действия создания должны жить в одном месте и не дублироваться в пустом состоянии без причины;
- все новые user-facing строки должны обновляться одновременно в `EN` и `RU`.

## 5. Правила приемки

Frontend-задача считается закрытой только если:

- измененный UI соответствует capability model редакции;
- строка есть в `EN` и `RU`;
- мобильный сценарий проверен вручную или через e2e;
- не остались старые product contradictions в copy.
