A store record is a name and a catalog

Both extras go. `config` was added this morning on the idea that the registry should
say how each store behaves; that was wrong. The configuration is fixed per installed
client — the client carries its own store engine and knows its own machine — so a copy
here was a second authority over decisions the client had already made correctly,
including which directories it may delete from. Keeping two stores on one machine apart
is a subfolder, and the client derives that itself.

`store_repository_url` goes with it. The store engines it pointed at no longer exist, and
a URL nobody follows is a URL that goes stale.

The public stores page loses its desktop card for the same reason: it advertised a
`curl … | sh` for a repository that is gone, and an ordinary computer is served by the
app in the section above it. `/desktop` now lands on that app rather than on a device
tab, so the old URL still means what someone typing it wants.

Unrelated but in the way: the dead `engines` list in that page has been failing
`vue-tsc` on master, so the frontend could not be built to check any of this. Removed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-19 07:19:52 +02:00
co-authored by Claude Opus 5
parent 9255a11254
commit 021f2b9b07
14 changed files with 51 additions and 245 deletions
-5
View File
@@ -218,11 +218,6 @@ export default {
platformsTitle: 'What gets installed',
copy: 'Copy',
desktop: {
name: 'Desktop CLI',
site: 'Teletype Games',
tagline: 'For scripts and servers',
},
batocera: {
name: 'Batocera',
site: 'Batocera project',
-5
View File
@@ -218,11 +218,6 @@ export default {
platformsTitle: 'Mi kerül fel',
copy: 'Másolás',
desktop: {
name: 'Desktop CLI',
site: 'Teletype Games',
tagline: 'Szkriptekhez és szerverekhez',
},
batocera: {
name: 'Batocera',
site: 'Batocera projekt',
@@ -137,7 +137,6 @@ const route = useRoute()
const router = useRouter()
const FORGE = 'https://git.teletypegames.org/stores'
const ENGINES_FORGE = 'https://git.teletypegames.org/engines'
// The graphical client. Its own thing rather than a link on the desktop store: it
// drives any WarpEngine store the site's registry offers, and on Windows it is the
@@ -148,11 +147,13 @@ const CLIENT = {
wikiUrl: `${CONFIG.wikiBase}/stores/warp-engine-client`,
}
type DeviceId = 'desktop' | 'batocera' | 'retroarch'
type DeviceId = 'batocera' | 'retroarch'
// The devices below are the ones a store reaches through a shell installer. An
// ordinary computer is not among them any more: there the store *is* the app in the
// section above, which carries its own engine and needs nothing installed first.
const BATOCERA_CLI = '/userdata/system/batocera-store/ttg-store'
const RETROARCH_CLI = '~/.local/bin/ttg-retroarch-store'
const DESKTOP_CLI = '~/.local/bin/ttg-desktop-store'
const devices = [
{
@@ -172,22 +173,6 @@ const devices = [
`${BATOCERA_CLI} remove c64demo`,
].join('\n'),
},
{
id: 'desktop' as DeviceId,
icon: 'fa-solid fa-desktop',
projectUrl: 'https://teletypegames.org',
repoUrl: `${FORGE}/ttg-desktop-store`,
wikiUrl: `${CONFIG.wikiBase}/stores/ttg-desktop-store`,
installCmd: `curl -fsSL ${FORGE}/ttg-desktop-store/raw/branch/master/install.sh | sh`,
afterInstallCmd: '',
uninstallCmd: `curl -fsSL ${FORGE}/ttg-desktop-store/raw/branch/master/uninstall.sh | sh`,
cliSnippet: [
`${DESKTOP_CLI} paths # where things go on this machine`,
`${DESKTOP_CLI} list # what is installable here, and how`,
`${DESKTOP_CLI} sync # install everything new`,
`${DESKTOP_CLI} remove pong`,
].join('\n'),
},
{
id: 'retroarch' as DeviceId,
icon: 'fa-solid fa-gamepad',
@@ -213,7 +198,7 @@ type ViewId = 'client' | 'others'
// query-only change, so switching does not throw the page back to the top.
const initial = devices.some((d) => d.id === route.query.device)
? (route.query.device as DeviceId)
: 'desktop'
: 'batocera'
const device = ref<DeviceId>(initial)
// The client view is what most visitors want, so it is the default — except when the URL
// names a device, which is how /batocera and /retroarch redirect here. Somebody arriving
@@ -242,12 +227,6 @@ const platforms = [
{ platform: 'c64', label: 'Commodore 64 (VICE)', ext: '.prg', icon: 'fa-solid fa-floppy-disk' },
{ platform: 'tic80', label: 'TIC-80', ext: '.tic', icon: 'fa-solid fa-tv' },
]
const engines = [
{ name: 'warpstore', url: `${ENGINES_FORGE}/warpstore` },
{ name: 'warp-engine-batocera-store', url: `${FORGE}/warp-engine-batocera-store` },
{ name: 'warp-engine-retroarch-store', url: `${FORGE}/warp-engine-retroarch-store` },
]
</script>
<style scoped>
+3 -1
View File
@@ -7,5 +7,7 @@ export const storesRouter: RouteRecordRaw[] = [
// makes after reading "RetroArch store" — and each lands on its own tab.
{ path: '/batocera', redirect: { name: 'storesIndex', query: { device: 'batocera' } } },
{ path: '/retroarch', redirect: { name: 'storesIndex', query: { device: 'retroarch' } } },
{ path: '/desktop', redirect: { name: 'storesIndex', query: { device: 'desktop' } } },
// `/desktop` used to name a shell store for ordinary computers. That store is the
// app now, so the old URL lands on the app rather than on a device tab.
{ path: '/desktop', redirect: { name: 'storesIndex' } },
]