| 1 | # Cascade IDE — UX и макеты |
| 2 | |
| 3 | Каталог для макетов, описаний раскладки и контрактов интерфейса Cascade IDE. Эталон реализации — код в `Views/MainWindow.axaml` и темы в `Themes/`. |
| 4 | |
| 5 | **Актуальная линия (~2026):** в поставке один продуктовый UI-режим — **Flight** (`UiModes/index.toml`); топология **PFD | Forward | MFD** в `MainWindow` — см. **`cascade-ide-ui-layout-v1.md`**; мультиоконность — **[ADR 0017](../adr/0017-multi-window-workspace-and-agent-surfaces.md)**; внимание — **[ADR 0021](../adr/0021-pfd-mfd-cockpit-attention-model.md)**; TOML — **[ADR 0010](../adr/0010-ui-modes-toml-configuration.md)**. Старые PNG/тексты про Focus / Balanced / Power — **архив**; с кодом не сверяем. |
| 6 | |
| 7 | **Design Handbook (принципы + карта ADR):** [design/cide-design-handbook-v1.md](../design/cide-design-handbook-v1.md). |
| 8 | |
| 9 | ## Содержимое |
| 10 | |
| 11 | | Файл | Назначение | |
| 12 | | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | |
| 13 | | `README.md` | Этот файл — оглавление UX-набора. | |
| 14 | | `cascade-ide-ui-layout-v1.md` | Описание макета главного окна: зоны, панели, грид, режимы, ключевые контролы для MCP. | |
| 15 | | `mfd-terminal-stub-vs-integrated-shell-v1.md` | **Не ADR:** нынешний «терминал» на странице MFD = заглушка (`cmd`/`sh` one-shot); не Integrated Shell; трек ConPTY/PS/UX; ADR 0094/0021/0066. | |
| 16 | | `ui-modes-overview-v1.md` | Краткий обзор режимов: id vs семья, TOML, связь с VM/XAML; детали — ADR 0010. | |
| 17 | | `cascade-ide-main-window-wireframe.png` | Макет-картинка (wireframe) главного окна. | |
| 18 | | `concept-screens/` | Скрины из чатов: референсы детального хрома UI. См. `concept-screens/README.md` (напр. `power-project-explorer-tree-concept.png`). | |
| 19 | | `concept-generated/` | Сгенерированные агентом UI-концепты CascadeIDE (Focus/Balanced/Power “cockpit”). | |
| 20 | | `power-mode-concepts-v1.md` | Текстовое описание сгенерированных UI-концептов (Focus/Balanced/Power) с чеклистом для имплементации. | |
| 21 | | `concept-to-implementation-map-v1.md` | Таблица «концепт → XAML/VM» + **§4.1** визуальный хром Power (дерево / редактор / трасса / телеметрия) vs Fluent по умолчанию. | |
| 22 | | `concept-pfd-mfd-cascade-v1.md` | Концепт **PFD/MFD** (авионика): первичное внимание vs мультифункциональные панели; связь с Focus/Balanced/Power и агентом; не ADR. | |
| 23 | | `note-acp-cascade-cursor-v1.md` | **Agent Client Protocol (ACP):** терминология, не путать с другим «ACP»; Cascade как клиент, внешние агенты (в т.ч. Cursor); спека, smoke `samples/AcpSmoke`. | |
| 24 | |
| 25 | ## Макеты |
| 26 | |
| 27 | **Макет-картинка (wireframe):** `cascade-ide-main-window-wireframe.png` — схема главного окна: меню, тулбар, дерево решения слева, редактор в центре, чат справа, терминал снизу. Положи файл в этот каталог (`docs/ui-ux/`); если картинка была сгенерирована в чате — сохрани её из интерфейса Cursor сюда под этим именем. |
| 28 | |
| 29 | **Скрины-концепты (из чатов):** см. `concept-screens/` — там лежат исходные картинки, на базе которых собирались Power Mode / раскладка / визуальный стиль. |
| 30 | |
| 31 | **Сгенерированные UI-концепты (agent render):** см. `concept-generated/` — `cascadeide-ui-concept-focus/balanced/power.png` и wireframe. |
| 32 | |
| 33 | **Источник правды** по разметке — `Views/MainWindow.axaml` и поведение из ViewModel. Документ `cascade-ide-ui-layout-v1.md` фиксирует раскладку и имена панелей/контролов для MCP и онбординга. |
| 34 | |
| 35 | **Концепт PNG vs «глянец» в коде:** раскладка и острова Power в целом совпадают с `concept-generated/*.png`, но **строки списков, выделение, плотность** часто остаются на **Avalonia Fluent** (см. **`cascade-ide-ui-layout-v1.md` §10**, **`power-mode-concepts-v1.md` §5**, **`concept-to-implementation-map-v1.md` §4.1**). |
| 36 | |
| 37 | ## Локализуемые строки (чат и заголовки панелей) |
| 38 | |
| 39 | Паттерн как в **IncomeCascade** (`Lang/Resources*.resx`): |
| 40 | |
| 41 | - **`Lang/Resources.resx`** — нейтральный набор (русские строки по умолчанию). |
| 42 | - **`Lang/Resources.ru-RU.resx`** / **`Lang/Resources.en-US.resx`** — спутники; SDK кладёт их в подкаталоги **`ru-RU`/`en-US`** рядом с `CascadeIDE.dll` (`CascadeIDE.resources.dll`), чтобы `ResourceManager` подхватывал строки при смене `Resources.Culture`. |
| 43 | - Код: **`CascadeIDE.Lang.Resources`**, при старте — **`UiCulture.ApplyFromSettingsOrSystem()`** из `App.OnFrameworkInitializationCompleted` (сохранённый `UiCultureName` в `settings.toml` или системная локаль через **`ApplyFromSystem`**; далее **`LocViewModel.SetCulture`** если `Loc` уже в ресурсах приложения). |
| 44 | - XAML (чат, заголовки панелей, пункты меню языка): привязка к **`LocViewModel`** из ресурса приложения: |
| 45 | `{Binding ИмяКлюча, Source={StaticResource Loc}, DataType={x:Type lang:LocViewModel}}` (`xmlns:lang="using:CascadeIDE.Lang"`). Экземпляр объявлен в **`App.axaml`**: `<lang:LocViewModel x:Key="Loc"/>`. |
| 46 | - C#: `Resources.ИмяКлюча` (культура задаётся через `Resources.Culture` / `LocViewModel.SetCulture`). |
| 47 | |
| 48 | **Смена языка в рантайме:** меню **«Вид → Язык интерфейса»** (Русский / English; отдельно **«Как в системе»** — сбрасывает `UiCultureName` и вызывает `UiCulture.ApplyFromSystem()`); `SetUiLanguageCommand` → `LocViewModel.SetCulture(ru-RU|en-US)`; строки с привязкой к `Loc` обновляются без перезапуска. Вычисляемые свойства VM, которые читают `Resources` напрямую (например `SafetyLevelDescription`), при смене языка дополнительно уведомляются из команды. Выбор сохраняется в **`UiCultureName`** в `settings.toml` (каталог `%LocalAppData%\CascadeIDE\`); при следующем запуске вызывается **`UiCulture.ApplyFromSettingsOrSystem()`** (если поле пустое — поведение как у системной локали через `ApplyFromSystem`). |
| 49 | |
| 50 | ## Связь с кодом |
| 51 | |
| 52 | - **Режимы UI:** в поставке — **Flight**; меню «Вид» и MCP отражают один id (см. **`ui-modes-overview-v1.md`** — там по-прежнему объясняются семья/наследование TOML для кастомных оверлеев; контракт бандла — **[ADR 0010](../adr/0010-ui-modes-toml-configuration.md)**). Цикл режимов и `Alt+1…9` остаются механически, пока в индексе один режим. |
| 53 | - **Темы:** меню «Вид → Тема» (светлая, тёмная, как Cursor, **Power классическая (циан)** — отдельный пресет цветов, не режим UI). Тул `ide_set_ui_theme` меняет тему из MCP. |
| 54 | - **Панели:** Solution Explorer, Build Output, Chat, Terminal — скрываемые; имена контролов для MCP см. в `cascade-ide-ui-layout-v1.md`. |
| 55 | |