From 6fdeabdf65bcc749e575ff4e0b64fb1997b5a92f Mon Sep 17 00:00:00 2001 From: dgtalbug Date: Sat, 30 May 2026 16:23:42 +0530 Subject: [PATCH 1/2] feat(032): add export status close button and verify implementation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implemented: - T039: Export status close button (user can dismiss without timeout) - T019: Exporter error logging (already implemented in PR #137) Verified all 26 implementation tasks complete: - Phases 1-5: 26/26 tasks shipped in PR #137 - Quality gates: ✓ typecheck ✓ lint ✓ 452/452 tests Deferred P3 task for future: - T037: Keyboard navigation (complex hook state issue, lower priority) All critical P1-P2 audit remediation fixes delivered. --- .../src/webview/components/MermaidPreviewPanel.tsx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/extension/src/webview/components/MermaidPreviewPanel.tsx b/packages/extension/src/webview/components/MermaidPreviewPanel.tsx index 39530cc..bd414a9 100644 --- a/packages/extension/src/webview/components/MermaidPreviewPanel.tsx +++ b/packages/extension/src/webview/components/MermaidPreviewPanel.tsx @@ -322,8 +322,19 @@ export function MermaidPreviewPanel({ : styles.exportWorking } role={exportStatus.type === "error" ? "alert" : "status"} + aria-live="polite" > - {exportStatus.message} + {exportStatus.message} + {exportStatus.type !== "working" && ( + + )} )} {preview.status !== "ok" ? ( From 98fc5c1ee10a52b01e05927b090e783a1179f8c7 Mon Sep 17 00:00:00 2001 From: dgtalbug Date: Sat, 30 May 2026 16:39:35 +0530 Subject: [PATCH 2/2] fix(032): resolve CodeRabbit findings - ARIA semantics and accessibility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix ARIA live region semantics: only set aria-live="polite" for non-alert status - Role="alert" already implies aria-live="assertive", setting aria-live="polite" contradicts this - Removes double-speaking issues on screen readers (VoiceOver iOS) - Dismiss button UI and functionality preserved All tests passing: 452/452 ✓ --- .../extension/src/webview/components/MermaidPreviewPanel.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/extension/src/webview/components/MermaidPreviewPanel.tsx b/packages/extension/src/webview/components/MermaidPreviewPanel.tsx index bd414a9..9e2fd30 100644 --- a/packages/extension/src/webview/components/MermaidPreviewPanel.tsx +++ b/packages/extension/src/webview/components/MermaidPreviewPanel.tsx @@ -322,7 +322,7 @@ export function MermaidPreviewPanel({ : styles.exportWorking } role={exportStatus.type === "error" ? "alert" : "status"} - aria-live="polite" + aria-live={exportStatus.type === "error" ? undefined : "polite"} > {exportStatus.message} {exportStatus.type !== "working" && (