Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,10 +159,17 @@ typecheck and the build all stay silent. It reads the literal `t("…")` form on
write one. Keys no screen asks for are reported and never failed on: deleting a
screen should not be harder than adding one.

`check:api` is not a gate yet: it prints the endpoints the HTTP layer calls, and
only checks them when handed an OpenAPI document —
`npm run check:api -- openapi.json`. It becomes a gate the day the Server
publishes one.
`check:api` is not a gate: it prints the endpoints the HTTP layer calls, and
compares them only when handed an OpenAPI document —
`npm run check:api -- ../AlgoJudge-Server/openapi.json`. **The Server commits
one**, generated from its running container, and `check:events` reads
`events.json` beside it the same way.

So the comparison is available and CI does not make it. What stands between here
and a gate is that no CI job has the Server's document to hand, which is a
decision nobody has made rather than a thing being waited for. Both are run
against the Server's released tag when this repository is released, and
`docs/RELEASE.md` says how.

**Browsers are closed by pid, never by image name.** `taskkill /IM chrome.exe`,
`Stop-Process -Name chrome` and `pkill chrome` close whatever somebody is reading
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ the fake or the real HTTP client. See *Running without a Server*.
| Area | Where |
|---|---|
| Activities, problems, submissions, source view, ranking, questions | `src/pages/` |
| Manager panel — sixteen screens, from activities to the LTI platforms | `src/pages/manager/` |
| Manager panel — seventeen screens, from activities to the LTI platforms | `src/pages/manager/` |
| Sign in and register | wired to the Server |
| Live status over WebSocket | `src/api/ws/WebSocketEvents.ts`, mounted as `<EventsProvider>` in `src/App.tsx` |
| Renderer registry keyed by the `name@version` discriminator | `src/renderers/TypeRegistry.ts`, registered in `src/renderers/index.ts` |
Expand Down Expand Up @@ -153,11 +153,11 @@ Released images are pushed to GitHub's container registry when a `v*` tag is
pushed:

```bash
docker pull ghcr.io/algojudge/algojudge-client:0.1.1
docker pull ghcr.io/algojudge/algojudge-client:0.2.0
```

`0.1.1`, `0.1`, `0` and `latest` all point at the same image. **A prerelease
(`v0.1.1-rc.1`) publishes only its own tag** — nothing moving follows it, so
`0.2.0`, `0.2`, `0` and `latest` all point at the same image. **A prerelease
(`v0.2.0-rc.1`) publishes only its own tag** — nothing moving follows it, so
`latest` is never a release candidate.

## Docker
Expand All @@ -167,7 +167,7 @@ in the final image.

```bash
docker run -p 8080:80 -e API_BASE_URL=https://api.example.org \
ghcr.io/algojudge/algojudge-client:0.1.1
ghcr.io/algojudge/algojudge-client:0.2.0
```

**One image serves every installation.** The address is read from the
Expand Down
Loading
Loading