mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-09 08:04:45 +00:00
Commit4f1bd6e0c2left the six public-chat discovery producers untagged and justified it as "they search for chats rather than serving known ones, so there is no entity to name". The first half is right and the conclusion does not follow: having no entity is not the same as having no explanation. Every one of those filters is built from a top-nav selection — Global, your follows, a hashtag, a geohash, a community — which was known where the filter was built and simply had nowhere to travel. The screen could only render them as "All", which is the one thing they are not.3f4723437ealready moved the 25 top-nav value types into commons for exactly this, so ExplainedFilter now carries the scope. It carries the per-relay value rather than the whole set: the filter is already scoped to one relay, so it holds only the slice that applies to it and no reference to the other relays' authors. It stays a typed value rather than a formatted string because purposeDetail already taught that lesson — text built in commons can never be translated, so the UI matches on the type and picks its own wording. scopedTo() stamps it at each feed's make…Filter dispatch, the last place that still knows the selection; below it the builders have flattened it into authors/#t/#g and it is unrecoverable. IFeedTopNavPerRelayFilterSet grew scopeFor(relay) so that stamping is compiler-enforced across all 11 sets rather than a type-switch that silently misses the next one added. The screen groups these rows by scope *type*, not contents: an author-based selection sends a different slice of the follow list to every relay, so keying on contents would shatter "People you follow" into one row per relay — the opposite of what the screen is for. ExplainedFilterTest had not compiled since4d53bbea9erenamed entityId to entityIds, because `./gradlew test` does not run :commons:jvmTest. Repaired, and extended to pin the new field: the scope is a slice of the user's follow list or their chosen hashtag, and handing a relay the selection rather than the authors it already sees would tell it which of its neighbours' filters belong together. Verified on emulator-5554: Home Feed's row now reads "People you follow" with its 176 relays, as one row rather than 176. The public-chat discovery producers take the identical path but only mount while the Discover→Chats screen is open, which this device's bottom nav has no tab for, so that specific row is unproven on device. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>