Minor Changes
- #922
fcb33deThanks @Priyanshubhartistm! - feat(payments): add per-plan event rate limits and retention
Patch Changes
-
#1009
ad8c5c4Thanks @chappie-daemon! - build: pin the node base image in every file that names oneDockerfilepinnednode:24.22.1-alpineby digest, butDockerfile.railwayapp,Dockerfile.test,docker-compose.ymlandtest/integration/docker-compose.ymlstill saidnode:24-alpine. The relay image, the CI image, the Railway image and both migration containers could each start from a different base, and a floating tag moves under a release — so the same commit built twice could run different node code without a change saying so.All five now carry the same tag and digest, and a unit test holds them there: it fails if any reference loses its digest, and it fails if two different references appear.
-
#1010
fa54cb0Thanks @chappie-daemon! - fix(settings): state that rate-limit periods are milliseconds and reject a period that is not oneEvery shipped limit counts in milliseconds —
1000,60000,900000,3600000— but nothing said so.RateLimit.periodis a barenumber, so an operator writingperiod: 60for a minute got a 60 ms window — and becauserateis hits per window, that is a limit a thousand times looser than intended, honoured without complaint, and caught by nothing.The unit is now stated on
RateLimitand on everyrateLimitsblock inresources/default-settings.yaml, andvalidateRateLimitPeriodsrejects what cannot be a count of milliseconds: a fraction, a string, a non-number, or anything below one millisecond. A whole number is not enough to tell 60 from 60000, which is why the unit is documented where it is set.