From f241ad1127d886735bcd8e5e4811889bf42b7d2d Mon Sep 17 00:00:00 2001 From: Joycejay17 Date: Sat, 30 May 2026 01:43:07 +0100 Subject: [PATCH 1/4] docs(contracts): remove duplicate doc comment on StreamPausedEvent Collapse the two near-identical leading lines into a single clear sentence. Closes #568 Co-Authored-By: Claude Sonnet 4.6 --- contracts/stream_contract/src/events.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/contracts/stream_contract/src/events.rs b/contracts/stream_contract/src/events.rs index bd2f18d1..944411b8 100644 --- a/contracts/stream_contract/src/events.rs +++ b/contracts/stream_contract/src/events.rs @@ -106,7 +106,6 @@ pub struct AdminTransferredEvent { pub new_admin: Address, } -/// Emitted when a stream is paused. /// Emitted when a sender pauses an active stream. /// /// Topic: `("stream_paused", stream_id)` From f4bb3177a95d69ba12d4c2eb58dd3e3b9aa59d5d Mon Sep 17 00:00:00 2001 From: Joycejay17 Date: Sat, 30 May 2026 01:43:19 +0100 Subject: [PATCH 2/4] fix(frontend): add aria-busy and accessible loading label to Button Set aria-busy={loading} on the button element, mark the spinner SVG aria-hidden="true", and add a visually-hidden "Loading" span so screen readers announce the in-progress state on every loading button. Closes #569 Co-Authored-By: Claude Sonnet 4.6 --- frontend/src/components/ui/Button.tsx | 45 +++++++++++++++------------ 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/frontend/src/components/ui/Button.tsx b/frontend/src/components/ui/Button.tsx index 80abe340..20f84b4c 100644 --- a/frontend/src/components/ui/Button.tsx +++ b/frontend/src/components/ui/Button.tsx @@ -38,29 +38,34 @@ export const Button: React.FC = ({ From ed9869bf3f7cb253454613bfa63de1e8b6e7b099 Mon Sep 17 00:00:00 2001 From: Joycejay17 Date: Sat, 30 May 2026 01:44:10 +0100 Subject: [PATCH 3/4] fix(frontend): guard progress NaN on zero deposit and label close button MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Guard the progress calc against deposited === 0 (was NaN/Infinity) by returning 0 and clamping the result to 0–100. Add aria-label="Close" to the X button so screen readers announce it consistently with other modals in the app. Closes #570 Co-Authored-By: Claude Sonnet 4.6 --- frontend/src/components/dashboard/StreamDetailsModal.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/src/components/dashboard/StreamDetailsModal.tsx b/frontend/src/components/dashboard/StreamDetailsModal.tsx index 66acdce0..e960fc21 100644 --- a/frontend/src/components/dashboard/StreamDetailsModal.tsx +++ b/frontend/src/components/dashboard/StreamDetailsModal.tsx @@ -26,7 +26,7 @@ export const StreamDetailsModal: React.FC = ({ return () => window.removeEventListener("keydown", handleEscape); }, [onClose]); - const progress = (stream.withdrawn / stream.deposited) * 100; + const progress = stream.deposited > 0 ? Math.min(100, Math.max(0, (stream.withdrawn / stream.deposited) * 100)) : 0; const remaining = stream.deposited - stream.withdrawn; return ( @@ -45,6 +45,7 @@ export const StreamDetailsModal: React.FC = ({