Skip to content
View nrps9909's full-sized avatar

Highlights

  • Pro

Block or report nrps9909

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
nrps9909/README.md

Ting-An Chen

Taiwan-based open-source developer focused on reproducible AI, data tooling, and validated Traditional Chinese localization.

來自台灣的開源開發者,關注可重現的 AI/資料工具,以及符合台灣用語的繁體中文在地化。

Recent upstream contributions

The public record below includes 51 merged PRs across 30 non-owned repositories since August 11, 2026, including 20 merged Ant Design PRs in a focused i18n/accessibility lane. In total it covers 42 different public upstream repositories and excludes projects I maintain. Every authored contribution uses a cryptographically signed commit verified by GitHub.

For clarity, I am an external Ant Design contributor—not an organization member, repository owner, or maintainer with write access. My maintenance evidence is public: scoped runtime and accessibility fixes, regression tests, reproducible issue triage, and 100 distinct current/final exact-head reviews across Ant Design and its canonical react-component dependencies.

Merged

Under review

I keep changes scoped, check for duplicate work before contributing, preserve runtime placeholders, and run each project's documented validation. AI assistance is disclosed when a project requires it, and localization is checked against the English source and established Taiwan terminology.

In Prettier #19848, I reviewed exact head 0bb843b6393495cda9803a3def038caf55e8afe1 for a Markdown table-delimiter idempotency fix. The submitted focused suites passed, but an independent generated matrix exposed a missing spaced-delimiter path: with proseWrap: "always" and printWidth: 1, an indented | --- | --- | line changed from a single paragraph into a paragraph plus table after one format and produced a different second output. I reduced the failure to a standalone input, verified both outputs and AST node types, and submitted CHANGES_REQUESTED with the sibling-token reconstruction gap. This review is public maintenance evidence and is not counted as an authored or merged PR.

In PHP documentation #5791, I reviewed exact head 884c31ad27aa3c8ffddc1c46d0f6cba93e6fbccd for the PHP 8 curl_close() cookie-jar migration note. I cross-checked the text against the existing PHP option reference and libcurl's official CURLOPT_COOKIELIST contract, which defines "FLUSH" as writing known cookies to the file configured through CURLOPT_COOKIEJAR; the exact-head English documentation build, DocBook style check, and local diff validation were green. GitHub does not let external contributors without explicit repository access submit an approving review in this repository, so the public review is correctly recorded as COMMENTED with no blocking issue rather than represented as maintainer approval. This review is not counted as an authored or merged PR.

For ProComponents issue #9680, I reproduced that Ant Design 6's object-form showSearch configuration was forwarded without being applied to ProComponents' custom search wrapper. The signed ProComponents fix normalizes the supported search callbacks and state while retaining the wrapper's remote-fetch behavior and adds a value-filtering regression whose exact base rendered no matching option. The fixed head passed the focused regression, the complete 85-test form file, all 1,194 repository tests, TypeScript, focused lint, UMD/ES/CJS/declaration builds, and diff validation.

For ProComponents issue #9688, I traced lost fixed-column state after settings drag-and-drop to inconsistent array dataIndex keys: the store generated test-name while the rendered column generated test,name. The signed ProTable fix keeps both paths on the canonical normalized key. Its exact-base regression created an unexpected comma-keyed { order: 0 } entry, while the fixed head passed the complete 24-test column-settings file, all 1,194 repository tests, TypeScript, focused lint, UMD/ES/CJS/declaration builds, and diff validation.

In ProComponents #9691, I found that the zh-TW locale's Delete and Copy line actions retained the Simplified Chinese glyph , while the same locale consistently uses Traditional Chinese . The signed two-string correction adds a regression through the public zhTWIntl export. The exact-base test failed on 刪除此项; the fixed provider scope passed all 3 tests together with TypeScript, focused lint, formatting, and diff validation. Maintainer leshalv merged it as 23ad476.

For rc-tooltip issue #510, I initially proposed an Escape listener, then withdrew PR #540 after review showed that canonical Trigger and Portal already own topmost-overlay ordering, IME guards, controlled-state requests, disabled-state preservation, and UniqueProvider timing. I later verified the production path rather than relying on Tooltip's normal manual Trigger mock: current Tooltip with Trigger 3.10.1 and Portal 2.2.1 opens an uncontrolled click tooltip, emits onVisibleChange(false), and hides it on Escape. I then submitted signed integration regression #543, which explicitly un-mocks Trigger and asserts both the callback and portal-rendered popup state. Temporarily disconnecting only Trigger's onEsc handoff made the new test fail with the callback stuck at true; restoring the dependency made it pass. On current Tooltip 1.5.2 master, all 3 suites and 31 tests pass together with TypeScript, lint, formatting, ESM/CJS/declaration and Less compilation, and diff validation. The PR is open and is not counted as merged.

For rc-tooltip issue #496, I reproduced on current master that focusing a default Tooltip trigger left aria-describedby unset and never exposed its description. The signed focus-trigger fix adds focus to the default hover action while preserving explicit trigger configurations and removes the relationship again on blur. The exact-base regression failed on the missing relationship; the fixed full suite passed all 29 tests, TypeScript, lint, ESM/CJS declarations, Less compilation, the documentation build, and diff validation.

While reviewing Ant Design #59110, I found that its new Slider description prop passed through rc-slider but disappeared in Ant Design's default Tooltip wrapper: a direct rc-slider probe exposed aria-describedby, while the exact Ant head did not. I requested a real integration fix with single and range regressions, then submitted the signed canonical rc-tooltip fix. It preserves the child's description while hidden, composes it with the generated tooltip id while visible, and restores it after closing. The exact-base regression failed on the missing child relationship; the fixed suite passed all 30 tests at 100% statement, branch, function, and line coverage, together with TypeScript, lint, formatting, ESM/CJS/declaration and Less compilation, and diff validation. Maintainer zombieJ merged it as 15fb895.

In rc-color-picker #286, I re-reviewed exact updated head a093513 after the author fixed my earlier finding that the official Trigger example remained mouse-only. The new conditional role, tab stop, and Enter/Space path work, and the complete repository passes 3 suites with 62 tests, TypeScript, ESM/CJS/declaration and Less builds, Prettier, and source lint with zero errors. Two exact-head composition checks still fail: a consumer onKeyDown replaces the internal activation handler, leaving a declared button that no longer clicks from the keyboard, and the official color-only trigger produces an empty accessible name. I requested composed handlers with a preventDefault escape hatch plus a color-value default name and explicit aria-label override. The change request is current to the exact head; the PR remains open and is not counted as merged.

In Checkbox #59109, I approved the exact head 2ff2027809af6588be88b257351f6b8bf077e59b after independently verifying ConfigProvider, Group, child, and option-level disabled precedence, including inherited values, explicit false/true, and click/onChange behavior. All six expanded matrix probes passed, together with the complete Checkbox scope of 9 suites, 78 tests, and 37 snapshots; all applicable remote checks were green, including accepted visual diffs.

In Progress #59038, I technically validated the proposed circular start-position behavior at exact head without pre-empting the maintainers' pending public-API decision. An independent matrix covered clamping, controlled rerenders, success and stepped circles, exclusion from line and dashboard variants, and DOM prop leakage; all 7 cases passed under both Jest and Vitest, while the complete Progress Jest scope passed 7 suites, 107 tests, and 78 snapshots. The review remains non-approving until maintainers confirm the API name and contract.

In rc-tabs #1016, I approved the accepted active-tab scroll-position API at exact head after six independent controlled-switch probes verified LTR, RTL, left, and right layouts, runtime strategy changes, and preservation of the legacy auto behavior while both tabs remained visible. The complete repository suite passed 6 suites, 104 tests, and 3 snapshots, together with TypeScript and diff checks; ESLint reported no errors, and the remaining Vercel status was contributor deployment authorization rather than a source failure.

In rc-virtual-list #380, I requested changes on exact head 02c2f6347117be524f4b39dfb906aeb985c64a39 after an independent Firefox line-mode probe exposed two wheel-distance corrections being applied to the same gesture. A 3-line wheel event normalized to 48 pixels and was then multiplied by the legacy Firefox factor, producing a measured scrollTop of 480. The submitted Firefox test missed the regression because it did not set deltaMode; my review supplied the exact event sequence and requested a mutually exclusive correction plus a regression with an offset assertion. The existing focused scroll suite otherwise passed all 40 tests.

In Ant Design #59117, I approved consistent numeric-zero rendering across Card, Card.Meta, FloatButton, Segmented, Tag, and Breadcrumb at exact head 2534d76965af155b161b853aeb5bd2152d90413c. The five focused upstream suites passed 143 tests and 35 snapshots; an independent rerender matrix additionally verified region and wrapper removal when values transition from 0 to empty inputs, plus both directions of FloatButton's content-only versus fallback-icon state. Every applicable remote check was green at the reviewed head.

For rc-table issue #1416, I reproduced that tree data bypassed rowExpandable: a parent rejected by the predicate still rendered its controlled-expanded children, remained clickable, and exposed an expand icon, while an empty children array also appeared expandable. The signed canonical rc-table fix applies the predicate consistently to row interaction, regular and virtual flattening, and default expand-all traversal. Its exact-base regression rendered the blocked child; the fixed head passed all 239 tests, TypeScript, lint without errors, ESM/CJS/declaration and Less compilation, and diff validation.

For rc-progress issue #304, I reproduced that the standalone Line SVG had no presentational role and therefore remained exposed as an unlabeled image, while the public TypeScript contract did not accept standard ARIA metadata. The signed canonical rc-progress fix aligns Line with Circle by default and forwards typed SVG/ARIA attributes so callers can explicitly provide progressbar role, name, and value semantics. Its exact-base regression failed on the missing role; the fixed head passed all 19 tests and 11 snapshots, TypeScript, documentation build, lint without errors, and diff validation. Declaration compilation remains independently blocked by the same @types/keyv stub on both exact base and fixed head.

For rc-picker issue #430, I confirmed that Belgian French still used the time-selection prompt for dateSelect on current master. The signed locale correction uses the established French date wording and adds a regression that keeps the date and time prompts distinct. The exact base returned Sélectionner l’heure; the fixed full suite passed 469 tests with 2 skips and 29 snapshots, lint had no errors, ESM/CJS declarations and Less compilation passed, and the existing Jest matcher type failures were reproduced unchanged on the exact base.

In Ant Design, I am also deepening the same subsystem through issue triage and review: a reproducible Table row-selection localization report led to external implementations, where I reviewed the locale and accessibility contract and later flagged a row-name identity tradeoff; the maintainer chose the existing line-information design and merged it. I also traced and reported Splitter's hardcoded English collapse-control names, then validated all 73 runtime locales and approved the resulting implementation. A separate RangePicker report led to a tested fix that hides the decorative default separator while preserving custom accessible names. I then applied the same accessibility principle to Collapse's redundant English expand-icon state, documented and tested native label association for nested complex Form controls, restored Upload focus-event callbacks across every root layout, re-enabled Rate's canonical list-item accessibility check, enforced accessible button names across all Alert demos, restored Tree connecting-line demo accessibility coverage, and validated and approved the Form vertical-label offset fix against its CSS cascade and responsive boundaries. I also approved a tested fix for Upload's asynchronous removal race, validated and approved the Dropdown menu semantic-DOM slot with the full Dropdown suite and focused merge-precedence probes, approved a state-safe Menu tooltip collapse fix after full Menu tests and controlled-state probes, validated and approved Space stretch alignment across horizontal and vertical layouts, validated and approved Spin minimum-duration state handling with timer and controlled-state probes, caught a raw-versus-mapped Anchor state regression and approved the corrected raw-identity implementation, caught a hover-induced focus-stealing regression in a proposed Dropdown keyboard fix through a red/green input-modality test, and reproduced an InputNumber data-loss regression caused by switching value ownership when allowClear is disabled at runtime. Following maintainer direction, I audited the canonical rc implementation, caught raw-input, localization, Escape-propagation, focus, and disabled-state regressions, and then approved the fully corrected implementation. I followed the locale data to Ant Design's Pagination dependency to correct the zh-TW size changer, blocked an interactive-icon regression that produced nested buttons, reviewed rc-menu's duplicate-popup-ID fix while verifying its true React compatibility boundary, caught a controlled-state callback loss in rc-trigger caused by descendant layout effects observing a stale dedup baseline, blocked an incomplete rc-picker accessibility overhaul after axe and keyboard probes exposed missing combobox relations and an unreachable grid, and caught stale expand-all eligibility in rc-table when permissions change without replacing the data array.

I revalidated the Anchor raw-identity fix on its latest head after a test refactor and master merge, approved a precise Typography editable callback clarification after source tracing, behavior probes, and the focused suite, and approved DirectoryTree range selection for the numeric key 0 after focused and full Tree suites plus independent forward, reverse, same-key, missing-key, empty-string, and nested-expanded probes. I also approved Notification stack-motion corrections after 185 focused tests, 77 snapshots, and real-Chromium checks across all six placements. In Ant Design #57345, I first proved that the documented alwaysByViewport option was a no-op, then approved exact corrected head 334bff7 after the author removed that unsupported contract and 97 focused tests plus TypeScript-file, documentation, and formatting checks passed. In Segmented #59046, a real-preview click and computed-style probe showed the higher-specificity hover rule overriding the selected-text color throughout thumb motion; after the selector excluded the transient selected-text class, I approved exact head 8e40a4a with 78 tests, 64 snapshots, static checks, and all substantive remote CI green. In Splitter #59009, an independent keyboard probe showed that ArrowRight immediately committed 50/50 to 60/40 and fired onResize in lazy mode instead of deferring until the resize transaction ended. After the author restored preview-only updates and commit-on-Enter/Space/blur semantics, I approved the corrected exact head with the full 117-test, 44-snapshot Splitter suite and static checks passing. I also approved Checkbox.Group semantic styling after the complete Checkbox suite and an independent controlled-rerender probe verified dynamic root/item semantics and override precedence, then approved the parallel Radio.Group contract after verifying both regular Radio and Radio.Button propagation plus controlled value/option-type recomputation. Both Group semantic-DOM changes later merged after maintainer approval.

I initially revalidated Ant Design's localized clear-button accessibility update after the Select, Cascader, and TreeSelect suites passed with the declared rc-select dependency. When a later maintainer thread exposed that label-only allowClear objects dropped Ant Design's default CloseCircle icon, I superseded my approval with an exact-head change request, tracing the merge path and requesting default-icon plus explicit-override regressions without duplicating the existing inline thread. The final merged implementation restored the default icon and added regressions for both label-only and explicit-icon precedence. I also approved Cascader's explicit null empty-state handling after the full Cascader suite and five independent probes verified null, false, empty-string, zero, and inherited-default behavior. In the canonical dependency, I approved runtime checkStrictly support after 129 tests with independent parent-child, panel, and single-select state probes plus TypeScript and ESM/CJS builds. I later blocked an option-attribute forwarding patch because its closed-popup selector returned null, so every new assertion was skipped, while the public example introduced a dangling aria-labelledby; an expanded DOM probe verified the intended forwarding and reserved-attribute precedence while exposing the vacuous submitted regression.

In QRCode #59075, I approved the exact-head accessibility fix after verifying default names for canvas and SVG output, caller override precedence, undefined optional ARIA props, and empty-payload handling. The complete QRCode Jest and Vitest scopes, focused lint checks, diff validation, and all 41 applicable remote checks passed.

In Splitter #59084, an independent exact-head regression proved that controlled percentage sizes totaling 100% still bypassed the new minimum-size fitting path: 20% / 80% with min="40%" rendered as 120 / 480px in a 600px container instead of 240 / 360px. I requested the normalized path and a focused regression without duplicating the existing inline thread; the broader Splitter scope and 46 applicable remote checks otherwise passed.

In rc-tree #1069, I found that releasing a populated treeData prop to undefined did not fall back to children as the patch intended: an exact-head rerender probe still displayed the stale data node. I requested a defined-to-undefined regression and consistent next-source selection; the existing Tree suite, TypeScript, lint, diff, and remote source checks otherwise passed.

In Table #59078, I approved restoration of the full custom header onKeyDown contract after an expanded Space and arrow-key matrix verified that every key reaches the consumer callback while only Enter changes the sort order. The exact-head sorter suite passed 41 tests and 5 snapshots, with static checks and all 47 applicable remote checks green.

In Statistic #59101, I approved the numeric-zero semantic-node fix at exact head after both the complete Jest and Vitest files passed 27 tests and an independent rerender probe verified that zero-valued title, prefix, and suffix nodes are created and then removed for empty-string, false, and null values. The expanded probe passed 28 tests under each runner; focused lint and all applicable remote checks were green.

In Alert #59100, I approved the exact-head global closable type correction after tracing that ConfigProvider only supplies enablement, closeIcon, and ARIA attributes while component-level configuration owns onClose and afterClose. An independent compile-time matrix accepted booleans, empty objects, icons, and ARIA labels while rejecting onClose, afterClose, and disabled; the 86-test ConfigProvider suite, focused static checks, and all 47 applicable remote checks passed.

In Alert and Empty #59094, I approved consistent numeric-zero rendering after the complete Alert and Empty suites passed 38 tests and 5 snapshots under Jest and 38 tests under Vitest. Independent rerender probes expanded that matrix to 40 tests under both runners and verified removal of the title, description, action, footer, and with-description state for empty values; the review explicitly separates this focused verification from maintainer-triggered CI.

In CheckableTag #59087, I approved correction of the ConfigProvider/local style merge order after the official Tag semantic scope passed under both Jest and Vitest. Independent rerender probes verified the full precedence chain from context defaults through functional group item styles to per-option and component-local overrides, while preserving non-conflicting context properties; the expanded scope passed 10 tests under each runner with focused static checks green.

In Breadcrumb #59093, I approved a unified route-parameter replacement helper after the 33-test, 11-snapshot official scope passed. Three independent Jest/Vitest matrices verified regex-special parameter names, prefix collisions, repetition, replacement metacharacters, Unicode unknown-name boundaries, nullish and falsy values, and empty parameters; focused static checks and the applicable remote matrix were green.

In BorderBeam #59095, I approved the final indexed getItemConfig API at exact head after the focused scope passed 18 tests under both Jest and Vitest. The regression verifies per-beam color, line width, outset, and size together with top-level fallback and evenly distributed delays; package type exports, focused static checks, diff validation, and every completed remote check were green. I also noted that the PR description still documents its superseded array design so the public record can be corrected before merge.

In Transfer #59074, I approved the exact-head pagination clamp after the focused regression and an independent page-size/data-shrink probe passed under both Jest and Vitest. The expanded verification covered 116 Jest tests with 22 snapshots and all 30 Transfer Vitest tests, plus focused lint and diff checks; I separately documented a local rc-menu generated-ID snapshot mismatch while the PR's complete remote exact-head matrix remained green.

In Steps #59073, I requested changes because adding role="progressbar" made the internal SVG's hardcoded English <title>Progress</title> the active widget name in every locale. An independent zh-TW probe under ConfigProvider reproduced the English-only accessible name in both Jest and Vitest. After the author removed that untranslatable title and added a zh-TW regression for the actual accessible name, I approved the corrected exact head: all 87 Steps tests and 64 snapshots, 11 applicable Vitest tests, focused static checks, and the complete remote CI, build, coverage, module, and visual matrix passed.

In Skeleton #59072, I approved hiding the always-decorative empty title placeholder from the accessibility tree after the complete Skeleton and Statistic scope passed 117 tests and 88 snapshots. An independent Jest/Vitest rerender probe verified that the physical placeholder remains visually present but exposes no false heading while loading, then disappears without hiding the real named child heading when content loads; focused static checks and the complete remote matrix were green.

In Grid #59066, I approved synchronous Row alignment derivation after all 67 Grid tests and 45 snapshots passed. An independent matchMedia transition probe passed in both Jest and Vitest, replacing xs middle/center with lg bottom/space-between in one update and removing both stale classes; the review explicitly notes that the repository excludes the official Grid index file from Vitest rather than misreporting it as covered. After the branch merged current master, I verified that both PR-owned file diffs were byte-identical and reran the same 67-test, 45-snapshot scope plus focused static checks at exact head e950086 before re-approving.

In Select #59092, I approved dynamic line-height sizing at exact head after the complete 156-test, 104-snapshot Select scope and focused static checks passed. Independent real-Chrome measurements verified that normal controls remain 32px under global lineHeight: 2 and lineHeight: 1, large controls remain 40px under lineHeightLG: 2, and an oversized small-control line box clamps its padding to zero. The review separately identifies the remaining visual-diff gate as manual acceptance of three newly added debug images rather than a changed-image regression.

I also approved rc-table's fixed-header scrollbar alignment fix after 232 tests, TypeScript, lint, documentation build, and a real-Chromium 15px scrollbar layout check. In the Tree dependency, I approved a detached-list-ref guard after two independent null-ref reproductions and the full test suite, then approved a focus-transition fix for interactive title descendants after its regressions, independent focus probes, TypeScript, and ESM/CJS builds passed. In the image dependency, I approved keyboard-navigation scroll isolation and a preview wheel-event isolation fix after full suites and independent event probes confirmed that preview navigation does not consume unrelated page input.

For Ant Design issue #59099, I traced an incorrect nested drag-and-drop result to rc-tree replacing the hovered first child with its parent before the root-only gap special case runs. The signed canonical rc-tree fix preserves the real hovered child before that fallback and adds LTR and RTL regressions for both the onDrop and allowDrop contracts. The exact base failed with parent 0-0, an inside drop, and position 0; the fixed head passed all 226 tests and 42 snapshots, TypeScript, formatting, ESM/CJS compilation, and diff validation.

For rc-tree-select issue #652, I reproduced that search traversal stopped at a disabled or selectable={false} parent and never activated its enabled matching child. The signed canonical fix excludes the parent itself while continuing through its descendants; both exact-base regressions failed before the change, while the fixed full suite passed 186 tests and 15 snapshots together with TypeScript, lint, and ESM/CJS compilation.

For rc-tree issue #931, I reproduced that rc-tree's Firefox text/plain fallback ran after the public onDragStart callback and erased the consumer's payload. The signed canonical fix initializes the fallback before the callback so consumers can override it; the exact base regression observed the custom value followed by the empty fallback, while the fixed head passed all 225 tests and 42 snapshots, TypeScript, lint, formatting, and ESM/CJS compilation.

After a maintainer clarified in Tree issue #59069 that useTree().getPath intentionally keeps a stable identity while reading the latest data at call time, I submitted a signed bilingual API documentation clarification. It shows that memoized values derived from getPath must also depend on treeData and the lookup key, making the otherwise invisible dependency boundary explicit without changing the runtime contract.

In Steps #59105, I reproduced that every visual panel separator exposed the repeated, English-only computed accessible name Arrow. The signed fix preserves the SVG separators while hiding them from assistive technology and adds a regression for both their physical presence and absent accessible names. The complete Steps scope passed 83 tests and 64 snapshots, with focused Jest/Vitest coverage and static checks green; the PR merged on August 27, 2026.

In Result #59106, I reproduced that the built-in 403, 404, and 500 illustrations exposed hardcoded English SVG titles even though Result already renders the status as visible text. The signed fix marks only those built-in illustrations as decorative and non-focusable while preserving custom icon semantics. Its exact-base regression failed on the missing aria-hidden; the final Result scope passed all 17 tests under both Jest and Vitest together with focused lint, formatting, and diff validation. The PR remains under review and is not counted as merged.

In Typography #59112, I found that the localized native edit button contained a default EditOutlined child explicitly marked with a second role="button". Accessibility queries therefore exposed one visual edit action as two buttons. The signed fix removes the redundant interactive role while retaining the parent button and normal icon rendering. Its exact-base regression received two button roles; the fixed complete Typography scope passed 10 suites, 163 tests, and 47 snapshots together with focused ESLint, Biome lint, snapshot formatting, and diff validation. Maintainer QDyanbing approved the exact head; the PR is still open and is not counted as merged.

In List #59113, I found that the row-key fallback treated numeric 0 as missing and replaced it with an index-based key. Reordering the data therefore remounted that item and could discard local state or focus. The signed nullish-assignment fix preserves zero while retaining the fallback for null and undefined, with a regression that tracks child mounts across a reorder. The exact base produced mount history [0, 1, 0]; the fixed complete List scope passed 15 suites, 110 tests, and 68 snapshots together with focused ESLint, Biome, and diff validation. I audited open issues and PRs before submission; #58604 touches the same file only for an unrelated pagination callback. Maintainer QDyanbing merged it as c09c0e6 after yoyo837 approved the exact head.

In List #59118, I reproduced a separate ReactNode boundary where numeric 0 was silently omitted from List headers, footers, vertical item extras, and every List.Item.Meta field. The signed fix applies Ant Design's shared renderability predicate to those six public content paths and adds controlled rerender regressions that verify wrapper removal, vertical layout-state cleanup, and the final-item border marker. Review then exposed that the shared predicate incorrectly treated true as renderable even though React omits both booleans; I corrected the root predicate and its type guard with a focused value matrix, preventing empty wrappers across all existing callers. The original two regressions failed on exact base e8fbc23; the fixed List-plus-helper scope passed 16 Jest suites with 114 tests, 10 skips, and 68 snapshots, plus all 56 applicable Vitest tests and focused static checks. I audited all 78 open PR file lists before submission; #58604 touches List pagination only and no open PR changes the shared helper. The PR remains under review and is not counted as merged.

