You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[Frontend][A11y][Review] Queue live-region residuals from PR #2593 review: re-announce on explicit reload, focus after the unavailable-pin return control #2599
Non-blocking residuals from the fresh-context review of PR #2593 (#2214 Legacy unavailable-pin state and loading-announcement gate), tracked here rather than fix-cycled. References are at that PR's round-1 head 14a86d3.
LOW, re-announcement on explicit reload. The loading gate withholds the live region's content rather than comparing values, so every explicit loadProposals writes count, empty, count, and the restore is a text addition the AT speaks even when the number is unchanged. Reachable via the header Refresh and the dismiss path (filing away a terminal proposal leaves pending-review identical): the user gets the info toast plus a repeat of the same count. Benign (a true figure after a user-initiated read). A value-comparison gate (announce only when the count changes, and never while loading or revoked) would remove the repeat.
LOW, focus after the return control. Activating the Legacy target-unavailable panel's return-to-queue control removes the element it lives in and nothing moves focus to the queue or empty state that replaces it, so focus drops to body. Paper's unavailable branch (PaperReviewView.vue ~2576-2583) has the same gap, while Paper's settled-elsewhere notice deliberately moves focus via settledElsewhereReturnRef. Fix in both skins together (Core-loop correctness: false-green expiry regression test + #678 dismiss gap + #680 provenance 404 noise #1124 / ADR-0038).
Non-blocking residuals from the fresh-context review of PR #2593 (#2214 Legacy unavailable-pin state and loading-announcement gate), tracked here rather than fix-cycled. References are at that PR's round-1 head 14a86d3.
LOW, re-announcement on explicit reload. The loading gate withholds the live region's content rather than comparing values, so every explicit loadProposals writes count, empty, count, and the restore is a text addition the AT speaks even when the number is unchanged. Reachable via the header Refresh and the dismiss path (filing away a terminal proposal leaves pending-review identical): the user gets the info toast plus a repeat of the same count. Benign (a true figure after a user-initiated read). A value-comparison gate (announce only when the count changes, and never while loading or revoked) would remove the repeat.
LOW, focus after the return control. Activating the Legacy target-unavailable panel's return-to-queue control removes the element it lives in and nothing moves focus to the queue or empty state that replaces it, so focus drops to body. Paper's unavailable branch (PaperReviewView.vue ~2576-2583) has the same gap, while Paper's settled-elsewhere notice deliberately moves focus via settledElsewhereReturnRef. Fix in both skins together (Core-loop correctness: false-green expiry regression test + #678 dismiss gap + #680 provenance 404 noise #1124 / ADR-0038).
Pending wiring, not a defect. PaperReviewView.vue does not yet pass the rail's announcement-suppression prop; that one-attribute wiring (plus the revoked case) lands once PR fix(review): bound the post-revision truth refresh and keep it retryable #2576 releases the file; Review queue refresh residuals: deep-link re-auth, poll restart after recovery, stale indicator (from PR #2208) #2214 carries it.
Refs #2214, #2194, PR #2593.