Andrey Epifancev 521182d4a4 spec: archive headless-panel change (#4)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 22:59:24 +04:00

4.8 KiB
Raw Blame History

panel-appearance Specification

Purpose

Позволяет пользователю выбрать фон панели прямо на странице, отдельно на каждом устройстве (Safari на iPad, Toolbelt на Mac), чтобы панель не резала глаза рядом с его терминалом.

Requirements

Requirement: Шестерёнка настройки фона

Нижняя строка панели (рядом с «обновлено ЧЧ:ММ:СС») SHALL содержать значок ⚙. Тап по нему SHALL раскрывать строку с образцами фона, кнопкой «свой цвет» и кнопкой «сброс»; повторный тап SHALL её сворачивать. В свёрнутом виде, кроме значка, ничего нового на странице не видно.

Scenario: Раскрыть и свернуть

  • WHEN пользователь нажимает ⚙
  • THEN появляется строка образцов; при повторном нажатии она скрывается

Scenario: Попадание пальцем

  • WHEN страница открыта в Safari на iPad
  • THEN ⚙, образцы и кнопки нажимаются пальцем без промахов (не мельче привычных элементов управления iPadOS)

Requirement: Выбор фона

Выбор образца или своего цвета SHALL сразу менять фон всей панели, включая окно сообщений. Цвет основного текста, приглушённого текста, линий дерева и разделителей SHALL подстраиваться под яркость фона, чтобы оставаться читаемым. Цвета статусов и лимитов (зелёный, жёлтый, красный) SHALL оставаться прежними.

Scenario: Светлый фон

  • WHEN пользователь выбирает светлый образец
  • THEN фон становится светлым, а текст — тёмным и читаемым

Scenario: Свой цвет

  • WHEN пользователь нажимает «свой цвет» и выбирает цвет в системной палитре
  • THEN фон панели становится этим цветом, текст подстраивается

Requirement: Выбор хранится на устройстве

Выбранный фон SHALL сохраняться средствами того браузера или web view, где он выбран, и SHALL применяться при каждом открытии и автоматической перезагрузке страницы без мелькания темы по умолчанию. Выбор на одном устройстве SHALL NOT влиять на другие. Если клиент не сохраняет данные страницы между своими перезапусками (возможно, web view Toolbelt), после перезапуска клиента показывается тема по умолчанию; на сервере выбор не хранится.

Scenario: Клиент без постоянного хранилища

  • WHEN выбор фона сделан в Toolbelt, а web view Toolbelt не сохраняет данные между перезапусками iTerm2, и iTerm2 перезапущен
  • THEN панель в Toolbelt показывает тему по умолчанию

Scenario: Перезагрузка страницы

  • WHEN пользователь выбрал фон в Safari на iPad и страница перезагрузилась (сама раз в минуту или вручную)
  • THEN сразу отображается выбранный фон

Scenario: Разные устройства

  • WHEN в Safari на iPad выбран светлый фон
  • THEN панель в Toolbelt на Mac сохраняет свой фон

Requirement: Сброс к теме по умолчанию

«Сброс» SHALL удалять сохранённый выбор и возвращать тему, которую отдаёт сервер. Тема по умолчанию SHALL выглядеть как нынешний профиль iTerm2 пользователя (Chat: фон #002b36, текст #aacace).

Scenario: Сброс

  • WHEN пользователь нажимает «сброс»
  • THEN панель показывает тему по умолчанию, и после перезагрузки она остаётся по умолчанию