`stores/warp-engine-desktop-store` és `stores/ttg-desktop-store` törölve: a motor a `warp-engine-client`be került (2.0.0), tehát nincs mit letölteni, és a 2.2.0 óta nincs mit konfigurálni sem kívülről — a registry-rekord csak név + katalógus, a store-onkénti szeparáció pedig almappa, amit a kliens a katalógus-hostból képzett slugból állít elő. A `repos.list` és a `WIKI_CONNECTION.md` táblája követi (két sorral kevesebb), a `REPO_REFACT.md` repófája a jelen állapotot mutatja, a történeti bejegyzések pedig maradtak — azok arról szólnak, ami akkor történt —, datált lezáró jegyzettel. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
125 lines
14 KiB
Markdown
125 lines
14 KiB
Markdown
# Gitea org-struktúra
|
|
|
|
**Végrehajtva 2026-08-15-én.** 6 új org, 30 repo áthelyezve, 44 repo a helyén.
|
|
|
|
Előtte a `tools` org 19 repót tartott hét különböző célra, az `internal`-t pedig csak az fogta össze, hogy privát. A bontásban **az org a rendeltetést jelöli, a titkosságot a repo `private` kapcsolója.** Nyolc org, 44 repo.
|
|
|
|
A régi útvonalak átirányítanak (Gitea `repo_redirect`), tehát a meglévő klónok, CI-hivatkozások és wiki-linkek nem törtek el.
|
|
|
|
```
|
|
git.teletypegames.org/
|
|
│
|
|
├── games/ Katalógus-termék: valaki játszik vele.
|
|
│ │ Szabály: a katalógus status mezője nem "demo".
|
|
│ ├── blessingofra
|
|
│ ├── impostor
|
|
│ ├── realworld (még nincs a katalógusban)
|
|
│ ├── rabbitroller
|
|
│ ├── rabbitc64
|
|
│ ├── bombexpert
|
|
│ ├── trickster-tiles
|
|
│ ├── nyuller (még nincs a katalógusban)
|
|
│ ├── mranderson (archivált)
|
|
│ ├── c64-demo ← ma a workspace demos/ mappájában
|
|
│ └── c64-demo-cpp
|
|
│
|
|
├── demos/ Egy platformot mutat be, nem önálló termék.
|
|
│ │ Szabály: a katalógus status mezője "demo". A wikiben
|
|
│ │ nincs saját projektoldaluk, a motor oldalán szerepelnek.
|
|
│ ├── bevy-demo
|
|
│ ├── ebitengine-demo
|
|
│ ├── love-demo
|
|
│ ├── phaser-demo
|
|
│ ├── inkwell-demo
|
|
│ └── pong ← ma games/, de a katalógusban "demo"
|
|
│
|
|
├── engines/ Saját motor és könyvtár, amitől más repók függnek.
|
|
│ │ A wiki sidebar "Engines" fejléce már ma ezeket sorolja.
|
|
│ ├── warp_engine Rails engine: katalógus + API ← ma tools/
|
|
│ ├── rubbs Ruby gem: Telnet BBS keretrendszer ← ma tools/
|
|
│ ├── inkwell Go: Point'n'Click DSL ← ma games/
|
|
│ ├── gorpg Go: Ebitengine RPG motor ← ma games/
|
|
│ └── warpstore Python: a store-motorok közös magja ← új, 2026-08-17
|
|
│
|
|
├── bbs/ BBS szerverek és showcase-ek. A keretrendszerük
|
|
│ │ (rubbs) az engines/ alatt van.
|
|
│ ├── bbs-server
|
|
│ ├── sermo-bbs ← ma internal/
|
|
│ └── impostor-bbs ← ma games/
|
|
│
|
|
├── build/ CI toolchain és builder image.
|
|
│ │ Ide tartoznak a ma internal/ névtérben publikált
|
|
│ │ *-builder image-ek és a tic80pro is.
|
|
│ ├── bevy-tools
|
|
│ ├── c64-tools
|
|
│ ├── ebitengine-tools
|
|
│ ├── godot-tools
|
|
│ ├── love-tools
|
|
│ ├── phaser-tools
|
|
│ └── tic80-tools
|
|
│
|
|
├── services/ A mi szerverünkön fut.
|
|
│ ├── teletypegames a publikus oldal monorepója
|
|
│ ├── statusbot Discord bot
|
|
│ ├── updater Discord bot
|
|
│ ├── social-updater YouTube → Facebook/LinkedIn
|
|
│ ├── blog-writer wiki → Gemini → blog pipeline
|
|
│ └── redmine-tree Redmine fa nézet
|
|
│
|
|
├── tools/ Egy ember telepíti és futtatja magának.
|
|
│ │ A név marad, de kap definíciót és 19 helyett 3 repót
|
|
│ │ (a store-ok 2026-08-18-án a stores orgba kerültek).
|
|
│ ├── ttg-marketplace ← ma internal/
|
|
│ ├── devarea
|
|
│ └── tic80-draw-image (vendorolt, GitHub)
|
|
│
|
|
├── stores/ Store: a katalógust egy gazdaplatform saját
|
|
│ │ könyvtárformátumába írja. Motor + a rá épülő store-ok.
|
|
│ │ ← új org, 2026-08-18
|
|
│ ├── 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
|
|
│ └── warp-engine-client Electron kliens: a saját motorjával az OS
|
|
│ alkalmazás-menüjébe telepít (.desktop, .app,
|
|
│ Start menü) — a két desktop-store-repó
|
|
│ helyett, törölve 2026-08-19
|
|
│
|
|
└── infra/ Maga a kiszolgáló-környezet.
|
|
├── nginx-conf ← ma internal/
|
|
├── backup-scripts ← ma internal/
|
|
└── wiki-pages ← ma internal/
|
|
```
|
|
|
|
## Elvégezve
|
|
|
|
- 6 org létrehozva (`demos`, `engines`, `bbs`, `build`, `services`, `infra`), 30 repo áthelyezve.
|
|
- Mind a 6 új org megkapta a `games` mintájára a megjelenítendő nevet és a `Teletypers` csapatot — azonos jogosultságokkal (`includes_all_repositories`, `can_create_org_repo`, private láthatóság, ugyanaz a `units_map`) és ugyanazzal a négy taggal.
|
|
- `devarea/scripts/repos.list` — 30 klón-URL átírva; a `check-repos.sh` zölden fut (45 repo, 1 kizárva).
|
|
- 33 lokális checkout `origin`-ja átállítva, köztük a `warp_engine` régi `git.teletype.hu` hosztja.
|
|
- `WIKI_CONNECTION.md` — új `Org` oszlop.
|
|
- **Go modulnevek rendezve** (2026-08-16): `engines/inkwell`, `engines/gorpg` és `demos/inkwell-demo` `go.mod`-ja a mai orgot viszi; a `gorpg`-é korábban `module game` volt. Mindhárom kiadva, lásd `ECOSYSTEM_PLAN.md`.
|
|
- **Gem git-források rendezve** (2026-08-16): `bbs/bbs-server`, `bbs/sermo-bbs` és `bbs/impostor-bbs` — mindhárom a kanonikus hoszton az `engines/rubbs`-ra mutat, a rögzített revíziók változatlanul.
|
|
- **Builder image-ek átköltöztetve** (2026-08-16): mind a 8 konténer-csomag a `build` org alá került, a `ci_platforms` és a dokumentáció (7 toolchain README + Dockerfile, 2 wiki-oldal) átírva. Az `internal` org ezzel kiüríthető — ez volt az egyetlen, ami visszatartotta.
|
|
- **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.
|
|
- **Grafikus kliens** (2026-08-18): `stores/warp-engine-client` — Electron-ablak a desktop store CLI-hez. A motor ezért kapott `--json`-t (`list`, `paths`, `sync`, `remove`, `purge`), a mag pedig `set_log_stream()`-et: adat a stdouton, emberi log a stderren. Az app egyben a **Windows-telepítő is**, mert ott a `curl … | sh` nem létezik: store nélkül letölti a motort, a magot és a configot ugyanabba a home-ba. Terjesztés Gitea release-ben; a macOS-csomag megépítve és a kicsomagolt `.app` visszamérve, Windows/Linux artifact CI-t vagy másik gépet kér. **Node 22+ kell a telepítéséhez** (nem a futtatásához): az Electron saját installere ESM-only, a Node 20 `require()`-je elhal rajta.
|
|
- **A kliens átnevezve** (2026-08-18): `stores/warp-engine-desktop-gui` → **`stores/warp-engine-client`**. A repónév a termékhez (WarpEngine Store) igazodik, nem a „desktop GUI” szerepéhez, és a hosztspecifikus motorok maradnak `warp-engine-<hoszt>-store`. A `tea api -X PATCH /repos/stores/... -f name=...` végzi (a `tea repo` alparancsai nem tudják); **a Gitea itt is megőrzi az átirányítást**, a release-ek és az 5 tag a repóval együtt költöztek. Átírva: a repó belseje (`package.json` név és homepage, lockfile, README, User-Agent), a wiki-oldal mappája + fejléce + sitenav + Grav-átirányítás a régi útvonalról, a `repos.list`, a `WIKI_CONNECTION.md`, a `services/teletypegames` README-je és a `/stores` frontend-oldal.
|
|
- **Store-config repó nélkül is működik** (2026-08-18): a registry `store_repository_url`-je opcionális lett. A motor `DEFAULT_CONFIG`-ja mindent visz (host→asset leképezés, módok, platformok, viselkedés); ami hiányzik belőle, az az identitás — slug, név, katalógus —, és pont azt hordozza a registry-rekord. Repó nélkül a kliens a katalógus-hostból képzi a slugot (`teletypegames.org` → `teletypegames`), és háromszekciós configot ír. A store-config repók megmaradnak: a `curl … | sh` telepítőút továbbra is azokból jön.
|
|
- **A kliens CI-je** (2026-08-18): `stores/warp-engine-client` **saját** `.woodpecker.yaml`-t kapott, nem a `/build/config` kiterjesztést — az game-platformokat szolgál ki, amik a katalógusba publikálnak, ez viszont alkalmazást épít Gitea release-be. Négy lépés: `check` (npm ci + typecheck + lint + smoke), `linux` (AppImage + deb), `windows` (NSIS + portable, **Wine alatt**, `electronuserland/builder:22-wine`), `release` (csak tagre, a `scripts/ci-upload.sh` a `gitea_token` secrettel). **macOS marad helyi build**, mert az Apple-toolchain és az aláírás csak Macen létezik; egy teljes release tehát egy helyi `make release` + ez a pipeline. A képek parancsait előbb helyben, ugyanabban a két konténerben mértem le.
|
|
- **Az asztali store-repók törölve** (2026-08-19): `stores/warp-engine-desktop-store` és `stores/ttg-desktop-store` megszűnt, a wiki-oldalaikkal együtt. A motor a `warp-engine-client`be került (2.0.0), tehát nincs mit letölteni és nincs mit konfigurálni kívülről: a kliens hozza a saját `DEFAULT_STORE_CONFIGURATION`-jét, a registry-rekord pedig **csak név + katalógus** — a `config` és a `store_repository_url` mező is kikerült a `Store` modellből (2.2.0 / `A store record is a name and a catalog`). A store-onkénti szeparáció almappa, amit a kliens a katalógus-hostból képzett slugból állít elő. A `/stores` oldal desktop-kártyája is megszűnt (halott `curl … | sh`-t reklámozott); a `/desktop` URL az appra visz. A `warpstore` maga változatlan, de a gépszintű `uninstall.sh` desktop-ága már nem talál `desktop_store.py`-t egy 2.0.0+ kliens által telepített home-ban.
|
|
- **A kliens neve és a katalógus teljessége** (2026-08-18): az app **WarpEngine Client** lett (a „Store" azt nevezte meg, amit megnyit, nem amit futtatsz), a fejlécből kikerült a store-jelvény, és a kliens **minden címet listáz** — amit ez a gép nem tud telepíteni, azt szürkén, „unsupported platform" jelvénnyel és a motor indoklásával. Ehhez a mag `survey_catalog`-ot kapott (`warpstore` 1.4.0), az asztali motor pedig `installable: false`-os rekordokat ad a `--json` listában (1.2.0); a `select_games` kétértékű burkolóként megmaradt, tehát a Batocera- és RetroArch-motor változatlan. A registry címe **build-időben** is megadható (`make dist STORES_API=…`, az electron-builder `extraMetadata`-ján keresztül a csomag `package.json`-jába sülve), futásidőben a `STORES_API` továbbra is felülírja.
|
|
- **WarpEngine verzió-fejléc és pipeline-kapcsolat** (2026-08-18): minden WarpEngine API-válasz `WarpEngine-Version` fejlécet visz (a `before_action` miatt a hibaválaszok is), és egy szoftverhez **egy** pipeline tartozik, de az átállítható: aki eddig birtokolta, elveszti, az admin pedig kiírja, kitől vette el. Szándékosan callback és nem unique index, mert a sorok soft-delete-esek, és az index a törölt sorokat is számolja.
|
|
- **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
|
|
|
|
- **Woodpecker** — a `/api/ci/pipelines` tábla hiányos: 10 repót mutat, miközben a Woodpecker 19-et ismer és mind aktív, és a tulajdonos több sorban a költözés előtti orgot mutatja. A szinkron lefuttatása rendbe teszi; addig a `woodpecker-cli repo ls` a mérvadó.
|
|
|
|
## Ami magától rendben van
|
|
|
|
- **A `/code` oldal** `owner/name` alakban írja ki a repókat, tehát az új org-nevek külön munka nélkül megjelennek rajta.
|
|
- **A `check-repos.sh`** org-agnosztikus (`tea repo list`-ből olvas), nem kellett hozzányúlni.
|