diff --git a/TODO.md b/TODO.md index 4a48921..f4f1dce 100644 --- a/TODO.md +++ b/TODO.md @@ -31,27 +31,6 @@ P2: security: per-IP rate limiting on the image routes # Completed Steps -- 2026-10-04 `config.yml` stays out of git and the Docker build context (closes - #212): `.gitignore` now ignores `config.yml`, the config file Getting Started - creates with the signing key, and `.dockerignore` leaves it out in every - directory and in any letter case, as it already did `config.yaml` and - `config.dev.yml`. -- 2026-10-04 local config files stay out of the Docker build context (closes - #211): `.dockerignore` now leaves out `config.yaml` and `config.dev.yml` in - every directory and in any letter case, the local config files `.gitignore` - keeps out of git because they can hold the signing key. - `configs/config.example.yml` is still sent. `config.yml`, which Getting - Started creates, is in neither file: - https://git.eeqj.de/sneak/pixa/issues/212. -- 2026-10-04 `cmd/pixad/main.go` is one call into `internal/` (closes #206): - what it did (the command line and its `--config` flag, setting - `PIXA_CONFIG_PATH`, ignoring `SIGPIPE`, starting the fx app) is now `Run` in - `internal/app`, unchanged, and `main` calls it with `Version`, which the build - still sets through `-X main.Version`. That code had no tests to move. -- 2026-10-04 `.gitignore` ignores `.claude/` (closes #204): the entry and its - comment are copied from the canonical `.gitignore` in `sneak/prompts`, - unanchored so it matches at every depth. `.dockerignore` already has - `.claude`. - 2026-10-04 load test (closes #81): `script/loadtest [duration [clients]]` (`make loadtest`, defaults `10s` and `4`), a benchmark that `script/check` does not run, measures three scenarios, each against a new pixad container and @@ -67,6 +46,18 @@ P2: security: per-IP rate limiting on the image routes not pixad's limit); `miss` 70 r/s, p50 52 ms, p95 91 ms, p99 122 ms, peak 100 MiB, one fetch per request; `herd` 74 r/s, p50 52 ms, p95 69 ms, p99 111 ms, peak 60 MiB, 188 fetches for 749 requests. +- 2026-10-04 `config.yml` stays out of git and the Docker build context (closes + #212): `.gitignore` now ignores `config.yml`, the config file Getting Started + creates with the signing key, and `.dockerignore` leaves it out in every + directory and in any letter case, as it already did `config.yaml` and + `config.dev.yml`. +- 2026-10-04 local config files stay out of the Docker build context (closes + #211): `.dockerignore` now leaves out `config.yaml` and `config.dev.yml` in + every directory and in any letter case, the local config files `.gitignore` + keeps out of git because they can hold the signing key. + `configs/config.example.yml` is still sent. `config.yml`, which Getting + Started creates, is in neither file: + https://git.eeqj.de/sneak/pixa/issues/212. - 2026-10-04 `cmd/pixad/main.go` is one call into `internal/` (closes #206): what it did (the command line and its `--config` flag, setting `PIXA_CONFIG_PATH`, ignoring `SIGPIPE`, starting the fx app) is now `Run` in diff --git a/script/loadtest b/script/loadtest index 885b283..bcc361e 100755 --- a/script/loadtest +++ b/script/loadtest @@ -51,8 +51,10 @@ main() { "" | *[!0-9]*) usage ;; esac [ "$number" -gt 0 ] || usage + # The number of clients is a whole number that does not start with 0, + # which also refuses zero: vegeta reads a leading 0 as octal. case "$clients" in - *[!0-9]* | 0) usage ;; + *[!0-9]* | 0*) usage ;; esac cd "$ROOT"