Released version 3.2.12
A hardening release. Crafted or malformed request parameters that used to slip through as uncaught 500s now degrade gracefully to 4xx. If your site gets probed by scanners β and it does β these three fixes turn a batch of "Server Error" reports into clean Bad Request / Not Found responses.
- Self-links no longer crash on bad input β when a presenter builds a link to the current page (
redirect('this'),forward('this'),isLinkCurrent('this'), typically from a language switcher) while the current URL carries a parameter that doesn't fit the action's typed signature (e.g.?id=abcforint $id), the framework raised an uncaughtInvalidLinkException(HTTP 500). It now reports a properBadRequestException(4xx) through the newInvalidRequestParameterException. Explicitly passed bad link arguments still throwInvalidLinkException, so genuine programmer mistakes stay visible. - Numeric component ids no longer trigger a TypeError β a crafted query key such as
?1-foo=barproduced a numeric component id that hitgetComponent()'sstringtype hint and threw aTypeError(HTTP 500). The id is now cast to string and the request is handled gracefully. - Routing panel survives weird parameters β a request like
?do[]=xcould crash Tracy's routing panel during development. It now skips non-string presenter/signal/action values instead of throwing.