Живой вид сессии
Что на самом деле показывает панель таймлайна — сообщения, вызовы инструментов, задачи и промпты, разложенные как события, а не как scrollback CLI.
Когда вкладка запускает Claude Code, purplemux заменяет сырой вид терминала структурированным таймлайном. Та же сессия, тот же JSONL-транскрипт — но разложены как дискретные события, по которым удобно бегать глазами, прокручивать и ссылаться.
Почему таймлайн лучше scrollback
Claude CLI интерактивный. Чтобы увидеть, что он делал пятнадцать минут назад в терминале, нужно прокручивать через всё, что произошло с тех пор, читать перенесённые строки и угадывать, где заканчивается один вызов инструмента и начинается следующий.
Таймлайн хранит те же данные и добавляет структуру:
- Один ряд на сообщение, вызов инструмента, задачу или промпт
- Входы и выходы инструмента сгруппированы вместе
- Постоянные якоря — события не сползают вверх, когда буфер заполняется
- Текущий шаг всегда закреплён внизу со счётчиком прошедшего времени
В терминал можно вернуться в любой момент через переключатель режима в верхней строке. Таймлайн — это вид на ту же сессию, а не отдельная.
Что вы увидите
Каждый ряд таймлайна соответствует записи в JSONL-транскрипте Claude Code:
| Тип | Что показывает |
|---|---|
| Сообщение пользователя | Ваш промпт как чат-пузырёк. |
| Сообщение ассистента | Ответ Claude, отрендеренный как Markdown. |
| Вызов инструмента | Имя инструмента, ключевые аргументы и ответ — read, edit, bash и т. д. |
| Группа инструментов | Подряд идущие вызовы инструментов сворачиваются в одну карточку. |
| Задача / план | Многоступенчатые планы с прогрессом по чекбоксам. |
| Sub-agent | Вызовы агентов сгруппированы со своим прогрессом. |
| Запрос разрешения | Перехваченный запрос с теми же опциями, что предлагает Claude. |
| Compacting | Тонкий индикатор, когда Claude автоматически сжимает контекст. |
Длинные сообщения ассистента сворачиваются до фрагмента с возможностью раскрыть; длинные выводы инструментов обрезаются с переключателем «показать ещё».
Как поддерживается актуальность
Таймлайн питается WebSocket'ом на /api/timeline. Сервер запускает fs.watch на активном JSONL-файле, парсит дописанные записи и пушит их в браузер по мере появления. Поллинга нет, полной перезагрузки нет — стартовый payload отправляет существующие записи, всё последующее идёт инкрементально.
Пока Claude в busy, вы также видите:
- Спиннер с живым счётчиком прошедшего времени для текущего шага
- Текущий вызов инструмента (например, «Читает src/lib/auth.ts»)
- Короткий фрагмент самого свежего текста ассистента
Это идёт через метаданный проход JSONL-watcher и обновляется без смены состояния сессии.
Скролл, якоря и история
Таймлайн авто-прокручивается, когда вы уже у нижнего края, и стоит на месте, когда вы пролистываете вверх для чтения. Плавающая кнопка К низу появляется, когда вы поднялись больше чем на экран от последней записи.
Для длинных сессий старые записи подгружаются по требованию при прокрутке вверх. ID сессии Claude сохраняется через resume, поэтому возвращение к вчерашней сессии приводит вас туда, где остановились.
Запросы разрешений inline
Когда Claude просит запустить инструмент или отредактировать файл, запрос появляется прямо в таймлайне, а не как модальное окно. Можно кликнуть опцию, нажать соответствующую цифру или проигнорировать и ответить с телефона через Web Push. Полный поток — в Запросах разрешений.
Режимы на одной вкладке
Верхняя строка позволяет переключать, что показывает правая панель для одной и той же сессии:
- Claude — таймлайн (по умолчанию)
- Terminal — сырой xterm.js-вид
- Diff — изменения git для рабочего каталога
Переключение режимов ничего не перезапускает. Сессия продолжает работать на tmux за всеми тремя видами.
Сокращения: ⌘⇧C · ⌘⇧T · ⌘⇧F.
Что дальше
- Запросы разрешений — поток одобрения inline.
- Статус сессии — бейджи, которые задают индикаторы таймлайна.
- Быстрые промпты и вложения — на что способна нижняя строка ввода.