bug(ui): V2 AnimatedNumber exposes animation digits and reversed reading order to screen readers
维护者通常 1 天内回复
评估
- 难度
- 2/5
- 预计耗时
- 1-3 小时
- 新手友好度
- 74/100
- Issue 类型
- 缺陷
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- typescript
调研方向
阅读 packages/ui/src/components/animated-number.tsx 及其 CSS,然后在 Chromium 中分别复现固定值和更新期间的无障碍树。检查组件如何向辅助技术公开其稳定的数值和视觉动画单元。完成标准是:在整个动画过程中,无障碍树都按正确顺序公开一个当前数值。
由索引模型根据 Issue 内容生成。
描述
Description
V2's AnimatedNumber still exposes animation cells to assistive technology and gives multi-digit numbers the wrong reading order.
With the unmodified production component and CSS rendered in Chromium / Solid 1.9.15:
- Value
12looks correct in LTR, but the accessibility snapshot contains text2, then1. - During a
5to6update, the accessibility snapshot exposes0123456789three times instead of the actual count. The existing motion-duration CSS variable was increased only to capture this transient state.
The component reverses digits in DOM order and renders 30 cells per animated strip, without aria-hidden on the visual digits. The parent span's aria-label does not replace those children in the observed accessibility tree: production component.
CSS hides the strip at rest, but exposes it while animating; visual row-reverse does not repair accessibility reading order: production CSS. A current consumer is ToolCountLabel.
OpenCode version
2.0.26 source build, latest v2 commit 4617210822bdbb31e5749751afbfb4584ccedac8 (audited 2026-10-12). Both component and CSS are unchanged at current dev commit 707de5832656e89cc0f04436aa1cd5f4f91c5763.
Steps to reproduce
Render <AnimatedNumber value={12} /> with its production CSS, inspect its accessibility tree, then increment a single-digit value during animation.
Expected: one correctly ordered, current numeric value. Expose stable text for that value and hide the visual animation from assistive technology regardless of motion state.
Related reports
V2 continuation of Problem 2 in #41408, closed during V1 migration triage. #43643 concerns visual RTL ordering in the same component. Streaming-content exposure is tracked separately in #54652 and addressed by PR #51084, which does not fix this component.
- 主要语言
- TypeScript
- 星标
- 213k
- 派生
- 28.4k
- 平均合并
- 8 小时 32 分钟
- 30 天内合并 PR
- 253
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
anomalyco/opencode 的其他 Issue
-
app: keybinds match the produced character, so Ctrl+F and other letter shortcuts fail on non-Latin layouts可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭reproduced
难度 2/5 1-3 小时 新手友好度 82/100
anomalyco/opencode#55676 · 1 条评论 ·
维护者通常 1 天内回复
-
tui: NumPad End/Home ignored under kitty keyboard protocol (Windows Terminal reports KP_END 57424)可能已有人在做 @argszero 于 1 天前认领。 未关闭reproduced
难度 2/5 1-3 小时 新手友好度 75/100
anomalyco/opencode#55533 · 2 条评论 ·
维护者通常 1 天内回复
-
pending close triaging
难度 2/5 1-3 小时 新手友好度 70/100
anomalyco/opencode#55392 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 62/100
anomalyco/opencode#55383 · 3 条评论 ·
维护者通常 1 天内回复
-
web: second Firefox tab never connects to /api/event - Cache-Control: no-cache lets Firefox's HTTP cache block concurrent SSE requests可能已有人在做 @zonemeen 于 1 天前认领。 未关闭reproduced
难度 2/5 1-3 小时 新手友好度 72/100
anomalyco/opencode#55369 · 2 条评论 ·
维护者通常 1 天内回复
查看 anomalyco/opencode 的全部 Issue
相似的 Issue
-
documentation good first issue
难度 2/5 半天 新手友好度 72/100
sujithputta02/Esapay#13 ·
-
难度 2/5 1-3 小时 新手友好度 65/100
ehmpathy/rhachet-roles-bhuild#468 ·
维护者通常 1 天内回复
-
Share dialog: the address book's contact count reads "1 contacts" (no singular form in any language)可能已有人在做 @chibenwa 今天认领。 未关闭ai-driven-qa bug claude Cosmetic
难度 2/5 1-3 小时 新手友好度 72/100
linagora/twake-contacts-frontend#271 · 1 条评论 ·
维护者通常 1 天内回复
-
factory-active task-identify-harness-labels-done task-identify-issue-type-done
难度 1/5 1 小时以内 新手友好度 70/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
Koenkk/zigbee2mqtt#33402 ·
维护者通常 1 天内回复