# UI Checklist ## Structure - [ ] No direct `invoke(...)` outside `src/api/tauriCommands.ts`. - [ ] New reusable UI uses `src/ui/*` components or extends them. - [ ] New business/display logic is not buried in JSX if it can be tested separately. - [ ] `App.tsx` was not made worse without justification. ## Accessibility and behavior - [ ] Buttons have accessible names. - [ ] Toggle state uses `aria-pressed` or equivalent. - [ ] Tabs/popovers preserve keyboard and screen-reader behavior. - [ ] Reduced motion preference is respected where animation is added. - [ ] Errors are visible and readable. ## ProxyWarden-specific - [ ] External SOCKS5 route does not require sing-box. - [ ] Local sing-box route requires selected server and readiness. - [ ] Route chain matches actual backend state. - [ ] Apply readiness gives a clear reason. - [ ] Summary remains read-only.