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:
@@ -14,6 +14,22 @@
|
||||
|
||||
* { box-sizing: border-box; }
|
||||
|
||||
/* The scrollbars are part of the theme too: the platform's own are light, and a white
|
||||
track down the side menu of a dark window looks like a mistake. */
|
||||
* {
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: #33414f transparent;
|
||||
}
|
||||
::-webkit-scrollbar { width: 10px; height: 10px; }
|
||||
::-webkit-scrollbar-track { background: transparent; }
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: #33414f;
|
||||
border: 3px solid transparent;
|
||||
border-radius: 999px;
|
||||
background-clip: content-box;
|
||||
}
|
||||
::-webkit-scrollbar-thumb:hover { background: #46586b; background-clip: content-box; }
|
||||
|
||||
/* An explicit `display` beats the browser's own [hidden] rule, and most of the
|
||||
regions here have one — the gate's store picker showed as an empty stub because
|
||||
of exactly that. This makes `hidden` mean hidden everywhere. */
|
||||
@@ -248,6 +264,12 @@ body.nav-closed .side { margin-left: calc(-1 * var(--side-width)); }
|
||||
flex-direction: column;
|
||||
}
|
||||
.card.is-installed { border-color: #2f5a49; }
|
||||
/* Listed, but not for this machine: dimmed rather than hidden, and it says why. */
|
||||
.card.is-unavailable { opacity: .55; }
|
||||
.card.is-unavailable:hover { opacity: .8; }
|
||||
.card.is-unavailable .art { filter: grayscale(1); }
|
||||
.badge-unavailable { color: var(--ink-dim); border-color: var(--line); border-style: dashed; }
|
||||
.actions-note { font-size: 12px; color: var(--ink-dim); margin-top: auto; }
|
||||
|
||||
.art {
|
||||
/* One height for every card, art or not, so the titles and the buttons line up
|
||||
|
||||
Reference in New Issue
Block a user