Skip to content

[QuickAccent] Persist characters usage between runs #37577

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

davidegiacometti
Copy link
Collaborator

Summary of the Pull Request

PR Checklist

Persist characters usage between PowerToys/QuickAccent runs.

Detailed Description of the Pull Request / Additional comments

  • Persist the dictionaries used to determine the characters usage in a JSON file %LOCALAPPDATA%\Microsoft\PowerToys\QuickAccent\UsageInfo.json

Validation Steps Performed

Manually tested:

  • JSON is saved when PowerToys is closed and the Sort characters by usage frequency is on
  • JSON is deleted when QuickAccent is called and Sort characters by usage frequency is off
  • JSON is read when QuickAccent is started and characters order is applied from the previous run

@davidegiacometti davidegiacometti force-pushed the users/davidegiacometti/quick-accent-freq branch from 3c15951 to 36d0f98 Compare March 12, 2025 19:42
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR adds functionality to persist character usage data between PowerToys/QuickAccent runs by saving/retrieving JSON data.

  • Added a UsageInfoData model to hold character counts and timestamps.
  • Updated CharactersUsageInfo to read from and write to a JSON file based on user settings.
  • Integrated usage data saving in the UI component on application close and updated JSON serialization context.

Reviewed Changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/modules/poweraccent/PowerAccent.Core/Models/UsageInfoData.cs Added a new model to represent persisted usage data.
src/modules/poweraccent/PowerAccent.Core/Tools/CharactersUsageInfo.cs Refactored for JSON persistence of character usage with file I/O.
src/modules/poweraccent/PowerAccent.UI/Selector.xaml.cs Added a save call for usage info on the window closing event.
src/modules/poweraccent/PowerAccent.Core/PowerAccent.cs Adjusted character ordering and integrated usage info saving.
src/modules/poweraccent/PowerAccent.Core/SerializationContext/SourceGenerationContext.cs Updated source generation settings to include UsageInfoData in JSON serialization.

@yeelam-gordon yeelam-gordon added the Product-Quick Accent Refers to the Quick Accent PowerToy label Apr 8, 2025
@jamrobot jamrobot requested a review from haoliuu April 10, 2025 06:09
@davidegiacometti davidegiacometti force-pushed the users/davidegiacometti/quick-accent-freq branch from 36d0f98 to fb9e736 Compare April 15, 2025 18:27
@haoliuu haoliuu removed their request for review June 12, 2025 06:10
Copy link

github-actions bot commented Jul 6, 2025

@check-spelling-bot Report

🔴 Please review

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

Unrecognized words (39)
advancedpaste
appxpackage
Ashcraft
CDPX
commandnotfound
copyable
Corpor
cropandlock
environmentvariables
fileexploreraddons
filelocksmith
findmymouse
fucntion
fuzzingtesting
hostsfileeditor
hotfixes
IDOn
lcl
LIBFUZZER
makepri
mikeclayton
mousehighlighter
mousejump
mousepointer
mouseutils
MVPs
onebranch
PMs
Psr
quickaccent
regsvr
screenruler
sharpfuzz
sourced
stuttery
textextractor
Windowss
XLoc
zonability
These words are not needed and should be removed cleanmgr CLSCTXINPROCALL CLSCTXLOCALSERVER FILELOCKSMITH IIDI iwr psexec smileys TEXTEXTRACTOR windowsterminal Zhiwei

Some files were automatically ignored 🙈

These sample patterns would exclude them:

^src/common/CalculatorEngineCommon/exprtk\.hpp$

You should consider adding them to:

.github/actions/spell-check/excludes.txt

File matching is via Perl regular expressions.

To check these files, more of their words need to be in the dictionary than not. You can use patterns.txt to exclude portions, add items to the dictionary (e.g. by adding them to allow.txt), or fix typos.

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

... in a clone of the [email protected]:microsoft/PowerToys.git repository
on the users/davidegiacometti/quick-accent-freq branch (ℹ️ how do I use this?):

curl -s -S -L 'https://raw.githubusercontent.com/check-spelling/check-spelling/c635c2f3f714eec2fcf27b643a1919b9a811ef2e/apply.pl' |
perl - 'https://github.com/microsoft/PowerToys/actions/runs/16099065583/attempts/1' &&
git commit -m 'Update check-spelling metadata'
Forbidden patterns 🙅 (2)

In order to address this, you could change the content to not match the forbidden patterns (comments before forbidden patterns may help explain why they're forbidden), add patterns for acceptable instances, or adjust the forbidden patterns themselves.

These forbidden patterns matched content:

Do not use (click) here links

For more information, see:

(?i)(?:>|\[)(?:(?:click |)here|this(?=\]\([^\)]+:/)|link|(?:read |)more(?!</value))(?:</|\]\()

Should be greater than

\bhigher than\b
Pattern suggestions ✂️ (1)

You could add these patterns to .github/actions/spell-check/patterns.txt:

# Automatically suggested patterns

# hit-count: 1 file-count: 1
# curl arguments
\b(?:\\n|)curl(?:\.exe|)(?:\s+-[a-zA-Z]{1,2}\b)*(?:\s+-[a-zA-Z]{3,})(?:\s+-[a-zA-Z]+)*

Alternatively, if a pattern suggestion doesn't make sense for this project, add a #
to the beginning of the line in the candidates file with the pattern to stop suggesting it.

Errors, Warnings, and Notices ❌ (5)

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

❌ Errors, Warnings, and Notices Count
ℹ️ candidate-pattern 1
❌ check-file-path 20
❌ forbidden-pattern 2
⚠️ ignored-expect-variant 1
⚠️ large-file 1

See ❌ Event descriptions for more information.

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.

@davidegiacometti davidegiacometti added the Needs-Review This Pull Request awaits the review of a maintainer. label Jul 10, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Needs-Review This Pull Request awaits the review of a maintainer. Product-Quick Accent Refers to the Quick Accent PowerToy
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants