| 1 | # Cascade IDE — макет главного окна (v1) |
| 2 | |
| 3 | Описание раскладки главного окна для согласования с MCP и онбординга. **Эталон —** `Views/MainWindow.axaml` и связанные view (в т.ч. `DocumentsDockView`, `MfdShellView`). |
| 4 | |
| 5 | **Режим UI:** в поставке один id в **`UiModes/index.toml`** — **Flight** (полигон PFD · Forward · MFD). Отдельных продуктовых пресетов **Focus / Balanced / Power** и переключателя «режим интерфейса» в меню **нет**. Семья **`UiModeFamily.Flight`** и capabilities — в TOML режима; контракт — **[ADR 0010](../adr/0010-ui-modes-toml-configuration.md)**, обзор — **[ui-modes-overview-v1.md](ui-modes-overview-v1.md)**, внимание и зоны — **[ADR 0021](../adr/0021-pfd-mfd-cockpit-attention-model.md)**. |
| 6 | |
| 7 | --- |
| 8 | |
| 9 | ## 1. Общая структура |
| 10 | |
| 11 | Окно: **Grid** (корень) → внутри **DockPanel** — сверху **Menu**, ниже **`MainGrid`** (одна сетка рабочей области). |
| 12 | |
| 13 | **Размер по умолчанию:** 1000×600. Ресайз по границе окна и **сплиттерам** между колонками PFD / Forward / MFD. |
| 14 | |
| 15 | Поверх — **CommandPalette** (`ZIndex` 5000), при необходимости оверлеи зон/подсветки. |
| 16 | |
| 17 | --- |
| 18 | |
| 19 | ## 2. Меню (`Menu`, DockPanel.Top) |
| 20 | |
| 21 | Актуальный состав (см. код): |
| 22 | |
| 23 | - **Файл:** открыть решение / папку / файл, экспорт Markdown, выход. |
| 24 | - **Отладка:** шаг F5/старт, стартовый проект, attach, остановка, шаги (over/into/out). |
| 25 | - **Вид:** палитра команд; чекбоксы видимости **PFD** (обозреватель / карта — по раскладке), **вывод сборки** (страница MFD), **MFD** (колонка), **терминал** (страница MFD), **Git** (страница MFD), **док инструментирования**; подменю **Тема**; язык интерфейса; Markdown preview в MFD; превью в отдельном окне. |
| 26 | - **Настройки:** параметры AI и чата. |
| 27 | - **Справка:** о программе. |
| 28 | |
| 29 | **MCP-баннер:** `McpBannerView` в строке 0 `MainGrid` (не в меню), если IDE в режиме MCP-сервера. |
| 30 | |
| 31 | --- |
| 32 | |
| 33 | ## 3. `MainGrid` — сетка |
| 34 | |
| 35 | **Строки (RowDefinitions):** три строки — `Auto`, `Auto`, `*`. |
| 36 | |
| 37 | | Row | Содержимое | |
| 38 | | --- | --- | |
| 39 | | 0 | `McpBannerView` (при `IsMcpServerMode`) | |
| 40 | | 1 | **`TaskCockpitView`** — полоса задач, CascadeChord, быстрые действия (по capabilities) | |
| 41 | | 2 | **Три зоны внимания:** PFD · Forward · MFD (см. ниже) | |
| 42 | |
| 43 | **Колонки (ColumnDefinitions):** `220, 4, *, 4, 340` (базовые ширины; PFD и MFD могут схлопываться по привязкам). |
| 44 | |
| 45 | | Col | Содержимое | |
| 46 | | --- | --- | |
| 47 | | 0 | **PFD** — `AttentionZoneContainer Zone="Pfd"`: обозреватель решения и/или карта навигации workspace (по runtime/placement), опциональный mount инструмента. | |
| 48 | | 1 | `GridSplitter` (видимость/блокировка с VM) | |
| 49 | | 2 | **Forward** — `AttentionZoneContainer Zone="Forward"`: **`DocumentsDockView`** (Avalonia Dock — вкладки документов, редактор). | |
| 50 | | 3 | `GridSplitter` | |
| 51 | | 4 | **MFD** — `AttentionZoneContainer Zone="Mfd"`: **`MfdShellView`** (вторичный контур: полоса сверху + стек **страниц**). | |
| 52 | |
| 53 | Оверлей геометрии зон (отладка раскладки): `SkiaZoneGeometryOverlayPfd` / `Forward` / `Mfd`. Подсветка агента: `AgentHighlightLayer` на весь `MainGrid`. |
| 54 | |
| 55 | `UiModeBloomOverlay` — декоративный bloom по настройкам хрома (семья/тема из TOML). |
| 56 | |
| 57 | --- |
| 58 | |
| 59 | ## 4. Зона Forward (`DocumentsDockView`) |
| 60 | |
| 61 | - **HUD** (стр. [ADR 0021](../adr/0021-pfd-mfd-cockpit-attention-model.md) §9): при непустом баннере — полоса над доком. |
| 62 | - **Док-менеджер:** `DockControl` — factory/layout из ViewModel, группы редакторов, **без** привязки «журнал сборки внизу колонки» к старому макету: длинные логи — на **страницах MFD** (сборка, тесты, терминал, …). |
| 63 | |
| 64 | Имена для MCP: по возможности совпадают с `Name` в XAML док-контролов (см. `DocumentsDockView` и фабрику доков). |
| 65 | |
| 66 | --- |
| 67 | |
| 68 | ## 5. Зона MFD (`MfdShellView` + `MfdShellPageStack`) |
| 69 | |
| 70 | Сверху вниз внутри колонки MFD: |
| 71 | |
| 72 | 1. **`WorkspaceChromeBandView`** — полоса в духе EICAS / IDE Health (видимость и содержимое — по TOML и VM). |
| 73 | 2. **`MfdContourStackHost`** — `Border`-хост со **`MfdShellPageStack`**: одна **активная страница** (`CurrentMfdShellPage`), например: |
| 74 | - Workspace Health (выделенная страница), обозреватель в MFD, related files, превью Markdown, чат, настройки AI, **терминал**, **журнал сборки**, Problems, **Git**, события, тесты, гипотезы, стек отладки, … |
| 75 | |
| 76 | Переключение страниц — из VM/команд/меню (не отдельный `TabControl` нижней панели **главного** окна: его в текущем `MainWindow` **нет**). |
| 77 | |
| 78 | **Терминал** на странице MFD — заглушка «одна команда → вывод»; не Integrated Shell — **[mfd-terminal-stub-vs-integrated-shell-v1.md](mfd-terminal-stub-vs-integrated-shell-v1.md)**. |
| 79 | |
| 80 | --- |
| 81 | |
| 82 | ## 6. Ключевые контролы и MCP |
| 83 | |
| 84 | | Зона / смысл | Имя / примечание | |
| 85 | | --- | --- | |
| 86 | | Корень окна | `RootWindow` | |
| 87 | | Сетка | `MainGrid` | |
| 88 | | Чат (страница MFD) | внутри `ChatMfdPageView` / стека | |
| 89 | | Ввод в чат | `ChatInputBox` (на странице чата) | |
| 90 | | Терминал (консоль) | `TerminalView` (`TerminalMfdPageView`, AvaloniaTerminal) | |
| 91 | | Подсветка агента | `AgentHighlightOverlay` на `AgentHighlightLayer` | |
| 92 | |
| 93 | `ide_set_panel_size` и аналоги — по актуальному контракту MCP; геометрия сейчас опирается на **сплиттеры трёх колонок** и настройки из `workspace.toml` / capabilities. |
| 94 | |
| 95 | --- |
| 96 | |
| 97 | ## 7. Оверлей подсветки |
| 98 | |
| 99 | `AgentHighlightLayer` (Canvas, `ZIndex` 1000) поверх сетки; `AgentHighlightOverlay` — рамка вокруг целевого контрола (`ide_highlight_control`). `IsHitTestVisible=false`, чтобы не перехватывать клики. |
| 100 | |
| 101 | --- |
| 102 | |
| 103 | ## 8. Исторический контекст (не эталон раскладки) |
| 104 | |
| 105 | Ранние макеты с **нижней панелью** главного окна (вкладки Terminal / Build / … в одном `BottomPanelView`) и пресетами **Focus / Balanced / Power** относятся к **старой** топологии. Текущий **Flight** — **PFD | Forward | MFD** в одной сетке, длинные потоки — **страницы MFD**. Уточнения по старым PNG — `concept-to-implementation-map-v1.md`, `concept-generated/`; визуал концептов **не** обязан совпадать с кодом. |
| 106 | |
| 107 | --- |
| 108 | |
| 109 | ## 9. Troubleshooting (симптомы раскладки) |
| 110 | |
| 111 | Операционная диагностика («узкая полоса», пустота по бокам, неверный монитор, лишние колонки PFD/MFD): KB **`playbook-layout-presentation-intercom-troubleshooting-v1.md`** (указатель в репо: [playbook-layout-presentation-intercom-troubleshooting-v1.md](playbook-layout-presentation-intercom-troubleshooting-v1.md)). Не путать с дизайном ленты Intercom (`docs/design/intercom-design-hub-v1.md`). |
| 112 | |
| 113 | --- |
| 114 | |
| 115 | *Версия документа: 2.0. Соответствует `MainWindow.axaml` и `UiModes/index.toml` (только **Flight**). При смене разметки — обновить этот файл.* |
| 116 | |