`config` — added this morning in 2.1.0 — is gone, and `storeRepositoryUrl` with it, along with the two store repositories they pointed at. 2.1.0 had the registry say how each store behaves. Wrong shape: how a store behaves is fixed per installed client, and this application is the only thing that can see the machine it runs on. A copy of that on a server was a second authority over decisions this side had already made correctly — including which directories the store may delete from — and two authorities are a way to disagree. Keeping two stores on one machine apart needs none of it. It is a subfolder, derived here: the store id is a slug of the catalog host, the home is `<id>-desktop`, the games folder is `<id>`, and that folder is the only subtree the store will ever delete from. Derived from the *catalog* on purpose — the catalog is what a store is, so two records naming the same one are the same store and land in the same place, which makes installing twice idempotent instead of a way to orphan what is already there. Existing installations keep their identity: a store home is recognised by its own `config.json`, so one installed as `ttg` stays `ttg` in `ttg-desktop` with its games where they are. Only a new install derives its id. `StoreProvisioningService` no longer re-reads the registry before installing. That existed to keep the renderer from supplying a config, and with no config in the record there is nothing left to protect: a name and a catalog have no paths in them. 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": "2.2.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"
|
|
}
|
|
}
|