ADR 0085: Editor HUD — inline-слой в редакторе и отличие от HUD banner¶
Статус: Proposed
Дата: 2026-04-20
Связанные ADR¶
| ADR | Роль |
|---|---|
| 0021 | PFD / MFD — модель внимания кокпита Cascade IDE |
| 0032 | конфиг и грамматика полосы над редактором |
| 0066 | Cockpit UI vs presentation IDE |
| 0079 | IDS — оверлеи приложения, не путать с HUD редактора |
| 0084 | присутствие агента, курсор, единый буфер |
Контекст¶
В 0021 HUD описан как слой внутри лобового (редактора): inline-диагностика, ghost text, gutter, при необходимости — file-level banner над текстом. Тот же тезис («не четвёртый якорь», слой внутри редактора) уже был в контексте 0032; этот ADR не переписывает 0021, а только расщепляет словарь. В разговоре и в коде смешиваются три разных понятия:
- Editor HUD (продуктовый термин этого ADR) — всё, что воспринимается в плоскости редактора рядом с кодом и кареткой: подчёркивания, inlay hints, Quick Info у указателя, ghost text, индикаторы в gutter, позже — оверлеи, привязанные к координатам документа.
- HUD banner — узкая полоса над текстом (под вкладкой документа), file-level сводка (диагностики, «агент правит файл», и т.п. по 0021 §9 таблица); в коде —
EditorHudBannerText/ видимость баннера в док-доке. Это частный вид chrome вокруг редактора, не замена inline-слоя. - Глобальные оверлеи IDE (палитра, toast, модалки) — контур 0079; они не входят в Editor HUD, даже если визуально «поверх редактора».
Без явных имён команда и пользователи говорят «HUD» и имеют в виду разное: кто-то — полоску над редактором, кто-то — опыт как у VS (типы у каретки, inlays). Этот ADR фиксирует канон терминов и границы ответственности, не обещая полный набор реализаций.
Решение¶
- Каноническое имя «Editor HUD» обозначает inline-слой и привязанные к документу оверлеи внутри лобового редактора: минимум — диагностики по месту, ghost text, gutter; целевой горизонт — типы/Quick Info у каретки, inlay hints, параметры методов — в духе «не отводить взгляд в боковую панель» (0021 §9 концепция).
- HUD banner — отдельное имя для file-level полосы над текстом. Он опционален относительно Editor HUD: может дублировать краткий сигнал (например сводку диагностик), пока inline ещё не покрывает сценарий, или оставаться для событий уровня файла (активность агента по файлу), не вытесняя развитие inline-слоя.
- Принцип из 0021 §9 сохраняется: элементы Editor HUD не блокируют набор текста, визуально легче основного кода, отключаемы без потери критичного сигнала в PFD/EICAS, если тот там продублирован.
- Конфигурация: содержимое и шаблон баннера — по намерению 0032 (
settings.toml, грамматика). Расширяемые политики видимости Editor HUD (что показывать inline, плотность, «только при задержке») — отдельные ключи/секции по мере реализации; не смешивать с конфигом presentation окон (0017).
- Связь с агентом: присутствие (курсор, «пишет»), единый буфер — 0084. Визуально ghost text и gutter-индикаторы относятся к Editor HUD; статус в чате — нет.
Сводная таблица (термины)¶
| Термин | Где живёт | Примеры |
|---|---|---|
| Editor HUD | Плоскость редактора / документа | Squiggles, ghost text, gutter icons, inlays, Quick Info у каретки |
| HUD banner | Полоса над текстом в док-доке | Сводка диагностик, file-level сообщение агента |
| IDS overlay | Хост приложения, не модель документа | Command Palette, модалки, глобальные toast (0079) |
Последствия¶
- Документация, ADR и обсуждения используют Editor HUD vs HUD banner предсказуемо; ссылки на «HUD» без уточнения в нормативном тексте избегать или раскрывать по таблице выше.
- Роадмап продукта может приоритизировать Editor HUD (inline) независимо от судьбы баннера; баннер не объявляется единственной реализацией «HUD».
- Новые оверлеи решают: привязка к документу/каретке → слой Editor HUD и движок редактора; глобальный UI → IDS / отдельные контуры по 0079.
Отклонённые / отложенные альтернативы¶
- Одно слово HUD на всё — оставлено как разговорное; в ADR и коде предпочтительны уточнения Editor HUD / HUD banner.
- Считать баннер единственным HUD — отклонено: противоречит 0021 §9, где inline перечислен первым по смыслу «главного» HUD.
Открытые вопросы¶
- Единый пайплайн данных для Quick Info / inlays (Roslyn, LSP) vs разрозненные сервисы — отдельные ADR по мере стыковки.
- Нужна ли пользователю настройка «баннер выкл, inline вкл» как пресет по умолчанию после зрелости inline — продуктовое решение.