mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-10-06 03:38:23 +00:00
- Desktop search screen: the field<->query sync compared the field to the displayText the effect was keyed on, which arrives through collectAsState a frame late. Two keystrokes between frames saw the field ahead of a stale key and setText() rolled the second one back. Compare against the query's current value instead; the binding moves into BindSearchField so a test drives the real code (reproduced failing: expected <ab> but was <a>). - A blank display/group/scope name no longer replaces the token: an empty profile name used to erase the chip entirely. - TokenizedSearchField only recomposes when the active picker changes, not on every keystroke, now that typing no longer needs recomposition. - The output transformation is keyed on the field state too, so a new SearchFieldState is never read through a stale caret lambda. - replaceRuns compares in place instead of allocating a substring. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013ESr8Pkt6WJsVkD5dUZEw6