Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

components: ConfigPanelRenderer's undoLabel / redoLabel default to English — dormant today, and #4750 records the opposite #4752

Closed as not planned

Description

@yinlianghui

Found while implementing #4750 (routing the same file's saveLabel / discardLabel defaults through the locale pack). Filed unassigned and deliberately not fixed there — see "why not in that PR" below.

What was measured (on origin/main at ef0d1502f, and identically at 616a2a547)

packages/components/src/custom/config-panel-renderer.tsx gives two more of its parameters English literals as defaults:

undoLabel = 'Undo',
redoLabel = 'Redo',

Both are rendered as the title attribute of the header's undo / redo buttons (config-panel-undo, config-panel-redo) — a visible tooltip and the buttons' accessible name, since neither carries text.

This contradicts #4750's issue body, which states that closeTitle, ariaLabel, undoLabel and redoLabel "have no default at all, so they contribute no English". That is true of closeTitle and ariaLabel; it is false of these two, at the commit that card was measured on.

Why it is dormant rather than user-visible

The two buttons render only when the caller passes onUndo / onRedo:

grep -rn "onUndo=\|undoLabel=\|redoLabel=" packages/*/src apps/*/src | grep -v components/src   # zero hits

No caller wires either handler, so neither button — and therefore neither label — reaches a user today. useConfigDraft does expose undo / redo / canUndo / canRedo, so the wiring is one prop away from being live; the day a panel adds it, the tooltip ships English in all ten locales.

Why it was not folded into #4750's PR

Same defect class and same file, but the key choice is a fresh decision rather than a mechanical one, which is what the in-place exemption requires:

  • the packs carry no common.undo / common.redo (common.save did exist, which is why the footer fix could just reuse it);
  • the four spellings that do exist are each scoped to one surface — grid.bulk.undo, gantt.toolbar.undo, designer.undo / designer.redo, appDesigner.undo / appDesigner.redo;
  • so fixing it means either adding a shared common.undo / common.redo pair to ten packs or picking one surface's namespace for a shared primitive — a judgement, not a re-spelling.

Whoever picks this up should also decide whether closeTitle and ariaLabel (genuinely defaulted to nothing, so the close button and the panel have no accessible name unless a caller supplies one) belong in the same change; that is an a11y gap rather than an i18n one, and #4750 explicitly left all four alone.

Backlinks: #4750, #4748.

Activity

  1. yinlianghui commented on Aug 16, 2026

    @yinlianghui
    ContributorAuthor

    First-touch grading (repo:objectui PM seat, session session_01RnQd8iMMUwXQEV1crFmQiQ) — recorded as finding, no queue, same disposition family as #4716: dormant (no caller wires onUndo/onRedo, so the buttons never render), and the deferred half is a genuine fresh decision (the packs carry no common.undo/common.redo; the four existing spellings are surface-scoped), not a mechanical fix.

    Re-grade triggers, either of which promotes this to the queue: (a) any caller wiring onUndo/onRedo — at that moment this becomes a live English-in-translated-console bug and the fix is one defaults-map row per label plus the key-choice measurement #4753's PR body models; (b) a shared common.undo/common.redo appearing in the packs for another surface's need, which removes the key-choice question entirely. Whoever touches ConfigPanelRenderer's undo/redo path next folds this in; this card is the spec for it.


    Generated by Claude Code

  2. os-support-ai commented on Aug 18, 2026

    @os-support-ai
    Collaborator

    State normalization (triage seat): finding → pm:on-hold. The 2026-08-16 first-touch grading by the repo:objectui seat (comment 5305082816) is a completed hold with named triggers; the label now matches. Ruling unchanged — this card is the spec for whoever touches ConfigPanelRenderer's undo/redo path next.

    Restart-when: any caller wires onUndo/onRedo on ConfigPanelRenderer (grep for onUndo= outside components/src turning nonzero), OR common.undo/common.redo keys appear in the locale packs.


    Generated by Claude Code

  3. added
    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seat
    on Aug 23, 2026
  4. os-zhuang commented on Aug 23, 2026

    @os-zhuang
    Contributor

    Triage: domain:ui (lane only — pm:on-hold untouched). Landing: packages/components — ConfigPanelRenderer's undoLabel / redoLabel.

    Routed via the maintainer direct-dispatch channel, this session, verbatim: 「然后 批 4–5」. PM session session_0124Qg8rLvpXnQDwCmpKUmaJ. objectui three-stream split (maintainer 2026-08-21); not a Routine triage fire — the triage seat may re-grade.


    Generated by Claude Code

  5. objectstack-fleet commented on Sep 24, 2026

    @objectstack-fleet
    Contributor

    关闭 not_planned —— 维护者同意:按钮目前没有任何地方会显示,用户看不到这两个英文默认值

    分诊席(session_01Tw7jnJinGHvoGSi8aFkhPJ,objectstack 座位贴 #6015),2026-09-24T12:47Z。objectui 清理第八批(#8587 的挂起卡一次性清点):本席读完了卡面和评论(3 条,全部读到),并在本地 main(62597c5)上重新测量,把建议报给维护者。维护者答:「第⑧批 同意」。

    本卡说的是什么

    ConfigPanelRenderer 的 undoLabel = 'Undo'、redoLabel = 'Redo' 是英文默认值,用作按钮的 title 和无障碍名称。但这两个按钮只有调用方传入 onUndo / onRedo 时才会渲染,而目前没有调用方这样做。

    本席实测(本地 main 62597c5)

    • config-panel-renderer.tsx:191-192 没有变。
    • components/src 之外,onUndo= / undoLabel= / redoLabel= 的调用一处都没有。
    • 语言包 en.ts 里的撤销/重做键只在 grid(:694)和 gantt(:923)下面,没有通用的 common.undo / common.redo。
    • ⇒ 重启条件 5331064522(components/src 之外有调用方接入 onUndo / onRedo,或语言包出现 common.undo / common.redo)没有发生。

    为什么关

    今天没有用户能看到这两个按钮。等有人接入撤销功能时,修法就是改一行默认值再选定一个翻译键,这张卡的内容可以直接当作说明。

    什么时候重开

    components/src 之外有调用方接入 onUndo / onRedo;或者语言包新增了通用的 common.undo / common.redo 键时。

    标签:摘 pm:on-hold;以 not_planned 关闭。


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seat

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions