fix(dashboard): normalize Unicode correction keywords - #575
Merged
jeff-r2026 merged 2 commits intoSep 16, 2026
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A team keyword such as
réessayematched an NFC prompt but missed the same word written with a combining accent. This undercounted course corrections. The matcher now normalizes the prompt and keywords to NFC before case-insensitive matching. It preserves the original prompt summary, existing word boundaries and the 60-second window.The English and Chinese usage guides and changelog describe the fix.
Type of change
Dashboard comparison
The real dashboards use the same three prompt and keyword scenarios, with events captured by each build's hooks.
Before:

After:

Test plan
npx tsc --noEmitpassed.npx vitest runpassed with 226 files and 3,167 tests.npm run buildpassed.git,gitlabandgithub. Each scenario dispatches Stop and prompt-submit hooks, checks the persisted correction flag and original summary, then checks aggregate counts through the dashboard API. The same matrix against main had 120 passes and 60 failures.teamai init --self --agent cursor --scope project. These cover both normalization directions through Cursorworkspace_rootsand Claudecwd, plus isolation from an unrelated directory.git diff --checkpassed.Related issues
Fixes #573.
Follow-up to #567, which addressed the original issue #564.
Notes for reviewers
Normalization runs only during matching. Existing persisted correction flags are not recalculated. Legacy events without a flag still use the built-in keyword fallback, which now also normalizes Unicode.
The CLI matrix uses isolated local homes and local team configurations. It does not exercise live provider authentication or agent GUIs. Validation ran on macOS with Node 22.22.2.