Close the desktop store item, and fix a check that had started lying
MORE_STORES item 2 is done: stores/warp-engine-desktop-store and stores/ttg-desktop-store. The write-up records what the implementation changed about the plan — chiefly that the `html` asset is not a downloadable archive but a hosted directory, so a browser title becomes a menu entry that opens its page rather than an offline install. Separately: `check-repos.sh` reported `infra/wiki-pages` as STALE while the repo was plainly there. Gitea caps a page at 50 items whatever `--limit` says, so `tea repo list --limit 1000` had been quietly returning the first 50 — invisible until today, when the estate reached 51 repos. The check now pages through, and fails loudly if the server returns nothing at all rather than declaring the whole workspace stale. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+4
-3
@@ -90,13 +90,14 @@ A mérce a saját folyamatunk, a wiki [PDLC](https://wiki.teletypegames.org/team
|
||||
|
||||
## `stores` — a katalógus a gazdaplatform könyvtárformátumában
|
||||
|
||||
**Van:** `warpstore` (a közös mag, az `engines` alatt) + két motor és a rájuk épülő két store-unk: `warp-engine-batocera-store` / `ttg-batocera-store` (EmulationStation, ROM-mappák, gamelist.xml) és `warp-engine-retroarch-store` / `ttg-retroarch-store` (RetroArch `.lpl` playlistek, borítóképek). 2026-08-18-ig a `tools` orgban voltak.
|
||||
**Van:** `warpstore` (a közös mag, az `engines` alatt) + három motor és a rájuk épülő három store-unk: `warp-engine-batocera-store` / `ttg-batocera-store` (EmulationStation, ROM-mappák, gamelist.xml), `warp-engine-retroarch-store` / `ttg-retroarch-store` (RetroArch `.lpl` playlistek, borítóképek) és `warp-engine-desktop-store` / `ttg-desktop-store` (az OS saját alkalmazás-menüje: `.desktop`, `.app`, Start menü). 2026-08-18-ig a `tools` orgban voltak.
|
||||
|
||||
**Erősség:** a Batocera store a mintapélda arra, hogyan válik egy belső eszközből általánosan használható termék — bárki felhúzhat saját store-t a saját katalógusára. A második motor ezt igazolta: a közös rész kiemelése után egy új gazdaplatform egy adapter plusz egy konfiguráció, nem új program.
|
||||
|
||||
**Hiányzik:**
|
||||
- **Nincs asztali launcher.** A két store emulátorra telepít, tehát a katalógus cartridge-felét viszi. A natív buildeket Batocerán Ports-ként fel tudjuk tenni, hétköznapi PC-re viszont semmilyen utunk nincs — ez a `MORE_STORES.md` 2. pontja.
|
||||
- **A webes buildeket egyik store sem fogyasztja**, pedig az a legelterjedtebb assetünk.
|
||||
- **A `html` csak online megy.** Az asztali store menü-bejegyzést ad hozzá, de az a kiszolgált oldalt nyitja meg, mert a `html` asset nem letölthető archívum. Offline webes játékhoz a `warp_engine`-nek zip-ben is publikálnia kellene.
|
||||
- **Windowson és Linuxon senki nem próbálta még** az asztali store-t valódi gépen.
|
||||
- **A demók nélkül az asztali store négy címet vinne**, ezért ott be vannak kapcsolva; a cartridge-store-okon ez a döntés semmit nem változtat (nincs `demo` státuszú cartridge).
|
||||
|
||||
---
|
||||
|
||||
|
||||
+197
@@ -2,6 +2,13 @@
|
||||
|
||||
Készült 2026-08-16-án, a `warp-engine-batocera-store` szétválasztása után. A kérdés: a batocera-store mintájára milyen más gazdaplatformra tudnánk store-t adni.
|
||||
|
||||
> **2026-08-18: újramérés a doksi végén.** Két store és a kiemelt közös mag után
|
||||
> a kérdés újra feltéve — új jelöltekkel (Pegasus, Lutris), egy korrekcióval
|
||||
> (az ES-DE nem drop-in, a Steam alá van becsülve), és egy méréssel, ami az
|
||||
> egész listát átrendezi: a katalógus 8/15-e `demo` vagy `development`, tehát a
|
||||
> store-ok ma 7 címet látnak. Az alábbi lefedettségi számok a demókat is
|
||||
> beszámolják.
|
||||
|
||||
## A mérés, ami átrendezi a kérdést
|
||||
|
||||
A katalógus legfrissebb kiadásaiban (15 szoftver) ennyi asset van (2026-08-17-i mérés):
|
||||
@@ -79,6 +86,8 @@ Ugyanez a keret adja az interaktív ES-menüt is (ports bejegyzések gamelist-me
|
||||
## Új store-ok, sorrendben
|
||||
|
||||
### 1. ES-családú store-ok
|
||||
*(A 2026-08-18-i szakasz ezt pontosítja: az ES-DE nem drop-in — máshonnan olvassa a gamelisteket, mint ahová a Batocera-adapter ír.)*
|
||||
|
||||
RetroPie, Recalbox, ES-DE, és a kézikonzolos disztrók (muOS, ArkOS, JELOS). Ugyanaz a `gamelist.xml` + ROM-mappa modell, amire a motor **már generikus**: gyakorlatilag `paths.roms_root`, rendszernév-leképezés és egy másik telepítő kell. A legtöbb elérés a legkevesebb munkáért. Az ES-DE Windowson és macOS-en is fut, tehát asztali elérést is ad mellékesen.
|
||||
|
||||
Fontos megkötés: a **kézikonzolok jóformán mind ARM-osak**, és a RetroPie is Pi-n fut. Cartridge-dzsel ezek azonnal kiszolgálhatók, natív játékkal viszont csak a 0. pont ARM buildjei után.
|
||||
@@ -86,6 +95,14 @@ Fontos megkötés: a **kézikonzolok jóformán mind ARM-osak**, és a RetroPie
|
||||
### 2. Asztali store — `warp-engine-desktop-store`
|
||||
A per-OS zipeket telepíti egy helyi könyvtárba, és indítót csinál hozzá (`.desktop`, Start menü bejegyzés, `.app`). Ma 8 szoftvert szolgálna ki, és a CI-lefedettséggel nő. Ez a legnagyobb valóban új képesség: asztali gépre ma **semmilyen** utunk nincs.
|
||||
|
||||
**Kész (2026-08-18).** `stores/warp-engine-desktop-store` + `stores/ttg-desktop-store`.
|
||||
Két telepítési mód: `app` (a per-OS zip kicsomagolva, menü-bejegyzéssel) és `web`
|
||||
(a kiszolgált böngészős build oldalát megnyitó bejegyzés) — utóbbi azért, mert a
|
||||
`html` asset **nem letölthető archívum**, hanem egy kiszolgált könyvtár. A kettő
|
||||
visszaesési sorrendben van, ezért egy natív build nélküli cím is bekerül a menübe:
|
||||
gépenként **10 cím** (a demókkal). macOS-en végigmérve és a játékok valóban
|
||||
elindítva; Linux és Windows valódi gépen még nincs kipróbálva.
|
||||
|
||||
### 3. Steam-könyvtár
|
||||
A `shortcuts.vdf`-be írva a játékaink megjelennek a Steam könyvtárban borítóval — és ezzel a Steam Decken is. A letöltést a 2. pontról örökli, tehát ráépül, nem mellé megy. Bevált technika, a Heroic és a Lutris is ezt teszi.
|
||||
|
||||
@@ -106,6 +123,8 @@ A `bbs/bbs-server`-be, a saját `rubbs`-unkra épülve. Bármelyik asset-fajtát
|
||||
Homebrew tap és Scoop bucket: `brew install ttg/tap/rabbitroller`. Kevés munka, és nem kell hozzá launchert írni; a 2. pont csomagolására épül.
|
||||
|
||||
### 7. Webes könyvtár / PWA
|
||||
*(2026-08-18: **levéve** — a `html`-t az asztali store, a Pegasus és az ES-DE viszi el egy indítóval; lásd a doksi végét.)*
|
||||
|
||||
A `html` assetek megvannak, de ez van a legnagyobb átfedésben a mostani publikus oldallal, ezért a legkisebb határhasznú — annak ellenére, hogy ez a legelterjedtebb assetünk.
|
||||
|
||||
---
|
||||
@@ -137,3 +156,181 @@ Egy dolog viszont **nem** tartozik az adapterbe, hanem a közös részbe: az **a
|
||||
## Amit valódi gépen kell ellenőrizni
|
||||
|
||||
A 2. és 3. pont azon áll vagy bukik, hogy a per-OS zipjeink **önmagukban futtathatók-e**: van-e hiányzó függőség Linuxon, és mit szól hozzá a macOS aláírás-ellenőrzése egy nem jegyzett binárishoz. Erről a katalógus nem árulkodik, csak egy próba.
|
||||
|
||||
---
|
||||
|
||||
# Újramérés és új jelöltek — 2026-08-18
|
||||
|
||||
*Két store és a kiemelt közös mag után újra feltéve a kérdés. A formátum-állítások
|
||||
alább vagy a gépen mérve, vagy a hivatkozott dokumentációból ellenőrizve vannak; ahol
|
||||
nem sikerült ellenőrizni, az külön ki van írva.*
|
||||
|
||||
## A mérés, ami megint átrendezi a kérdést: a `status`
|
||||
|
||||
A doksi eddigi lefedettségi számai (13/15, 9/15) **a demókat is beszámolják**. A
|
||||
store-ok viszont alapból nem: mindkettő configjában `catalog.statuses:
|
||||
["released", "archived"]`. A mai katalógus 15 bejegyzése így oszlik:
|
||||
|
||||
| `status` | Darab | Store-ban látszik ma |
|
||||
|---|---|---|
|
||||
| `released` + `archived` | **7** | ✔ |
|
||||
| `demo` | 6 | ✘ |
|
||||
| `development` | 2 | ✘ |
|
||||
|
||||
Ugyanaz a lefedettség a kétféle szűréssel:
|
||||
|
||||
| Amit a gazdaplatform enni tud | Minden status | Csak `released`+`archived` |
|
||||
|---|---|---|
|
||||
| `cartridge` | 7 | **6** |
|
||||
| `html` | 11 | **4** |
|
||||
| bármilyen natív (win/linux/mac) | 9 | **4** |
|
||||
| `cartridge` + natív | 13 | 6 |
|
||||
| mindent, `html`-lel együtt | 15 | 7 |
|
||||
|
||||
**A tanulság:** a szűk keresztmetszet ma nem a store-ok száma és nem is az
|
||||
asset-fajta, hanem az, hogy a katalógus 8/15-e `demo` vagy `development`. Egy
|
||||
harmadik store nulla új *tartalmat* ad — csak új *gépeket*.
|
||||
|
||||
És hogy a `demo` státusz melyik store-t érinti, az nem érzésre kitalálható, ezért
|
||||
kimérve (`catalog.statuses` bővítése mit ad):
|
||||
|
||||
| Store-fajta | ma | `+ "demo"` | `+ "development"` |
|
||||
|---|---|---|---|
|
||||
| cartridge (Batocera ROM-út, RetroArch) | 6 | **6** (+0) | 7 (+`c64-demo`) |
|
||||
| asztali, natív | 4 | **9** (+5) | 9 (+0) |
|
||||
| asztali, natív **vagy** `html` | 4 | **10** (+6) | 11 (+`trickster-tiles`) |
|
||||
|
||||
**A meglévő két store-on tehát a demók engedélyezése semmit nem változtat**:
|
||||
egyetlen cartridge-címünk sem `demo`. A 7. cartridge-cím a `c64-demo`, ami
|
||||
`development` — vagyis befejezetlen, azt épp nem akarjuk kiadni.
|
||||
|
||||
A `demo` kérdés ezért nem a mai store-ok kapcsolója, hanem **az asztali store
|
||||
előfeltétele**: demók nélkül az asztali store 4 címmel indulna, velük 10-tel. Ez
|
||||
dönti el, hogy megéri-e megírni. A `REPO_REFACT.md` szerint a `demo` státusz épp
|
||||
azt jelenti, hogy „nem önálló termék" — tehát terméki döntés, nem technikai.
|
||||
|
||||
## Az `html` kérdése: nem webes könyvtár kell hozzá, hanem indító
|
||||
|
||||
A `html` a legelterjedtebb assetünk (11/15), és továbbra sincs fogyasztója. A 7.
|
||||
pont ezt „webes könyvtár / PWA"-ként vette fel, és ezért lett a legkisebb
|
||||
határhasznú. A mérések szerint viszont máshol van a válasz.
|
||||
|
||||
**Batocerán nincs.** Ellenőrizve: a BUA böngésző-bejegyzései Flatpak/AppImage
|
||||
alapúak, a Batocera Flatpak-támogatása pedig dokumentáltan x86_64-only — ARM-on,
|
||||
tehát Pi-n és a kézikonzolokon, nincs böngésző. A `html` a Batocera-store számára
|
||||
zsákutca; ezt a `ttg-batocera-store` README-jében is érdemes kimondani, hogy más
|
||||
ne próbálja.
|
||||
|
||||
**Asztali gépen viszont majdnem ingyen van**, mert ott van böngésző. Amelyik
|
||||
gazdaplatform **bármilyen parancsot** el tud indítani, az a `html`-t is tudja:
|
||||
|
||||
| Gazdaplatform | Mivel indítja a `html`-t | Ellenőrizve |
|
||||
|---|---|---|
|
||||
| Lutris | `web` runner (`lutris/runners/web.py` létezik) | ✔ a forrásfában |
|
||||
| Pegasus | per-game `launch`/`command` felülírás, tetszőleges parancs | ✔ a dokumentációban |
|
||||
| ES-DE | `~/ES-DE/custom_systems/es_systems.xml`, saját parancs | ✔ a USERGUIDE-ban |
|
||||
| asztali store (2. pont) | `.desktop` / `.lnk` / `.app`, ami `xdg-open`-t hív | — |
|
||||
|
||||
Vagyis a `html` a **2. pont asztali store-jába** tartozik egy második
|
||||
telepítési módként (ahogy Batocerán a `port` lett a `rom` mellé), nem egy külön
|
||||
webes store-ba. Ez a 7. pontot gyakorlatilag leveszi a listáról.
|
||||
|
||||
## Új jelöltek, amik eddig nem voltak a listán
|
||||
|
||||
### Pegasus Frontend — a legjobb új jelölt
|
||||
Sima szöveges `metadata.txt`: `collection` + `game` blokkok, per-game
|
||||
`launch`/`command` felülírás, `{file.path}` behelyettesítéssel, `developer`,
|
||||
`release`, `rating` mezők. **Windows, macOS, Linux, Raspberry Pi és Android** —
|
||||
egy adapter, ami mind a három asset-fajtánkat viszi: cartridge (emulátort indít),
|
||||
natív (közvetlenül), `html` (böngészőt). A formátum egyszerűbb, mint a
|
||||
`gamelist.xml`, és nincs benne olyan csapda, mint a RetroArch bináris/PNG-kényszere.
|
||||
|
||||
### ES-DE — de nem drop-in, ahogy az 1. pont sejteti
|
||||
Az 1. pont az ES-családot egy tételként kezeli, „a motor már generikus" felkiáltással.
|
||||
A USERGUIDE ezt két ponton megcáfolja:
|
||||
|
||||
- A gamelisteket **nem** a ROM-mappából olvassa, hanem a központi
|
||||
`~/ES-DE/gamelists/` fából — a ROM-fában lévőket alapból **figyelmen kívül hagyja**.
|
||||
A mi Batocera-adapterünk pontosan oda ír, ahonnan az ES-DE nem olvas.
|
||||
- A `path` tagben **kötelező a `./` prefix** (a mi merge-ünk szerencsére már így írja).
|
||||
|
||||
Cserébe többet ad, mint a Batocera: fut Linuxon, macOS-en, Windowson, **Androidon**,
|
||||
Haikun és Steam Decken, és `custom_systems/es_systems.xml`-ben saját rendszert lehet
|
||||
definiálni tetszőleges indító paranccsal — tehát nála is megvan a `html`-út.
|
||||
Az adapter tehát nem a Batocera-adapter újrahasznosítása, hanem egy testvére:
|
||||
ugyanaz a metaadat-formátum, más útmodell.
|
||||
|
||||
### Lutris — egy Linux-asztali gépen elvileg 15/15
|
||||
Ellenőrizve: a Lutris-installer lehet **tisztán lokális YAML**, weboldal nélkül
|
||||
(`lutris -i /path/to/file.yaml`), a kulcsok a gyökérben, minden más a `script`
|
||||
alatt, `$SCRIPTDIR`-rel relatív fájlokra. A runnerek között ott van a `linux`
|
||||
(natív), a `web` (böngésző) és a `wine` — vagyis egy Lutris-store a `html`-t, a
|
||||
Linux-natívot és akár a Windows-buildeket is fel tudja tenni **ugyanabba a
|
||||
könyvtárba**. Ez a legnagyobb elméleti lefedettség a listán.
|
||||
|
||||
A minta viszont más: nem mi írjuk a könyvtárformátumot, hanem generálunk egy
|
||||
telepítőt és meghívjuk a Lutrist. Kevesebb kontroll (a prune-hoz a Lutris saját
|
||||
adatbázisát kellene bántani), de a `state.json`-unk így is tudja, mit tettünk fel.
|
||||
|
||||
### LaunchBox és Playnite — nem tudtam ellenőrizni
|
||||
Mindkettő nagy Windows-közönség, és mindkettőnél elakadtam:
|
||||
|
||||
- **LaunchBox**: a játéklista `Data/Platforms/<Platform>.xml`-ben van, de a séma
|
||||
nincs dokumentálva (a közösség visszafejtette), és az alkalmazás maga is
|
||||
újraírja a fájlt. Egy valódi telepítés nélkül nem érdemes tervezni rá.
|
||||
- **Playnite**: a hivatalos út egy C#/.NET library plugin, nem egy adatfájl —
|
||||
ez kilóg a „stdlib Python + egy fájl" mintánkból. A dokumentációt nem sikerült
|
||||
elérnem (403), tehát ez is nyitott kérdés.
|
||||
|
||||
Egyik sem javasolt a Pegasus és az ES-DE előtt.
|
||||
|
||||
## Korrekció a meglévő listához: a Steam alá van becsülve
|
||||
|
||||
A 3. pont szerint „a letöltést a 2. pontról örökli, tehát ráépül" — a letöltést
|
||||
igen, a formátum viszont a listán a legkellemetlenebb:
|
||||
|
||||
- A `shortcuts.vdf` **bináris VDF**, nem szöveg: `appid` (4 bájt little-endian),
|
||||
`AppName`, `Exe`, `StartDir`, `LaunchOptions`.
|
||||
- Az `appid` az exe és a név CRC32-jéből számolt érték, a legfelső bit beállítva —
|
||||
és ez az `appid` a borítóképek fájlneve is (`userdata/<id>/config/grid/<appid>p.png`).
|
||||
- **Ha a fájl hibás, a Steam indulás után törli**; ha a felhasználó a Steam UI-ból
|
||||
vesz fel egy nem-Steam játékot, felülírja, amit írtunk. Írás után Steam-újraindítás
|
||||
kell.
|
||||
- A `userdata/<id>` ág felhasználónként más, tehát felderítés is kell hozzá.
|
||||
|
||||
Bináris formátumot írni stdlib Pythonból megoldható, de ez nem „kevés munka", és
|
||||
egy elrontott fájl a felhasználó teljes nem-Steam listáját viszi. A 3. pont ezért
|
||||
a 2. pont **után** és önálló körben való, nem mellékesként.
|
||||
|
||||
## Az újrarendezett sorrend
|
||||
|
||||
1. **Döntés a demókról** — 0 kód, de nem a mai store-okról szól: azokon nem
|
||||
változtat semmit (nincs `demo` státuszú cartridge-ünk). Az asztali store
|
||||
értelmét dönti el: 4 cím demók nélkül, 10 velük. Ezért ez a 2. pont
|
||||
előfeltétele, nem önálló nyereség.
|
||||
2. **Asztali store** (2. pont) — változatlanul a legnagyobb valóban új képesség,
|
||||
most már azzal, hogy a `html` is bele tartozik egy második telepítési módként.
|
||||
Ez teszi elérhetővé a katalógus 15/15-ét (a demókkal együtt).
|
||||
3. **Pegasus** — egy adapter, ami mind a három asset-fajtát viszi öt platformra,
|
||||
köztük Androidra, szöveges formátumban. A legjobb arány a listán.
|
||||
4. **ES-DE** — ugyanaz a metaadat-formátum, más útmodell; desktop + Android +
|
||||
Steam Deck. Az 1. pont maradéka (RetroPie, Recalbox, kézikonzolok) ezután jön,
|
||||
mert azok a Batocera-adapterhez állnak közelebb.
|
||||
5. **Steam** (3.) — a 2. pontra épül, de önálló körben, a bináris formátum miatt.
|
||||
6. **BBS store** (5.) — változatlanul a márkaérték-tétel, nem elérés-tétel.
|
||||
7. **Csomagkezelők** (6.) — a 2. pont csomagolására épül.
|
||||
8. ~~**Webes könyvtár / PWA**~~ (7.) — **levehető**: a `html`-t a 2., 3. és 4. pont
|
||||
viszi el, ez pedig a publikus oldallal fedne át.
|
||||
|
||||
## Amit valódi gépen kell ellenőrizni (bővítve)
|
||||
|
||||
A korábbi kettő (per-OS zipek önmagukban futtathatók-e; macOS-aláírás) mellé:
|
||||
|
||||
- **Pegasus**: elolvassa-e a generált `metadata.txt`-t Androidon is, és mit tesz a
|
||||
`launch` paranccsal ott (Android-on nincs shell úgy, ahogy asztalon).
|
||||
- **ES-DE**: a `~/ES-DE/gamelists/` fába írt metaadat és a `custom_systems` együtt
|
||||
működik-e, illetve mit lát az ES-DE Android-kiadása.
|
||||
- **Lutris**: a `lutris -i` fut-e fejetlenül (headless), vagy GUI-t nyit — ez dönti
|
||||
el, hogy egy szinkron automatizálható-e.
|
||||
- **LaunchBox / Playnite**: van-e egyáltalán írható formátum. Egy telepítés
|
||||
megválaszolja; addig ne tervezzünk rájuk.
|
||||
|
||||
@@ -40,7 +40,10 @@ All scripts live under `scripts/` and can also be run standalone:
|
||||
- **`check-repos.sh`** — checks in both directions: repos that exist on
|
||||
the server but are missing from the list (**MISSING**), and repos listed
|
||||
as Gitea repos but absent from the server (**STALE**). Exits with 1 on
|
||||
any hit, so it is CI-friendly.
|
||||
any hit, so it is CI-friendly. It pages through the server list: Gitea
|
||||
caps a page at 50 items whatever `--limit` asks for, and before this was
|
||||
fixed (2026-08-18, at 51 repos) the check quietly compared against the
|
||||
first 50 and reported a real repo as STALE.
|
||||
|
||||
## Data files
|
||||
|
||||
|
||||
+4
-1
@@ -79,7 +79,9 @@ git.teletypegames.org/
|
||||
│ ├── warp-engine-batocera-store motor: EmulationStation + gamelist.xml
|
||||
│ ├── ttg-batocera-store a mi store-unk rajta
|
||||
│ ├── warp-engine-retroarch-store motor: RetroArch .lpl playlistek
|
||||
│ └── ttg-retroarch-store a mi store-unk rajta
|
||||
│ ├── ttg-retroarch-store a mi store-unk rajta
|
||||
│ ├── warp-engine-desktop-store motor: az OS alkalmazás-menüje
|
||||
│ └── ttg-desktop-store a mi store-unk rajta
|
||||
│
|
||||
└── infra/ Maga a kiszolgáló-környezet.
|
||||
├── nginx-conf ← ma internal/
|
||||
@@ -100,6 +102,7 @@ git.teletypegames.org/
|
||||
- **Wiki `engines/` névtér** (2026-08-16): a `warp-engine`, `rubbs` és `inkwell` oldal egy közös `/engines` szekcióba került, a régi URL-ek Grav-átirányítással élnek tovább.
|
||||
- **Három új repó a store-vonalon** (2026-08-17): `engines/warpstore` (a store-motorok kiemelt közös magja — az `engines/` definíciója szerint „könyvtár, amitől más repók függnek"), `warp-engine-retroarch-store` és `ttg-retroarch-store`. A `repos.list` és a `WIKI_CONNECTION.md` táblája követi; a `check-repos.sh` 49 repóval zölden fut.
|
||||
- **`stores` org** (2026-08-18): a négy store-repó a `tools`-ból egy saját orgba került, mert a `tools` definíciója („egy ember telepíti és futtatja magának”) a motorokra már nem állt — azok termékek, amikre más is építhet. Az org a `games` mintájára kapta a megjelenítendő nevet és a `Teletypers` csapatot: ugyanaz a négy tag, azonos `units_map`, `includes_all_repositories`, `can_create_org_repo`, privát csapat-láthatóság. A műveleteket a `tea api` végzi, amit a `tea` alparancsai nem tudnak: `POST /orgs`, `POST /orgs/{org}/teams`, `PUT /teams/{id}/members/{user}`, `POST /repos/{owner}/{repo}/transfer`. **A transzfer megőrzi a Gitea átirányítását** — a régi `tools/...` raw URL-ek 301-gyel a helyükre mutatnak, tehát a már telepített store-ok `curl`-jei nem törtek el; a hivatkozásokat ettől függetlenül mindenhol átírtuk. A `warpstore` az `engines`-ben maradt: könyvtár, nem store.
|
||||
- **Asztali store** (2026-08-18): `stores/warp-engine-desktop-store` és `stores/ttg-desktop-store` — a harmadik motor a közös magon. A `warpstore` ezért kapott két bővítést: a `kind` lehet **lista** (Apple Siliconon `mac_universal` > `mac_arm64` > `mac_x64`, mert az utolsó Rosettát kér), és a rekord viszi az asset katalógus-oldali útját is, mert a `html` build nem letölthető, hanem kiszolgált. Egy ütközés is kiderült és javítva lett: a RetroArch- és az asztali motor ugyanabban a store root-ban él, és a bare `<id>` home-mal osztoztak volna a `config.json`-on és a `state.json`-on — a home mostantól `<id>-<motor>`, a RetroArch-telepítő az elsőnél átmozgatja a régit.
|
||||
- **Workspace mappák igazítva** (2026-08-16): a mappa mostantól egy az egyben az org (`bbs/`, `build/`, `demos/`, `engines/`, `games/`, `infra/`, `services/`, `stores/`, `tools/`). Kivétel a `devarea`, ami a gyökérben marad, mert a `clone-repos.sh` a szülőjébe klónoz.
|
||||
|
||||
## Nyitott pontok
|
||||
|
||||
@@ -40,8 +40,10 @@ This file lives in the `devarea` repo (`tools/devarea`). The repo's `scripts/` f
|
||||
| `services/updater` | `services` | Discord Updater Bot | `infra/wiki-pages/pages/others/updater/default.md` | https://wiki.teletypegames.org/others/updater |
|
||||
| `stores/ttg-batocera-store` | `stores` | TTG Batocera Store | `infra/wiki-pages/pages/stores/ttg-batocera-store/default.md` | https://wiki.teletypegames.org/stores/ttg-batocera-store |
|
||||
| `stores/ttg-retroarch-store` | `stores` | TTG RetroArch Store | `infra/wiki-pages/pages/stores/ttg-retroarch-store/default.md` | https://wiki.teletypegames.org/stores/ttg-retroarch-store |
|
||||
| `stores/ttg-desktop-store` | `stores` | TTG Desktop Store | `infra/wiki-pages/pages/stores/ttg-desktop-store/default.md` | https://wiki.teletypegames.org/stores/ttg-desktop-store |
|
||||
| `stores/warp-engine-batocera-store` | `stores` | WarpEngine Batocera Store | `infra/wiki-pages/pages/stores/warp-engine-batocera-store/default.md` | https://wiki.teletypegames.org/stores/warp-engine-batocera-store |
|
||||
| `stores/warp-engine-retroarch-store` | `stores` | WarpEngine RetroArch Store | `infra/wiki-pages/pages/stores/warp-engine-retroarch-store/default.md` | https://wiki.teletypegames.org/stores/warp-engine-retroarch-store |
|
||||
| `stores/warp-engine-desktop-store` | `stores` | WarpEngine Desktop Store | `infra/wiki-pages/pages/stores/warp-engine-desktop-store/default.md` | https://wiki.teletypegames.org/stores/warp-engine-desktop-store |
|
||||
|
||||
## Notes
|
||||
|
||||
|
||||
+18
-2
@@ -21,8 +21,24 @@ command -v tea >/dev/null 2>&1 || {
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Repos on the server: owner/name
|
||||
server=$(tea repo list --output json --limit 1000 | jq -r '.[] | .owner + "/" + .name' | sort)
|
||||
# Repos on the server: owner/name.
|
||||
#
|
||||
# Paginated on purpose. Gitea caps a page at MAX_RESPONSE_ITEMS (50 by default)
|
||||
# whatever --limit says, so `tea repo list --limit 1000` silently returns the
|
||||
# first 50 — which looked like a repo had vanished from the server the day the
|
||||
# estate grew past fifty. Pages are requested until a short one comes back.
|
||||
server=$(
|
||||
page=1
|
||||
while :; do
|
||||
batch=$(tea api "/user/repos?limit=50&page=$page" | jq -r '.[].full_name')
|
||||
[ -z "$batch" ] && break
|
||||
echo "$batch"
|
||||
[ "$(echo "$batch" | wc -l)" -lt 50 ] && break
|
||||
page=$((page + 1))
|
||||
done | sort -u
|
||||
)
|
||||
|
||||
[ -n "$server" ] || { echo "ERROR: the server returned no repos — is the tea login still valid?" >&2; exit 1; }
|
||||
|
||||
# Gitea repos in the clone list: owner/name extracted from the clone URL
|
||||
listed=$(sed -nE "s#^[^|#]+\|ssh://git@${GITEA_HOST}:[0-9]+/(.+)\$#\1#p" "$LIST" | sed 's/\.git$//' | sort)
|
||||
|
||||
@@ -57,8 +57,10 @@ services/teletype-orbit|ssh://git@git.teletypegames.org:2222/services/teletype-o
|
||||
services/updater|ssh://git@git.teletypegames.org:2222/services/updater
|
||||
|
||||
stores/ttg-batocera-store|ssh://git@git.teletypegames.org:2222/stores/ttg-batocera-store
|
||||
stores/ttg-desktop-store|ssh://git@git.teletypegames.org:2222/stores/ttg-desktop-store
|
||||
stores/ttg-retroarch-store|ssh://git@git.teletypegames.org:2222/stores/ttg-retroarch-store
|
||||
stores/warp-engine-batocera-store|ssh://git@git.teletypegames.org:2222/stores/warp-engine-batocera-store
|
||||
stores/warp-engine-desktop-store|ssh://git@git.teletypegames.org:2222/stores/warp-engine-desktop-store
|
||||
stores/warp-engine-retroarch-store|ssh://git@git.teletypegames.org:2222/stores/warp-engine-retroarch-store
|
||||
tools/tic80-draw-image|https://github.com/cxong/tic80-draw-image.git
|
||||
tools/ttg-marketplace|ssh://git@git.teletypegames.org:2222/tools/ttg-marketplace
|
||||
|
||||
Reference in New Issue
Block a user