In Descriptions #59125, I found that the public ReactNode title and extra props silently dropped numeric 0 because the header and both slots were guarded by truthiness. The signed minimal fix treats zero as renderable while preserving the existing null, false, and empty-string behavior, with a rerender regression covering both slots and header cleanup. After automated review cited the repository's snapshot requirement, I added inline snapshots for both states. I briefly adopted a suggested broad nullish predicate, then caught and corrected its false regression in signed exact head 0896778; the actual changed content file plus the Descriptions index scope pass 38 tests and 11 snapshots together with focused ESLint, Biome, Prettier, and diff checks. The maintainer plans to move Ant Design's shared isReactRenderable helper into rc-util and asked this PR to wait for that low-level utility, so I am holding further design changes rather than duplicating it. The PR remains open and is not counted as merged.

In rc-input #201, I found the same ReactNode boundary across the canonical input package: numeric 0 in prefix, suffix, addonBefore, or addonAfter was removed by both the shared wrapper-detection helpers and the four render conditions. The signed fix keeps those paths on one content predicate, including suffix-related styling, and adds a rerender regression for all four slots plus wrapper cleanup. On exact base 52086bb, the prefix query returned null; the fixed repository passed 10 suites, 128 tests, and 22 snapshots together with TypeScript, focused lint, formatting, ESM/CJS/declaration and Less compilation, and diff validation. The only open PR touching BaseInput.tsx is the unrelated 2021 copy-feature proposal #40; I disclosed that file overlap in the PR. It remains under review and is not counted as merged.

In rc-dialog #586, I found that the public ReactNode title and footer props silently dropped numeric 0; a zero title also removed the dialog's aria-labelledby relationship. The signed fix distinguishes zero from the other existing falsy cases and keeps rendering, title identification, and accessibility wiring on the same predicates. Its regression failed on exact base a2efbc4 because the title query was null; the fixed repository passed 6 suites, 61 tests, and 4 snapshots together with TypeScript, focused ESLint, Prettier, and diff validation. I found no current issue or PR targeting numeric-zero dialog chrome; older unrelated proposals also touch Panel.tsx but not these conditions. The PR remains under review and is not counted as merged.

In rc-tabs #1017, I found that the public ReactNode tabBarExtraContent contract dropped numeric 0 at two separate truthiness boundaries: once before parsing the direct node or map form, and again after resolving the left or right slot. A related tab-icon boundary rendered icon={0} as bare text instead of the normal icon wrapper and skipped the string-label wrapper, so standard icon spacing could not apply. The signed fix preserves zero in direct, left, and right extras and uses one zero-aware icon predicate for both icon rendering and label layout without changing existing empty cases. Its exact-base regressions rendered zero extra-content nodes and no icon wrapper on dea2f5f; the fixed repository passed 6 suites, 76 tests, and 3 snapshots together with TypeScript, focused lint and formatting, ESM/CJS/declaration and Less compilation, and diff validation. No current open PR targets these numeric-zero paths. The PR remains under review and is not counted as merged.

In rc-menu #892, I found that the public RenderIconType contract accepted numeric 0, but the shared icon fallback silently discarded it; a second || merge also replaced an explicit per-item zero with the menu-level icon. The signed fix preserves zero at both boundaries and aligns MenuItem with the nullish icon merge already used by SubMenu. On exact base 5e2a3e2, the two regressions rendered 1 and 1MenuItemIcon instead of 10; the fixed repository passed all 12 suites, 133 tests, and 20 snapshots together with TypeScript, lint without errors, ESM/CJS/declaration and Less compilation, formatting, and diff validation. No open PR changes src/Icon.tsx; the only active MenuItem.tsx overlap is an unrelated LegacyMenuItem refactor. The PR remains under review and is not counted as merged.

For Input.Search issue #57175, a maintainer confirmed the need for a dedicated way to configure the generated search button's accessible name and welcomed an enterButtonProps contribution. The signed implementation forwards Button props only to the generated button, composes its class and pointer/click callbacks with Search behavior, preserves disabled/loading state, and documents the custom-element boundary in English and Chinese. On the exact base, the new prop leaked to the input, triggered React's unknown-prop warning, and left the button named only search; the fixed Search scope passed all 42 tests and 12 snapshots under both Jest and Vitest, while the complete Input scope passed 22 suites, 377 tests, 4 skips, and 195 snapshots. After maintainer direction, I retargeted the PR to feature and revalidated it there. Automated review then found that enterButtonProps.classNames/styles could replace Search-level button semantics wholesale; the signed follow-up 97be22d now merges both layers with specific-style precedence while preserving function-valued semantic evaluation against the generated Button props. Its regression failed on the prior head and passes 43 tests under both Jest and Vitest, with 12 Jest snapshots and focused lint, formatting, and diff checks green. The PR remains under review and is not counted as merged.

In Transfer #59121, I approved exact head 5540c8e6c963b00c2d921616d686f3b02e936930 after verifying that the select-all checkbox follows the actionable filtered set. The submitted Transfer Jest file passed 52 tests and 5 snapshots; a temporary expanded matrix passed 53 tests across source and target lists, empty matches, all-disabled matches, mixed enabled results, and search clearing. Focused ESLint, Biome, diff checks, and the full remote matrix were green. I explicitly recorded that the repository's Vitest configuration excludes this Transfer file rather than claiming an inapplicable local runner result.

In rc-textarea #78, I approved exact head ad936811b5a424b0c1b4c6bfabe959d8735bf51b after independently reproducing the duplicate Chinese IME onChange sequence and validating the event-source fix. A temporary matrix verified one notification for an unchanged IME commit, preservation of onCompositionEnd, and both raw and corrected notifications when exceedFormatter actually truncates input. The complete repository passed 6 suites, 54 tests, and 9 snapshots with focused ESLint, Prettier, and diff checks; I separately recommended committing equivalent regression coverage because the submitted PR contains no tests.

In rc-textarea #81, I requested one formatting correction on exact head d4a7821e31ce9740bb6a77a752d5edf392adebb7 before approving the otherwise correct hidden-measurement textarea fix. The submitted full suite passes 6 suites, 55 tests, and 9 snapshots; a temporary exact-head reversal made the new tabindex="-1" regression fail while the fix passes, and source lint is clean. The only blocker is a stray unrelated whitespace edit that makes the focused Prettier check fail, so the review records a precise, low-cost path to merge rather than duplicating the existing PR for issue #80.

In Cascader #59068, I approved exact head f27dafca07d34b52e72d99215f414343da90da62 after validating the new multiple={{ checkStrictly: true }} contract against @rc-component/cascader 1.25.0. The complete Cascader implementation and type suites passed 87 tests with 1 skip and 17 snapshots. A temporary independent matrix also passed for object-form checkStrictly: false retaining legacy conduction, strict mode with custom field names plus zero and empty-string values beside a disabled node, and preservation of an unknown controlled path while toggling an exact strict path. Focused ESLint, Biome, diff checks, and the full applicable remote matrix were green. The PR remains open and is not counted as merged.

In Affix #59022, I re-approved force-pushed exact head 68da39be0e9d206d9f99456b472c53fc3c283ee5 after validating the new same-target stacking registry, its lifecycle, and the added false-to-true stack re-registration regression. The complete Affix file passed 16 tests and its snapshot against the dependency version resolved by current CI; the new rerender case restored the expected 10px/60px top-stack order. I separately reproduced the visible Notification snapshot failure on the untouched feature base with @rc-component/notification@2.0.8, proving that it is dependency/snapshot drift outside the Affix patch. The size job likewise placed both generated bundles within their configured limits and failed only when the fork-origin workflow could not post its report comment. A prior temporary regression also verified peer recalculation after an offsetTop change. The PR remains open and is not counted as merged.

In Layout.Sider #58886, I requested changes on exact head d2e47fc7101e81546143998e98c8a35276b63bfa because the token-based media query introduced an exact-boundary conflict with Grid. Grid treats custom screenLG: 1100 as (min-width: 1100px), while the submitted Sider simultaneously uses (max-width: 1100px); both inclusive queries match at 1100px, unlike the previous non-overlapping 991.98px/992px contract. A temporary regression expecting the corresponding 1099.98px Sider upper bound failed with two 1100px calls, while the submitted two-test file and focused ESLint, Biome, and diff checks passed. I requested restoration of the established 0.02px separation plus an exact-query regression; the PR remains open and is not counted as merged.

For Input.OTP, I traced every cell's accessible name to the hardcoded English template OTP Input ${index + 1}. Public ARIA attributes apply only to the outer role="group", while the internal cell props are not exposed, so non-English users receive English announcements and callers have no supported per-cell override. My direct issue #59119 was automatically closed as invalid because Ant Design requires its official Issue Helper; it is not evidence of an accepted or active report. A replacement report with the exact prop flow, duplicate audit, and maintainer design question is prepared in the official helper but has not yet been publicly submitted.

In rc-steps #395, I reproduced that Enter and Space activation changed the current Step but silently skipped the public item-level onClick callback that mouse activation invokes. Space also retained its page-scroll default. The signed fix routes keyboard activation through the existing click path so both callbacks remain consistent and prevents the default key action. The exact-base regression received two parent changes but zero item callbacks; the fixed full suite passed 24 tests and 13 snapshots together with TypeScript, lint, formatting, ESM/CJS/declaration and Less compilation, and diff validation. Maintainer yoyo837 approved and merged it as a880d11 on August 27, 2026.

In rc-steps #396, I traced the standalone package's empty custom-icon output to the semantic Step refactor initializing an empty StepIcon even when the public item supplied JSX or string content. The signed minimal fix restores that content while preserving the existing iconRender override path. On exact base 95b7a56, the regression assertion failed because the cloud icon was absent; the fixed full suite passed 24 tests and 13 snapshots together with TypeScript, lint, formatting, ESM/CJS/declaration and Less compilation, and diff validation. The PR remains open and is not counted as merged.

In Ant Design #59138, I found that Table filter triggers declared button semantics but were removed from the Tab order, ignored Enter and Space, and left the existing localized Table.filterTitle unused. The signed fix gives visible triggers their locale-specific accessible name and standard keyboard activation while retaining tabIndex=-1 for the aria-hidden measure row. I then addressed review feedback on signed head c28481a by preventing repeated Enter and Space keydowns from synthesizing clicks while still suppressing native key behavior; the new two-key regression fails twice on the previous implementation and passes with the guard. The complete Table filter scope now passes 97 tests and 10 snapshots, together with focused ESLint, implementation Biome, diff validation, and the signed commit hook. Earlier remote CI exposed the expected rendered-output changes across both runners, so I synchronized and revalidated 73 Jest and 73 Vitest locale snapshots, 7 ConfigProvider Table snapshots, 9 normal Table demos, and 10 extended Table demos. The PR remains open and is not counted as merged.

In rc-portal #43, I reproduced a runtime crash caused by the public ReactNode contract accepting text and numeric children while the ref path unconditionally passed them to React.cloneElement. The signed fix uses the existing node-aware ref guard so those children render normally while ref-capable elements retain the established composed-ref path. Both regressions failed on exact base 4f29120; the fixed repository passes all 25 client tests and 3 snapshots, SSR, TypeScript, lint without errors, and ESM/CJS/declaration compilation. Because active CSP nonce PR #35 touches the same source and test files, I also merged its exact head locally: the merge was conflict-free and the combined 32-test client suite, SSR, and TypeScript checks passed. The PR remains open and is not counted as merged.

In rc-rate #219, I found that each enabled star exposed focusable radio semantics but accepted only Enter, leaving the conventional Space activation key ineffective and free to scroll the page. The signed fix supports both keys and prevents their default action during selection. Its exact-base regression received only the Enter change; the fixed full suite passed 40 tests and 7 snapshots together with TypeScript, ESM/CJS/declaration and Less compilation, diff validation, and lint with no errors. I also audited every open PR touching Star.tsx; none changes the keyboard handler. The PR remains under review and is not counted as merged.

In rc-collapse #454, I found that focusable headers exposed button or tab semantics but activated only with Enter; Space neither toggled the panel nor prevented its page-scroll default. The signed fix adds Space to the existing keyboard path, prevents the handled key default, and keeps disabled headers inert. On the exact base, 94 existing tests passed while the new Space regression failed; the fixed full repository passes all 95 tests and its snapshot together with TypeScript, focused lint without errors, formatting, ESM/CJS/declaration and Less compilation, and diff validation. I audited the open backlog before submission: no issue or PR targets Space activation, while the older accessibility proposal #363 adds structural relationships without changing the Enter-only handler. The PR remains under review and is not counted as merged.

In rc-switch #180, I found that the component handled Left and Right to change its value but left the same key events free to perform browser page scrolling. The signed fix prevents the default action only in those two handled branches while preserving value updates and the consumer onKeyDown callback. On the exact base, all unrelated tests passed and both values changed, but the regression showed neither event was prevented; the fixed repository passes all 14 tests together with TypeScript, focused lint, formatting, ESM/CJS/declaration and Less compilation, and diff validation. The only target-function overlap is the stale, conflicting 2022 PR #97, which changes the key-detection property but still does not prevent the handled default action. The PR remains under review and is not counted as merged.

For the still-open rc-switch issue #57, I confirmed that current master still exposes a component whose generated type refers to the private, unnameable SwitchProps interface. The signed current-master replacement #181 exports the existing interface and adds a compile-time consumer regression covering the named import and onChange inference. The exact base fails with TS2614 because the export is absent; the fixed head passes TypeScript, all 14 runtime tests, Prettier, and ESM/CJS/declaration plus Less compilation, with both generated declarations explicitly exporting SwitchProps. Lint has no errors and one unrelated pre-existing unused-disable warning in the simple demo. I publicly marked the conflicting 2020 PR #56 as superseded rather than leaving duplicate candidates unexplained. The PR remains under review and is not counted as merged.

In rc-segmented #343, I reproduced that the outer radiogroup added a default tab stop before its native radio inputs even though Arrow-key behavior exists only on the inputs. Keyboard users therefore landed first on a non-operable group and had to Tab again to reach the checked option. The signed fix lets the checked radio receive the first default focus while preserving an explicit consumer tabIndex override. Its exact-base regression focused radiogroup[tabindex="0"]; the fixed full suite passed 33 tests and 13 snapshots together with TypeScript, ESM/CJS/declaration and Less compilation, formatting, diff validation, and lint with no errors. The PR remains under review and is not counted as merged.

In rc-tree-select #685, I found that simple-mode normalization treated the valid numeric key 0 as absent and replaced it with the node id. The public onSelect option therefore returned the substituted key, while the parallel development check also skipped key/value mismatch warnings for zero. The signed nullish-check fix preserves the caller's key and validates it consistently. The two exact-base regressions received key: "fallback" and no warning; the fixed complete repository passed 12 suites, 186 tests, and 15 snapshots together with TypeScript, formatting, ESM/CJS/declaration compilation, diff validation, and lint with no errors. The PR remains under review and is not counted as merged.

In rc-table #1509, I found that each default row expand control was still a click-only <span> even though the adjacent expand-all control already used native button semantics. The signed fix renders expandable-row controls as non-submitting buttons, exposes aria-expanded, and updates their accessible name after state changes while leaving non-expandable placeholders as spans. On exact base 7977f2b, Testing Library could not find any accessible Expand row button; the fixed repository passed all 21 files and 237 tests together with TypeScript, lint without errors, formatting, ESM/CJS/declaration and Less compilation, and diff validation. The PR remains under review and is not counted as merged.

For rc-table issue #1228, I traced ordinary rows being announced as clickable to useRowInfo unconditionally composing an onClick function even when neither onRow.onClick nor an applicable expandRowByClick action existed. The signed fix omits only that inert handler and preserves both intentional click paths. On exact base 7977f2b, a custom-row regression received a function for every default row; the fixed repository passed all 21 files and 237 tests together with TypeScript, lint without errors, formatting, ESM/CJS/declaration and Less compilation, and diff validation. The PR remains under review and is not counted as merged.

In rc-portal #26, I approved exact head 7eee91516d75c576568745455065f0155f0d41e6 after an independent DOM probe verified that body { overflow-y: scroll } is recognized even without content overflow. The expanded scope passed 17 tests and 3 snapshots, TypeScript, and source lint with no errors. I also documented that the floating build tool now rejects eight unchanged legacy deep imports before transformation, while the one-function patch applies cleanly to current master and preserves the measured-overflow fallback.

In rc-portal #35, I approved exact head 47a5762b9ec1fefdf51ee41240348c531292e694 after independently validating CSP nonce propagation and lifecycle behavior. The original client scope passed 30 tests and 3 snapshots, SSR passed, and TypeScript plus source lint completed without errors. Temporary probes additionally verified active nonce replacement and independent cleanup for simultaneous locks using different nonces. I disclosed that the current local father plugin rejects nine unchanged legacy deep imports from the old branch base, while GitHub reports the PR cleanly mergeable and all submitted remote checks are green.

In Ant Design Table #58609, I answered a maintainer's question about whether the migrated selection-column z-index selector was still active. An exact-head render produced a header with both ant-table-selection-column and ant-table-cell-fix-start; the generated CSS matched it and used the forward --z-offset, while the generic fixed-cell rule used --z-offset-reverse. A focused probe verified that the selection header's forward offset exceeds the following fixed header's reverse offset, preserving the stacking behavior introduced by #39940. The author merged master at the same time as my approval, so I publicly corrected the timing claim and revalidated merge head 603e4f4: its only remaining diff is the two-line style change, and the official Table row-selection file plus the independent probe pass 76/76 tests and 4/4 snapshots with current dependencies. The new remote contexts were still running at that validation point and are not represented as green evidence.

In rc-pagination #720, I found that a string-valued quick-jumper goButton rendered as a mouse-only span in both normal and simple pagination. The signed fix exposes only that text path as a focusable button control, supports Enter and Space, and removes disabled controls from sequential focus without changing the visual element. The exact-base regression could not find an accessible Go button. Automated review then found that an empty simple-mode input activated by Space could be coerced to page 1; I reproduced the callback, added a regression, and guarded only the keyboard path so the existing blur contract remained intact. The verified follow-up commit 1b23358 passes the full 225-test, 130-snapshot suite together with TypeScript, focused lint and formatting, and ESM/CJS/declaration plus CSS compilation. I audited every open PR file first; the broader pagination semantics work in #713 does not change either quick-jumper control path. The PR remains under review and is not counted as merged.

In rc-slider #1090, I found that clickable mark labels exposed a pointer cursor and mouse selection but remained unreachable and inoperable from the keyboard. The signed fix gives the existing interactive marks button semantics, supports Enter and Space while preventing Space scrolling, and removes globally disabled marks from sequential focus while guarding both mouse and keyboard activation. Two exact-base regressions could not find accessible mark buttons; the fixed full suite passed all 5 suites, 123 tests, and 5 snapshots together with TypeScript, focused lint without errors, formatting, ESM/CJS/declaration and CSS compilation, and diff validation. I re-audited every open target-file overlap before submission; #949 is styling-only, #866 is an older performance proposal, and #842 changes dot class names rather than mark interaction. The PR remains under review and is not counted as merged.

In Skeleton.Image #59107, I reproduced that the visual loading placeholder exposed the hardcoded English SVG name Image placeholder even though it neither identifies loaded content nor communicates loading state. The signed fix hides only the built-in illustration from assistive technology and legacy keyboard focus while preserving custom Skeleton.Node content. Its exact-base regression failed on the missing aria-hidden; all 32 Skeleton tests pass under both Jest and Vitest, with focused lint, formatting, and diff checks green. The PR merged on August 27, 2026.

In rc-image #530, I found that the Preview Close and Previous controls omitted type="button" even though the Next and action controls already used it. Native buttons default to submitting their containing form, so a preview mounted through a custom or inline portal container could trigger an unrelated form submission. The signed fix makes all three preview controls non-submitting and adds a regression covering their rendered button types. The exact-base regression failed on the missing attributes; the fixed repository passed all 8 suites, 81 tests, and its snapshot together with TypeScript, formatting, and diff validation. The PR remains under review and is not counted as merged.

In rc-tour #110, I found the same native-form hazard in the default Prev, Next, and Finish controls while the adjacent Close control already used type="button". The signed fix makes every default Tour action non-submitting and extends the existing navigation regression across all three states. The exact base passed 33 tests and failed the new assertion; the fixed full suite passed all 34 tests and 16 snapshots, with TypeScript, focused formatting, and diff validation green. The PR remains under review and is not counted as merged.

For rc-upload issue #294, I reproduced that openFileDialogOnClick={false} disabled click and keyboard activation while leaving the wrapper exposed as a focusable button. The signed accessibility fix removes both role="button" and sequential focus only in that non-clickable state, preserving drag-and-drop behavior. A follow-up exact-head regression also proved that the enabled role="button" path did not activate on Space and did not prevent the default for either activation key; the updated implementation supports Enter and Space with single-shot default prevention. Code review then identified a child-control boundary: Space on a native button inside hasControlInside was intercepted by the wrapper before native activation. I reproduced that failure on the exact reviewed head and pushed a signed follow-up that defers keydown handling to the child while preserving the resulting single click. The fixed full suite passed all 62 tests together with TypeScript, ESM/CJS/declaration builds, formatting, and lint with no errors. The automated exact-head rereview generated no further actionable comments and assessed the merge risk as minimal. The PR remains under review and is not counted as merged.

For rc-overflow issue #43, I confirmed that responsive items hidden with opacity and aria-hidden could still leave focusable descendants in sequential keyboard navigation. The signed inert fix removes only hidden items from focus and interaction while preserving their measurement DOM. It includes visible/hidden and SSR regressions plus React 16, 18, and 19 serialization handling; the exact base failed on the missing attribute, while the fixed 36-test, 7-snapshot suite, TypeScript, lint, and ESM/CJS/declaration builds passed. The PR remains under review and is not counted as merged.

In rc-notification #408, I found that the built-in close control omitted type="button", allowing a notification mounted into a form container to trigger an unrelated native submission. The signed one-attribute fix aligns the close control with the repository's explicit action-button types and adds a regression to its existing semantic test. The exact base passed 45 tests and failed on the missing type; the fixed full suite passed all 52 tests together with TypeScript, lint, ESM/CJS/declaration, Less compilation, formatting, and diff validation. Maintainer zombieJ merged it as 12df0e6.

After rc-notification 2.0.8 published that fix, fresh Ant Design CI installs immediately began failing four React, ES, and distribution shards because three committed Notification demo snapshots still omitted the new button type. The signed Ant Design integration fix #59126 raises the minimum dependency patch and synchronizes only the regular, extended-context, and semantic snapshots. On exact Ant Design master dc4490a, the published dependency reproduced all three stale expectations; the corrected complete Notification scope passed 10 suites, 95 tests, and 43 snapshots, with formatting and diff checks green. Its complete remote matrix also passed React 18/latest, ES/lib, dist/dist-min, coverage, preview, size, security, and all three visual shards plus the final visual report. I audited every open PR file list before submission and found no overlap in the three snapshot files. Maintainer QDyanbing merged it as 5845bc8 on August 27, 2026.

In rc-input #200, I confirmed that the autosize measurement textarea used the invalid tab-index spelling, so browsers ignored the intended tabindex="-1" keyboard safeguard. The signed one-token correction covers the separately published rc-input copy without duplicating rc-textarea's existing #81. Its exact-base regression passed 127 tests and failed on the missing standard attribute; the fixed full suite passed all 128 tests and 22 snapshots together with TypeScript, lint, formatting, and ESM/CJS/declaration plus Less compilation. The PR remains under review and is not counted as merged.

After the rc-menu author corrected the React peer contract I had previously flagged, I approved the exact corrected head: paired SSR-to-hydration probes on both React 19 and the minimum React 18 release produced unique, stable, resolvable popup IDs with zero hydration errors, while the exact base reproduced duplicate IDs. I also submitted a signed rc-slider drag-safety fix after reproducing the reported null-container crash on the exact base; the patch preserves the independent end/cleanup path and passes all 120 tests, 5 snapshots, TypeScript, lint, formatting, and compilation. A second signed rc-slider accessibility contribution implements the maintainer-welcomed aria-describedby request for both single and range handles without post-render DOM mutation; two exact-base regressions failed before the fix, while the final 121-test suite, TypeScript, lint, ESM/CJS declarations, CSS compilation, and diff validation passed. A third signed rc-slider drag-end fix moves document mouseup completion to the capture phase so an ancestor's stopPropagation() cannot strand the drag transaction; the exact base never called onChangeComplete and kept changing after release, while the fixed 120-test suite, TypeScript, lint, ESM/CJS declarations, CSS compilation, and diff validation passed. A signed mini-decimal fix now normalizes -0 at integer precision after an exact-base reproduction, with rounding and truncation boundaries covered by the complete suite. In a separate rc-trigger safe-polygon review, an exact-head timer probe caught a public mouseLeaveDelay={5} being clamped to about one second; I requested a fix with focused and full suites otherwise passing. I also caught a repeated-retry request-ownership bug in rc-upload: an earlier request could delete the newer request handle for the same UID, preventing later abort or unmount cleanup; an isolated probe reproduced the lost abort while the focused 55-test suite and static checks otherwise passed. In rc-mentions #307, a base/head focus probe showed the new scroll guard mistakes the showCount wrapper for the focused textarea and suppresses active-item scrolling; I requested comparison against the actual textarea ref plus a showCount regression after the full 49-test suite passed.

I also retested a stale Form accessibility report on current master and supplied focused evidence that its Select and DatePicker failure is already resolved. I similarly traced the old Tabs focus-visibility report to two merged fixes and the current DOM/style contract, helping maintainers retire obsolete backlog safely. I then revalidated Tabs keyboard activation on current master with an ArrowRight/Space/Enter interaction probe and the focused 39-test suite, tracing the resolved behavior to canonical rc-tabs #763. For a separate Tabs defect, I reproduced a critical aria-required-children violation in the extra-content DOM, revalidated the failure on current Ant Design master, and filed it at the canonical rc-tabs upstream with a focused axe reproduction, source trace, duplicate audit, and implementation boundaries. When an external contributor implemented the fix, I approved its exact corrected head after independent top/LTR and left/RTL ownership probes, axe checks, and an SSR-to-hydration test all passed; the complete plus expanded scope passed 80 tests and 3 snapshots with TypeScript and lint clean of errors. In Carousel issue #59003, I traced another hardcoded-English accessible-name path, checked every open PR for overlap, and requested maintainer direction on the locale contract before implementation rather than introducing an unreviewed public API.

