Skip to content

[Settings UI] Remove duplicate QuickAccent_SelectedLanguage_Greek_Polytonic resource - #48054

Merged
Niels Laute (niels9001) merged 1 commit into
mainfrom
fix/quickaccent-duplicate-greek-polytonic-resw
May 22, 2026
Merged

Niels Laute (niels9001) merged 1 commit into
mainfrom
fix/quickaccent-duplicate-greek-polytonic-resw

Conversation

@LegendaryBlair

Copy link
Copy Markdown
Contributor

Summary

Fixes the "Build PowerToys main project" failure on every PR/CI build off current main (e.g. Dart build 147597426):

WINAPPSDKGENERATEPROJECTPRIFILE: Error PRI175: Processing Resources failed with error: Duplicate Entry.
WINAPPSDKGENERATEPROJECTPRIFILE: Error PRI277: Conflicting values for resource
                                  'Resources/QuickAccent_SelectedLanguage_Greek_Polytonic'

Root cause

src/settings-ui/Settings.UI/Strings/en-us/Resources.resw contained two <data name="QuickAccent_SelectedLanguage_Greek_Polytonic"> entries:

The two entries are byte-identical (same value Greek Polytonic, same xml:space="preserve"). The WinAppSDK PRI generator (MakePri) rejects duplicates, so every build off current main fails before reaching the compile step.

Fix

Remove the tail duplicate (3-line block right before </root>). Keeps the original entry in its alphabetized location.

Validation

  • git diff shows exactly 3 deleted lines.
  • [xml](Get-Content … -Raw) round-trip succeeds — file is still well-formed XML.
  • Select-String count of QuickAccent_SelectedLanguage_Greek_Polytonic in the file is now 1 (was 2).
  • Only en-us has this key (other localized .resw files are populated later via Touchdown), so no other file needs touching.

Note

Discovered while investigating a CI failure unrelated to my other PR #48050 (signing of WinUI3Apps\YamlDotNet.dll). Both fixes are needed for the 0.100 release pipeline; this PR unblocks PR builds off main, and #48050 unblocks the signed release pipeline once both are merged to main and the next main → stable sync happens.

…ytonic resource

PR #47211 (Quick Accent: Move language data to PowerAccent.Common library, refactor) appended a second <data name="QuickAccent_SelectedLanguage_Greek_Polytonic"> entry at the tail of en-us/Resources.resw, but the same key already existed at line 3597 (added earlier by PR #47021).

The WinAppSDK PRI generator (MakePri) rejects duplicates, so every PR build off current main fails with: PRI175 / PRI277 'Conflicting values for resource Resources/QuickAccent_SelectedLanguage_Greek_Polytonic'. The two entries are byte-identical, so removing the duplicate at the file tail is safe.

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

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Removes a duplicate resource entry in the Settings UI English resources file to unblock WinAppSDK PRI generation (MakePri) that currently fails CI builds due to a duplicate Resources/QuickAccent_SelectedLanguage_Greek_Polytonic key.

Changes:

  • Deleted the duplicate QuickAccent_SelectedLanguage_Greek_Polytonic <data> block at the end of Resources.resw, leaving the existing alphabetized entry intact.

@github-actions

Copy link
Copy Markdown

check-spelling-bot Report

🔴 Please review

See the 📂 files view, the 📜action log, 👼 SARIF report, or 📝 job summary for details.

Unrecognized words (4)

DWRITE
LWIN
VCENTER
VREDRAW

These words are not needed and should be removed ABlocked AClient AColumn ACR ADate ADifferent AHybrid ALarger AModifier ANull AOklab APeriod ARandom ARemapped ASingle ASUS bck BNumber BOklab BVal BValue CAtl CCom CContext CDeclaration CElems Chunghwa CImage CMock CPower CSearch CSettings CSOT CStyle CTest CVal CVirtual DArchitectures DComposition defaulttonearest diu DSVG dwrite EAccess EFile EInvalid ENot EProvider ESettings eurochange FErase FInc FMask FNumber FRestore GNumber GValue Hann HHmmssfff Hostx HPhysical HSpeed HSync HVal HValue HWP IPREVIEW ITHUMBNAIL IVO kdc LExit LPCFHOOKPROC LPrivate LReader LUMA LVal lwin MMdd MRT MSHCTX MSHLFLAGS Nanjing newcolor NLog oldcolor outsourced PBlob PElems PHL pinboard PStr PToy QDS RAlt RAquadrant rectp RKey RNumber scanled suntimes Tianma UBreak UCallback UError UFlags UHash UMax UMin unsubscribes UOffset UType vcenter VDesktop vredraw VSpeed VSync WBounds WClass workerw WReserved XAxis XButton XDeployment XDimension XDocument XElement XFile XIncrement XLoc XNamespace XPels XPixel XPos XResource XSpeed XStr XTimer YAxis YDimension YIncrement YPels YPos YResolution YSpeed YStr YTimer

