Files
ds-galo/openspec/specs/ui-branding/spec.md
T
iu b1b0b4a83e chore(openspec): archive completed changes and sync main specs
- archive rename-shared-album-to-galo, add-halo-branding
- sync specs: ui-branding (new capability)
2026-10-11 11:37:23 +03:00

62 lines
4.0 KiB
Markdown

# ui-branding Specification
## Purpose
Единая визуальная айдентика приложения: гало-эмблема и фавикон, отдаваемые самим приложением, наследующие тему и читаемые в мелком размере.
## Requirements
### Requirement: Гало-эмблема
Интерфейс SHALL отображать эмблему «гало» — диск солнца, окружённый отделённым от него кольцом — как встроенную векторную графику, наследующую цвет текущей темы.
#### Scenario: Отображение в шапке
- **WHEN** открыт основной интерфейс
- **THEN** в шапке рядом с надписью «Galo» показана гало-эмблема
#### Scenario: Смена темы
- **WHEN** пользователь переключает тему (light/dark/neutral)
- **THEN** цвет диска и кольца эмблемы меняется вместе с темой
#### Scenario: Мелкий размер
- **WHEN** эмблема отрисована в размере порядка 16-24 px
- **THEN** диск и отделённое кольцо остаются различимыми
### Requirement: Фавикон от приложения
Приложение SHALL отдавать фавикон бренда со своего origin, а разметка страницы SHALL ссылаться на существующий файл.
#### Scenario: Запрос фавикона
- **WHEN** браузер запрашивает фавикон
- **THEN** приложение отвечает изображением SVG с собственным `Content-Type`
#### Scenario: Запасной формат
- **WHEN** клиент не поддерживает SVG-фавикон
- **THEN** разметка предоставляет PNG-запасной вариант
### Requirement: Фавикон под тему
Фавикон SHALL учитывать предпочтение схемы оформления и в тёмной схеме SHALL использовать светлый вариант эмблемы на тёмном фоне.
#### Scenario: Тёмная схема
- **WHEN** система сообщает о предпочтении тёмной схемы
- **THEN** фавикон отображается в варианте для тёмной схемы
#### Scenario: Светлая схема
- **WHEN** система сообщает о предпочтении светлой схемы
- **THEN** фавикон отображается в варианте для светлой схемы
### Requirement: Доступность эмблемы
Эмблема SHALL быть декоративной рядом с текстовым вордмарком и SHALL иметь доступное имя, когда используется как самостоятельный смысловой элемент.
#### Scenario: Эмблема рядом с вордмарком
- **WHEN** эмблема сопровождает видимый текст «Galo»
- **THEN** она скрыта от вспомогательных технологий
#### Scenario: Самостоятельная эмблема
- **WHEN** эмблема является единственным содержимым управляющего элемента
- **THEN** элемент имеет доступное имя
### Requirement: Автономность ассетов бренда
Эмблема и фавикон SHALL загружаться с самого приложения и SHALL NOT требовать запросов к внешним источникам.
#### Scenario: Загрузка без внешней сети
- **WHEN** страница загружается без доступа к внешней сети, кроме своего сервера
- **THEN** эмблема и фавикон отображаются