Clone this repository
For self-hosted knots, clone URLs may differ based on your setup.
Download tar.gz
Following atProto best practices, community profile records now only contain
user-controlled data. Handles are mutable and resolved from DIDs via PLC, so
they should not be stored in immutable records. Member/subscriber counts are
AppView-computed stats, not record data.
Changes:
- Remove 'handle' field from community profile record creation
- Remove 'handle' field from community profile record updates
- Remove 'memberCount' and 'subscriberCount' from profile records
- Update E2E test to not expect handle in PDS record
- Update consumer test mock data to match new record schema
AppView caching (Go structs) still maintains these fields for performance:
- service.go:190 - Community struct keeps Handle field
- community_consumer.go:159,241 - Consumer reads handle for caching
This matches Bluesky's app.bsky.actor.profile pattern where handles are
resolved from DIDs, not stored in profile records.
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update cross-reference tests to use new defs locations
- Remove handle field from actor profile test data
- Update invalid test case to check for missing createdAt instead of handle
- Clean up test data for removed lexicons (block, saved, preferences)
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Actor changes:
- Remove handle from actor.profile record (resolved from DID, not stored)
- Remove geoLocation from actor.profile (not implemented)
- Remove verification fields from profile (AppView concern, not record data)
- Remove federation fields from profile (AppView concern, not record data)
- Remove moderation fields from profile (AppView concern, not record data)
- Update actor.getProfile to return profileViewDetailed from defs
- Update actor.updateProfile to remove geoLocation reference
Community changes:
- Remove handle from community.profile record (resolved from DID, not stored)
- Remove memberCount, subscriberCount from record (AppView cached stats)
- Remove federatedFrom, federatedId from record (AppView metadata)
- Remove federation and contentRules from record (not implemented)
- Update community.get to return communityViewDetailed from defs
- Update community.list to return communityView array from defs
Key principle: Records contain only user-controlled data. Computed stats,
cached values, and viewer state live in AppView views (defs.json), not records.
Following atProto best practices per:
https://github.com/bluesky-social/atproto/discussions/4245
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add social.coves.actor.defs.json with profileView, profileViewDetailed,
profileStats, viewerState, and geoLocation definitions
- Add social.coves.community.defs.json with communityView, communityViewDetailed,
communityStats, and viewerState definitions
- Remove unimplemented actor lexicons: block, blockUser, unblockUser, saved,
saveItem, unsaveItem, getSaved, preferences
- Remove duplicate actor.subscription (replaced by community.subscription)
Following atProto best practices: reusable definitions in defs.json,
removing unimplemented features from pre-production codebase.
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Applied atProto best practices from https://github.com/bluesky-social/atproto/discussions/4245
Changes:
- getMembers.json: Changed 'enum' to 'knownValues' for sort parameter to allow schema evolution
- profile.json: Removed 'visibility' and 'moderationType' from required fields (both have defaults)
These changes improve forward compatibility and follow atProto lexicon design guidelines
while maintaining full backward compatibility with existing code.
Impact: Zero breaking changes - all tests pass, service layer already handles defaults.
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>