b4eb2fa1a8
`films.mjs` renders time-lapses of the running dist/: a locked camera watching eighteen hours pass, shadow sweeping the city and the windows coming on as the computed sun goes down. Two ship — the Financial District and the whole board. Real-time capture was never on the table and would have been the wrong idea anyway. SwiftShader draws about three frames a second with no GPU, so a screen recording is a slideshow; and a sunset takes an hour, which is not a length of video anybody watches. So it is rendered offline the way films always have been: set the clock, let the frame settle, expose, advance. The output is smooth 30fps regardless of what the renderer managed while being photographed. Two shims in `filmClock()` get that done without a reload per frame, which matters because a reload is fifteen seconds and would put a 180-frame film at three quarters of an hour. The skew is a live global read on every `Date` call rather than baked in at load; and `setInterval(…, 60_000)` is compressed to 120ms, which is the load-bearing half — `main.ts` recomputes the sun on a once-a-minute wall-clock tick, so a shifted clock otherwise sits unrendered. Only the 60-second interval is touched, by value. Both are capture-harness lies told to the page. The deployed bundle has no idea this file exists. Not wired into the site. This is the capability and two reels to look at. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
42 lines
1.7 KiB
Plaintext
42 lines
1.7 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/
|
|
|
|
# Rendered films. `scripts/brand-assets/films.mjs` writes MP4s and posters here,
|
|
# plus a scratch frame directory it cleans up after itself. Regenerated, not source.
|
|
films/
|