feat: implement Bluesky chat notifications for change requests
Without this patch, project owners had no way to be notified when
someone submitted a change request for their project, requiring them
to manually check for proposals.
This is a problem because it creates friction in the change request
workflow and may result in proposals being overlooked or delayed.
This patch solves the problem by implementing a complete Bluesky chat
notification system that:
- Adds chat.bsky scope to OAuth authentication flow
- Implements proper ATProto chat API integration using withProxy method
- Sends DM notifications to project owners when change requests are created
- Provides fallback UI messaging when chat notifications fail
- Includes comprehensive change request viewer with diff comparison
- Documents all implementation attempts and solutions in CHAT_API_ATTEMPTS_LOG.md
Key technical breakthrough: Using agent.withProxy('bsky_chat', 'did:web:api.bsky.chat')
for proper service routing to Bluesky's chat infrastructure.
The system gracefully handles privacy settings where users only accept
messages from followers, providing appropriate error messaging.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
authored by Adam Spiers Claude and committed by Tangled 05fb7e2a 9e91a892