Перейти к содержанию

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, а только расщепляет словарь. В разговоре и в коде смешиваются три разных понятия:

  1. Editor HUD (продуктовый термин этого ADR) — всё, что воспринимается в плоскости редактора рядом с кодом и кареткой: подчёркивания, inlay hints, Quick Info у указателя, ghost text, индикаторы в gutter, позже — оверлеи, привязанные к координатам документа.
  2. HUD banner — узкая полоса над текстом (под вкладкой документа), file-level сводка (диагностики, «агент правит файл», и т.п. по 0021 §9 таблица); в коде — EditorHudBannerText / видимость баннера в док-доке. Это частный вид chrome вокруг редактора, не замена inline-слоя.
  3. Глобальные оверлеи IDE (палитра, toast, модалки) — контур 0079; они не входят в Editor HUD, даже если визуально «поверх редактора».

Без явных имён команда и пользователи говорят «HUD» и имеют в виду разное: кто-то — полоску над редактором, кто-то — опыт как у VS (типы у каретки, inlays). Этот ADR фиксирует канон терминов и границы ответственности, не обещая полный набор реализаций.

Решение

  1. Каноническое имя «Editor HUD» обозначает inline-слой и привязанные к документу оверлеи внутри лобового редактора: минимум — диагностики по месту, ghost text, gutter; целевой горизонт — типы/Quick Info у каретки, inlay hints, параметры методов — в духе «не отводить взгляд в боковую панель» (0021 §9 концепция).

  1. HUD banner — отдельное имя для file-level полосы над текстом. Он опционален относительно Editor HUD: может дублировать краткий сигнал (например сводку диагностик), пока inline ещё не покрывает сценарий, или оставаться для событий уровня файла (активность агента по файлу), не вытесняя развитие inline-слоя.

  1. Принцип из 0021 §9 сохраняется: элементы Editor HUD не блокируют набор текста, визуально легче основного кода, отключаемы без потери критичного сигнала в PFD/EICAS, если тот там продублирован.

  1. Конфигурация: содержимое и шаблон баннера — по намерению 0032 (settings.toml, грамматика). Расширяемые политики видимости Editor HUD (что показывать inline, плотность, «только при задержке») — отдельные ключи/секции по мере реализации; не смешивать с конфигом presentation окон (0017).

  1. Связь с агентом: присутствие (курсор, «пишет»), единый буфер — 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 — продуктовое решение.