Point the wiki at meleki/feuerwerk and the feuerwerk runners (#422)
Stage 3 of the rename moved the repo, the runner labels, the WSL distro and the video worker to the name Feuerwerk. - Repo and wiki links now go to git.nockal.com/meleki/feuerwerk. - Development names the labels feuerwerk-ci and feuerwerk-wsl, the distro feuerwerk-ci and the FEUERWERK_* variables. - Accounts names the passwords FEUERWERK_E2E_PASSWORD and FEUERWERK_E2E_ADMIN_PASSWORD. - Videos names the container feuerwerk-video. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent
b1910090c7
commit
5c1bb29940
6 files changed
+19
-19
No files matched your search
+2
-2
@@ -121,10 +121,10 @@ is `data/sessions/`. Registration (#178) and shared projects (#181) are follow-u
|
||||
## What the check tools do
|
||||
|
||||
Every seed, smoke and e2e run signs in as `e2e` first and sends the same session cookie a browser
|
||||
would (`tools/lib/auth.mjs`). The password comes from `GAME_MAKER_E2E_PASSWORD` or from
|
||||
would (`tools/lib/auth.mjs`). The password comes from `FEUERWERK_E2E_PASSWORD` or from
|
||||
`data/e2e-password.txt`, which is git-ignored — CI writes its own on a fresh checkout and makes
|
||||
the account with it (`tools/ci/serve.sh`). `e2e-admin` works the same way, with
|
||||
`GAME_MAKER_E2E_ADMIN_PASSWORD` or `data/e2e-admin-password.txt`.
|
||||
`FEUERWERK_E2E_ADMIN_PASSWORD` or `data/e2e-admin-password.txt`.
|
||||
|
||||
The browser in an e2e run is handed that session as a cookie, so it starts on the editor. The
|
||||
sign-in screen itself is driven by hand in step 45, the one step that sees it. Step 49 signs the
|
||||
|
||||
+8
-8
@@ -20,7 +20,7 @@ php tests/php/snapshots.test.php # the snapshot sto
|
||||
php tests/php/releases.test.php # the release store (#266), the same way
|
||||
php tests/php/files.test.php # uploaded files in a folder per account (#344), the same way
|
||||
php tests/php/videos.test.php # the video store, its queue and the worker (#402), with the
|
||||
# real ffmpeg: the CI image and game-maker-video have it
|
||||
# real ffmpeg: the CI image and feuerwerk-video have it
|
||||
node tools/seed-e2e.mjs && node tools/e2e.mjs # 2065 editor checks, screenshots in /tmp/gm-e2e-*.png
|
||||
GM_STEPS=20 node tools/e2e.mjs # or 1-12, or 6,20 — a subset while working on one step
|
||||
./e2e.sh start [GM_STEPS] # the same run detached, see below
|
||||
@@ -34,7 +34,7 @@ node tools/seed-e2e.mjs && node tools/perf-shaders.mjs # what a shader co
|
||||
**Every tool signs in first.** Since #177 the API answers 401 without a session, so the seeds, the
|
||||
smokes and the e2e run log in as the `e2e` account (`tools/lib/auth.mjs`) and send the cookie a
|
||||
browser would; the e2e browser is handed the same session over CDP. The password comes from
|
||||
`GAME_MAKER_E2E_PASSWORD` or from the git-ignored `data/e2e-password.txt`. A machine that has
|
||||
`FEUERWERK_E2E_PASSWORD` or from the git-ignored `data/e2e-password.txt`. A machine that has
|
||||
neither fails with a message saying exactly that — see [Accounts](Accounts).
|
||||
|
||||
**A run needs a working GPU.** An idle editor page keeps rendering a picture that never changes, and
|
||||
@@ -62,13 +62,13 @@ integration*), so locally take only what the change needs: the gate, plus the st
|
||||
roughly 0.8 of the four cores of this box (60% renderer, 18% GPU process, load ~1.0), but four
|
||||
minutes of waiting buys nothing the push does not give.
|
||||
|
||||
**`./e2e.sh start` runs the suite detached**, in a transient `game-maker-e2e.service`, and returns at
|
||||
**`./e2e.sh start` runs the suite detached**, in a transient `feuerwerk-e2e.service`, and returns at
|
||||
once; output goes to `logs/e2e-<date>_<time>.log` (gitignored) and ends in `=== E2E EXIT n ===`.
|
||||
Backgrounding it from a shell instead is not enough — four runs in a row died mid-suite with no
|
||||
closing line, because the whole process group is killed when the calling shell exits (`nohup` only
|
||||
covers SIGHUP, and `/proc/vmstat` confirmed `oom_kill 0`, so it was never memory). The unit outlives
|
||||
its caller. It takes the same `GM_STEPS` argument, refuses to start a second run over a live one, and
|
||||
`systemctl stop game-maker-e2e.service` ends it.
|
||||
`systemctl stop feuerwerk-e2e.service` ends it.
|
||||
|
||||
**`./e2e.sh status`** reports the live run (elapsed, PASS/FAIL so far, the check it is on) or, when
|
||||
nothing is running, the newest log's result plus its FAIL lines. A log without a closing line is
|
||||
@@ -327,14 +327,14 @@ Every push runs the whole proof on the Gitea runner: `.gitea/workflows/ci.yml` i
|
||||
`http://127.0.0.1:8080/feuerwerk/` with `php -S` — the build wires its assets absolutely under
|
||||
`/feuerwerk/dist/`, so the path segment is not optional — and writes the empty project files the
|
||||
seeders need (`PUT` does not create a project, `POST` hands out a random id). Every tool takes its
|
||||
server from `GAME_MAKER_BASE_URL`.
|
||||
server from `FEUERWERK_BASE_URL`.
|
||||
|
||||
The jobs run in the image from `tools/ci/Dockerfile`: chromium with the Vulkan drivers and
|
||||
`xvfb`, `php-cli`, `ffmpeg` for the video worker (#402, `serve.sh` starts it beside the server),
|
||||
and the host's font packages, because the checks measure text widths to find click points. A
|
||||
change to the Dockerfile needs the image built again on both runners' hosts. `ci.yml` asks for the label **`game-maker-wsl`** (#283): a runner in a WSL2 distro
|
||||
change to the Dockerfile needs the image built again on both runners' hosts. `ci.yml` asks for the label **`feuerwerk-wsl`** (#283): a runner in a WSL2 distro
|
||||
on a Windows machine with an RTX 4070, so this host no longer carries the suite. The runner on
|
||||
this host is still registered with the label `game-maker-ci` and the same image; pointing both
|
||||
this host is still registered with the label `feuerwerk-ci` and the same image; pointing both
|
||||
`runs-on` back at that label moves the runs here again.
|
||||
|
||||
The **GPU is not in this repo**. It comes from `container.options` in each runner's own
|
||||
@@ -343,7 +343,7 @@ The **GPU is not in this repo**. It comes from `container.options` in each runne
|
||||
- **Here:** `/dev/dri/renderD128` and a 1 GB `/dev/shm`. Measured in the job container:
|
||||
`ANGLE (Intel, Vulkan 1.3.230, HD Graphics 630)`, WebGL 2.0.
|
||||
- **Under WSL2:** `/dev/dxg`, the Windows driver libraries from `/usr/lib/wsl` and the same
|
||||
`/dev/shm`, plus `GAME_MAKER_BROWSER=wsl` from the runner's `envs`. There is no DRM render node
|
||||
`/dev/shm`, plus `FEUERWERK_BROWSER=wsl` from the runner's `envs`. There is no DRM render node
|
||||
and no Vulkan there, and a headless chromium gets no WebGL at all. In this mode
|
||||
`tools/lib/browser.mjs` starts an invisible Xvfb and an X11 chromium on ANGLE/GL, which reaches
|
||||
the GPU through Mesa's d3d12 driver: `ANGLE (Microsoft Corporation, D3D12 (NVIDIA GeForce RTX
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@ properties in an inspector and press **Play** — all in one program, all drawn
|
||||
WebGL canvas. The old address `nockal.com/game-maker/` leads here, and old play links still work.
|
||||
|
||||
Live: <https://nockal.com/feuerwerk/> · Widget playground: <https://nockal.com/feuerwerk/?playground>
|
||||
· Code: <https://git.nockal.com/meleki/game-maker>
|
||||
· Code: <https://git.nockal.com/meleki/feuerwerk>
|
||||
|
||||
## Using the editor
|
||||
|
||||
@@ -48,7 +48,7 @@ Live: <https://nockal.com/feuerwerk/> · Widget playground: <https://nockal.com/
|
||||
|
||||
## Ideas, gaps and bugs
|
||||
|
||||
They live in the issue tracker of the Gitea repo: <https://git.nockal.com/meleki/game-maker/issues>.
|
||||
They live in the issue tracker of the Gitea repo: <https://git.nockal.com/meleki/feuerwerk/issues>.
|
||||
The folder `todo-notes/` that held them as files until 2026-09-12 is gone; all 50 notes were moved
|
||||
into issues #1-#50, closed ones included, each carrying the commits it was filed and finished with.
|
||||
|
||||
|
||||
+4
-4
@@ -81,8 +81,8 @@ the line and an outlined rectangle or ellipse, **Filled shapes** with rectangle
|
||||
**Contiguous** with fill. The picker has none.
|
||||
|
||||
There are no keyboard shortcuts for the tools yet. Selecting, copying and mirroring are
|
||||
[#198](https://git.nockal.com/meleki/game-maker/issues/198), more tools (symmetry, lasso, dithering,
|
||||
replacing a colour) are [#200](https://git.nockal.com/meleki/game-maker/issues/200).
|
||||
[#198](https://git.nockal.com/meleki/feuerwerk/issues/198), more tools (symmetry, lasso, dithering,
|
||||
replacing a colour) are [#200](https://git.nockal.com/meleki/feuerwerk/issues/200).
|
||||
|
||||
## Layers
|
||||
|
||||
@@ -143,7 +143,7 @@ Undo swaps names, so it never waits for the server. The format is in the [API](A
|
||||
|
||||
## Known limits
|
||||
|
||||
- No import of an existing texture yet ([#197](https://git.nockal.com/meleki/game-maker/issues/197))
|
||||
and no export as PNG ([#199](https://git.nockal.com/meleki/game-maker/issues/199)).
|
||||
- No import of an existing texture yet ([#197](https://git.nockal.com/meleki/feuerwerk/issues/197))
|
||||
and no export as PNG ([#199](https://git.nockal.com/meleki/feuerwerk/issues/199)).
|
||||
- The palette is edited in the Pixel art tab; selecting the palette asset itself shows no colours.
|
||||
- A cel file stays on the server when nothing names it any more, as an uploaded image does.
|
||||
+2
-2
@@ -292,12 +292,12 @@ a job for it into `data/videos/queue/` (hidden from the web server), and a worke
|
||||
the other, oldest first. A failed job leaves the upload where it is, so it can still be downloaded.
|
||||
A job from before uploads were kept has its bytes hidden in the queue, and they go once it is done:
|
||||
|
||||
- On stein2 that is the container **`game-maker-video`**: PHP and ffmpeg on Debian 12, the
|
||||
- On stein2 that is the container **`feuerwerk-video`**: PHP and ffmpeg on Debian 12, the
|
||||
checkout mounted, running as `www-data` without a network, on at most 3 of the 4 cores. It is
|
||||
a compose project of its own beside the web stack:
|
||||
`docker compose -f tools/video/compose.yml up -d`. The image is built like the CI image (see
|
||||
the head of `tools/video/Dockerfile`); a change to the worker's PHP needs a restart, not a
|
||||
rebuild. `docker logs game-maker-video` shows one line per video, with how long it took.
|
||||
rebuild. `docker logs feuerwerk-video` shows one line per video, with how long it took.
|
||||
- In CI, `tools/ci/serve.sh` starts the same worker beside the PHP server; the CI image has ffmpeg.
|
||||
|
||||
The worker is `tools/video-worker.php` over `api/lib/VideoWorker.php`; the rules (size, frame
|
||||
|
||||
+1
-1
@@ -34,4 +34,4 @@
|
||||
- [Plugins](Plugins)
|
||||
- [Development](Development)
|
||||
- [API](API)
|
||||
- [Issues](https://git.nockal.com/meleki/game-maker/issues)
|
||||
- [Issues](https://git.nockal.com/meleki/feuerwerk/issues)
|
||||
Reference in new issue
Block a user