| 1 | # ADR 0074: UI настроек — компактнее, якорь на MFD; нехватка места в раскладке P+F+M |
| 2 | |
| 3 | **Статус:** Proposed |
| 4 | **Дата:** 2026-04-19 |
| 5 | ## Связанные ADR |
| 6 | |
| 7 | | ADR | Роль | |
| 8 | |-----|------| |
| 9 | | [0029](0029-configuration-toml-canonical-ui-facade.md) | канон TOML; целостный центр настроек **deferred**; точечный UI = фасад канона | |
| 10 | | [0028](0028-user-settings-toml-localappdata-and-secrets.md) | `settings.toml` | |
| 11 | | [0021](0021-pfd-mfd-cockpit-attention-model.md) | якоря PFD / Forward / MFD | |
| 12 | | [0046](0046-presentation-layout-authority-and-cockpit-invariants.md) | `presentation`, инварианты раскладки | |
| 13 | | [0017](0017-multi-window-workspace-and-agent-surfaces.md) | мультиоконность, `display.screens` | |
| 14 | | [0069](0069-markdown-preview-tool-surface-and-renderer-decoupling.md) | пример **MFD-first** tool surface | |
| 15 | |
| 16 | ### Вне ADR |
| 17 | |
| 18 | | Документ | Роль | |
| 19 | |----------|------| |
| 20 | | [`Models/MfdShellPage.cs`](../../Models/MfdShellPage.cs) | enum страниц MFD | |
| 21 | |
| 22 | --- |
| 23 | ## Контекст |
| 24 | |
| 25 | **Ожидание пользователя:** настройки логично искать в **вторичном контуре** «домашних» инструментов — **MFD** ([0021](0021-pfd-mfd-cockpit-attention-model.md)), а не как единственный тяжёлый модальный слой поверх редактора, если цель — **не потерять контекст** кокпита. |
| 26 | |
| 27 | **Факт кода:** часть настроек уже доступна как страница **`AiChatSettings`** в **`MfdShellView`**; полный набор по-прежнему открывается **отдельным окном** (меню «Настройки → Параметры AI и чата…» → `OpenSettingsCommand` → `ShowSettingsWindow`). [0029](0029-configuration-toml-canonical-ui-facade.md) не запрещает развитие UI, но фиксирует **deferred** отдельный «полноэкранный центр настроек как отдельный продукт»; перенос **в MFD** — это не вторая правда на диске, а **поверхность** над тем же `CascadeIdeSettings`. |
| 28 | |
| 29 | **Проблема плотности:** в типичной раскладке **P + F + M** (PFD | Forward | MFD) колонка MFD **ограничена по ширине**; длинные формы и много секций дают **scroll**, обрезание или ощущение «тесноты» — нужна явная политика **при нехватке места**. |
| 30 | |
| 31 | --- |
| 32 | |
| 33 | ## Предлагаемое направление (черновик) |
| 34 | |
| 35 | 1. **Целевой якорь:** основной **UI редактирования настроек** (или его большая часть) — **внутри MFD** (вторичный контур), **компактная** вёрстка: группы, аккордеоны, короткие пути к редким ключам, ссылка «открыть `settings.toml`» без дублирования канона. |
| 36 | 2. **Отдельное окно:** оставить как **fallback** (большой монитор, сравнение сбоку, доступность) или **свернуть** до редких сценариев — **решение продукта** после прототипа MFD. |
| 37 | 3. **Согласовать с [0029](0029-configuration-toml-canonical-ui-facade.md):** любой UI по-прежнему **фасад** модели и файлов; расширение экрана MFD **не** добавляет второй источник истины. |
| 38 | |
| 39 | --- |
| 40 | |
| 41 | <a id="adr0074-overflow"></a> |
| 42 | |
| 43 | ## Открытые вопросы: нехватка места (P + F + M и др.) |
| 44 | |
| 45 | Зафиксировать **одну** или **иерархию** стратегий (подлежит выбору): |
| 46 | |
| 47 | | # | Стратегия | Смысл | Риск | |
| 48 | |---|-----------|------|------| |
| 49 | | 1 | **Вертикальный scroll** внутри страницы MFD | Простой baseline | Длинные формы «убегают» вниз; нужна липкая навигация по секциям | |
| 50 | | 2 | **Минимальная ширина MFD** + **пользовательский** ресайз колонки | Сохранить читаемость | На узких экранах конфликт с Forward (редактор) | |
| 51 | | 3 | **Полноэкранный режим** только для MFD (развернуть колонку / временно max ширина) | Компромисс без отдельного окна | Нужен явный жест выхода / восстановление пресета | |
| 52 | | 4 | **Отдельное окно** как fallback при `ActualWidth < threshold` | Предсказуемо на малых дисплеях | Два кода пути или адаптивный контейнер | |
| 53 | | 5 | **Второе окно** (уже есть для MFD host в [0017](0017-multi-window-workspace-and-agent-surfaces.md)) — дублировать настройки туда | Много мониторов | Синхронизация фокуса и «где правда открыта» | |
| 54 | | 6 | **Сворачивание PFD** (авто или по политике) при фокусе на настройках | Больше места под форму | Меняется модель внимания без явного действия пользователя — осторожно ([0021](0021-pfd-mfd-cockpit-attention-model.md)) | |
| 55 | |
| 56 | **Рекомендация для обсуждения:** начать с **(1) + (2)** и явного **breakpoint** для **(4)**; **(6)** — только по явной команде пользователя, не автоматически в v1. |
| 57 | |
| 58 | --- |
| 59 | |
| 60 | ## Решение |
| 61 | |
| 62 | **Зафиксировать как Proposed:** направление «**настройки → MFD, компактнее**» и перечень **открытых** стратегий overflow — **не** как немедленная смена [0029](0029-configuration-toml-canonical-ui-facade.md) (канон на диске не меняется), а как **продуктовый и UX** выбор следующей итерации. |
| 63 | |
| 64 | **Следующий шаг:** прототип или рефакторинг разметки страницы настроек в **`MfdShellView`**; измерить минимальную ширину и поведение на **1366×768** и **ультрашироком** экране; записать выбранную политику из таблицы overflow в этот ADR или в **presentation** / capabilities ([0046](0046-presentation-layout-authority-and-cockpit-invariants.md)). |
| 65 | |
| 66 | --- |
| 67 | |
| 68 | ## Последствия |
| 69 | |
| 70 | - **Плюс:** согласованность с ментальной моделью «настройки рядом с чатом/терминалом» на MFD; меньше отрыва от кокпита. |
| 71 | - **Минус:** инженерная работа по адаптивной вёрстке и тестам; нужно не сломать пользователей, привыкших к отдельному окну — **migration path** (пункт меню → сначала MFD, «Открыть в отдельном окне» опционально). |
| 72 | |
| 73 | --- |
| 74 | |
| 75 | |