Two bugs from the formatting work, both visible in the CRM messenger:
1. Inline code / code blocks were invisible in your OWN bubbles. `.miu-code` sets
background: --miu-panel-2 (#1d1d26) while the is-mine override set only the
colour to --miu-accent-text (#1a1206) — near-black on near-black, ~1.03:1
contrast. The chip now tints the accent bubble (rgba(0,0,0,.16)) instead of
using the panel colour, so it reads against any accent.
2. The conversation list showed the raw last message, so a strikethrough message
previewed as "~crazy~". Adds stripMarkup() — markers off, code unwrapped,
nesting handled, honouring the same word-boundary rule so snake_case_name and
"5 * 3" survive — and uses it for the preview line.
Bumped to 0.1.10. SDK suite: 17 files / 98 tests green.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Adds a third membership beyond dm/group: a discoverable, joinable room.
- contract: Membership += 'channel'; Conversation.topic; ChannelSummary +
CreateChannelInput; optional adapter methods browseChannels/createChannel/
joinChannel/leaveChannel (capability-degrading — absent hides the UI)
- MockAdapter implements them (seeds a joined public, a joinable public, and a
private channel); listConversations now returns only threads I'm in
- useChannels hook (browse/create/join/leave + supported flag)
- UI: sidebar sections (Channels vs Direct messages), a + that opens a
ChannelBrowser (join + create), # / lock glyphs; themeable styles
- KernelClientAdapter passes channel membership + topic through
- 4 channel tests (mock browse/join/create + render browse→join); 52 total green
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Turns the SDK from hooks-only into a real UI SDK: <Messenger> (conversation
list + open thread + composer), plus <ConversationList> and <Thread>, all
driven by the existing useConversations/useMessages hooks over the injected
adapter — zero transport imports (boundary intact).
- themeable via --miu-* CSS variables; default theme ships as ./styles.css
- optimistic send, typing indicator, seen ticks, reactions display, unread badges
- render smoke tests (jsdom + MockAdapter): mounts, auto-selects first thread,
sends a message, switches threads (3 tests) — 48 total green
- tsup: css bundled to dist/styles.css; dts scoped to TS entries
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>