WarpEngine Client: the whole catalog, and a build that can point elsewhere
**The app is called WarpEngine Client.** "Store" named the thing it opens rather than the
thing you run, and the store is a catalog on a site, not a window on your machine. The
window title, the bundle, the packages and the menu entry follow; the repository already
did. The store being driven is named in the side menu, so the bar stopped repeating it as
a badge — the element stays in the page, hidden, because the window check reads it.
**Every title is listed, including the ones this machine cannot install.** They arrive
from the engine with `installable: false` and a reason, and they are drawn dimmed, with an
*unsupported platform* or *no build for this machine* badge, the engine's own sentence
underneath, and nothing to press: a disabled Install would invite a click that can never
work. They get a category of their own — *Not for this machine* — and they are kept out of
the native/hosted categories and counts, because a title with no build has no mode to be
counted under. An engine older than desktop 1.2.0 is unaffected: a missing `installable`
field reads as installable, which is what those engines mean.
**A build can be pointed at another site's registry:**
make dist STORES_API=https://games.example.org/api/stores
BuildConfiguration reads the packaged package.json, where electron-builder's
extraMetadata writes that address, so a client for somebody else's catalog needs no source
change and nothing set on the user's machine. Precedence is runtime environment, then
build, then ours — three audiences, most specific first.
Also: the scrollbars are the window's own, because the platform's light track down the
side menu of a dark window looked like a mistake.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -62,6 +62,7 @@ src/
|
||||
mappers/ engine JSON → domain
|
||||
http/ HttpTextClient, HttpStatusError
|
||||
json/ JsonRecord: reading data that came from elsewhere
|
||||
config/ BuildConfiguration: what was decided when this was packaged
|
||||
electron/ ApplicationEnvironment and GameLauncher adapters
|
||||
main/
|
||||
main.ts the entry point: one line of work
|
||||
@@ -184,6 +185,14 @@ never calls the bridge.
|
||||
type, so a typo is a compile error and adding an entry is the whole change. This is
|
||||
the extension point for a second engine.
|
||||
|
||||
### Build-time configuration
|
||||
|
||||
`infrastructure/config/BuildConfiguration.ts` reads the packaged `package.json`, which is
|
||||
where a build records the registry it was made for (`warpEngine.registryUrl`, set by
|
||||
`make dist STORES_API=…`). Precedence is runtime environment, then build, then the
|
||||
built-in default — most specific first, and each one is a different audience: someone
|
||||
trying it out, someone shipping a client for another site, us.
|
||||
|
||||
### Untrusted-data readers
|
||||
|
||||
Anything parsed from outside — engine stdout, the registry — goes through
|
||||
|
||||
Reference in New Issue
Block a user