fix(subscriptions): translate bsky delivery errors to actionable text
when the bot fails to DM a subscriber the raw error (e.g.
"FetchFailed: getConvo bad_request: NotFollowedBySender") meant
nothing to the user. now we map known bsky chat error codes to
friendly text with an action link:
- NotFollowedBySender / ActorNotMessageable →
"bsky blocked this DM — follow @pub-search.waow.tech or set your DM
preference to 'Everyone'" with a direct profile link
- RateLimit / TooManyRequests → "bsky rate-limited us, will retry"
- LoginFailed / BotNotConfigured → "server problem, not yours"
raw error still shown underneath in dim italic for debugging.
fallback: show raw for unknown codes.
Co-Authored-By: Claude Opus 4 (1M context) <noreply@anthropic.com>