feat(dashboard): human-issue UX — markdown + inline answer + Ask Hermes #21

Merged
kaykayyali merged 1 commits from feat/dashboard-human-issue-ux into main 2026-06-26 14:11:22 +00:00
Owner

Summary

Upgrades the Damascus dashboard's human-issue surface so that humans responding to awaiting_human work items get:

  1. Markdown rendering for question text (lists, bold, code, line breaks)
  2. Inline "Answer" button on the OpenIssues list widget (no need to open the drawer for triage)
  3. "Ask Hermes" hand-off button that prefills the textarea with a Hermes-generated draft (human always reviews and clicks Submit themselves)

What's included

UI (ui/)

  • react-markdown@9.1.0 + remark-gfm@4.0.1
  • New src/components/AnswerPopover.tsx — shared popover (drawer + list widget)
  • OpenIssues.tsx — markdown render + inline answer
  • ItemDrawer.tsx — markdown render for the answer prompt
  • useAskHermes hook + AskHermesResponse type
  • Updated unit tests for new testids and mock returns

Backend (src/damascus/)

  • POST /v1/issues/{id}/ask-hermes — emits hermes_ping event (queued) or echoes the existing answer (answered)
  • AskHermesStatus + AskHermesResponse schemas
  • 4 new API tests for the endpoint

Tests

  • UI: 28/28 unit tests pass (npx vitest run)
  • API: 44/44 pass (pytest tests/api/) — 34 existing + 4 new + 6 from earlier patches
  • Build: npm run build clean
  • Typecheck: tsc --noEmit clean

See also

  • docs/human-issue-ux.md — full flow + migration notes

Not included (deferred)

  • Playwright e2e spec (lost from earlier session; out of scope of this recovery)
  • Pre-existing P5 Items.tsx mount-time writeHash bug — separate follow-up
## Summary Upgrades the Damascus dashboard's human-issue surface so that humans responding to `awaiting_human` work items get: 1. **Markdown rendering** for question text (lists, **bold**, `code`, line breaks) 2. **Inline "Answer" button** on the OpenIssues list widget (no need to open the drawer for triage) 3. **"Ask Hermes" hand-off button** that prefills the textarea with a Hermes-generated draft (human always reviews and clicks Submit themselves) ## What's included ### UI (`ui/`) - `react-markdown@9.1.0` + `remark-gfm@4.0.1` - New `src/components/AnswerPopover.tsx` — shared popover (drawer + list widget) - `OpenIssues.tsx` — markdown render + inline answer - `ItemDrawer.tsx` — markdown render for the answer prompt - `useAskHermes` hook + `AskHermesResponse` type - Updated unit tests for new testids and mock returns ### Backend (`src/damascus/`) - `POST /v1/issues/{id}/ask-hermes` — emits `hermes_ping` event (queued) or echoes the existing answer (answered) - `AskHermesStatus` + `AskHermesResponse` schemas - 4 new API tests for the endpoint ## Tests - UI: 28/28 unit tests pass (`npx vitest run`) - API: 44/44 pass (`pytest tests/api/`) — 34 existing + 4 new + 6 from earlier patches - Build: `npm run build` clean - Typecheck: `tsc --noEmit` clean ## See also - `docs/human-issue-ux.md` — full flow + migration notes ## Not included (deferred) - Playwright e2e spec (lost from earlier session; out of scope of this recovery) - Pre-existing P5 `Items.tsx` mount-time `writeHash` bug — separate follow-up
kaykayyali added 1 commit 2026-06-26 14:10:32 +00:00
feat(dashboard): human-issue UX — markdown + inline answer + Ask Hermes
Some checks failed
test / contract-and-unit (pull_request) Failing after 15s
01607f4d9e
- react-markdown@9.1.0 + remark-gfm@4.0.1 for question rendering
- AnswerPopover component (shared between drawer + OpenIssues widget)
- OpenIssues: markdown render + inline 'Answer' button per row
- ItemDrawer: markdown render for the answer prompt
- useAskHermes hook + AskHermesResponse schema
- POST /v1/issues/{id}/ask-hermes — emits hermes_ping event
  (queued) or echoes existing answer (answered)
- Tests: 4 new API tests for /ask-hermes, updated UI tests
  for new popover trigger + mock returns
- docs/human-issue-ux.md — flow + migration notes

The 'Ask Hermes' flow: UI pings the backend, backend emits an
event for the leader (operator session) to pick up, leader drafts
an answer and POSTs back via the existing answer endpoint. UI
prefills the textarea — never auto-submits, the human always
reviews and clicks Submit.
kaykayyali merged commit 90b218243d into main 2026-06-26 14:11:22 +00:00
kaykayyali deleted branch feat/dashboard-human-issue-ux 2026-06-26 14:11:22 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kaykayyali/damascus-orchestrator#21