Artifact comments track when the server delivered them, so you should stop seeing the same comment twice.
What's wrong with this entry?
Comment state now records when the server actually handed a comment to Claude, and the client uses that instead of local bookkeeping to decide what has already been shown.
- The comment schema gained sent_to_claude, sent_to_claude_degraded and awaiting_reply.
- The client maps the server's to_claude_at into toClaudeAt and toClaudeAtDegraded.
- A helper parses the timestamp and returns null when it cannot be parsed, so an unreadable value is treated as not-yet-delivered rather than crashing.
to_claude_at
Strings lifted out of the shipped bundle, so the claim above can be checked against them.