I also revalidated and triaged a stale Select aria-activedescendant report against current master and the canonical rc-select fix, after which maintainer yoyo837 closed the issue as completed. I then confirmed AutoComplete's old always-false aria-selected report is fixed, tracing it to merged rc-select #1077 and verifying the matching and non-matching option states with 31 focused tests. After #59020 merged, I rechecked the older Tree aria-required-children report on current master: all 13 official Tree axe demos pass with that rule enabled, providing maintainers with current closure evidence. In rc-util #744, I approved the CSP nonce propagation at exact head after the full 173-test suite, TypeScript, focused lint, and ESM/CJS builds passed; an independent DOM-node probe verified that the temporary measurement style itself retained the nonce after cleanup, and a current-master comparison found no target-file drift. I also approved a verified CodeQL action pin update after checking the signed upstream tag, action metadata, and exact-head security workflow. In rc-util #768, I blocked an incomplete cross-frame Element predicate after exact-head probes showed plain { nodeType: 1 } objects passing isDOM/getDOM and a forged rectangle method passing isVisible; the 175-test runtime suite passed, but both new iframe tests also failed TypeScript on Window.HTMLElement. For rc-util issue #805, I reproduced that both delayed frame and timeout work remained scheduled after useDelayState unmounted, then submitted a signed cleanup fix with regression coverage. The exact base retained one timer in each new case; the fixed head passed the 10-test focused scope, all 29 suites with 184 passing tests and one skip, TypeScript, lint, formatting, ESM/CJS compilation, and diff validation. For Ant Design issue #59044, I traced a missed shouldUpdate notification to rc-util deleting from a nested object still shared with the previous store. The signed canonical immutability fix clones the child container before removal; its exact-base regression proved the input object was mutated, the fixed full suite passed 182 tests with one skip, and the downstream rc-field-form preserve reproduction passed all 13 tests with the local build.

For the long-open rc-menu keyboard issue #92, I revalidated the original nested-item Enter interaction on exact current master 5e2a3e21. A temporary focused-element regression navigated into an inline SubMenu, pressed Enter on the actual focused child MenuItem, and verified that the root onClick fired exactly once with key: "child"; the complete Keyboard file passed 11 tests and its snapshot. The probe was removed afterward, and I posted the current closure evidence without claiming a new code fix.

For rc-picker issue #1002, I reproduced from an unmodified packed release that Node's ESM resolver selected the bundler-only es build and then failed on its extensionless relative locale import. An initial CommonJS-routing fix loaded successfully but, following a valid automated review finding, I verified that it changed native ESM defaults into nested CommonJS namespaces. The revised signed package-exports fix instead makes the generated es build directly Node-compatible with explicit relative file extensions and an ESM package boundary, while leaving require() on lib. The prepublish test compares public keys and representative default values across all 13 ESM/CommonJS entry pairs. Packed ESM and CommonJS consumers preserved the expected root, generate-config, and locale shapes; all 148 generated ESM files had zero extensionless relative specifiers; the rewrite was idempotent; and the complete repository passed 15 suites, 468 tests, and 29 snapshots. The PR remains under review and is not counted as merged.

For rc-picker issue #929, I reproduced that Android virtual keyboards reporting event.key = "Unidentified" left masked DatePicker and RangePicker input unable to reach onChange. The signed native-input fallback recovers inserted text and deletion intent only after that keydown value, then reuses the existing mask-cell formatting path so ordinary keyboards are not processed twice. The exact-base single-picker regression produced zero change callbacks; the fixed single and range sequences pass, together with the complete 15-suite scope of 470 tests and 29 snapshots, focused ESLint, formatting, and diff validation. The repository's existing deprecated Jest-matcher type failures reproduce unchanged on the exact base. The PR remains under review and is not counted as merged.

For rc-select issue #1249, I confirmed that ordinary Select inputs use the password-specific autocomplete="new-password" workaround and that the long-requested public override from issue #768 no longer reached the internal input. The signed canonical fix exposes a typed autoComplete prop, forwards it only to the search input, and documents the contract. My initial revision proposed changing the default to off; after two maintainers traced the Chromium saved-history compatibility history in #538 and #1222, signed exact head 103e4a9 deliberately preserves new-password and narrows the change to an explicit opt-in override. On exact base, an explicit off still rendered new-password; the corrected focused Select file passed 110 tests and 5 snapshots together with TypeScript, ESLint, formatting, and diff checks, while the prior complete branch validation passed 21 suites with 437 tests and 21 snapshots plus ESM/CJS/declaration compilation. The PR remains under review and is not counted as merged.

For Ant Design Icons issue #760, I reproduced that Bun wrapped each generated React ESM icon's CommonJS SVG definition, causing the runtime validator to receive a nested object and render no SVG. A direct generator change would also make the CommonJS output depend on ESM, so the signed build-specific fix rewrites only the 848 generated es/icons imports after compilation while preserving all 848 lib/icons imports. The exact base emitted the reported warning and rendered only an empty icon span under Bun 1.4.0; the fixed Bun and Node CommonJS server-render probes both produced SVG output. The complete React scope passed 5 test files with 49 tests, source lint, the five-case bundle-size smoke, formatting, compilation, and an idempotent second rewrite. The PR remains under review and is not counted as merged.

For Ant Design Empty #59128, I verified with Chromium's accessibility tree that the built-in SVG title and the visible Empty description exposed two separate nodes with the same No data name: one image and one static-text node. The signed fix hides only Ant Design's built-in illustration container when a renderable description already supplies the accessible text; custom images remain consumer-controlled, while description={false} retains the localized SVG-title fallback. After automated review found that React renders description={true} as an empty node, I first reproduced the hidden-fallback regression and then excluded that boundary while removing the empty wrapper. The current focused Empty file passes 16 tests; the affected SSR demo suites pass 33 tests and 29 snapshots, together with focused ESLint, Prettier, and diff checks. A second Chromium probe confirms that only the static-text node remains for the ordinary description case. The PR is open and is not counted as merged.

In Ant Design locale #59129, I combined two related zh-TW picker corrections rather than splitting individual strings: DatePicker's visibly spaced 確 定 confirmation is normalized to 確定, and ColorPicker's Mainland/Hong Kong 漸變色 wording is replaced by the Taiwan UI term 漸層色. A focused locale-contract regression failed on the exact base and now guards both values; the complete locale-provider file passes 77 tests, together with focused ESLint, Biome, Prettier, and diff checks. I audited current open PR titles and bodies for zh-TW locale overlap. The signed PR is open and is not counted as merged.

For rc-color-picker #300, I traced Ant Design's preset swatches to the exported ColorBlock: when an onClick handler is supplied, the component remained an unfocusable, unnamed div with no keyboard activation path. The exact-base regression could not find a button named for its color. The signed branch demonstrated conditional button semantics, a tab stop, Enter and Space activation, a color-value default accessible name, and an explicit aria-label override while leaving presentation-only blocks inert; the complete repository suite passed 23 tests, TypeScript, focused lint, formatting, and diff validation. A later overlap audit confirmed that the active, maintainer-reviewed rc-color-picker #286 is the canonical implementation of the same ColorBlock accessibility work. I transferred the remaining accessible-name and handler-composition findings to exact-head reviews on #286 and closed #300 as a duplicate on August 28, 2026. It was not merged and is not counted.

For Ant Design ColorPicker #59130, I addressed the first confirmed keyboard gap in accessibility issue #57935: the default clickable trigger had no role, tab stop, accessible name, or key activation. The exact-base regression failed on the missing button role. The signed fix adds Enter and Space activation, current-color naming, synchronized aria-expanded, and disabled-state semantics while leaving custom triggers consumer-controlled. It also avoids nested interactive semantics by making the trigger-only clear marker non-interactive when it has no onChange; the actionable panel clear control remains keyboard operable. Automated review then identified repeated keydown activation: on the previous head, new regressions proved that a repeated Enter opened the trigger and repeated Enter or Space invoked onClear; signed follow-up 9e89ae8 now ignores repeat activation in both handlers. The complete ColorPicker file passes 57 tests and 5 snapshots, with focused ESLint, Prettier, Biome, and diff checks green. The PR is open and is not counted as merged.

In rc-trigger #624, I approved exact head 1253e1f53e18b7ed222306f3568b9d8d861dd095 after verifying that root-element detection no longer depends on the parent window's DOM constructors and therefore works for iframe documents. The focused iframe and flip scope passed 16 tests, while the complete repository passed 17 suites with 131 tests and one skip. Prettier, diff checks, and the remote test, CodeQL, Codecov, Socket, and CodeRabbit checks were green; the PR remains open and is not counted as merged.

In rc-trigger #639, I requested changes on exact head c28e7e8c670e9fb35776017d0648a32d509dcd57 after a real-Chrome cascade probe showed that the proposed normal inline transition: none remained overridden by the issue's transition-duration: 0.01ms !important rule; only an important inline shorthand computed to none 0s. I also verified that removing post-motion realignment made two existing focused tests fail on the PR head while the same tests passed on its exact base, covering both popupAlign-update and resize alignment. TypeScript, formatting, diff checks, and ESLint with no errors passed, but the full PR-head test suite remained at 15 passing and 2 failing suites, so the review stays blocking pending a priority-safe restoration and lifecycle regressions.

In rc-trigger #646, I approved exact head aa2160e9f1cc74e608b6de74cebe4cbd390f3d4d after verifying the new vertical clamp against the existing shift transaction. The target-overlap guard preserves follow-target behavior outside the shift band; the derived minimum and maximum keep normal-height popups inside the visible region, while an oversized popup deliberately pins to the visible top. The focused eight-case flip/shift file and complete repository passed 17 suites with 138 tests and one existing skip, together with TypeScript, zero-error lint, formatting, and diff checks. I then validated the downstream Picker layer: the exact picker commit with published trigger 3.10.1 failed all ten new single/range placement assertions by 4px, while the same commit against compiled exact trigger head aa2160e9 passed all 15 suites with 478 tests, two existing skips, and 29 snapshots. The public review records the required release order—trigger first, then picker—without misrepresenting the two-package issue as completed.

In Ant Design docs #59122, I approved exact head 520652f1114b5eb9061782e82f5de880f04a1369 after confirming the one-line English documentation diff changes only the standard JavaScript product-name casing. The docs, preview, lint, build, and visual checks pass. I also traced its unrelated red React, ES, and distribution shards to the shared Notification snapshot mismatch introduced by the newly published rc-notification 2.0.8, and linked the fully green isolated integration fix #59126 rather than attributing those failures to the documentation author.

For DirectoryTree issue #53043, I submitted a signed, feature-base external file-drop implementation that explicitly supersedes and credits the earlier closed #55884. The new allowFileDrop and onFileDrop contract maps title elements to their original typed data nodes through a WeakMap, directly addressing the maintainer's finding that the prior DOM-string approach corrupted numeric keys. Exact-base coverage first produced no callback; the fixed regression preserves key: 0, nested custom titles, non-file drag behavior, hover cleanup, and generic callback types. The DirectoryTree and type scopes pass 32 tests and 12 snapshots, both demo suites pass 42 tests and 45 snapshots, the changed implementation reaches 100% line coverage, and focused ESLint, Biome, Prettier, and diff checks pass. The PR remains open and is not counted as merged.

While triaging that feature-base CI, I traced every failing test shard to the newly published @rc-component/notification@2.0.8, not to the Tree files: the fresh dependency adds type="button" to four Notification close controls while the feature branch still pinned 2.0.7-era snapshots. I opened signed Ant Design #59131 as a separate base repair rather than mixing unrelated files into DirectoryTree. It upgrades 2.0.7 to 2.0.8, synchronizes only the three affected snapshots, and directly incorporates the canonical non-submitting-button fix from react-component/notification #408. The focused validation passes 3 suites, 30 tests, and 43 snapshots; Prettier and diff checks are clean. The PR is open and is not counted as merged.

For Ant Design Collapse #59132, I reproduced that the default icon controls created by collapsible="header" and collapsible="icon" kept the hardcoded English accessible names expanded and collapsed under a zh-TW ConfigProvider. The signed fix reuses the existing Text.collapse and Text.expand locale contract for action names while the header continues to expose state through aria-expanded, so no new locale keys or public API are required. The new zh-TW regression failed on the exact base and passes for both interactive modes after the change; all 7 Collapse suites pass with 72 tests and 47 snapshots, together with focused Biome and diff checks. The PR is open and is not counted as merged.

For Ant Design #59133, I audited the remaining ReactNode truthiness paths after the merged numeric-zero fixes and combined three related boundaries rather than splitting them into small PRs: Spin description={0}, Divider children, and Popconfirm icon={0} were all silently discarded. Each regression failed on exact master d58fe298 because its expected node was absent. The signed fix uses the repository's shared isReactRenderable contract and routes all Divider content classes, rail styles, warnings, and rendering through the same result. The complete three-component scope passes 20 suites with 174 tests, two skips, and 97 snapshots, together with focused ESLint, Biome, and diff checks. Repository TypeScript reports six unrelated Table demo errors that reproduce identically in an untouched worktree at the exact base. The PR is open and is not counted as merged.

For Ant Design Tag #59134, I followed the repeat-key boundary identified during ColorPicker review into Tag's two span-based keyboard controls. On exact master d58fe298, a repeated Space event still invoked CheckableTag.onChange, while repeated Enter and Space events both invoked a closable Tag's onClose. The signed fix ignores event.repeat only for the built-in activation step, preserving consumer onKeyDown delivery and ordinary prevention behavior. After review identified that repeated Space could still retain its browser default, signed follow-up 038df5932 separated default suppression from semantic activation and added defaultPrevented assertions for repeated events. All three original regressions failed before the fix; the complete Tag scope passes 6 suites with 100 tests, three skips, and 35 snapshots, together with focused ESLint, Biome, Prettier, and diff checks. The PR is open and is not counted as merged.

For Ant Design Input.Password #59135, I audited the remaining span-based password visibility button after confirming no open PR touched its implementation or tests. On exact master d58fe298, auto-repeated Enter and Space events each toggled visibility and invoked visibilityToggle.onVisibleChange(true). The signed fix continues to prevent native defaults for handled keys but gates the semantic visibility change on !event.repeat. Both regressions failed before the fix and pass afterward; the complete Input scope passes 22 suites with 378 tests, four skips, and 195 snapshots, together with focused ESLint, Biome, Prettier, and diff checks. The PR is open and is not counted as merged.

In rc-util #808, I requested changes on exact head 6b0790bf5026471f55618a2303d3a6a5b36cad77 because isReactRenderable(true) returned true even though React 18.3.1 and 19.2.8 both server-render true and false as empty children. Ant Design consumers use this guard to decide whether to create title, content, and icon wrappers, so the asymmetric boolean handling can produce empty semantic and layout nodes. The submitted focused suite passed 15 tests and TypeScript, but it explicitly encoded the incorrect true expectation; my independent probes established the correction boundary without duplicating the automated plain-object and package-subpath findings. The PR remains open and is not counted as merged.

For rc-util issue #555, I reproduced the enforced Trusted Types failure caused by assigning stylesheet text through HTMLStyleElement.innerHTML. The signed fix #809 writes and compares CSS through textContent, avoiding the TrustedHTML sink for both initial injection and updates to an existing managed style. On exact master, the new simulated-policy regression threw the reported TrustedHTML TypeError; the fixed focused scope passed 13 tests and the complete repository passed 29 suites with 183 tests and one existing skip, together with TypeScript, ESM/CJS/declaration compilation, formatting, diff validation, and lint with no errors. I audited every open PR file list: the old #496 changes nonce assignment in the same module but leaves the TrustedHTML sink intact. The PR remains under review and is not counted as merged.

For Oh My Zsh #13932, I revisited the Poetry environment path boundary after another contributor supplied a same-prefix sibling truth table. The existing signed head already distinguished /x/proj-extra from /x/proj/sub; fresh zsh state probes confirmed one deactivation for the sibling and none for the real child. Extending the table exposed a remaining root-project edge because an unnormalized / produced a //* descendant pattern that did not match /tmp. Signed follow-up a7248eac removes the trailing slash before exact and descendant comparisons. The sibling, ordinary-child, and root-child probes now all produce the intended state, with zsh -n and diff checks passing. The evidence and exact commit were posted publicly; the PR remains open and is not counted as merged.

In fast-color #96, I requested changes on exact head 03ff45ec4f25c76f285a41e03a3d112b62adb237 after a compiled base/head comparison separated the valid hue-boundary fix from two inaccurate regression claims. The proposed % 360 normalization correctly changes #DB393A from hue 360 on base to 0 on the PR head, and the head passes all 213 tests, ESLint, the TypeScript build, diff validation, and every current remote check. However, fromHsv() on the exact base already normalizes hue before sector selection, so the new round-trip test passes without the fix and produces #db3939 with blue 57 rather than the claimed magenta blue 219. I asked the author to retain the direct failing-before getHue() and toHsv() assertions while correcting the causal explanation and replacing or removing the pre-existing-pass test. The PR remains open and is not counted as merged.

In Ant Design X Sender #2033, I approved exact head 189de5b3d21d6792b68920cc95440697c58e6aa1 after independently validating the Backspace selection boundary. Reverting only the new collapsed-range guard makes the submitted backwards-selection regression fail at the slot-adjacent focus edge; restoring the head passes all 23 Sender slot tests. A temporary complementary probe also verified that an ordinary collapsed caret at offset zero still removes the preceding slot and emits exactly one change, bringing the expanded scope to 24 passing tests. Package TypeScript, Biome on both changed files, diff validation, and all current remote checks pass. The PR remains open and is not counted as merged.

In Ant Design X Sender #2031, I approved exact head 36b08c7e431f55ada856b605d75f202f4b433375 after replacing the submitted mock-only confidence boundary with real editor-state probes. A real DOM Range received mixed CRLF, CR, and LF input; the final onChange and imperative getValue() results both preserved the complete three-line LF-normalized value. A second probe established that paste on the portaled type="input" slot stays on its native path without default prevention or outer Sender callback interception, ruling out a suspected input-slot regression. The expanded Sender slot scope passed 24 tests, and the exact head passed package TypeScript, Biome on all three changed files, diff validation, and every current remote check. The PR remains open and is not counted as merged.

In Ant Design X Sender #2034, I approved exact head 8d052ad59b913e437a2e4dc83810f6364c96add6 after validating the Chromium-only block-wrapper repair for Backspace immediately before a non-editable slot. Removing the repair made the submitted regression fail at the expected default-prevention assertion. Temporary complementary probes verified that unwrapping preserves multiple slots and all intervening and trailing text in exact order, restores the caret before the first slot at the original line index, emits one change, and does not intercept a non-collapsed selection. The exact head passes all 23 Sender slot tests, package TypeScript, Biome on both changed files, diff validation, and every current remote check. The PR remains open and is not counted as merged.

In Ant Design X theme #2030, I requested changes on exact head c840366537eed944baf0c5744496328d3d50b990 after an independent dark-theme comparison exposed an algorithm mismatch hidden by the submitted existence-only assertion. The bundled antd 6.6.1 alias derives Popover shadows from colorShadow; its dark algorithm produces white-alpha layers, while the PR's hardcoded value makes XProvider emit the default black-alpha layers under the same algorithm. A rendered Popover CSS-variable declaration failed exact comparison with theme.getDesignToken({ algorithm: theme.darkAlgorithm }).dropShadowPopover. I requested the same alpha-preserving colorShadow derivation and an exact dark-token regression. The submitted two-suite scope otherwise passes 4 tests, together with package TypeScript, Biome on all three changed files, diff validation, and current remote checks. The PR remains open and is not counted as merged.

In Ant Design X Think #2026, I approved exact head 6db80a3e798afa68c7dbed56d03204f7eaae0c3b after validating the retained-content motion lifecycle. Removing the new scoped display: none rule made the submitted regression fail with a computed block value. Restoring it passes the complete 11-test, 2-snapshot Think suite, while a temporary collapse-to-expand probe verifies that the same retained wrapper loses its hidden class and returns to display: block when reopened. Package TypeScript, Biome on both changed files, diff validation, and current remote checks pass. The PR remains open and is not counted as merged.

In Ant Design X Mermaid #2035, I approved exact head d55222f703df49426cc4dbf7f8a8812c88421316 after independently separating its zoom and export regressions. Restoring the old upper cap made the new zoom test stop at exactly 3×; restoring the old download path made the export test serialize the transformed live SVG instead of an interaction-free clone. The corrected path prefers intrinsic viewBox or SVG dimensions, sizes the DPR canvas independently of pan and zoom, and retains a scaled-bounds fallback; a temporary no-viewBox probe recovered approximately 640×480 from 3× 1920×1440 bounds. The complete Mermaid suite passes 70 tests, together with package TypeScript, Biome on both changed files, diff validation, and current remote checks. The PR remains open and is not counted as merged.

In Ant Design X Conversations #2036, I approved exact head f8a25eab1458cc6ea113fd8211d8277084e181ef after validating both the performance boundary and memo correctness. Removing only React.memo made the 500-item regression record 2,000 post-selection menu computations; exact head keeps that work within a constant bound while updating the old and new active rows. A temporary stable-items rerender probe replaced onActiveChange without invalidating item props and confirmed the memo-skipped row invokes only the latest callback through useEvent, not a stale closure. The complete Conversations scope passes 24 tests and 2 snapshots; the synchronized current-runtime Suggestion demo passes 5 tests and 4 snapshots; package TypeScript, focused Biome, diff validation, and current reported remote checks pass. The PR remains open and is not counted as merged.

In Ant Design #59136, I superseded my earlier approval and requested changes on exact head 8b331f5fec066f5c2c36545c22cb4335e4cd6211 after an additional Tour boundary probe exposed a real regression. Replacing the previous || fallback with ?? preserves numeric 0, but it also makes closable={{ closeIcon: false }} and an empty-string icon render an empty close button instead of the default CloseOutlined. Both temporary regressions fail on the submitted head; changing only that expression back to || makes both pass (2 passed, 24 skipped), isolating the causal boundary. I asked for a zero-specific or renderability-aware condition that preserves the existing false and empty-string fallback, plus committed coverage for both cases. The broader submitted scope still passes 131 tests and 37 snapshots, all 13 changed files pass focused static checks, and the remote matrix is green, demonstrating why the missing semantic edge needs explicit coverage. The PR remains open and is not counted as merged.

In ProComponents Card #9693, I approved exact head 24515b81542eda3118d7e407ab80ab9e96c1a50b after verifying that the already-declared classNames.actions and computed-but-unused styles.actions reach the actions list in both array and non-array rendering paths. Removing only the new Card-to-Actions wiring makes the submitted regression fail on its missing class. A temporary single-action rerender probe also verified class, style, and content replacement before removal. The Card scope passes 17 tests, the complete repository passes 74 files and 1,195 tests, and TypeScript, focused ESLint, UMD/ESM/CJS/declaration builds, and diff validation are green. Focused Prettier reports only two unchanged pre-existing Card formatting blocks, while the remote Vercel failure is an authorization link rather than a code failure. The PR remains open and is not counted as merged.

In Ant Design Badge #58934, I requested changes on exact head d6e24e3321229fa8d6010e7372e28ba1a415fdf7 because its dark-mode selector does not run through Ant Design's public theme API. An independent render under ConfigProvider with theme.darkAlgorithm produced no .ant-dark ancestor and kept the processing dot's computed --badge-processing-opacity at 0.5; manually adding an .ant-dark wrapper changed it to 0.85, proving the override depends on an undocumented class rather than the active algorithm. I also flagged that increasing opacity from 0.5 to 0.85 conflicts with the stated goal of reducing excessive brightness unless that visual rationale is corrected. The existing Badge scope still passes 33 tests and 14 snapshots, and focused ESLint, Biome, diff checks, and the remote matrix are green, demonstrating that the standard dark-algorithm boundary lacks regression coverage. The PR remains open and is not counted as merged.

For the stale rc-mentions #298, I traced current master and confirmed that the more complete #308 merged as ec60ea96665b3d965aad4d857bd539b9060df72f in March 2026. It includes the proposed disabled-selection guard plus enabled-index initialization, Up/Down skipping, all-disabled and changing-option handling, disabled hover behavior, and dedicated regressions. I publicly recommended closing the now-conflicting older PR as superseded instead of rebasing duplicate behavior; it is not counted as merged or as an additional exact-head review.

In Ant Design Pagination #58866, I approved exact head e92a3bce01d68b13858ce9e17090fc08e158029f after tracing variant and shape precedence across component props, pagination context, the global input variant, quick-jumper input, and size-changer Select. Removing the two new root classes makes all 10 submitted regressions fail. Temporary rerender and computed-style probes verified class cleanup through three precedence stages, Select override behavior, distinct filled/borderless styles, and the round radius. The focused scope passes 26 tests and 3 snapshots; changed implementation, test, and demo files pass ESLint and Biome, while the full remote code matrix is green. I manually inspected all three new default/dark/compact visual artifacts and found no layout or contrast regression, but explicitly left their repository baseline acceptance as a maintainer gate. The apparent size failure is an action-permission error after both bundles reported passed: true, not an exceeded byte limit. The PR remains open and is not counted as merged.

