Skip to content

MFD: «терминал»-заглушка и отдельный трек Integrated Shell (v1)

Не ADR — рабочая заметка, чтобы не путать нынешний UI с полноценной встроенной оболочкой. Код — источник правды.

Что в продукте сейчас

  • Страница MFD: Views/TerminalMfdPageView.axaml — read-only TextBox (вывод) + однострочный TextBox (ввод, Enter → команда). Это не эмулятор терминала: нет PTY, нет рендера escape-последовательностей, нет интерактивной сессии shell.
  • Макет главного окна без отдельной нижней полосы вкладок: терминал — страница MFD (TerminalMfdPageView в стеке MfdShellPageStack). Тот же TerminalPanel / TerminalInputBox (см. cascade-ide-ui-layout-v1.md).
  • Логика: Features/Terminal/TerminalPanelViewModel.cs — запуск одноразовой команды через cmd /c (Windows) или sh -c (иначе), перенаправленный stdout/stderr в накопитель строки. Это «выполни и допиши в буфер», а не Integrated Shell в духе встроенного PowerShell / Windows Terminal / ConPTY.

Чем это не является (без сарказма к коду)

  • Не встроенный PowerShell (или иной интерактивный REPL) с сессией, табами, профилями, PSReadline.
  • Не Pseudo Console (ConPTY) / PTY-уровень: нет нормального TTY, курсорной сетки, цветов по ANSI, сырого ввода для интерактивных CLI.
  • Не заявленный VS Code Integrated Terminal-класс по UX: прокрутка, копипаст, выделение, интеграция с задачами — в основном ещё впереди как отдельный объём.

Иными словами: это заглушка / «личинка» площадки «консоль» в кабине, а не готовый продуктовой терминал.

Зачем так можно было сделать

  • Дать точку вывода и одиночные команды в каталоге решения без внедрения всего стека ConPTY+рендер+кроссплатформа.
  • Сохранить точку в MFD (страница) под будущий нормальный shell.

Куда смотреть, когда будем делать «по-взрослому»

  • Транспорт потока текста в UI без рвани — паттерн из ADR 0094 (Channel<T>, батчинг, backpressure; для журнала сборки уже принят; терминал — отдельный срез, когда появится реальный поток).
  • Граница кокпит / shellADR 0066 (приборы и deck vs хром/оболочка IDE).
  • Модель MFDADR 0021 (страница «терминал» — навигация вторичного контура, а не зона = страница).

Итог одной строкой

Текущий «Терминал» в Cascade IDE — площадка и сценарий «одна команда → вывод в текст; Integrated Shell (хотя бы уровня PS + нормальный UX) — отдельная крупная линия**, а не доработка существующих двух TextBox.