Skip to content

[Localization Audit] fix: add x:Uid to 9 hard-coded XAML strings (AgentEventsPage, SessionsPage, SkillsPage, VoiceSettingsPage, HubWindow)#536

Closed
github-actions[bot] wants to merge 1 commit into
masterfrom
localization/audit-fix-2026-05-25-046aa2bc4862736b
Closed

[Localization Audit] fix: add x:Uid to 9 hard-coded XAML strings (AgentEventsPage, SessionsPage, SkillsPage, VoiceSettingsPage, HubWindow)#536
github-actions[bot] wants to merge 1 commit into
masterfrom
localization/audit-fix-2026-05-25-046aa2bc4862736b

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

Fixes 9 hard-coded XAML string warnings found by the localization audit. Reduces candidate warnings from 68 → 30.

Changes

XAML — added x:Uid

File Element x:Uid assigned
AgentEventsPage.xaml LiveText AgentEventsPage_LiveText
SessionsPage.xaml page subtitle SessionsPage_Subtitle
SessionsPage.xaml empty-state subtitle SessionsPage_EmptySubtitle
SessionsPage.xaml Open chat button SessionsPage_OpenChat
SkillsPage.xaml EnabledHeaderText SkillsPage_Enabled (key existed)
SkillsPage.xaml DisabledHeaderText SkillsPage_Disabled (key existed)
VoiceSettingsPage.xaml PiperPreviewLabel VoiceSettingsPage_PiperPreviewLabel
VoiceSettingsPage.xaml PreviewVoiceLabel VoiceSettingsPage_PreviewVoiceLabel
HubWindow.xaml TitleStatusText HubWindow_Disconnected (key existed)

Resources — new keys added to all 5 locales (en-us, fr-fr, nl-nl, zh-cn, zh-tw)

  • AgentEventsPage_LiveText.Text — invariant ("Live" is a universal UI term)
  • SessionsPage_Subtitle.Text
  • SessionsPage_EmptySubtitle.Text
  • SessionsPage_OpenChat.Content
  • VoiceSettingsPage_PiperPreviewLabel.Text
  • VoiceSettingsPage_PreviewVoiceLabel.Text

AgentEventsPage_LiveText.Text is added to InvariantOrDeferredResourceKeys in the test — "Live" is an internationally recognised broadcast/status label (same precedent as "Version", "Hardware").

Remaining 30 warnings (deferred)

All in CronPage.xaml (complex form with 57 strings) and SandboxPage.xaml (long prose). Tracked as follow-up localization debt.

Validation

  • Test-Localization.ps1 — passes (exit 0, warnings 68 → 30)
  • LocalizationValidationTests — 10/10 pass
  • dotnet build tests/OpenClaw.Tray.Tests — succeeded

Generated by Localization Audit; see workflow run.

Add x:Uid attributes to controls that had user-facing text without
localization support, and add matching resource keys to all 5 locale
files (en-us, fr-fr, nl-nl, zh-cn, zh-tw).

Fixed pages:
- AgentEventsPage: LiveText indicator (invariant — Live is a
  universal broadcast/status term, added to InvariantOrDeferredResourceKeys)
- SessionsPage: page subtitle, empty-state subtitle, Open chat button
- SkillsPage: Enabled/Disabled expander headers (keys already existed)
- VoiceSettingsPage: PiperPreviewLabel and PreviewVoiceLabel buttons
- HubWindow: TitleStatusText (key already existed as HubWindow_Disconnected)

Reduces candidate hard-coded XAML strings from 68 to 30.
Remaining 30 warnings are all in CronPage.xaml (complex form) and
SandboxPage.xaml (long prose description) — deferred as separate work.

LocalizationValidationTests: all 10 pass.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@clawsweeper
Copy link
Copy Markdown

clawsweeper Bot commented May 25, 2026

Codex review: needs changes before merge. Reviewed May 25, 2026, 2:17 AM ET / 06:17 UTC.

Summary
The branch adds x:Uid attributes and locale resource entries for selected hard-coded WinUI XAML strings in Agent Events, Sessions, Skills, Voice Settings, and Hub Window, plus a localization invariant for the Live label.

Reproducibility: yes. Source inspection shows current main has the Sessions Open Chat tooltip and the PR diff removes it from the same Button while adding x:Uid; a focused app smoke would be hovering that button before and after.

Review metrics: 2 noteworthy metrics.

  • Changed surface: 11 files changed; 102 additions and 10 deletions. The branch touches UI XAML, five locale resource files, and localization tests, so reviewers should check both resource consistency and visible UI behavior.
  • Required validation reported: 0 of 3 AGENTS commands explicitly reported. The PR reports useful localization checks, but not the exact full build/shared/tray validation sequence required by repository policy.

Merge readiness
Overall: 🦐 gold shrimp
Proof: 🌊 off-meta tidepool
Patch quality: 🦐 gold shrimp
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • Restore the Sessions Open Chat tooltip on the x:Uid button.
  • Report the full AGENTS.md validation sequence before merge.

Risk before merge

  • Merging as-is would remove hover/help text from the Sessions Open Chat action.
  • The PR body does not report the full validation sequence required by AGENTS.md before completion.

