d71e844703
`shots.mjs` renders the product imagery for lumbridgecorp.com/simulate: seven frames of the running `dist/`, at chapters and times chosen rather than defaulted, written as WebP into the sibling site checkout together with a generated manifest that carries each picture's caption and alt text. The pages there had described a renderer in prose for their whole life without ever showing one, which is a strange way to sell a renderer. The captions live next to the camera poses in this repo, not on the site, so re-aiming a camera cannot leave a caption behind describing the old view. The manifest emits a `ShotId` union, so a page asking for a picture that has been renamed fails the site's typecheck instead of rendering a hole. Along the way: the share cards were never reproducible. `scenekit.ts` eases a chapter change over about two seconds of scene time, `stage.ts` clamps `dt` to 50 ms a frame, and SwiftShader here draws about three frames a second — so the flight takes twenty seconds of wall clock and `capture.mjs` waited four. Every run caught the camera at a different point over the bay, and none of them at the chapter the key press asked for. Both scripts now open the page with reduced motion, which is the app's own answer to "somebody clicked a name in a list": `flyTo` sets the pose outright. `og-tera.png` is regenerated and is Hayes Valley for the first time. The bytes still differ run to run, because aircraft are crossing and cloud shadow is drifting; the framing no longer does. `harness.mjs` is the static server, the SwiftShader flags, the two-hostnames- one-dist trick and the clock shim, extracted because there are two consumers now and two copies would have drifted apart while both claimed to photograph the same app. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
38 lines
1.6 KiB
Plaintext
38 lines
1.6 KiB
Plaintext
node_modules/
|
|
dist/
|
|
*.local
|
|
|
|
# Company logos are TRADEMARKS and are never committed — they are fetched at
|
|
# runtime and cached in the browser. An Apache-2.0 repo containing them would
|
|
# be relicensing marks it does not own. See ARCHITECTURE.md §3.1.
|
|
public/logos/
|
|
|
|
# ---- Self-hoster space ----
|
|
#
|
|
# Yours, not ours. Drop your own props, kits, office packs and notes here and
|
|
# nothing in this repo will look at them, complain about them or ship them.
|
|
#
|
|
# This is the other half of the no-binary-art gate. That check
|
|
# (scripts/check-no-binaries.mjs) enumerates with `git ls-files` and is strict
|
|
# only over src/**, so your own legally-clean .glb sitting in public/props/ is
|
|
# invisible to it and cannot fail your build — an earlier design walked the
|
|
# working tree and would have. Ignoring these paths is what makes that promise
|
|
# hold by default rather than by everybody remembering. See CONTRACT.md §7.
|
|
#
|
|
# Worth knowing before you write one: docs/ is in here too, so documentation
|
|
# committed to this repo lives at the root or beside the code it describes.
|
|
public/props/
|
|
public/kits/
|
|
public/offices/
|
|
docs/
|
|
|
|
# Intermediate art for the share cards. Regenerated by
|
|
# `scripts/brand-assets/capture.mjs`; the finished cards in `public/` are what
|
|
# ships, and these are 2.8 MB of screenshot nobody needs in history.
|
|
scripts/brand-assets/art-*.png
|
|
|
|
# Rendered shots. `scripts/brand-assets/shots.mjs` writes the web-sized copies
|
|
# straight into the site checkout and keeps the full-resolution frames here as a
|
|
# dated archive; neither is source, and the archive is several MB a run.
|
|
shots/
|