MFD: «терминал»-заглушка и отдельный трек Integrated Shell (v1)¶
Не ADR — рабочая заметка, чтобы не путать нынешний UI с полноценной встроенной оболочкой. Код — источник правды.
Что в продукте сейчас¶
- Страница MFD:
Views/TerminalMfdPageView.axaml— read-onlyTextBox(вывод) + однострочный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; для журнала сборки уже принят; терминал — отдельный срез, когда появится реальный поток). - Граница кокпит / shell — ADR 0066 (приборы и deck vs хром/оболочка IDE).
- Модель MFD — ADR 0021 (страница «терминал» — навигация вторичного контура, а не зона = страница).
Итог одной строкой¶
Текущий «Терминал» в Cascade IDE — площадка и сценарий «одна команда → вывод в текст; Integrated Shell (хотя бы уровня PS + нормальный UX) — отдельная крупная линия**, а не доработка существующих двух TextBox.