Maintainer options:

  1. Decide the mitigation before merge
    Land the localization cleanup after restoring the Sessions Open Chat tooltip and confirming the required build, shared test, and tray test validation.
  2. Pause or close
    Do not merge this PR until maintainers decide whether the risk is worth taking.

Next step before merge
A narrow automated repair can restore the Sessions Open Chat tooltip while keeping the PR’s x:Uid/resource localization intent.

Security
Cleared: The diff is limited to WinUI XAML, resource strings, and a localization test list; I found no concrete security or supply-chain concern.

Review findings

  • [P2] Preserve the Open Chat tooltip — src/OpenClaw.Tray.WinUI/Pages/SessionsPage.xaml:187-192
Review details

Best possible solution:

Land the localization cleanup after restoring the Sessions Open Chat tooltip and confirming the required build, shared test, and tray test validation.

Do we have a high-confidence way to reproduce the issue?

Yes. Source inspection shows current main has the Sessions Open Chat tooltip and the PR diff removes it from the same Button while adding x:Uid; a focused app smoke would be hovering that button before and after.

Is this the best way to solve the issue?

No. Adding x:Uid/resource coverage is the right narrow direction, but deleting the existing tooltip is avoidable; the maintainable repair is to preserve or separately localize that tooltip.

Full review comments:

  • [P2] Preserve the Open Chat tooltip — src/OpenClaw.Tray.WinUI/Pages/SessionsPage.xaml:187-192
    The current main button has ToolTipService.ToolTip="Open this session in Chat", but this diff deletes that attribute when adding x:Uid. That regresses the hover/help affordance for opening a session in Chat; keep the tooltip and localize it separately if needed.
    Confidence: 0.94

Overall correctness: patch is incorrect
Overall confidence: 0.94

AGENTS.md: found and applied where relevant.

Codex review notes: model gpt-5.5, reasoning high; reviewed against ef6ac8acbab2.

Label changes

Label justifications:

  • P3: This is a low-risk localization and UI polish cleanup with a narrow tooltip regression to repair before merge.
  • rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🌊 off-meta tidepool and patch quality is 🦐 gold shrimp.
  • status: ⏳ waiting on author: ClawSweeper has contributor-facing work open and is waiting for author action. Not applicable: This is a GitHub Actions bot localization PR, so the external-contributor real behavior proof gate is not applied.
Evidence reviewed

Acceptance criteria:

  • ./build.ps1
  • dotnet test ./tests/OpenClaw.Shared.Tests/OpenClaw.Shared.Tests.csproj --no-restore
  • dotnet test ./tests/OpenClaw.Tray.Tests/OpenClaw.Tray.Tests.csproj --no-restore
  • pwsh -File scripts/Test-Localization.ps1

What I checked:

Likely related people:

  • bakudies: Git blame shows the current Sessions Open Chat button and tooltip came from the Sessions redesign, and the same history includes recent hard-coded XAML localization work. (role: introduced behavior and recent localization contributor; confidence: high; commits: dea331f80d7c, d4b35d4941c0; files: src/OpenClaw.Tray.WinUI/Pages/SessionsPage.xaml, src/OpenClaw.Tray.WinUI/Strings/en-us/Resources.resw)
  • Scott Hanselman: Recent history shows localization audit automation and validation-test work around the exact x:Uid/resource checks this PR is trying to satisfy. (role: localization test and audit automation owner; confidence: high; commits: bcdb4bce377b, d9e0c200bed6, c499c294b764; files: scripts/Test-Localization.ps1, tests/OpenClaw.Tray.Tests/LocalizationValidationTests.cs)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. labels May 25, 2026
@clawsweeper
Copy link
Copy Markdown

clawsweeper Bot commented May 25, 2026

ClawSweeper PR egg

🔥 Warming up: real-behavior proof passed; findings, security review, or rank-up moves are still in progress.

Hatch command

Comment @clawsweeper hatch when this PR is hatchable.

Hatchability rules:

  • Merged PRs are hatchable.
  • Open PRs are hatchable when they are status: 👀 ready for maintainer look, status: 🚀 automerge armed, or labeled clawsweeper:automerge.
  • Closed unmerged PRs are hatchable only when one of those hatchable labels is still present in the durable record.
What is this egg doing here?
  • Eggs appear after the PR passes real-behavior proof. It is here for vibes, not verdicts: it does not change labels, ratings, merge decisions, or automation.
  • The shell reacts to review momentum: open follow-up work warms it up, re-review makes it wobble, and a clean final review lets it hatch.
  • Hatchability usually comes from sufficient real-behavior proof, no blocking P0/P1/P2 findings, no security attention needed, and clean correctness. A merged PR is already final, so merge makes the egg hatchable independently.
  • The hatch is seeded from this repository and PR number, so the same PR keeps the same creature; the reviewed head SHA can only change safe visual details.
  • Rarity is just collectible sparkle: 🥚 common, 🌱 uncommon, 💎 rare, ✨ glimmer, and 🌈 legendary.

@christineyan4
Copy link
Copy Markdown
Contributor

This PR is superseded by #558 which covers these localization changes and more.

@ranjeshj
Copy link
Copy Markdown
Collaborator

ranjeshj commented Jun 3, 2026

Closing as superseded by #558, which covers these localization fixes as part of the broader XAML and code-behind localization pass.

@ranjeshj ranjeshj closed this Jun 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

automation localization P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants