mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-10-06 11:48:24 +00:00
`AdvancedSearchBarState` kept its own text, parse, debounce and sort orders. It now delegates all of that to `SearchState` and keeps what is genuinely Desktop's: relay callbacks, raw `Event` results, per-relay sync status, and the expanded form panel. Two things the shared holder fixes on the way in: Relevance ranked against the whole box. `sortEvents(notes, order, rawText)` scored the literal text of the query's own tokens, so a search with a `from:` or a `kind:` in it ranked on noise — Android had been fixed to score the leftover terms, Desktop had not. Going through `SearchPipeline.rank` fixes it and gives Desktop the stable tiebreak too. `ChangeSource` is gone. It existed to decide whether the field should show what was typed or the serialized query, because a form edit wrote to the query while typing wrote to the text and the two could disagree. `SearchState.edit` writes the token into the box instead, so a button press and a typed token produce the same state — which is the rule the whole chip language rests on. `SearchResultSorter.sortEvents` had no callers left after that, so it is deleted and its tests now exercise `SearchPipeline.rank`. Two orderings of the same list, one of them without a tiebreak, was the duplication this whole pass exists to remove. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DWTxEzzvD3mKkkgE4N7H66