Files
galaxy-game/ui/docs
Ilia Denisov 1b2c13ecd6
Tests · UI / test (push) Has been cancelled
Tests · UI / test (pull_request) Successful in 2m44s
fix(ui): F8-09 owner-feedback — fixed TOC trigger + heading offset (#52)
Owner-reported regressions in Firefox + Safari on desktop after the
initial F8-09 patch landed:

1. The TOC trigger rode up with the page during scroll instead of
   staying pinned to the viewport (mobile worked, desktop did not).
2. Clicking a popover item scrolled the matching section so its
   heading went up under the chrome — only the table body was visible.

Root cause for (1): the in-game shell declares `overflow-y: auto`
on `.active-view-host` so mobile (where `.game-shell` is fixed at
`inset: 0`) has an internal scroll region. On desktop the host
grows with content, no overflow ever engages, and the document
body becomes the actual scroll container. Per CSS spec the host
remains the "scrollport" for any `position: sticky` descendant, so
the trigger inside the report column never sees the scroll event
and rides up with the body content.

Fix:

- Swap the trigger from `position: sticky` to `position: fixed`.
  The component is mounted only while the report active view is on
  screen, so the fixed element is naturally tied to the view's
  lifetime. Anchor at `top: 4rem` (below the in-game header), and
  on `min-width: 1024px` shift `right` by 18 rem to clear the
  always-on sidebar; below 1024 px the sidebar is an overlay so
  the default `right: 1.25rem` matches the report's right padding.
- Add `padding-top: 4.5rem` to `.report-view` (4rem mobile) so the
  first section heading does not land under the trigger at scroll
  position 0.
- Add `scroll-margin-top: 7.5rem` to every `<section
  id="report-…">` so `scrollIntoView({ block: "start" })` lands
  the heading below the trigger after a popover-driven jump.
- Sync `ui/docs/report-view.md` §"Table of contents and active
  highlight" with the new positioning rationale.

Tests: `pnpm check`, `pnpm test` (821), `pnpm test:e2e
report-sections` (4 projects) all green.

Refs: #52 (#43 umbrella).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 19:45:44 +02:00
..
2026-05-07 07:18:55 +02:00

UI client — topic docs

Deeper, topic-based documentation for the Galaxy web/cross-platform UI client, beyond what fits in ../README.md. Each file describes how one area works (current state); the staged build history lives in ../PLAN.md, the active web finalization in ../PLAN-finalize.md, and deferred work in ../ROADMAP.md.

Foundation & platform

  • design-system.md — the design tokens (colour / spacing / typography), the light/dark theming mechanism, and the component migration conventions.
  • a11y.md — the WCAG 2.2 AA approach: axe + keyboard test gates, the shared a11y primitives, coverage by area, and the map-canvas alternative.
  • error-state-ux.md — the central error surface (taxonomy → translated/actionable messages), the shared ViewState placeholder, the selected-planet ring, and bottom-sheet dismissal.
  • navigation.md — routes, the sidebar tabs, and the state-preservation rules across view/tab switches.
  • storage.md — the KeyStore and Cache abstractions and their web (IndexedDB) implementations.
  • game-state.md — decoding the FlatBuffers report into GameReport and the GameState / rendered-report stores.
  • sync-protocol.md — order-draft sync, turn cutoff, conflict handling, and auto-pause.
  • events.md — the signed push channel and event handling.
  • calc-bridge.md — the pkg/calc → WASM → TypeScript bridge, with the live function surface and parity rules.
  • wasm-toolchain.md — building ui/core to core.wasm with TinyGo.
  • pwa-strategy.md — the installable/offline PWA: the native service worker, manifest, icons, and the Playwright PWA gate.
  • testing.md — the UI test layers (Vitest + Playwright).

Auth & lobby

  • auth-flow.md — device keypair, email-code login, and request signing on the client.
  • lobby.md — the lobby/game-list UI and membership flows.

Map & active views

Tools & inspectors

Combat & comms

Localisation

  • i18n.md — the localisation mechanism and translation bundles.