In Ant Design scroll-fade #58503, I requested changes on exact head fcf105a9afb3e2cf55609febc143d8badebfeebd because the newly added Select CSS-generation regression cannot type-check or run: it calls createCache, renders StyleProvider, and calls extractStyle without importing any of them. A clean local TypeScript run reproduces the four PR-specific TS2304 errors, matching the current lint job, while the React 18 shard fails with ReferenceError: createCache is not defined. I also traced the remaining matrix failures to unsynchronized Menu scrollable-submenu and Notification render-panel snapshots across React 18/latest, ES, and dist jobs, and asked for the affected snapshots to be regenerated and inspected from the current base. The PR remains open and is not counted as merged.

In Ant Design X Markdown #2039, I requested changes on exact head 55f56ecd9d27c6fad5de7cdea7db3ae7ec0a45ec because its punctuation-boundary sentinel can silently delete valid user content. The parser inserts U+E002 before Marked parsing and then globally strips every U+E002 from the final HTML without distinguishing inserted markers from original source text. An isolated probe using the head's exact regex transformation and Marked 15.0.12 turns before<U+E002>after into beforeafter; I requested a collision-safe temporary representation and a genuine-character round-trip regression. I also traced the official test failure to the new ASCII-quote assertion expecting &quot; while the configured Parser returns a literal quote, leaving that package at 330 passing tests and one failure. The PR remains open and is not counted as merged.

In Ant Design Menu #57883, I requested changes on exact head 709b2772d829dbccb05fc9655824a1d4225eb30c after two temporary focused regressions exposed capture-phase boundary failures in the proposed anchor-navigation repair. Enter on a disabled Menu item containing an anchor still called anchor.click() once, bypassing the disabled contract, while an Escape event on a plain item never reached the consumer's public onKeyDownCapture callback because the new internal prop overwrote it after the spread. The five submitted anchor tests pass, but both added boundaries fail; I asked for a disabled guard, composed consumer/internal handlers, and committed regressions. The branch is also dirty against current master, and its complete Menu file now reports five stale rc-menu ID snapshots with current dependencies, so I explicitly requested a current-base refresh before final validation. The PR remains open and is not counted as merged.

In Ant Design Table #59036, I approved exact head 2466b347bd666f6db2aae4fb90172ca3481eea54 after tracing the expand-all integration through current-page pagination, callback and icon state, the unified components.ExpandIcon contract, legacy row-only fallback, renderer stability, and localized defaults. The focused Table.expand scope passes 13 tests and its snapshot on React 19.2.8; all 72 touched locale files contain both expand-all and collapse-all strings, and diff validation passes. Full TypeScript reports six pre-existing Table demo FullToken.antCls errors, but the exact base produces the identical set, so the head adds no TypeScript regression. Remote build, lint, React 18/latest, module/dist, coverage, and visual checks are green; only the repository's feature-size policy remains. The PR remains open and is not counted as merged.

In Ant Design Popover/Tooltip #58948, I approved exact head eef25b565d3e4b073a70d0584adf205a59d2874d after tracing the composite-shadow repair through generated placements, rc-trigger arrow-coordinate injection, PurePanel, and Tooltip unique mode. Moving the arrow inside the filtered container removes the ancestor filter that blocked descendant backdrop-filter while retaining one body-and-arrow shadow; Ant still includes arrow width in placement offsets, and rc-trigger still supplies --arrow-x and --arrow-y when native arrow rendering is disabled. The complete Popover/Tooltip scope passes 14 suites, 153 tests, and 78 snapshots, with the focused semantic and unique scope passing 9 tests; diff and live verification checks are green. JSDOM cannot expose the blur property, so structural assertions are paired with the repository's passing Chromium visual workflow. The PR remains open and is not counted as merged.

For rc-input-number #752, I found that the increase and decrease controls exposed role="button" and accessible names but remained unreachable and inoperable for keyboard-only users because their span elements had neither a tab stop nor key activation. The signed fix makes enabled handlers focusable and activates them with Enter or Space through the existing handler emitter, while disabled handlers stay out of the tab order and ignore both keys. With only the new tests applied, exact master 05020c78 failed both regressions; the fixed focused file passes 20 tests and the complete repository passes 13 suites with 168 tests, together with TypeScript, ESM/CJS/declaration and Less compilation, formatting, and diff validation. I audited open issues and PRs for keyboard, accessibility, and StepHandler overlap before submission. GitHub verifies signed commit 50ac324; the PR is open and is not counted as merged.

For the long-open rc-slider issue #227, I found that the decimal pushable bug still reproduces on current master despite a 2023 report that it had disappeared: dragging [0.5, 0.6, 0.7] one 0.1 step to the right yielded [0.6, 0.8, 1] because 0.7 - 0.6 compared slightly below the configured gap. The signed fix #1091 uses a magnitude-scaled floating-point tolerance for only the gap comparison and adds a real mouse-drag regression in both directions. The new test fails on exact base 02260ea with the over-pushed result; the complete fixed repository passes 5 suites, 122 tests, and 5 snapshots, together with TypeScript, ESLint, ESM/CJS/declaration and Less compilation, diff validation, and complete Codecov patch and project checks after a control-flow cleanup. I audited the three open PRs overlapping either changed file and documented why their allow-cross, deprecated-API, and drag-completion work is independent. GitHub verifies signed head e6bf453; the PR is open and is not counted as merged.

For rc-slider issue #200, I confirmed that track clicks still bypassed the documented pushable minimum gap on current master. With values [20, 40], pushable={20}, and a click at 30, the ordinary range emitted [20, 30]; editable mode inserted [20, 30, 40]. The signed fix #1092 routes both existing-value and insertion clicks through the same distance constraints used by drag and keyboard movement while explicitly preserving empty-range initialization. Exact base 02260ea fails both regressions; the corrected outputs are [10, 30] and [10, 30, 50], and the complete repository passes 5 suites, 123 tests, and 5 snapshots, together with TypeScript, ESLint, ESM/CJS/declaration and Less compilation, and diff validation. I separated its test location from the independent decimal-gap PR and audited all other open Slider.tsx and Range-test overlaps. GitHub verifies signed commit 2c641e3; the PR is open and is not counted as merged.

In Ant Design Progress #58899, I requested changes on exact head fcff11fe834d27f0bff655b89e33610740187ae7 because vertical mode reverses the established object-size axes. getSize() maps { width: 20, height: 200 } to [20, 200], but the new path treats those values as height and rail width; an independent render therefore produced a 20px-tall body with a 200px-wide rail instead of a 20px-wide, 200px-tall vertical bar. The submitted Progress scope otherwise passes all 7 suites, 117 tests, and 87 snapshots, showing that unequal physical dimensions are the missing contract boundary. I asked for orientation-aware object handling, an explicit tuple decision, and a committed unequal-axis regression while preserving preset thickness behavior. The PR remains open and is not counted as merged.

In rc-picker TimePanel #987, I requested changes on exact head c0f400254de12dac7aae5e62afbeba5f4a009076 after confirming that the latest keyboard work still leaves most bundled time listboxes unnamed. The five new selection-name fields remain optional and are defined only in the two English and two Chinese locale packs; a real DayPickerPanel under bundled fr_FR rendered its first role="listbox" without any aria-label, making an independent non-empty-name regression fail. The submitted time scope otherwise passes all 25 tests, including roving tabindex, disabled-option skipping, selection, blur, and focus boundaries. I requested runtime-safe fallbacks or a complete locale synchronization plus coverage for an unmodified bundled locale and partial consumer locales. The PR remains open and is not counted as merged.

In rc-rate #218, I approved exact head ba5e1673413471194634594f13e706980f267716 after verifying the read-only exact-value clipping contract. The complete repository passes 2 suites, 46 tests, and 7 snapshots, together with TypeScript, source lint with zero errors, ESM/CJS/declaration builds, and Less compilation. A temporary independent matrix passed for 0.1, 1.999999999, and 2.25 under RTL, producing exact 10%, 99.9999999%, and 25% clip widths; a controlled rerender also removed both the dynamic width and half-state class when the feature was disabled. The only remote failure is fork Vercel authorization. The PR remains open and is not counted as merged.

In rc-select #1248, I approved exact head 6449ac52419fbd2ef278a4809ba2fb4ed1dfeea6 after validating the interrupted-Enter lock lifecycle. The complete repository passes 21 suites, 437 tests, and 21 snapshots, together with TypeScript, ESM/CJS/declaration builds, Less compilation, and lint with zero errors. Removing only the three-line disabled-state reset made the submitted selection sequence regress from [3, 2, 1] to [3, 2], proving that the first Enter after re-enabling remained swallowed; restoring the exact head made the focused regression pass. The only remote failure is fork Vercel authorization. The PR remains open and is not counted as merged.

In rc-picker Footer #990, I requested changes on exact head 60f6f81f866a9b8dd8e11b4cbca85e9933777582 after separating a non-blocking event concern from the actual current-base failure. The branch Range scope passes 111 tests with one skip, and Popup wraps Footer submission without forwarding the click event. However, GitHub's merge-commit run against current master fails four newly added Range confirmation regressions because they still query the old .rc-picker-ok button structure while the PR intentionally makes the button itself .rc-picker-ok. I requested a current-master refresh and selector updates that preserve all four behavioral assertions; the PR remains open and is not counted as merged.

In rc-collapse #335, I requested changes on exact head cb9d48073b0b0ea94ebd022c824c7c7be8347e32 because the proposed public wrapper API is declared as a ReactNode but invoked as a render callback. A direct TypeScript run reports TS2349: This expression is not callable at the new call site, so intended consumers cannot satisfy the exported ItemType contract. The existing runtime suite passes 1 suite, 92 tests, and 1 snapshot, but contains no wrapper regression and both Codecov checks fail. I requested an explicit callback type plus runtime and type coverage that also preserves keyed item identity through rerenders and reordering. The PR remains open and is not counted as merged.

In rc-menu #890, I approved exact head aa4f841a8329b1292fdf6e2ecdfa9b4b8136948e after independently validating the new subItem and subItemTitle semantic fields. A temporary matrix used distinct outer and nested values, proved isolation in both directions, verified cleanup after rerender, and exercised the same contract through the public items API. The complete repository passes 12 suites, 132 tests, and 20 snapshots, together with TypeScript, ESM/CJS/declaration and Less compilation, diff validation, and zero-error source lint. Current substantive remote checks are green; only fork Vercel authorization fails. The PR remains open and is not counted as merged.

In rc-menu #690, I requested changes on exact head 57b5938d0bb0bb906217db350280392361cdafc6 because its new overflow popup API silently changes the default for every existing horizontal overflow menu. A temporary Trigger-level regression rendered an unconfigured Menu and expected no explicit alignment; the head instead supplied { offset: [10, 15] }, while the explicitly configured [3, 7] case behaved correctly. I requested an undefined-preserving default, tuple-consistent public typing, and committed configured/unconfigured regressions. The historical branch suite currently has 115 passing tests and one unrelated current-React act warning failure; the PR remains open and is not counted as merged.

For rc-picker issue #946 and the corresponding Ant Design report #52473, I replaced two long-conflicting partial proposals with the signed current-master fix #1006. Empty input text now reaches the existing clear path only when clearing is enabled, including mask-formatted inputs; SinglePicker clears its value, while RangePicker clears the whole range unless the edited field explicitly allows an empty value, in which case the opposite endpoint is preserved. Temporarily disabling the empty-text propagation made all three new clearing-contract regressions fail with zero onChange calls. The fixed repository passes 15 suites with 472 tests, 2 skips, and 29 snapshots, together with TypeScript, ESM/CJS/declaration and Less compilation, formatting, diff validation, and lint with zero errors. GitHub verifies signed head d5a11ea; the PR is open and is not counted as merged.

In rc-picker #1007, I corrected an internal Traditional Chinese inconsistency: weekSelect used the Mainland Chinese 選擇周 while the same locale already exposed week: '週'. The signed canonical-locale fix now uses the Taiwan form 選擇週 and adds an isolated regression. Reversing only the locale value made that regression the sole failure; the fixed repository passes 16 suites with 469 tests, 2 skips, and 29 snapshots, plus TypeScript, ESM/CJS/declaration and CSS compilation, formatting, diff validation, and lint with zero errors. I audited every open rc-picker PR first; #987 adds separate time-panel labels in the same locale file but does not touch weekSelect. The PR is open and is not counted as merged.

For rc-picker issue #956, I reproduced the mixed-format input boundary on exact master 16084b6: with ['DD-MM-YYYY', 'DD-MM-YY'], typing the valid short prefix 01-12-20 immediately normalized the focused field to 01-12-2020, preventing continuation to a four-digit year. The signed fix #1008 preserves raw focused text only when it parses to the same date represented by the incoming formatted value, while a controlled update to a different date still replaces the input. The regression fails on exact base at the premature normalization boundary and now types, submits, and verifies 01-12-2024, then confirms an external 1999-09-09 update synchronizes correctly. The complete repository passes 15 suites with 469 tests, 2 skips, and 29 snapshots; ESM/CJS/declaration builds, formatting, diff validation, and source lint with zero errors also pass. I audited all current open PR changed files and disclosed overlaps with Android IME, manual-clearing, and keyboard work; none addresses alternate-format normalization. GitHub verifies signed head 3782bfb; the PR is open and is not counted as merged.

