**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>
72 lines
1.9 KiB
JSON
72 lines
1.9 KiB
JSON
{
|
|
"name": "warp-engine-client",
|
|
"productName": "WarpEngine Client",
|
|
"version": "1.5.0",
|
|
"description": "Graphical client for WarpEngine stores: install a catalog into your own application menu.",
|
|
"license": "MIT",
|
|
"author": "Teletype Games <games@teletype.hu>",
|
|
"homepage": "https://git.teletypegames.org/stores/warp-engine-client",
|
|
"main": "build/main/main.js",
|
|
"engines": {
|
|
"node": ">=22"
|
|
},
|
|
"scripts": {
|
|
"build": "tsc -p tsconfig.build.json && node scripts/build-assets.mjs",
|
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
"lint": "eslint .",
|
|
"lint:fix": "eslint . --fix",
|
|
"start": "npm run build && electron .",
|
|
"smoke": "npm run build && node build/scripts/SmokeTest.js",
|
|
"uitest": "npm run build && electron . --selftest",
|
|
"dist": "npm run build && electron-builder",
|
|
"dist:mac": "npm run build && electron-builder --mac",
|
|
"dist:win": "npm run build && electron-builder --win",
|
|
"dist:linux": "npm run build && electron-builder --linux"
|
|
},
|
|
"devDependencies": {
|
|
"@types/node": "^26.2.0",
|
|
"electron": "^43.4.0",
|
|
"electron-builder": "^26.15.3",
|
|
"esbuild": "^0.28.2",
|
|
"eslint": "^10.8.1",
|
|
"typescript": "^6.0.3",
|
|
"typescript-eslint": "^8.67.0"
|
|
},
|
|
"build": {
|
|
"appId": "org.teletypegames.warpstore.gui",
|
|
"productName": "WarpEngine Client",
|
|
"files": [
|
|
"build/**/*",
|
|
"package.json"
|
|
],
|
|
"mac": {
|
|
"category": "public.app-category.games",
|
|
"target": [
|
|
"dmg",
|
|
"zip"
|
|
]
|
|
},
|
|
"win": {
|
|
"target": [
|
|
"nsis",
|
|
"portable"
|
|
]
|
|
},
|
|
"linux": {
|
|
"category": "Game",
|
|
"target": [
|
|
"AppImage",
|
|
"deb"
|
|
]
|
|
},
|
|
"afterPack": "scripts/after-pack.js"
|
|
},
|
|
"allowScripts": {
|
|
"electron@43.4.0": true,
|
|
"esbuild@0.28.2": true
|
|
},
|
|
"warpEngine": {
|
|
"registryUrl": "https://teletypegames.org/api/stores"
|
|
}
|
|
}
|