A version header on every WarpEngine response, and a movable pipeline link
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
Every WarpEngine API response now carries `WarpEngine-Version`, so a client can branch on the engine's age without a round trip to ask. Set in a before_action rather than after: `rescue_from` never reaches an after_action, and a client needs the version most when something came back wrong. The name lives in `WarpEngine::VERSION_HEADER`. The host's own endpoints — the store registry — do not carry it, because they are not the engine. A software has one pipeline, and the newest assignment now wins. Two pipelines pointing at the same software was not an error the database caught; it was a link that silently did nothing, with the software still showing whichever row came first. Assigning a software another pipeline holds therefore moves it, the admin says which pipeline it was taken from, and `Pipeline#software_taken_from` carries that for anything else that cares. Deliberately a callback and not a unique index: rows here are soft-deleted, and a unique index counts deleted rows, so a pipeline removed last year would block its software from ever being linked again. The engine is 0.4.0. The site's /stores page and its screenshot follow the client's new name, and the shot is a fresh one showing the greyed-out titles the client now lists. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
PATH
|
||||
remote: ../libs/ruby/warp_engine
|
||||
specs:
|
||||
warp_engine (0.3.0)
|
||||
warp_engine (0.4.0)
|
||||
apipie-rails
|
||||
blueprinter
|
||||
rails (>= 8.0)
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 684 KiB After Width: | Height: | Size: 365 KiB |
@@ -199,13 +199,13 @@ export default {
|
||||
subtitle: 'Which engines build for which platforms.',
|
||||
},
|
||||
stores: {
|
||||
title: 'WarpEngine Store',
|
||||
title: 'WarpEngine Client',
|
||||
subtitle: 'Our games on your own machine, kept up to date — as an app, a command line, or your console\'s own library.',
|
||||
lead: 'Our whole catalog on your own machine, kept up to date. The quickest way in is the app: install it, and games land in your application menu like anything else you have installed. If a window is the wrong shape — a server, a script, or a console with its own library — there is a command line for desktops, and integrations that put our games into Batocera\'s and RetroArch\'s own libraries. All of it downloads straight from this site with box art, and all of it uses nothing but the Python 3 standard library.',
|
||||
clientTitle: 'Get WarpEngine Store',
|
||||
clientTitle: 'Get WarpEngine Client',
|
||||
clientDesc: 'A small desktop application: the catalog as a grid of cards, one click to install a game into your own application menu, one to play it, one to remove it. Nothing to set up first — it downloads the store itself on first run — and on Windows it is the way in, because `curl … | sh` does not exist there.',
|
||||
clientPlatforms: 'Linux, macOS and Windows',
|
||||
clientShotAlt: 'The WarpEngine Store window: the store picker and category filters on the left, and the catalog as a grid of game cards with install and play buttons.',
|
||||
clientShotAlt: 'The WarpEngine Client window: the store picker and category filters on the left, and the catalog as a grid of game cards with install and play buttons.',
|
||||
clientPointSetup: 'Sets the store up itself on first run — nothing to install beforehand.',
|
||||
clientPointBrowse: 'Filter by platform, by what is installed, or by what has an update.',
|
||||
clientPointSame: 'The same store underneath, so the command line keeps working on the same games.',
|
||||
|
||||
@@ -199,13 +199,13 @@ export default {
|
||||
subtitle: 'Melyik engine melyik platformra fordít.',
|
||||
},
|
||||
stores: {
|
||||
title: 'WarpEngine Store',
|
||||
title: 'WarpEngine Client',
|
||||
subtitle: 'A játékaink a saját gépeden, mindig frissen — alkalmazásként, parancssorból vagy a konzolod saját könyvtárában.',
|
||||
lead: 'A teljes katalógusunk a saját gépeden, mindig frissen. A legrövidebb út az alkalmazás: telepítsd, és a játékok ugyanúgy megjelennek az alkalmazásmenüdben, mint bármi más. Ahol az ablak a rossz forma — szerveren, szkriptből, vagy egy konzolon, aminek saját könyvtára van —, ott van parancssor asztali gépekre, és integráció, ami a Batocera, illetve a RetroArch saját könyvtárába teszi a játékainkat. Mindegyik közvetlenül erről az oldalról töltődik le, borítóképpel, és mindegyikhez elég a Python 3 alapkészlete.',
|
||||
clientTitle: 'Töltsd le a WarpEngine Store-t',
|
||||
clientTitle: 'Töltsd le a WarpEngine Clientet',
|
||||
clientDesc: 'Egy kis asztali alkalmazás: a katalógus kártyákban, egy kattintás a telepítés a saját alkalmazásmenüdbe, egy az indítás, egy az eltávolítás. Előre semmit nem kell beállítani — első indításkor magát a store-t is letölti —, Windowson pedig ez az út, mert ott a `curl … | sh` nem létezik.',
|
||||
clientPlatforms: 'Linux, macOS és Windows',
|
||||
clientShotAlt: 'A WarpEngine Store ablaka: balra a store-választó és a kategóriaszűrők, jobbra a katalógus játékkártyákban, telepítés és indítás gombokkal.',
|
||||
clientShotAlt: 'A WarpEngine Client ablaka: balra a store-választó és a kategóriaszűrők, jobbra a katalógus játékkártyákban, telepítés és indítás gombokkal.',
|
||||
clientPointSetup: 'Első indításkor magát a store-t is beállítja — előre semmit nem kell telepíteni.',
|
||||
clientPointBrowse: 'Szűrhetsz platformra, a telepítettekre vagy arra, amihez frissítés van.',
|
||||
clientPointSame: 'Alatta ugyanaz a store, tehát a parancssor ugyanazokon a játékokon dolgozik tovább.',
|
||||
|
||||
Reference in New Issue
Block a user