Context. surface customer · domain nyx · route /domains/nyx/catalogs · auth signed-in · source apps/oshun/web/src/app/domains/nyx/catalogs/page.tsx
Last walked. 2026-05-29 automated runtime walk (Playwright headless) — render, /v1 data (2xx), console/page-errors, expected content, screenshot verified; live screen-reader, touch, offline, and telemetry-delivery checks pending a manual AT pass. Evidence: WALKTHROUGH/results/runtime-sweep-2026-05-29.md
Purpose#
A browsable catalog of deep-sky objects (Messier, NGC, IC) — list/grid view with
filtering. Wired via apps/oshun/web/src/app/domains/nyx/catalogs/page.tsx
('use client') which mounts
<NyxCatalogBrowser onBack={() => router.back()} />.
Entry points#
- Direct URL / bookmark — yes (signed-in)
- In-app navigation — verify whether Nyx domain hub or telescope GoTo flow surfaces a "Browse catalog" link
- Browser back affordance — in-component back button calls
router.back()
Layout regions#
NyxCatalogBrowser
(apps/oshun/web/src/components/domains/nyx/NyxCatalogBrowser.tsx):
- Header: back button (
aria-label="Back"),Telescopeicon,<h1>Deep-Sky Catalog</h1> - Filter / search controls: filter chips, view-mode toggle (list ↔ grid;
aria-label="Switch to grid view"/"Switch to list view") - Object list/grid: rows or tiles per catalog object
- Detail panel — opens when an object is selected (verify whether modal, inline expansion, or right-side drawer)
States#
- Loading — bundled dataset; no async load
- Populated (list view, default) — default catalog selection visible
- Populated (grid view) — toggled via the view-mode button
- Filtered — chip filter narrows visible objects
- Empty (filtered out) — no objects match filter; verify empty-state copy
- Object selected — detail panel populated with object metadata
- Offline — static bundle; renders offline
Interactions#
Header#
- "Back" button (icon button,
ArrowLeft)- Function:
onBack→router.back() - Screen reader: "Back"
- Function:
View / filter controls#
- Filter chips / categories — verify each category label and click behaviour
- View-mode toggle (icon button)
- Function: flips list ↔ grid layout
- Screen reader:
aria-labelswaps between "Switch to grid view" / "Switch to list view"
Object list / grid#
- Object item (button) — tap selects the object and opens detail
- Hovered / selected state — verify visual differentiation
Detail panel#
- Metadata fields — verify which fields appear (RA / Dec, magnitude, size, constellation, type)
- Close affordance — if drawer/modal, verify close behaviour
Data & contracts#
- Reads: bundled catalog data inside the component (~1000 lines source); verify the exact catalog symbol
- Writes: none
- Realtime: none
- Caching: static client bundle
- Auth/role check: middleware enforces signed-in for
/domains/*
Cross-references#
- Domain hub:
nyx.md - Sibling tools:
domains-nyx-telescope.md,domains-nyx-star-chart.md - Component source:
apps/oshun/web/src/components/domains/nyx/NyxCatalogBrowser.tsx
Open questions / known gaps#
- Enumerate the exact catalog dataset (Messier / NGC / IC) and counts
- Confirm whether selected objects link out to the telescope GoTo flow or the star chart
- Document detail panel keyboard behaviour and Esc-to-close