| 1 | <!-- English translation of adr/0074-settings-ui-mfd-compact-layout-overflow.md. Canonical Russian: ../../adr/0074-settings-ui-mfd-compact-layout-overflow.md --> |
| 2 | |
| 3 | # ADR 0074: Settings UI - more compact, anchored on MFD; lack of space in the P+F+M layout |
| 4 | |
| 5 | **Status:** Proposed |
| 6 | **Date:** 2026-04-19 |
| 7 | ## Related ADRs |
| 8 | |
| 9 | | ADR | Role | |
| 10 | |-----|------| |
| 11 | | [0029](0029-configuration-toml-canonical-ui-facade.md) | TOML canon; holistic settings center **deferred**; dot UI = canon façade | |
| 12 | | [0028](0028-user-settings-toml-localappdata-and-secrets.md) | `settings.toml` | |
| 13 | | [0021](0021-pfd-mfd-cockpit-attention-model.md) | anchors PFD / Forward / MFD | |
| 14 | | [0046](0046-presentation-layout-authority-and-cockpit-invariants.md) | `presentation`, layout invariants | |
| 15 | | [0017](0017-multi-window-workspace-and-agent-surfaces.md) | multi-window, `display.screens` | |
| 16 | | [0069](0069-markdown-preview-tool-surface-and-renderer-decoupling.md) | example **MFD-first** tool surface | |
| 17 | |
| 18 | ### Outside ADR |
| 19 | |
| 20 | | Document | Role | |
| 21 | |----------|------| |
| 22 | | [`Models/MfdShellPage.cs`](../../Models/MfdShellPage.cs) | enum MFD pages | |
| 23 | |
| 24 | --- |
| 25 | ## Context |
| 26 | |
| 27 | **User expectation:** settings are logical to look for in the **secondary circuit** of the “home” tools - **MFD** ([0021](0021-pfd-mfd-cockpit-attention-model.md)), and not as the only heavy modal layer on top of the editor, if the goal is **not to lose the context** of the cockpit. |
| 28 | |
| 29 | **Code fact:** some of the settings are already available as the **`AiChatSettings`** page in **`MfdShellView`**; the full set still opens **in a separate window** (menu “Settings → AI and chat settings...” → `OpenSettingsCommand` → `ShowSettingsWindow`). [0029](0029-configuration-toml-canonical-ui-facade.md) does not prohibit UI development, but does **deferred** a separate "full-screen settings center as a separate product"; the transfer **to MFD** is not a second truth on disk, but a **surface** above the same `CascadeIdeSettings`. |
| 30 | |
| 31 | **Density issue:** in a typical **P + F + M** (PFD | Forward | MFD) layout, the MFD column is **limited in width**; long forms and many sections give **scroll**, cutting off or a feeling of “crowding” - an explicit policy is needed **if there is not enough space**. |
| 32 | |
| 33 | --- |
| 34 | |
| 35 | ## Proposed direction (draft) |
| 36 | |
| 37 | 1. **Target anchor:** main **UI for editing settings** (or most of it) - **inside the MFD** (secondary outline), **compact** layout: groups, accordions, shortcuts to rare keys, link “open `settings.toml`” without duplicating the canon. |
| 38 | 2. **Separate window:** leave as **fallback** (large monitor, side comparison, accessibility) or **collapse** to rare scenarios - **product solution** after MFD prototype. |
| 39 | 3. **Agree with [0029](0029-configuration-toml-canonical-ui-facade.md):** any UI is still **facade** model and files; MFD screen expansion **doesn't** add a second source of truth. |
| 40 | |
| 41 | --- |
| 42 | |
| 43 | <a id="adr0074-overflow"></a> |
| 44 | |
| 45 | ## Open questions: lack of space (P + F + M, etc.) |
| 46 | |
| 47 | Fix **one** or **hierarchy** of strategies (to be selected): |
| 48 | |
| 49 | | # | Strategy | Meaning | Risk | |
| 50 | |---|-----------|------|------| |
| 51 | | 1 | **Vertical scroll** inside MFD page | Simple baseline | Long forms “run away” down; need sticky section navigation | |
| 52 | | 2 | **Minimum MFD width** + **custom** column resize | Maintain readability | On narrow screens conflict with Forward (editor) | |
| 53 | | 3 | **Full screen mode** only for MFD (expand column / temporarily max width) | Compromise without a separate window | Need explicit exit/restore preset gesture | |
| 54 | | 4 | **Separate window** as fallback for `ActualWidth < threshold` | Predictable on small displays | Two path codes or adaptive container | |
| 55 | | 5 | **Second window** (already exists for MFD host in [0017](0017-multi-window-workspace-and-agent-surfaces.md)) - duplicate settings there | Lots of monitors | Synchronizing focus and "where the truth is revealed" | |
| 56 | | 6 | **Collapse PFD** (auto or by policy) when focusing on settings | More space for uniforms | The attention model changes without explicit user action - carefully ([0021](0021-pfd-mfd-cockpit-attention-model.md)) | |
| 57 | |
| 58 | **Recommendation for discussion:** start with **(1) + (2)** and an explicit **breakpoint** for **(4)**; **(6)** - only by explicit user command, not automatically in v1. |
| 59 | |
| 60 | --- |
| 61 | |
| 62 | ## Solution |
| 63 | |
| 64 | **Fix as Proposed:** direction “**settings → MFD, more compact**” and a list of **open** overflow strategies - **not** as an immediate change [0029](0029-configuration-toml-canonical-ui-facade.md) (canon on disk does not change), but as **product and UX** selection of the next iteration. |
| 65 | **Next step:** prototype or refactor the settings page markup in **`MfdShellView`**; measure minimum width and behavior on **1366x768** and **ultra-wide** screens; write the selected policy from the overflow table to this ADR or to **presentation**/capabilities ([0046](0046-presentation-layout-authority-and-cockpit-invariants.md)). |
| 66 | |
| 67 | --- |
| 68 | |
| 69 | ## Consequences |
| 70 | |
| 71 | - **Advantage:** consistency with the “settings near chat/terminal” mental model on MFD; less separation from the cockpit. |
| 72 | - **Minus:** engineering work on adaptive layout and tests; you need to avoid breaking users who are accustomed to a separate window - **migration path** (menu item → MFD first, “Open in a separate window” optional). |
| 73 | |
| 74 | --- |