In rc-resize-observer #243, I found that a stable public target getter could change from element A to element B after a render while the hook kept its listener attached to A. The signed fix reconciles the resolved target after each render, but only unobserves and observes when that element actually changes, preserving the existing stable-getter null-to-element behavior without registration churn. The exact-base regression left the first element's listener set intact after switching; the fixed repository passes all 4 suites and 21 tests together with TypeScript, ESM/CJS/declaration and Less compilation, formatting, and diff validation. Source lint has zero errors and only two pre-existing unused-disable warnings in observerUtil.ts. I audited every open PR changed-file list before submission and found no overlap with the hook or its test. GitHub verifies signed head 82ffe88; the PR is open and is not counted as merged.

In rc-virtual-list #381, I found that the custom scrollbar track cancelled right-click before checking the mouse button, while the thumb treated right-click as the start of a drag and disabled pointer events on the list holder. The signed fix rejects non-primary mouse buttons before either path mutates state or cancels the event, preserving the existing primary-button track and thumb behavior. The exact-base regression observed defaultPrevented: true; the fixed repository passes all 8 suites and 281 tests together with TypeScript, ESM/CJS/declaration compilation, formatting, and diff validation. Lint has zero errors and 14 pre-existing hook warnings. I disclosed the current test-file overlap with wheel-delta PR #380 and the unrelated, conflicting 2021/2023 ScrollBar.tsx branches #158 and #199. GitHub verifies signed head 3dc558b; the PR is open and is not counted as merged.

In rc-virtual-list #382, I found that the public showScrollBar prop only initialized internal visibility, so controlled true and false changes left the scrollbar stuck in its previous state. The signed fix synchronizes boolean values, keeps the established delayed hide after switching back to optional, and stabilizes timer callbacks with the shared event helper. The exact-base regression stayed hidden after false to true; the expanded fixed matrix verifies false to true to false to optional and the three-second timeout. All 8 suites and 281 tests pass together with TypeScript, ESM/CJS/declaration compilation, formatting, and diff validation; source lint has zero errors and 13 existing hook warnings, one fewer than base. I disclosed the independent same-file #381 handlers and the old conflicting visibility/refactor branches #158 and #199. GitHub verifies signed head 407ea2c; the PR is open and is not counted as merged.

In tldr-pages #23694, I added the missing Traditional Chinese page for aider. The signed translation keeps all six command examples, flags, placeholders, ordering, and the official project link aligned with the current English source while using reviewed Taiwan terminology. It passes the repository's zh_TW-aware tldr-lint configuration, markdownlint, and diff validation; the project link resolves with HTTP 200. The complete remote CI, PR-body, and label checks are green. I checked for an existing page and open-PR overlap before submission. The PR is open and is not counted as merged.

In tldr-pages #23695, I prepared the missing Traditional Chinese page for age. The signed translation preserves all five upstream command examples, options, placeholders, order, and canonical documentation links while using Taiwan terminology for passphrases and public/private keys. The repository-wide test script, page-specific tldr-lint and markdownlint checks, exact command-line comparison, link verification, PR-body check, labeler, and CLA passed on initial head efdfe54; GitHub also verifies the SSH commit signature. The initial PR was automatically closed because its submitted body omitted the repository's mandatory unchanged checklist, not because of a source or CI failure. I restored the exact checklist with the human-review item intentionally unchecked and corrected the See also separator on signed commit 9a1a171; the PR remains closed pending independent human review and is not counted as open or merged.

In Ant Design Upload #59137, I approved exact head 82840f41c23d5a55be5743071c6976ddf1d2031f after verifying that GIF previews now stay on the existing FileReader path before any canvas allocation. The complete Upload scope passes 10 suites with 215 tests, 3 skips, and 77 snapshots. A temporary three-file concurrent matrix produced the expected GIF data URLs with zero canvas creation; reverting only the branch placement made the official regression leave one hidden canvas and the matrix leave three, while restoring the exact head made both pass. Compile, focused ESLint, product-file Biome, and diff validation are green. At review time 33 completed remote checks were successful with no failures and four matrix or visual jobs still running, so I did not represent the unfinished checks as complete. The PR remains open and is not counted as merged.

After rc-upload #723 was force-pushed, I re-reviewed exact head 6082a3e rather than relying on the obsolete branch history. The new rejected-action regression does not cover request ownership: two customRequest calls for the same RcFile.uid still share one map slot, and completion of the first unconditionally deletes the second handle. A temporary exact-head probe completed the first request and then called abort(file); the newer request received zero abort calls. I requested per-request identity protection for every terminal callback plus a committed same-UID retry regression. The temporary probe was removed and the worktree was clean; the PR remains open and is not counted as merged.

I also re-reviewed rc-trigger #622 on exact head 2b81120. Moving dedup-ref writes out of render and resetting them after commits fixes both previously reproduced lifecycle blockers, and an independent transition/Suspense probe confirmed that focusing the retained committed target emits exactly one onOpenChange(true). The submitted concurrent-render test is nevertheless vacuous: its error boundary replaces Trigger with an unwired fallback, repeatedly clears the mock, and finishes by iterating a call array that may be empty. I requested the valid causal regression before approval. All existing checks pass on the exact head: 20 suites, 137 tests with one existing skip, TypeScript, and lint with zero errors and 11 existing hook warnings. The PR remains open and is not counted as merged.

I kept Payload CMS #17744 current after upstream changes made the one-file Traditional Chinese contribution conflict with a newly added locale key. The signed rebased head 4eb48f981 preserves the upstream fileFetchFailed entry while retaining the Taiwan wording 無法儲存版面配置; GitHub now reports the PR mergeable instead of conflicting. The translations package passes lint with zero errors and 13 existing warnings, declaration generation, and a 59-file SWC build. The PR remains open and is not counted as merged.

In rc-tabs #1012, I approved exact head 01c3caf6f571bfb3d1f53c8cd368064bcff8bef2 after verifying that all three CodeQL workflow steps remain pinned to the same official v4.37.8 commit. The annotated tag resolves to db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28, whose GitHub commit verification is valid, and the exact-head CodeQL analysis, component workflow, preview, React Doctor, Socket, Vercel, and WIP checks are green. The PR remains open; this is review evidence and is not counted as an authored or merged PR.

In rc-steps #393, I requested changes on exact head f7097cb2a27eebe12a9fe870ac39590ab8ffb0c7 because its grouped dependency update pairs TypeScript 7.0.2 with typescript-eslint 8.62.1, which aborts before source linting. I reproduced the CI failure locally through the repository's utoo install path: ut lint exits 2 while loading the TypeScript ESLint plugin. Reverting only TypeScript to 6.0.3 while retaining the proposed jest-dom 7.0.0 update makes installation and the complete lint command pass, isolating the incompatible half of the update. I requested that the safe jest-dom update be split if desired and TypeScript 7 deferred until the lint/parser toolchain supports it. The worktree was restored clean; the PR remains open and is not counted as authored or merged.

In Ant Design Menu #55029, I reviewed exact head 66830d05525374c39b3f8949f35c23a2ba1146b0 and turned the maintainer's broad-scope concern into a concrete current-master path. The reported single-line block label only needs the title wrapper to establish inline-block containment; replacing all inline and vertical menu item token heights with content-driven height changes ordinary item sizing, icon and arrow alignment, selected backgrounds, and collapsed layout beyond issue #54935. I recommended rebasing the conflicting branch, retaining the narrow title-wrapper rule, restoring the three fixed-height rules, and keeping image coverage for all three modes plus an ordinary icon/collapsed baseline. The review is public maintenance evidence and is not counted as an authored or merged PR.

In Ant Design dependency update #59139, I approved exact head 2b795740fec5ca2924181a11384845a47e23ef13 after tracing all three published package git heads and running an independent Ant Design 6.6.1 integration probe. Progress 1.0.3 retained one outer progressbar while marking the internal SVG presentational; Steps 1.2.3 invoked both onChange and item onClick exactly once for each Enter and Space activation; Tooltip 1.5.2 preserved an existing child aria-describedby while closed and composed it with the popup id while open. I also confirmed that Ant's documented trigger="hover" default intentionally masks rc-tooltip's new package-level focus default rather than silently changing the public Ant contract. The PR remains open with no source failure and is not counted as an authored or merged PR.

For Ant Design issue #59070, I reduced the reported RangePicker showTime highlight loss to rc-picker's current exact state flow and a focused interaction test. On exact master 16084b6, selecting day 5 initially marks it as the range start; hovering day 7 then removes that state from day 5 and makes day 7 the range start. The trace shows that the still-active start index replaces the pending calendar endpoint, PopupPanel forwards the result as hoverRangeValue, and PanelBody consequently suppresses the ordinary selected state. I documented why DatePicker differs and proposed a regression boundary that separates a pending endpoint from hover preview without changing the established end-range preview. This is public issue triage pending a maintainer contract decision, not an authored or merged PR.

For my Ant Design Input.Search #59116, I audited the only red remote check instead of treating its label as a source failure. At exact head 97be22d5, the size calculation passed both configured limits—454177 of 454656 bytes for antd.min.js and 542659 of 542720 bytes for antd-with-locales.min.js—then the action failed while attempting to create a report comment from a fork without write permission and emitted a misleading size-limit error. I published the exact log boundary so maintainers can distinguish an action-permission failure from a bundle regression. The PR remains open and is not counted as merged.

For the long-open rc-slider issue #394, I rechecked the reported prop-update callback leak on current exact master 02260ea. A temporary focused regression rendered an uncontrolled Slider at value 80 with max={100}, then lowered max to 50 so the displayed value had to clamp. Neither the deprecated onAfterChange callback nor its current onChangeComplete replacement fired. The modern implementation only completes pointer, keyboard, or mark interactions, so the 2018 prop-reconciliation bug appears resolved. I removed the temporary probe and worktree after publishing the exact-head closure evidence; this is issue triage, not an authored or merged PR.

In rc-image #529, I approved exact head 0621d2d5a87b7eeb9075d0f2495d16c4e9d1ff72 after verifying the type and runtime boundaries of PreviewGroup.imageRender. Omitting the internal callback before declaring the group-specific form cleanly separates its required current index from the single-image contract where that field is optional. The complete focused PreviewGroup suite passes 17 tests, including the new 0-to-1 switch assertion, and TypeScript passes without errors. The PR remains a draft and is not counted as authored or merged.

In rc father-plugin #25, I requested changes on exact head 1c7568b0066259b0cfafc1bcc37c80f4f36a1cbd because removing ESLint's --ext flag to support flat config breaks TypeScript discovery for legacy-config consumers. An isolated ESLint 8.57.1 fixture containing only src/example.ts exits 2 with No files matching the pattern "src" were found without the flag; adding --ext .ts finds the file and reports the expected lint error. I asked for version- or config-aware invocation, or a cross-platform explicit TypeScript pattern, plus coverage for both legacy and flat configuration. The temporary fixture was removed after verification; the PR remains a draft and is not counted as authored or merged.

In rc-image #528, I approved exact head 889c86e01396764fb7aa256b8a44736a9c386773 after verifying the repository-local ESLint 10.6 flat-config migration. The new eslint src/ command and the previous extension-explicit command both discover the same 19 files and produce the same zero-error, 12-existing-warning result; TypeScript also passes. This distinguishes the safe package-local cleanup from father-plugin #25, whose shared invocation must still support legacy consumer configs. The PR remains a draft and is not counted as authored or merged.

Nine Ant Design PRs I reviewed have since merged on August 27: Grid Row responsive alignment #59066, Transfer pagination clamping #59074, Table header keyboard callback preservation #59078, CheckableTag style precedence #59087, Alert global closable typing #59100, Checkbox disabled precedence #59109, Slider description integration #59110, numeric-zero rendering #59117, and JavaScript documentation casing #59122. For #59110, my review requested the missing real integration rather than approving the incomplete head; the canonical rc-tooltip correction I submitted was merged separately and the Ant Design follow-up then merged. These are review outcomes, not authored PRs, so they do not increase the strict 51 authored-merged count.

Popular repositories Loading

  1. twstock-predictor twstock-predictor Public

    Open-source 台股量化分析:20 因子評分、Chronos/XGBoost 預測、FastAPI、Next.js 與風險控制

    Python 6

  2. 112-web-introduction 112-web-introduction Public archive

    HTML

  3. DCA DCA Public archive

    HTML

  4. 112-data-structure 112-data-structure Public archive

    Python 1

  5. 112-TAHRD-python 112-TAHRD-python Public archive

    Python

  6. LLMTwins LLMTwins Public archive

    Forked from towNingtek/LLMTwins

    A prototype for LLMTwins demo

    Python