sanitizeForDiscord() replaced workspace paths with <disclaw> before
parseAttachments() could read them, making all resolved paths invalid.
Fix: extract attach paths from raw result.text first, then sanitize
the marker-free text. sendResponse() accepts pre-resolved paths to
skip redundant re-parsing.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Status reactions on messages: 👀 on enqueue, ✅ on success, ❌ on any error
- Typing interval raised from 5s to 8s
- src/discord/send-response.ts: text >4000 chars sent as response.md attachment
- src/discord/attachment-inbox.ts: downloads Discord attachments into .disclaw-inbox/, cleanupInbox() removes files older than 24h
- src/router.ts: input limit guard at 4000 chars (⚠️ reaction + hint message), processAttachments hints injected into prompt
- Unit tests: send-response.test.ts, attachment-inbox.test.ts (107 tests, all green)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>