Andrey Epifancev fe43d2ea7b spec: headless panel service and client-side background (OpenSpec change)
Refs #4

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 20:31:09 +04:00

45 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Proposal
## Why
Панель «Claude» сейчас живёт только внутри iTerm2: её HTTP-сервер на `127.0.0.1:8766` поднимает
скрипт AutoLaunch, и когда iTerm2 закрыт, страницы нет. Пользователь смотрит панель с iPad —
Termius держит SSH-туннель к `127.0.0.1:8766` на Mac, страница открыта в Safari, а сами сессии
Claude Code крутятся в tmux, которому iTerm2 не нужен. Панель должна быть доступна, пока Mac
включён и пользователь вошёл в систему, независимо от iTerm2. Заодно тема по умолчанию
(Solarized dark) в Safari на iPad «мозолит глаза», и её нужно менять прямо на странице.
## What Changes
- Новый фоновый режим панели (`--headless`): HTTP-сервер, дерево сессий, лимиты и баланс без
iTerm2. Запускается LaunchAgent'ом при входе в систему, перезапускается при падении.
- Порт 8766 всегда занимает только фоновый сервер. Скрипт AutoLaunch в iTerm2 больше не поднимает
сервер, а только регистрирует web view «Claude» в Toolbelt на тот же адрес.
- **BREAKING**: подстройка цветов и шрифта под профиль iTerm2 убрана; ключи `use_profile_theme`
и `theme_variant` в `config.json` больше ничего не делают.
- **BREAKING**: возможности, которым нужна живая связь с iTerm2, уходят: названия вкладок iTerm2 для
сессий вне tmux, переход во вкладку iTerm2 для сессий вне tmux, переключение панелей `tmux -CC`,
открытие `lf` в разделённой панели iTerm2 для сессий вне tmux. Сессии в обычном tmux работают
как раньше (имена, переход, `lf` — через tmux).
- Новая настройка фона на клиенте: шестерёнка ⚙ в нижней строке панели раскрывает образцы фона,
«свой цвет» и «сброс». Выбор хранится на устройстве (браузере/web view), текст подстраивается.
- `install.sh` ставит и запускает LaunchAgent, `uninstall.sh` его останавливает и удаляет.
## Capabilities
### New Capabilities
- `panel-service`: где и как работает сервер панели — фоновая служба без iTerm2, единственный
владелец порта, регистрация в Toolbelt, установка/удаление.
- `panel-appearance`: как пользователь меняет фон панели на своём устройстве.
### Modified Capabilities
<!-- openspec/specs/ пуст — изменяемых спек нет -->
## Impact
- `files/claude_agents.py`: точка входа с двумя режимами (фоновый сервер / регистратор Toolbelt),
удаление `theme_poller` и чтения профиля, клиентский JS/CSS для фона в `render_page`.
- `install.sh`, `uninstall.sh`: LaunchAgent (`~/Library/LaunchAgents/`), лог службы.
- `files/config.example.json`, README.md: убрать ключи темы, описать фоновую службу и шестерёнку.
- Внешние зависимости не добавляются (только стандартная библиотека Python, `launchctl`).