[ ContextVM/wotrlay ] fix(rate-limiting): replace IP-based rank refresh limiting with global relay-wide limiter
Refactor the rank lookup mechanism to use a global relay-wide rate limiter instead of per-IP group limiting, preventing high-ranked users behind VPNs or shared IPs from being incorrectly assigned rank=0. This fixes abuse protection while preserving stale cache data on limit hits.
Add design document `ip-rate-limiting-fix.md` detailing the problem, root cause, and implementation options.
Update configuration variable from `RANK_QUEUE_IP_DAILY_LIMIT` to `GLOBAL_RANK_REFRESH_LIMIT` with new default of 500 requests per second.
BREAKING CHANGE: Configuration variable `RANK_QUEUE_IP_DAILY_LIMIT` is removed and replaced with `GLOBAL_RANK_REFRESH_LIMIT`. Update environment variables accordingly.
[ ContextVM/wotrlay ] build(docker): optimize build process and exclude large data files
- Improve Dockerfile layer caching by copying go mod files first
- Strip binary for smaller size and use specific Alpine version
- Exclude data directories and BadgerDB files in .dockerignore
- Remove version field from docker-compose.yml for compatibility
[ psic4t/nospeak ] fix(android): show notifications for other chats while viewing a conversation
Previously, all notifications were suppressed when the app was in the
foreground. Now notifications are only suppressed for the conversation
the user is actively viewing, allowing messages from other chats to
trigger notifications as expected.