Forge
markdowndeeb25a2
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
351. **Целевой якорь:** основной **UI редактирования настроек** (или его большая часть) — **внутри MFD** (вторичный контур), **компактная** вёрстка: группы, аккордеоны, короткие пути к редким ключам, ссылка «открыть `settings.toml`» без дублирования канона.
362. **Отдельное окно:** оставить как **fallback** (большой монитор, сравнение сбоку, доступность) или **свернуть** до редких сценариев — **решение продукта** после прототипа MFD.
373. **Согласовать с [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
View only · write via MCP/CIDE