To accept these unrecognized words as correct and remove the previously acknowledged and now absent words, you could run the following commands

... in a clone of the git@github.com:microsoft/PowerToys.git repository
on the fix/quickaccent-duplicate-greek-polytonic-resw branch (ℹ️ how do I use this?):

curl -s -S -L 'https://raw.githubusercontent.com/check-spelling/check-spelling/cfb6f7e75bbfc89c71eaa30366d0c166f1bd9c8c/apply.pl' |
perl - 'https://github.com/microsoft/PowerToys/actions/runs/26282527706/attempts/1' &&
git commit -m 'Update check-spelling metadata'

OR

To have the bot accept them for you, comment in the PR quoting the following line:
check-spelling-bot apply updates.

If the flagged items are 🤯 false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it,
    try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.

@niels9001
Niels Laute (niels9001) merged commit 33cf699 into main May 22, 2026
18 checks passed
@niels9001
Niels Laute (niels9001) deleted the fix/quickaccent-duplicate-greek-polytonic-resw branch May 22, 2026 13:42
Boliang Zhang (LegendaryBlair) added a commit that referenced this pull request May 25, 2026
…48058)

## Summary

Fixes the **stable** signed release pipeline failure (Dart build
[`147621162`](https://microsoft.visualstudio.com/Dart/_build/results?buildId=147621162))
at the *"Verify all binaries are signed and versioned"* task:

```
Not Signed: + …\extractedMachineMsi\File\BaseApplicationsFiles_File_PowerAccent.Common.dll
```

## Root cause

PR #47211 (*"[Quick Accent] Move language data to PowerAccent.Common
library, refactor"*) introduced the new managed library:

- `src/modules/poweraccent/PowerAccent.Common/PowerAccent.Common.csproj`

`PowerAccent.Common.dll` is referenced by both `PowerAccent.Core` (ships
in the installer root) and `PowerToys.Settings` (ships in WinUI3Apps;
deduplicated against root by `generateAllFileComponents.ps1`). The DLL
is harvested into the MSI's `BaseApplicationsFiles` component group, but
the PR did not update `.pipelines/ESRPSigning_core.json`, so ESRP never
signs it and `versionAndSignCheck.ps1` correctly fails the build.

This is the same kind of omission that PR #48050 fixed for
`YamlDotNet.dll` introduced by #40834 — a new managed library shipping
in the MSI without a matching signing config entry.

## Fix

One additive line in `.pipelines/ESRPSigning_core.json`, placing
`"PowerAccent.Common.dll"` inside the existing alphabetized PowerAccent
block (next to `PowerAccent.Core.dll`).

```diff
             "PowerAccent.Core.dll",
+            "PowerAccent.Common.dll",
             "PowerToys.PowerAccent.dll",
```

## Validation

- `git diff` shows exactly one additive line.
- File still parses as valid JSON (`ConvertFrom-Json` round-trip OK).
- Audited the full file list of PR #47211: `PowerAccent.Common.dll` is
the only new shippable assembly it added (the other new project,
`PowerAccent.Common.UnitTests`, is a test project and is not included in
the installer).
- Dedup logic in
`installer/PowerToysSetupVNext/generateAllFileComponents.ps1` keeps only
the root copy when WinUI3Apps and root copies are byte-identical, so a
single root-level entry is sufficient.

## Follow-up

After merge to `main`, cherry-pick / merge into `stable` to unblock the
0.100 release pipeline. This is the third (and hopefully final) PR in
the 0.100 release-pipeline unblock sequence, after #48050 (sign
`YamlDotNet.dll`) and #48054 (remove duplicate
`QuickAccent_SelectedLanguage_Greek_Polytonic` resource).

Co-authored-by: Copilot <Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@LegendaryBlair Boliang Zhang (LegendaryBlair) added the Product-Settings The standalone PowerToys Settings application label May 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

0.100 Product-Settings The standalone PowerToys Settings application

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants