1
0
This repository has been archived on 2026-08-25. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
tera/.gitignore
T
karti d71e844703 The engine gets photographed, and the camera stops moving while the shutter is open
`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>
2026-08-06 15:03:50 -07:00

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/