feat(ui): map canvas follows light/dark theme; fix invisible gear control #42

Merged
developer merged 1 commits from feature/issue-40-map-light-theme into development 2026-05-24 07:15:08 +00:00
Owner

Что и зачем

Закрывает #40 (вариант B).

Светлая тема карты

Canvas карты теперь следует выбранной теме приложения. map.svelte
выбирает палитру DARK_THEME / LIGHT_THEME из theme.resolved и
прокидывает её через все построители примитивов — фон, планеты, группы
кораблей, грузовые маршруты, маркеры боёв/бомбардировок, туман, круги
досягаемости, кольцо выбора, отправляемые маршруты и оверлей выбора цели
переключаются вместе с остальным интерфейсом. Переключение темы делает
ремоунт рендерера с сохранением камеры (Pixi запекает фон при init, а
цвета примитивов — при сборке, поэтому живой ре-тинт на том же экземпляре
невозможен).

Светлая палитра повторяет тёмную «роль в роль», но затемнена/насыщена для
контраста на светлом фоне; акценты на incoming-группах, боях и
бомбардировках намеренно оставлены яркими. Конкретные цвета — первый
проход, под доводку в рамках F8.

Починка шестерёнки (исходный баг)

Триггер попапа-шестерёнки и плашка «Загрузка…» жёстко задавали тёмный
фон rgba(20,24,42,0.85), из-за чего в светлой теме шестерёнка была
не видна (тёмная иконка на тёмном чипе), а на ховере появлялся белый чип.
Оба теперь используют токен --color-surface-overlay и читаются в обеих
темах.

Прочее

  • Убраны мёртвые упоминания «Phase 35» из кода (PLAN-файлы не тронуты —
    это исторические записи).
  • Снят запрет на перекраску карты в design-system.md / renderer.md;
    боевая сцена остаётся data-viz поверхностью с фиксированной палитрой.

Тесты

  • pnpm test — 79 файлов, 771 тест, все зелёные (включая новый
    tests/map-theme.test.ts и обновлённые color-тесты построителей).
  • pnpm check — 0 ошибок, 0 предупреждений (1550 файлов).
  • Playwright e2e карты не проверяют цвета/фон чипа (только id-битмаски и
    hit-test), визуальных снапшотов карты нет — поведение не затронуто; на
    CI прогонятся.

Палитра под доводку

Цвета светлой темы подобраны мной как разумный первый проход. В рамках
F8 можно открыть ui/frontend/src/map/world.ts (DARK_THEME и
LIGHT_THEME рядом) и подкрутить любые значения одним файлом.

Closes #40

## Что и зачем Закрывает #40 (вариант **B**). ### Светлая тема карты Canvas карты теперь следует выбранной теме приложения. `map.svelte` выбирает палитру `DARK_THEME` / `LIGHT_THEME` из `theme.resolved` и прокидывает её через все построители примитивов — фон, планеты, группы кораблей, грузовые маршруты, маркеры боёв/бомбардировок, туман, круги досягаемости, кольцо выбора, отправляемые маршруты и оверлей выбора цели переключаются вместе с остальным интерфейсом. Переключение темы делает ремоунт рендерера с сохранением камеры (Pixi запекает фон при init, а цвета примитивов — при сборке, поэтому живой ре-тинт на том же экземпляре невозможен). Светлая палитра повторяет тёмную «роль в роль», но затемнена/насыщена для контраста на светлом фоне; акценты на incoming-группах, боях и бомбардировках намеренно оставлены яркими. Конкретные цвета — первый проход, под доводку в рамках F8. ### Починка шестерёнки (исходный баг) Триггер попапа-шестерёнки и плашка «Загрузка…» жёстко задавали тёмный фон `rgba(20,24,42,0.85)`, из-за чего в светлой теме шестерёнка была не видна (тёмная иконка на тёмном чипе), а на ховере появлялся белый чип. Оба теперь используют токен `--color-surface-overlay` и читаются в обеих темах. ### Прочее - Убраны мёртвые упоминания «Phase 35» из кода (PLAN-файлы не тронуты — это исторические записи). - Снят запрет на перекраску карты в `design-system.md` / `renderer.md`; боевая сцена остаётся data-viz поверхностью с фиксированной палитрой. ## Тесты - `pnpm test` — 79 файлов, 771 тест, все зелёные (включая новый `tests/map-theme.test.ts` и обновлённые color-тесты построителей). - `pnpm check` — 0 ошибок, 0 предупреждений (1550 файлов). - Playwright e2e карты не проверяют цвета/фон чипа (только id-битмаски и hit-test), визуальных снапшотов карты нет — поведение не затронуто; на CI прогонятся. ## Палитра под доводку Цвета светлой темы подобраны мной как разумный первый проход. В рамках F8 можно открыть `ui/frontend/src/map/world.ts` (`DARK_THEME` и `LIGHT_THEME` рядом) и подкрутить любые значения одним файлом. Closes #40
developer added 1 commit 2026-05-24 06:50:04 +00:00
feat(ui): map canvas follows light/dark theme; fix invisible gear control
Tests · UI / test (push) Waiting to run
Tests · UI / test (pull_request) Successful in 2m45s
f6e4a4f6bd
The map view now selects a DARK_THEME or LIGHT_THEME palette from the
resolved app theme and threads it through every primitive builder, so
the canvas, planets, ship groups, cargo routes, battle/bombing markers,
fog, reach + selection rings, pending-Send tracks, and the pick overlay
all switch with the rest of the chrome. A theme flip remounts the
renderer preserving the camera — Pixi bakes the background at init and
every primitive bakes its colour at build, so a live re-tint is not
possible on the same instance.

This also fixes the reported bug: the gear-popover trigger and the
loading overlay hardcoded a dark navy background, so in light theme the
gear was invisible (dark icon on dark chip) until hover flipped it to a
white chip. Both now use the --color-surface-overlay token and read
correctly in both themes.

The light palette mirrors the dark one role-for-role, darkened /
saturated for contrast on a light background while keeping the incoming,
battle, and bombing accents vivid. The values are a first pass meant to
be refined during the F8 manual-QA loop.

Removes the now-dead "Phase 35" references from the code and lifts the
map-recoloring prohibition from the design-system / renderer docs; the
battle scene stays a fixed-palette data-viz surface.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
owner requested review from owner 2026-05-24 07:01:39 +00:00
owner approved these changes 2026-05-24 07:08:35 +00:00
owner left a comment
Collaborator

Ну классно же! Карта теперь выглядит в общей стилистике, а конкретные цвета потом добьём. Даже эти, которые ты подобрала, мне нравятся, не режут глаз. Спасибо!

Ну классно же! Карта теперь выглядит в общей стилистике, а конкретные цвета потом добьём. Даже эти, которые ты подобрала, мне нравятся, не режут глаз. Спасибо!
developer merged commit 6f2967024a into development 2026-05-24 07:15:08 +00:00
developer deleted branch feature/issue-40-map-light-theme 2026-05-24 07:15:08 +00:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: developer/galaxy-game#42