…anscript
User messages containing <command-message>/<command-name> XML tags
(skill invocations like /roborev-fix 450) were incorrectly filtered
out by isClaudeSystemMessage. Instead of discarding these messages,
extract the command name and arguments into readable text
(e.g. "/roborev-fix 450") and display them as normal user messages.
The extraction only matches messages whose entire content is the
command XML envelope (no trailing prose), preventing false positives
on user messages that merely mention these tags. Bare
<command-message>-only entries are handled via fallback. Unrecognized
command envelopes are skipped rather than leaking raw XML.
Also strips UTF-8 BOM in extractCommandText and isCommandEnvelope
consistent with isClaudeSystemMessage, and removes the matching
frontend filter in MessageList.svelte.
Bumps dataVersion to 5 so existing databases automatically resync.
Fixes wesm#206
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Summary
<command-message>/<command-name>XML tags (skill invocations like/roborev-fix 450) were incorrectly filtered out byisClaudeSystemMessage, causing sessions started with a slash command to show no first user message/roborev-fix 450) and displays them as normal user messages<command-message>-only entries and safe skipping of unrecognized envelopesMessageList.sveltedataVersionto 5 so existing databases automatically resyncFixes #206
Test plan
TestExtractCommandText— 9 cases covering both envelope formats, with/without args, prose false positives, bare fallbackTestIsClaudeSystemMessage— updated to verify command tags are no longer filteredTestParseClaudeSession_SkippedMessages— integration tests for skill invocations appearing as user messages🤖 Generated with Claude Code