fix(sidebar): make Done and Show more folds accessible
Done and Show more rows expose disclosure semantics to VoiceOver but had no AXPress action, so keyboard and assistive technology users could not open or close them. This slice adds a shared fold action used by mouse and AXPress, clears callbacks on reuse, rejects stale or hidden rows, and adds focused regression coverage.
Leo's sidebar rule (2026-10-29): “the sidebar ... every surface ... ultra fast and ultra responsive”; the audit rule requires the Done and Show more controls to remain usable through accessibility activation. This behavior-only patch preserves the existing visual treatment.
Changes
- Add
SidebarFoldActionas the single validated toggle path. - Wire
SidebarDoneFoldRowView.accessibilityPerformPress()for Done and Show more. - Clear and rebind callbacks during row reuse.
- Add tests for open/close, AXExpanded state, stale callback reuse, and hidden rows.
Validation
git diff --checkpassed.- Focused fleet Mac test passed:
cmux-cistep04bad3d6e94bed220d5347e2, keyui-land-pr27671-head-97392906, exit 0. - The earlier Linux route crashed with signal 4 before tests; this is superseded by the successful fleet Mac receipt above.
- Independent Astra review at exact head 97392906386f11a17b3b2e429883511c07b7c43c returned SHIP with Visual verdict PASS; receipt comment is on the PR.
- No before/after capture: activation-only change with no visual treatment change.
Changelog
Changed: Done and Show more sidebar folds can be opened and closed through VoiceOver/AXPress, with mouse and accessibility activation sharing one state path.
risk: normal
agent-identity footer --repo manaflow-ai/cmux