Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/coverage-ratchet.json
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@
"site/packaged-object-runtime.mts",
"site/model/planetary-system-members.mts",
"site/prepare-body-moons.mts",
"site/prepared-arrival.mts",
"site/navigation/prepared-arrival.mts",
"site/navigation/prepared-descriptor.mts",
"site/prepared/prepared-object-path.mts",
"site/content/prepared-panel-content.mts",
Expand Down Expand Up @@ -410,7 +410,7 @@
"branches": 87.5,
"functions": 91.6
},
"site/prepared-arrival.mts": {
"site/navigation/prepared-arrival.mts": {
"lines": 100,
"branches": 100,
"functions": 100
Expand Down
2 changes: 1 addition & 1 deletion .github/scripts/checks/object-test-relocation.test.mts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { discoverObjectTests } from '@cssearth/bake/run-implemented-objects/sour
const root = projectRoot(import.meta.url);
test('per-object discovery keeps shared suites and every body-owned suite collected in root lanes', async () => {
const files = await discoverObjectTests('earth', { projectRoot: root });
assert.ok(files.includes(resolve(root, 'site/test/runtime-package.test.mts')));
assert.ok(files.includes(resolve(root, 'site/world/runtime-package.test.mts')));
assert.ok(files.includes(resolve(root, 'packages/bake/src/raster/raster-pages.test.mts')));
const lanes = testLaneFiles(root, JSON.parse(readFileSync(resolve(root, 'package.json'), 'utf8')) as unknown, ['test:packages', 'test:site']);
for (const file of [...lanes.packages, ...lanes.site].filter(file => file.startsWith('src/objects/earth/')))
Expand Down
42 changes: 37 additions & 5 deletions .github/site-refactor.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,39 @@
{
"mode": "semantic",
"moves": {},
"outputs": [],
"layout": "changes",
"change": "S3-1 held address"
"mode": "pure-move",
"moves": {
"site/prepared-arrival.mts": "site/navigation/prepared-arrival.mts",
"site/test/body-moons.test.mts": "site/build/prepare/body-moons.test.mts",
"site/test/category-frames.test.mts": "site/build/prepare/category-frames.test.mts",
"site/test/compact-spectrum.test.mts": "site/overview/compact-spectrum.test.mts",
"site/test/moon-labels.test.mts": "site/world/moon-labels.test.mts",
"site/test/navigation-ontology.test.mts": "site/world/navigation-ontology.test.mts",
"site/test/navigation-preparation.test.mts": "site/world/navigation-preparation.test.mts",
"site/test/navigation-request.test.mts": "site/navigation/navigation-request.test.mts",
"site/test/navigation-router-context.mts": "site/scene/navigation-router-context.test-support.mts",
"site/test/navigation-test-values.mts": "site/navigation/navigation-test-values.test-support.mts",
"site/test/nebula-search.test.mts": "site/world/nebula-search.test.mts",
"site/test/object-navigation.test.mts": "site/world/object-navigation.test.mts",
"site/test/object-package-contract.test.mts": "site/build/object-package-contract.test.mts",
"site/test/prepared-arrival.test.mts": "site/navigation/prepared-arrival.test.mts",
"site/test/prepared-body-billboards.test.mts": "site/world/prepared-body-billboards.test.mts",
"site/test/prepared-icons.test.mts": "site/build/prepare/prepared-icons.test.mts",
"site/test/prepared-world-context.test.ts": "site/world/prepared-world-context.test.ts",
"site/test/runtime-package.test.mts": "site/world/runtime-package.test.mts",
"site/test/satellite-arrival-framing.test.mts": "site/navigation/satellite-arrival-framing.test.mts",
"site/test/scene-contract.test.mts": "site/world/scene-contract.test.mts",
"site/test/search-api.test.mts": "site/journeys/search-api.test.mts",
"site/test/search-response.test.mts": "site/server/search-response.test.mts",
"site/test/startup-cover.test.mts": "site/browser/startup-cover.test.mts",
"site/test/system-text.test.mts": "site/build/prepare/system-text.test.mts",
"site/test/system-view-file.mts": "site/world/system-view-file.test-support.mts",
"site/test/world-stars.test.mts": "site/world/world-stars.test.mts",
"site/test/world-tables.test.mts": "site/world/world-tables.test.mts",
"site/prepared-arrival.characterization.test.mts": "site/navigation/prepared-arrival.characterization.test.mts",
"site/object-entry-types.test.mts": "site/directory/object-entry-types.test.mts",
"site/moon-catalogue.mts": "site/content/moon-catalogue.mts",
"site/moon-catalogue.test.mts": "site/content/moon-catalogue.test.mts",
"site/surrounded-body.mts": "site/world/surrounded-body.mts",
"site/surrounded-body.test.mts": "site/world/surrounded-body.test.mts"
},
"change": "S4-2 remaining moves"
}
4 changes: 2 additions & 2 deletions docs/moon-catalogues.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ sequential and cached in `output/moon-horizons/`. Review changes in totals,
identity and ephemeris coverage before accepting refreshed inputs. Do not reuse
cached replies for a different epoch or reference frame.

Focused checks: `node --test site/test/body-moons.test.mts
site/test/moon-labels.test.mts site/browser/source-link.test.mts`. They verify full
Focused checks: `node --test site/build/prepare/body-moons.test.mts
site/world/moon-labels.test.mts site/browser/source-link.test.mts`. They verify full
catalogue membership, available destinations, major/minor orbit policy, planet
occlusion, caption collision and overview hiding.
4 changes: 2 additions & 2 deletions docs/navigation-identity.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ the body as that object's centre and its radius. A star of the Large Magellanic
zooms out into the Cloud, M87* into M87, M87 into the Virgo Cluster. That scene is
then left the way any body's is ([overview-selection.mts](../site/overview-selection.mts),
[inside-view.mts](../site/inside-view.mts)). The way back in needs no click where the object's walls
surround a body: its entry names that body (`inner`, [surrounded-body.mts](../site/surrounded-body.mts)), and
surround a body: its entry names that body (`inner`, [surrounded-body.mts](../site/world/surrounded-body.mts)), and
a zoom in that reaches the nearest view the object's scene allows goes on into the body's scene, which draws
the walls around it. While that body is selected the object has no marker: the view is among its walls, and its
breadcrumb names it ([application-world-context.mts](../site/application-world-context.mts)). The Homunculus Nebula zooms in to Eta Carinae, NGC 2392 to HD 59088. A system can be inside another: a star
Expand Down Expand Up @@ -196,7 +196,7 @@ identities. See [object provenance](object-provenance.md) for their lineage.

## Checks

`site/test/navigation-ontology.test.mts` compares every prepared spatial subject
`site/world/navigation-ontology.test.mts` compares every prepared spatial subject
with the registry and search, checks every body distance against its prepared
frame, and resolves the actual galaxy references. The bibliography tests reject
conflicting keys and invalid locators. Contribution tests distinguish view
Expand Down
2 changes: 1 addition & 1 deletion docs/object-discovery.md
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ Gray placeholders receive the same display cue without invented surface detail.
Measured stellar limb darkening and thermal-map palettes keep their source
treatment. The Earth and Moon browser view
checks the Moon sprite in the existing world renderer.
`site/test/navigation-preparation.test.mts` checks every registered body marker
`site/world/navigation-preparation.test.mts` checks every registered body marker
and resolved context image for transparent corners and nonempty content.
The shared recipe tests separately check bright-center, darker-limb shading.
The catalogue audit
Expand Down
2 changes: 1 addition & 1 deletion docs/page-navigation-transport.md
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ After building the packages and renderer, check page metadata with:
node --test site/server/object-page-data.test.mts
pnpm test:packages # includes rendering/prepared-scene-serialization.test.ts
node --test site/journeys/rendered-page.test.mts
node --test site/test/search-response.test.mts
node --test site/server/search-response.test.mts
node --test site/server/dataset-response.test.mts site/model/dataset-url.test.mts
node --test site/scene/scene-session.test.mts
```
Expand Down
2 changes: 1 addition & 1 deletion docs/performance/startup-billboard.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ A default object page with a prepared arrival billboard sends that image instead

The shared responsive fit determines the initial silhouette. The camera retains the billboard's baked distance and rotation, adjusting projection scale to fit the viewport. The billboard and detailed scene therefore use the same perspective. Preparation requests the selected viewport texture level and uses the same visible-face demand as the mounted scene; existing low-resolution textures for unseen faces remain an independent resource optimization.

`site/prepared-arrival.mts` owns the resource lease, viewport texture policy, progressive mount options, camera acknowledgement, cancellation and cover release for startup and navigation. Startup supplies its prepared destination view; fly-to supplies its travelling camera and resumes its existing flight after acknowledgement. Both use the same scene-session activation and camera-acknowledged reveal path. The two modes differ only in camera progression: startup supplies a stationary destination; fly-to runs the existing travel clock.
`site/navigation/prepared-arrival.mts` owns the resource lease, viewport texture policy, progressive mount options, camera acknowledgement, cancellation and cover release for startup and navigation. Startup supplies its prepared destination view; fly-to supplies its travelling camera and resumes its existing flight after acknowledgement. Both use the same scene-session activation and camera-acknowledged reveal path. The two modes differ only in camera progression: startup supplies a stationary destination; fly-to runs the existing travel clock.

The input surface stays inert through prepared scene activation, whether or not the camera can use a billboard cover. Like a fly-to replacement, startup attaches the shared world before mounting detail. Behind the photograph, startup builds that world and the shell while the first view's images download. On every screen a body first draws its first texture level, then sharpens to the level its size on screen calls for. The world's first frame is planned while the detail activates and paints: as soon as the detail's navigation facts exist, the world selects the body and plans the startup camera the detail already holds (`world-frame-queue.ts` `warm`). The plan is used only by the first request for that identical view while the world's presentation is unchanged, so the detail's connection commits it without planning again and the arrival's camera acknowledgement rides the same frame; any other request, a changed camera or a changed presentation plans as before. A change nobody owns yet (the caption's measurement) follows the committed frame with one more plan, as a refresh during a plan does. Both arrivals reveal at the proven fly-to boundary: activation has finished mounting and painting, and the destination camera publication has been acknowledged. The travel owner positions the cover during flight; attachment holds that image still until reveal. The cover does not subscribe to stage-coordinate camera publications. There is no extra router publication or second reveal gate. Readiness has no fixed delay. An empty stage shows the cold-start ring. When the photograph shows, the ring leaves and the header's progress line runs, the same line a fly-to shows, because the photograph looks like a scene but does not answer input yet. The line stops when the detail presents or the mount fails. It animates only its own transform; reduced motion makes it static. There is no startup coast, fade or second zoom.

Expand Down
20 changes: 10 additions & 10 deletions docs/site-architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,30 +11,30 @@ A folder imports itself or strictly lower layers. Sibling folders, including L0
<!-- generated:folders -->
| Tier | Folder | Purpose | Incoming moves |
| ---: | --- | --- | --- |
| 0 | `browser/` | Browser input, DOM and serialized import queue | 2; `import-queue.mts` |
| 0 | `browser/` | Browser input, DOM and serialized import queue | 1; `import-queue.mts` |
| 0 | `model/` | Object identities, routes and held addresses | 0 |
| 0 | `overview/` | Prepared spectral overview readers | 1 |
| 0 | `overview/` | Prepared spectral overview readers | 0 |
| 0 | `prepared/` | Prepared transports and generated inputs | 23; `prepared-catalogue.d.mts`, `prepared-navigation-markers.d.mts`, `prepared-shell-icons.d.mts`, `prepared-shell-titles.d.mts` |
| 0 | `source/` | Preserved input records and artwork | 0 |
| 0 | `vendor/` | Preserved third-party notices | 0 |
| 0 | `server-assets/` | Server and build prepared-asset origin | 0 |
| 0 | `contracts/` | Shared page and shell interfaces | 0 |
| 1 | `directory/` | Startup reads and object catalogue directory | 9; `startup-world.mts`, `object-directory.mts`, `objects.mts`, `world-context-plan.mts` |
| 1 | `directory/` | Startup reads and object catalogue directory | 8; `startup-world.mts`, `object-directory.mts`, `objects.mts`, `world-context-plan.mts` |
| 1 | `minimap/` | Surface-map measurements and view formatting | 0 |
| 2 | `world/` | Shared framing, visibility and camera context | 52; `world-objects.mts`, `world-system-views.mts`, `stellar-extents.mts`, `hosted-banks.mts` |
| 3 | `content/` | Card content, citations and metadata | 13; `exploration-catalog.mts`, `source-documentation.mts`, `seo.mts`, `seo-trail.mts` |
| 3 | `navigation/` | History, requests, flights and arrivals | 10; `prepared-arrival.mts`, `prepared-world-navigation.mts` |
| 2 | `world/` | Shared framing, visibility and camera context | 40; `world-objects.mts`, `world-system-views.mts`, `stellar-extents.mts`, `hosted-banks.mts` |
| 3 | `content/` | Card content, citations and metadata | 11; `exploration-catalog.mts`, `source-documentation.mts`, `seo.mts`, `seo-trail.mts` |
| 3 | `navigation/` | History, requests, flights and arrivals | 4; `prepared-world-navigation.mts` |
| 4 | `search/` | Catalogue search and result presentation | 0 |
| 4 | `selection/` | Committed selection and camera handovers | 8; `scene/scene-selection.mts`, `satellite-selection.mts`, `overview-selection.mts`, `showcase.mts` |
| 5 | `shell/` | Retained shell controls and panels | 14; `object-browser.mts`, `feature-browser.mts`, `destination-browser.mts`, `selection-presentation.mts` |
| 6 | `server/` | SSR readers, responses and host middleware | 8; `object-entry.mts`, `world-places.mts`, `dot-catalogue-data.mts`, `social-images.mts` |
| 6 | `scene/` | Scene sessions, replacement and publication | 8; `object-adapter.mts`, `packaged-object-runtime.mts`, `startup-billboard.mts` |
| 6 | `server/` | SSR readers, responses and host middleware | 7; `object-entry.mts`, `world-places.mts`, `dot-catalogue-data.mts`, `social-images.mts` |
| 6 | `scene/` | Scene sessions, replacement and publication | 7; `object-adapter.mts`, `packaged-object-runtime.mts`, `startup-billboard.mts` |
| 7 | `startup/` | Page boot helpers and router entry | 5; `shared-imports.mts`, `startup-boot.mts` |
| 7 | `build/` | Site preparation and packaging | 8; `prepare-body-moons.mts` |
| 7 | `build/` | Site preparation and packaging | 3; `prepare-body-moons.mts` |
| 8 | `layouts/` | Shared page frame and its styles | 2; `components/ObjectSwatchStyles.astro`, `object-shell.css` |
| 9 | `components/` | Reusable Astro markup and SSR composition | 0 |
| 10 | `pages/` | Routes and object-page entries | 0 |
| 11 | `journeys/` | Cross-cutting journeys and support | 1 |
| 11 | `journeys/` | Cross-cutting journeys and support | 0 |
| 11 | `test/` | Retired test folder; no final occupants | 0 |
<!-- /generated:folders -->

Expand Down
Loading
Loading