- Markdown rendering on operator notesCloses the named rev-110 next-sprint candidate. Mirrors the rev-110 memory markdown render at the rev-14 operator-notes axis. Notes โฅ80 chars or carrying markdown syntax now render with structured headings, lists, code blocks, and links instead of as a flat block. Same gating threshold as rev 110 so short one-line steering stays plain text. New .ld-operator-note-md typography overrides tighten the rev-10 .app-item-md spacing for the note-row context (notes live inside a constrained <ol> already so the default rhythm reads too airy). Closes the rendering symmetry trio across artifacts (rev 10), memory (rev 110), operator notes (rev 111).
- Markdown rendering on task comments โ preserves @-mention pillsExtends the rev-10 / rev-110 / rev-111 markdown rendering to the rev-26 task discussion thread. New renderCommentMarkdown() helper in src/lib/markdown.ts runs the standard escape โ marked โ external-link pass, then post-processes the resulting HTML to wrap @-mention tokens in the same .ld-mention / .ld-mention-desk pill spans the rev-27 client-side renderCommentBody uses for short comments โ long structured comments retain mention discoverability without losing markdown formatting. Both the dashboard /api/tasks/{id}/comments and the v1 /api/v1/tasks/{id}/comments endpoints now project a textHtml field per comment when the gating heuristic fires. New .ld-comment-md typography matches the rev-110 memory render rhythm so the four markdown surfaces (artifact bodies, memory entries, operator notes, comments) read as a coherent visual family. Closes the markdown rendering quartet across every operator-loaded surface where structured paste is common.
- Regenerate reviewer note now feeds AI as authoritative direction (not just memory)Closes the named rev-110 next-sprint candidate. Until rev 111 the rev-11 regenerate flow saved an optional reviewer note as a generic preference memory entry โ the next AI cycle would pick it up via the rev-1 memory retrieval system, but only by token-overlap relevance scoring (alongside every other memory entry). Rev 111 routes the reviewer note through the rev-14 addTaskOperatorNote() helper so it lands on task.operatorNotes JSONB and the next runAiTaskSession reads it under the OPERATOR NOTES (treat as authoritative) prompt block. The same helper still writes the preference memory + the activity-log entry so audit trail is unchanged. Closes the per-output operator-direction loop alongside the rev-23 inline body editor โ operators steering a regenerate now know the desk reads their note as direction, not retrieval.
- Dashboard accessibility polish โ focus-visible rings on note + comment textareasCumulative micro-polish (every rev 22+ has carried at least one). New :focus-visible 2px brand-color outline on every operator-note + comment textarea so keyboard-only operators land cleanly across every input the operator might touch when steering the desk. Matches the rev-38 dashboard accessibility pattern across all three steering channels (operator notes, comments, regenerate). The rev-111 markdown surfaces (operator notes + comments) inherit the same .app-item-md base typography as the rev-10 artifact body + rev-110 memory entries so all four surfaces read with one consistent compact-markdown vocabulary.