- Add settings.ts module for settings-store subscription
- Monitor subscribes to moltbot/tlon settings bucket
- groupChannels, dmAllowlist, channelRules hot-reload without restart
- Settings store values override file config when present
- Graceful fallback if settings store not available
- Switch from per-channel subscriptions to firehose (/v2 channels, /v3 chat)
- Parse sect field for @all mentions
- Add @all as trigger for bot responses (like direct mention)
- Fetch bot nickname from contacts on startup (/contacts/v1/self.json)
- Subscribe to contacts updates (/v1/news) for live nickname changes
- Improve rich text parsing (inline-code, bold, italic, strike, blockquote)
- Parse image blocks and include src URL in message text
- Handle code blocks with language info
- Handle header and cite/quote blocks
- Extract bold/italic/strike text from inline formatting
- Add buildMediaStory() to create proper Story blocks with images
- Add sendDmWithStory() and sendGroupMessageWithStory() variants
- Parse markdown images  into proper Tlon image blocks
- Add isImageUrl() helper for image extension detection
- Update sendMedia to use native image blocks instead of text fallback
The monitor already maintains an SSE connection for inbound messages.
Opening another EventSource for outbound pokes causes conflicts.
This uses a simple HTTP PUT to the channel endpoint instead.
Adds built-in Tlon (Urbit) channel plugin to support decentralized messaging on the Urbit network.
Features:
- DM and group chat support
- SSE-based real-time message monitoring
- Auto-discovery of group channels
- Thread replies and reactions
- Integration with Urbit's HTTP API
This resolves cron delivery issues with external Tlon plugins by making it a first-class built-in channel alongside Telegram, Signal, and other messaging platforms.
Implementation includes:
- Plugin registration via ClawdbotPluginApi
- Outbound delivery with sendText and sendMedia
- Gateway adapter for inbound message handling
- Urbit SSE client for event streaming
- Core bridge for Clawdbot runtime integration
Co-authored-by: William Arzt <william@arzt.co>