Версия: 1.2.0
Дата: 2025-12-30
При открытии терминала автоматически загружается:
- Вся история диалога USER ↔ ASSISTANT из текущей сессии
- Обычно: 50-200 сообщений (зависит от длины сессии)
- Объем: от 10 KB до 100 KB текста
- Лимит: последние 100 сообщений (настраивается в backend)
Структура буфера:
📥 Загрузка истории сессии #1...
👤 USER: режим архитектор
🤖 ASSISTANT: Режим Архитектор активирован...
👤 USER: доделай все
🤖 ASSISTANT: Доделываю все функции...
...
✓ Загружено 78 сообщений из буфера
🔗 WebSocket подключен. Введите команду: help, info, list, resume
Сколько строк в буфере терминала:
- Типичная сессия: 500-2000 строк
- Длинная сессия: 5000-10000 строк
- Максимум: до 20000 строк (ограничение браузера)
Сколько символов:
- Типичная сессия: 50,000-100,000 символов (~50-100 KB)
- Длинная сессия: 200,000-500,000 символов (~200-500 KB)
- Максимум: зависит от памяти браузера (обычно до 5 MB)
Кнопки в заголовке терминала:
- A- — уменьшить шрифт (минимум 10px)
- A+ — увеличить шрифт (максимум 24px)
Размеры:
- По умолчанию: 13px
- Минимум: 10px (для вмещения больше текста)
- Максимум: 24px (для лучшей читаемости)
Как использовать:
1. Открыть терминал (кнопка 💻)
2. Нажать A- для уменьшения
3. Нажать A+ для увеличения
4. Шрифт изменяется мгновенно
Жесты на телефоне:
- Двумя пальцами раздвигать/сжимать (pinch-to-zoom)
- Работает для прокрутки и выделения текста
- user-select: text включен для копирования
Выделение и копирование:
- Долгое нажатие на текст → выделение
- Стандартное меню копирования iOS/Android
- Можно копировать код, команды, ответы
Что можно копировать:
- Полные сообщения USER/ASSISTANT
- Фрагменты кода
- Команды для выполнения
- Ошибки и диагностику
Доступные команды после загрузки истории:
- help — справка по командам
- info — информация о текущей сессии
- list — список всех сессий (топ-10)
- resume — возобновить сессию (пометить как активную)
Как использовать:
1. Дождаться загрузки истории
2. Дождаться сообщения "WebSocket подключен"
3. Ввести команду в поле внизу
4. Нажать Enter или кнопку отправки
Пример работы:
📥 Загрузка истории сессии #1...
✓ Загружено 78 сообщений из буфера
🔗 WebSocket подключен. Введите команду: help, info, list, resume
> help ← вводишь команду
🤖 ASSISTANT: Доступные команды:
• info - информация о сессии
• resume - возобновить сессию
• list - список всех сессий
• help - эта справка
Сообщения окрашены по ролям:
- 🔵 USER (синий) - ваши сообщения
- 🟣 ASSISTANT (фиолетовый) - ответы Claude
- 🟡 SYSTEM (жёлтый) - системные сообщения
Тёмная тема:
- Фон: #1e1e1e (почти чёрный)
- Текст: #d4d4d4 (светло-серый)
- Заголовок: #2d2d2d (тёмно-серый)
- Как в настоящем терминале
Процесс:
1. Открытие терминала → openTerminal(session)
2. Запрос к API: GET /api/sessions/{id}/history
3. Парсинг истории (разделение по USER/ASSISTANT)
4. Добавление в terminalMessages[]
5. Автоскролл вниз к последнему сообщению
Формат данных:
terminalMessages = [
{
id: 123456789,
type: 'user',
sender: 'USER',
text: 'доделай все'
},
{
id: 123456790,
type: 'assistant',
sender: 'ASSISTANT',
text: 'Доделываю все функции...'
}
]
CSS переменная:
.terminal-output {
font-size: var(--terminal-font-size, 13px);
}
Alpine.js привязка:
<div :style="`--terminal-font-size: ${terminalFontSize}px`">
Изменение:
terminalFontSize = Math.max(10, terminalFontSize - 1) // уменьшить
terminalFontSize = Math.min(24, terminalFontSize + 1) // увеличить
Backend (session_history.py):
- Лимит: 500 строк текста (параметр max_lines)
- Ограничение по СТРОКАМ, а не по сообщениям
- 500 строк ≈ 10-30 сообщений в зависимости от длины
Frontend (браузер):
- Современные браузеры: до 5-10 MB текста
- Старые телефоны: до 1-2 MB
- При переполнении - браузер может зависнуть
Рекомендация:
- Оптимально: 100-200 сообщений
- Максимум: 500 сообщений
Загрузка истории:
- 50 сообщений: ~100 ms
- 100 сообщений: ~200 ms
- 500 сообщений: ~1 секунда
Прокрутка:
- До 1000 строк: плавно
- 1000-5000 строк: может быть медленно
- >5000 строк: может лагать на старых телефонах
A: Нажми кнопку A+ в правом верхнем углу терминала.
A: Да, просто прокручивай вверх пальцем.
A: Последние 100 сообщений. Обычно это полная сессия.
A: Да, но нужно изменить параметр в backend (см. ниже).
A: Слишком много сообщений (>500). Уменьшите лимит или очистите историю.
A: Да, долгое нажатие → выделить → копировать (стандартное меню).
Файл: app.py:210
# Текущее значение (500 строк)
history_content = format_history(messages, max_lines=500)
# Можно увеличить (например, 1000 строк)
history_content = format_history(messages, max_lines=1000)
# Или использовать лимит по сообщениям
history_content = format_history(messages, max_messages=100)
После изменения:
systemctl restart sessionhub
Файл: static/index.html:528
// Было
terminalFontSize: 13,
// Стало (например, 15)
terminalFontSize: 15,
| Параметр | SessionHub | Linux Terminal | iTerm2 | Windows Terminal |
|---|---|---|---|---|
| Буфер строк | 500-2000 | 1000-10000 | 1000-∞ | 1000-9999 |
| Буфер символов | 50-500 KB | 1-10 MB | 1-100 MB | 1-10 MB |
| История | Вся сессия | Последние N команд | Вся история | Последние N команд |
| Прокрутка | Пальцем | Scroll/PgUp | Scroll | Scroll |
| Zoom | A+/A- кнопки | Ctrl +/- | Cmd +/- | Ctrl +/- |
| Копирование | Долгое нажатие | Выделение мышью | Выделение | Выделение |
1. Открой терминал
2. Прокрути вверх к началу истории
3. Нажми A+ для увеличения шрифта
4. Читай комфортно
1. Найди команду в истории
2. Долгое нажатие на команду
3. Выбери "Копировать"
4. Вставь в другое приложение
1. Открой терминал
2. Прокрути вверх до начала
3. Посмотри первое сообщение USER
4. Это начало сессии
Статус: ✅ РЕАЛИЗОВАНО В v1.2.0