The README's layout block was two reorganisations out of date: it still had
`tools_bbs/`, `tools_build/`, `tools_libs/`, an `archive/`, and the public site
and wiki at the workspace root. Since 2026-08-16 every folder is a Gitea org,
one to one — which is the reason a path in `repos.list` is just `<org>/<name>` —
so the block now says that, names the exceptions (`devarea` itself, plus `media/`
and `memory/`, which are not repos), and includes `stores/`.
`clone-repos.sh` needed no change: it makes the parent of each path, so a fresh
machine gets the org folders from the list alone.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The `tools` definition — "one person installs and runs it for themselves" — stopped
describing the store engines: they are products other people can build on. So the
four store repositories left `tools` for a `stores` org of their own, and the org
map, the clone list, the wiki table and the ecosystem plan follow. `check-repos.sh`
is green at 49.
Worth writing down for the next org change: `tea` has no transfer subcommand, but
`tea api` makes authenticated calls with tea's own credentials, which is enough for
all of it — POST /orgs, POST /orgs/{org}/teams, PUT /teams/{id}/members/{user},
POST /repos/{owner}/{repo}/transfer. And the transfer keeps Gitea's redirect: the
old `tools/...` raw URLs answer 301, so the installers on already-configured boxes
did not break. That is why this was a transfer and not a migrate-and-delete.
`warpstore` stayed in `engines`: it is a library other repos depend on, which is
what that org is for. The launcher gap moved out of the tools chapter of
ECOSYSTEM_PLAN into the new stores one, where it belongs.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
RETROARCH_STORE.md is the design, written from measurements rather than
documentation: the format samples, thumbnail layout and core names come from
a real RetroArch install on this machine, the core availability from the
libretro buildbot index, and the CRC32s from the catalog itself.
Three findings shaped it. The playlist folder is not necessarily inside the
RetroArch directory — on the machine measured, playlist_directory is under
~/Documents while cores and thumbnails are under ~/Library — so reading
retroarch.cfg is a requirement, not a nicety. Thumbnails must be PNG, and
one of our covers is a GIF, which no store had cared about before. And a
.lpl entry has nowhere to put a description, so desc and author do not
survive the trip.
Built the same day, in three repositories: engines/warpstore (the shared
core, extracted immediately rather than in the second phase the plan
proposed), tools/warp-engine-retroarch-store and tools/ttg-retroarch-store.
The closing section of the design records what the implementation changed
about it.
MORE_STORES.md item 4 is closed, its "a minta" section now points at the
extracted core, and REPO_REFACT.md carries the three new repos —
check-repos.sh is green at 49.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The engine can install native builds as Batocera ports, so the coverage
number the plan was chasing is in reach. Measured rather than estimated:
13 of 15 on x86_64, 9 on ARM and rising as repos re-run with the ARM
pipeline. The two that stay out — phaserdemo and trickster-tiles — ship
only html, so no native store will ever carry them.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The ARM asset kind is in the build matrix and the engine now picks the
asset that matches the machine, so the plan's first two steps are behind
us. The measurement is refreshed too: linux_arm64 exists for one title,
and the win/linux x64 counts moved as pipelines re-ran.
Next is the one that turns the coverage number: installing non-cartridge
assets as Batocera ports rather than ROMs.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The app existed only on one disk: a local git repo with no remote, so a
lost machine lost the work. It now has a repo under services/, next to
the other things that run on our servers, and sits in the folder its org
implies rather than at the workspace root.
It is private, unlike its neighbours: config/master.key is tracked in the
history, and that key decrypts config/credentials.yml.enc.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
MORE_STORES.md asks which further host platforms could get a store like
the Batocera one, and starts from a measurement: the catalog ships html
for 11 of 15 titles and desktop binaries for 8, while the Batocera store
consumes only cartridge — 7. The gap is not the number of stores but
that the existing one leaves half the catalog untouched.
Also records that the ARM64 asset kind is the prerequisite for the
retro-handheld direction, and closes the internal-org item in
REPO_REFACT.md now that all eight builder images live under build/.
The Woodpecker note is corrected against what the CLI actually reports:
19 repos registered and active, not the 10 the pipelines table shows.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Every repo now sits at <org>/<name>, so the clone list's path column and
its org column agree by construction: tools_bbs/, tools_build/ and
tools_libs/ are gone, pong moved to demos/ and c64-demo to games/ per
their catalog status, wiki-pages to infra/ and the monorepo to services/.
devarea stays at the workspace root — clone-repos.sh clones into its
parent directory, so it cannot live inside a category folder.
The wiki file column follows wiki-pages into infra/, and the engine
pages into the /engines namespace they were gathered under.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Both are done: the three Go modules carry their current org and are
released, and the three bbs repos fetch rubbs from engines on the
canonical host. impostor-bbs had the same stale source as the two the
note listed.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Both were written into the workspace root, which is not a git repo, so
they were versioned nowhere: one `rm` and they were gone, and nobody
else on the team could see them. They belong next to WIKI_CONNECTION.md
— all three describe the estate rather than any single repo.
The references in the ttg-ops skills follow in the marketplace repo.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Six new orgs (demos, engines, bbs, build, services, infra) and thirty
repos moved, per REPO_REFACT.md in the workspace root. The clone URLs
follow; check-repos.sh needed no change, since it reads owner/name from
the server rather than assuming an org.
The monorepo now clones from services/teletypegames instead of GitHub —
that is what the local checkout's origin has been pointing at all along,
and the check flagged the Gitea copy as missing from the list.
WIKI_CONNECTION.md gains an Org column next to the workspace path.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The tool was split on 2026-08-15 into a reusable engine
(warp-engine-batocera-store, the renamed batocera-store repo) and our
store on top of it (ttg-batocera-store). Neither was in repos.list —
the original repo predated the last update of the list — and both now
have their own wiki page.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>