feat(community): align list endpoint to lexicon spec master
Align social.coves.community.list handler to lexicon specification following atProto standards. **Changes:** - Add visibility parameter (public/unlisted/private) to lexicon - Implement sort enum mapping (popular→subscriber_count, active→post_count, new→created_at, alphabetical→name) - Add input validation for sort and visibility parameters - Enforce limit bounds (1-100, default 50) - Update ListCommunitiesRequest struct with new parameters - Remove deprecated hostedBy parameter **atProto Compliance:** - Use string cursor type (not int) - Remove undocumented "total" field (follows Bluesky patterns) - Eliminate COUNT query for better performance - Return empty cursor when pagination complete **Performance:** - Single query instead of COUNT + SELECT - Proper cursor-based pagination **Code Quality:** - Fix magic number in GetDisplayHandle (11 → len(".community.")) - Add TODO comments for future category/language filters Addresses lexicon contract violations and follows atProto design patterns from bluesky-social/atproto#4245. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>