Dashboard polish, mind map v3, and replies that never double
A pass of dashboard UX, a rebuilt patient mind map, and a fix that stops the agent from ever replying twice.
- Added
- Triage-sorted roster. Risk surfaces first with a pink edge, then unanswered, with pending patients sinking to the bottom, each carrying a new-activity dot.
- Vitals strip on patient detail. Mood with its delta and a 14-point sparkline, last sleep, last contact with a presence dot, and texts in the last 7 days.
- Sticky section nav with live counts, conversation day dividers with clock times, and skeleton loading rows.
- Thought-pattern detection from reflections into the clinician evidence map, with neutral probes, verbatim snippets, confidence, and explicit review boundaries.
- Improved
- Mind map v3. Duplicate labels collapse into one node, sectors size by signal volume, the center ring tints to the latest mood, leaves fade by age, and pressing a hub jumps to the journal.
- Keyboard support throughout. Enter adds a patient, Esc cancels a comment, focus rings on pills, rows, tabs, and inputs, and a Saved confirmation after edits.
- Pending rows now state the concrete next step instead of sitting blank.
- Fixed
- The agent can no longer double-reply. Inbound messages dedupe by provider id, and a similarity guard regenerates a draft when it echoes the previous message.
A faster roster, a mind map that reflects signal volume and recency, and a fix so a redelivered text never triggers a second reply.