diff --git a/README.md b/README.md index 6371b52..403de44 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,31 @@ a city is a data contribution anyone can review, not a fork. San Francisco ships today. Los Angeles / Orange County / Riverside is next; New York after that. +A **plan view** sits top right: the board drawn flat, with the footprint of the +camera's own frustum on it, so you can see where you are looking from outside +the shot. Click or drag it to move the camera; scroll it to dolly. It is a 2D +canvas rather than a second WebGL context, drawn from the same city pack, and it +follows the sun into the night along with everything else. + +## Who sees what + +Three tiers, resolved once at boot by `src/access.ts`: + +| | anonymous | signed in | admin | +|---|---|---|---| +| the map, the plan view, the named chapters | ✅ | ✅ | ✅ | +| the office | public depth — shell, furniture, viewpoints, nobody home | full depth, with presence | full depth | +| live markers and live traffic | — | ✅ | ✅ | +| the time scrubber and debug readouts | — | — | ✅ | + +**These are drawing decisions, not a security boundary**, and `src/access.ts` +says so at length. Live data and office presence are withheld by the *API*, from +a caller it does not recognise; the client tier stops the app asking for +something it will not get. Admin is granted only by `TERA_ADMIN_SUBJECTS` on the +server — never inferred in the browser, and never from an API that failed to +answer. A deployment with no API at all is open, because "clone it and it works" +is the promise; it is not "clone it and you are an administrator". + ## Quick start ```bash @@ -76,7 +101,7 @@ answer is an RTL-SDR receiver: first-party data with nothing to comply with. ## Layout ``` -src/engine/ renderer — terrain, blocks, structures, markers, flights, scene +src/engine/ renderer — terrain, blocks, structures, markers, flights, scene, minimap src/cities/ data packs — pure geography, no code src/adapters/ where outside data plugs in ``` diff --git a/deploy/STATIC.md b/deploy/STATIC.md index b79e41a..a2e8396 100644 --- a/deploy/STATIC.md +++ b/deploy/STATIC.md @@ -1,9 +1,18 @@ # Hosting the static build -Tera's map view is a static bundle. It makes **no network calls at all** — the -sun is computed locally by `src/engine/solar.ts`, the traffic is simulated, and -the office is a data file — so it needs a file server and nothing else. No API, -no keys, no account. +Tera's map view is a static bundle that needs a file server and nothing else. +No API, no keys, no account: the sun and moon are computed locally by +`src/engine/solar.ts`, the traffic is simulated, the minimap is drawn from the +city pack, and the office is a data file. + +It does make **two** requests at boot, and both are meant to fail on a plain +static host: `GET /api/v1/health` and `GET /api/v1/session`, which is how +`src/access.ts` works out whether this deployment has accounts at all. Nothing +answering means nothing to sign in to, so the visitor gets the full public +experience and no sign-in link — see that file's header for why an *unreachable* +API and an API that answered `5xx` are deliberately not the same case. Your +server log will show two 404s per load; that is the zero-config path working, +not a misconfiguration. ```bash npm ci diff --git a/index.html b/index.html index 848e554..1fbb392 100644 --- a/index.html +++ b/index.html @@ -3,75 +3,629 @@
+ + +Tera · Lumbridge Simulate
- -drag to orbit · scroll to zoom
+ + + +Tera
+Lumbridge Simulate · cities from above
+ +Starting up
+Runs with no server, no key and no account. The markers are + fabricated — no real company data ships in this build.
+