v1.29.1 -- production fixes
"Production fixes" release.
Mobile. Zero mobile/ diffs on this release. The current mobile build (version 1.29.0, versionCode 10) remains current; no new APK for v1.29.1.
Fixed
- Login lockout keyed on (IP, username) (#422): the login rate-limiter keyed the lockout on the remote IP alone, so behind a shared NAT egress one person's five failed logins returned HTTP 429 to everyone behind that IP for 15 minutes, correct passwords included. The lockout is now keyed on
(IP, username), so one user's failures lock only that user's attempts from that IP. - Show the actual carrier when the ship method contradicts it (#422): the Sales Order detail rendered
ship_methodverbatim, so an order that shipped on a different carrier (a USPS-named service moved onto a 1Z UPS label) read misleadingly above its tracking number. The Ship Method line now surfaces the carrier derived from the tracking-number format when it disagrees ("USPS Ground Advantage (shipped UPS)"). Display-only:ship_methodand the outboundship.confirmedservice level are unchanged.