Сохранение и восстановление раскладок
Почему ваши вкладки возвращаются ровно туда, где вы их оставили, — даже после перезагрузки сервера.
purplemux построен на идее, что закрытие вкладки в браузере не должно завершать сессию. Работают вместе две вещи: tmux держит шеллы запущенными, а ~/.purplemux/workspaces.json помнит раскладку.
Что сохраняется
Всё, что вы видите в рабочем пространстве:
- Вкладки и их порядок
- Разделения панелей и их пропорции
- Тип панели каждой вкладки — Terminal, Claude, Diff, Web browser
- Рабочий каталог каждого шелла
- Группы рабочих пространств, имена и порядок
workspaces.json транзакционно обновляется при каждом изменении раскладки, поэтому файл всегда отражает текущее состояние. Карта файлов на диске — в Каталоге данных.
Закрытие браузера
Закройте вкладку, обновите страницу, захлопните ноутбук. Ничто из этого не убивает сессии.
Каждый шелл живёт в tmux-сессии на отдельном сокете purple — полностью изолированном от вашего личного ~/.tmux.conf. Откройте http://localhost:8022 через час, и WebSocket переподключится к той же tmux-сессии, переиграет scrollback и передаст живой PTY обратно в xterm.js.
Вы ничего не восстанавливаете — вы переподключаетесь.
Восстановление после перезагрузки сервера
Перезагрузка убивает процессы tmux — это просто процессы ОС. purplemux обрабатывает это при следующем старте:
- Прочитать раскладку —
workspaces.jsonописывает каждое рабочее пространство, панель и вкладку. - Параллельно пересоздать сессии — для каждой вкладки запускается новая tmux-сессия в её сохранённом рабочем каталоге.
- Авто-возобновление Claude — вкладки, в которых работала сессия Claude, перезапускаются с
claude --resume {sessionId}, чтобы беседа продолжилась с того же места.
Слово «параллельно» здесь принципиально: если у вас десять вкладок, все десять tmux-сессий поднимаются одновременно, а не одна за другой. К моменту, когда вы откроете браузер, раскладка уже на месте.
Что не возвращается
Несколько вещей сохранить нельзя:
- Состояние шелла в памяти — переменные окружения, фоновые задачи, REPL посреди мысли.
- Запросы разрешений в полёте — если Claude ждал решения по разрешению в момент гибели сервера, после восстановления вы увидите тот же запрос снова.
- Передние процессы кроме
claude— буферыvim,htop,docker logs -f. Шелл вернётся в тот же каталог; процесс — нет.
Это стандартный контракт tmux: шелл выживает, процессы внутри — не обязательно.
Ручное управление
Обычно трогать ничего не нужно, но для любопытных:
- tmux-сокет называется
purple. Посмотреть:tmux -L purple ls. - Сессии именуются
pt-{workspaceId}-{paneId}-{tabId}. - Редактировать
workspaces.jsonпри работающем purplemux небезопасно — сервер держит его открытым и пишет в него.
Глубже (бинарный протокол, backpressure, наблюдение за JSONL) — в разделе Как это работает на главной.
Что дальше
- Рабочие пространства и группы — что сохраняется на уровне рабочего пространства.
- Вкладки и панели — что сохраняется на уровне вкладки.
- Поддержка браузеров — известные особенности фоновых вкладок и переподключений на мобильных.