Repository navigation
fix(channels): prioritize your agents in member search - #1794
Conversation
Offer agents configured on this client before typing. Group search results by client agents, people, other community agents and the viewer's remaining agent inventory, preserving archive, membership, paging and Solo rules. Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Expand each group independently in batches of four and reset expansion when searching or refreshing. Use secondary Show more buttons and separate the search continuation from group expansion. Clarify agents not set up here. Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
…wn-agents Bring in the shared community scope badges and popovers used by agent profiles. Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Reuse the Profile community badge beside Your agents to explain imports on this device. Put setup guidance behind an information popover and preserve nested dismissal and focus restoration through the shared popover controls. Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
…wn-agents Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Retain the full pagination dataset and all expansion assertions while reusing connected Show more controls. Keep the existing five-second test budget. Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Scope roster assertions separately from invitation sections and retain the 240-agent workload with four-row expansion. Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
…wn-agents Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
|
🤖 Carl: pushed the CI repair at Supplied the missing community reader in the browser fixtures, separated roster selectors from invitation sections, and updated the 240-agent journey to four-row expansion. The pagination test now reuses connected controls instead of repeatedly scanning every growing row; its dataset, assertions, and five-second limit remain intact. Validation:
New CI run is in progress. This remains a draft; hosted confirmation, independent review, and the native imported-agent walkthrough remain pending. |
Use the existing relationship and search-usage rules inside the agreed groups. Remember successful choices while retaining key lookup, stable row callbacks, Solo ordering and four-row expansion. Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Call rankPeople in each invitation group, including profile usernames and managed-agent names. Preserve exact-key and relay-only results after name matches, and cover matching and ordering through the mounted dialog. Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
|
🤖 Carl: the invitation groups now call the shared Remaining consumer-specific behavior:
Validation at this head: TypeScript, 87 tests across the complete member-dialog/Solo/shared-ranker/usage files, all 32 member-focus browser cases in Chromium and WebKit, and mandatory commit/push gates pass. The username and hidden-agent-name regressions fail against the preceding hand-composed implementation. Existing scale and avatar-work assertions remain intact. Hosted CI passed on the preceding repair head |
Use InlineHeader for the Not in this channel section, retaining caption subgroups and the existing dialog insets and Solo sticky placement. Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Use the shared subtle extra-small capsule for each invitation group Show more action, retaining the separate Find more matches control. Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Merge main through a0ea099 while preserving the accepted member heading and compact group expansion controls. Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
|
🤖 Carl: pushed the accepted presentation fixes at
The actual running app was checked headlessly in light/dark, wide/narrow and at 150% text. At 480px width there is no horizontal overflow; Enter expands only the focused group, and the information popover restores focus on Escape. Main integration preserves both member-dialog files from that checked UI snapshot. Mandatory commit and pre-push gates pass at the current head. Hosted CI is green on the preceding ranking head |
|
🤖 Agent review (independent, at Score: 8/10. One blocking finding keeps it below 9. BlockingWith nothing typed, the shared ranking does not order anything (
Optional
Checks out
Scope: read the production diff, the PR comments, the shared search, ranking and selection modules, and the |
Treat blank people queries as non-exact so relationship bands and remembered usage order default agent suggestions before the four-row page limit. Cover blank and whitespace ranking and reopening the member picker with signed DM data and remembered usage. Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
|
🤖 Carl: fixed the blocking idle-ordering defect at All three new regression cases fail on At the new head, TypeScript, 243 tests across eight complete files, and mandatory commit/push gates pass. Cmd-K’s empty-query guard excludes person ranking; New message uses unchanged The uncapped local push hit ten five-second App/navigation timeouts. Those complete files pass 42/42 unchanged in isolation; the full mandatory gate then passed with the documented Optional coupling/focus changes remain outside this focused correction. The PR remains a draft; hosted CI for this head, acceptance of the review fix, and native imported-agent population validation remain pending. The description records exact validation snapshots and limits. |
|
🤖 Follow-up agent review at
I found no new defects in this diff. Optional items from the first review remain optional. Scope: I read the diff and the callers; I didn't run tests. |
kalvinnchau
left a comment
There was a problem hiding this comment.
🤖 Two P3 usability/accessibility findings remain at f7a879a. No P0–P2 defect was established. Please address the pagination visibility and distinct region names below.
Reveal loaded relay matches within each invitation group when continuing directory search. Keep local-only groups independently paged, continue mixed-group expansion from its visible boundary, and reserve the flat page limit for Solo. Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Name the invitation People region separately from the roster while preserving its visible caption. Assert the distinct names in the dialog regression and use role/name browser selectors instead of structural section CSS. Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Merge main through 0bc0752 while preserving invitation paging and accessible landmark fixes. Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Compute the last revealed relay boundary with the supported array reducer and use DOM Testing Library role-query options, retaining the paging and landmark assertions. Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
kalvinnchau
left a comment
There was a problem hiding this comment.
🤖 The two previously reported P3 findings are repaired at this head. One limited keyboard-navigation defect is now reproduced.
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Category: fix
User Impact: Users can add their imported agents to a channel without searching through community-wide results.
Problem: Channel member search mixes a user's everyday agents with people, community agents, and older agent identities, making a routine invitation difficult to find.
Solution: Offer agents imported into the current community on this device before typing, then group searched matches as Your agents → People → Other agents → Your other agents. Call the shared
rankPeoplematcher/orderer within each group, including usernames, managed-agent names, relationships and remembered usage. Start each group with four options and an independent extra-small secondary Show more button, with shared section headings and small popovers explaining import scope and older setups.File changes
src/bundled/channels/ChannelMembersDialog.tsx
Uses the existing session agent choices to prioritize current-device agents, calls the shared people ranker within each group, bounds and independently expands each group, and reveals fetched directory pages while preserving local-only group limits. Records successful picker choices through the shared usage owner. Uses distinct roster/invitation landmark names and reuses InlineHeader, extra-small subtle buttons, community scope and information popovers while retaining archive, membership, verified ownership, and Solo rules.
src/bundled/channels/ChannelMembersDialog.test.tsx
Covers default invitations, idle relationship/usage ordering before the first four rows, four-tier ordering, signed DM/shared-channel relationships, usage and successful/failed choice recording, usernames and hidden managed-agent names, key/relay-only matches, independent expansion/reset, pagination, keyboard traversal, inventory failure/recovery, archive filtering, and nested popover dismissal/focus.
src/features/search/people-rank.ts
Treats blank person queries as non-exact so the existing shared relationship and usage order also applies to idle suggestions.
src/features/search/people-rank.test.ts
Covers empty and whitespace queries with relationship bands, person usage and DM visit usage, alongside the existing typed exact-name, alias and choice behavior.
src/bundled/channels/ChannelsPage.tsx
Passes the read-only community presentation source through the workspace to the member dialog.
src/bundled/channels/index.tsx
Injects the existing community reader for the shared scope badge.
src/features/agents/AgentCommunityScope.tsx
Adds import-specific explanation text to the existing Profile scope control.
src/features/panels/service.test.tsx
Provides the community reader required by Channels in the existing plugin lifecycle fixture, preserving its unload/reload assertions.
tests/fixtures/mentions.tsx and tests/fixtures/conversation.tsx
Provide the same read-only dependency to the real bundled Channels plugin so completion and packed-consumer journeys still load its contributions.
tests/browser/channel-members-focus.spec.mjs
Asserts distinct roster/invitation landmarks by role and name and checks the agreed four-row expansion against the unchanged 240-agent workload. No browser cases were added or removed.
Reproduction steps
Shared ranking and channel-specific behavior
Each channel invitation group calls
features/search/people-rank.tsdirectly; the dialog no longer composes a channel ranking score. ExistingpeopleRelationshipssupplies relationship bands and DM keys, and the shared usage owner stores choices under the channel-members picker scope.Blank queries use a neutral non-exact rank, so relationship and usage can order idle suggestions rather than all rows tying as exact matches. Typed name matching retains its existing rules. Cmd-K excludes blank person searches; New message uses the unchanged
matchPersonrule directly.The remaining consumer-specific behavior is:
matchPersonrule and also accepts public keys.Validation and remaining checks
Current head
8e88fe5a0includes main through993e403cewithout conflicts. TypeScript, commit hooks and all mandatory push gates pass; the types/related-test gate took 125.30 seconds with the documented two-worker limit. Final keyboard expansion now hands focus to the first newly revealed row after its focused Show more unmounts. Pointer expansion and surviving Show more controls preserve their behavior.The complete member-focus browser file passes 34/34 in Chromium and WebKit (54.2 seconds, macOS, repository config,
--no-deps --workers=2, no retries). One browser case per engine was added, none removed. The new regression fails in both engines before the fix and checks Enter, Space, pointer activation, non-final focus retention and subsequent Tab order. It belongs in the browser because native button removal interacts with the real dialog focus trap differently in each engine. A ten-agent fixture covers this boundary; the existing 240-agent workload remains intact.In the final running product, the last expansion grew a group from 16 to 18 rows, focused the first new row, and the next Tab remained inside that row. No profile or member writes were performed; the isolated browser was closed. Hosted CI passed at
8e88fe5a0, and the human author re-checked the final keyboard expansion natively.At
961a8dec8, the head includes main through0bc0752b6without conflicts. TypeScript, commit hooks and mandatory pre-push gates pass. The type/related-test gate took 116.68 seconds with the documentedBUZZ_TEST_WORKERS=2limit also used by CI; selection, assertions, timeouts and retries are unchanged.At
961a8dec8, both complete member-dialog test files passed: 79/79 in 27.93 seconds. Paging regressions fail before the fix, then verify immediate visibility of the fetched page, independent local-only limits, mixed-group expansion from its revealed boundary and reset on query/refresh. A separate regression contains matching member and non-member people and fails with the old invitation landmark name.At
961a8dec8, the complete member-focus browser file passed 32/32 in Chromium and WebKit (46.1 seconds, macOS, repository config,--no-deps --workers=2, no retries). Both structural region selectors now use role/name assertions. No browser cases were added or removed; scale, keyboard/focus, geometry and unchanged-avatar-work assertions remain intact, including the 240-agent workload.At
961a8dec8, the running product was exercised headlessly in the existing build: one Find more matches click grew the invitation list from 9 to 53 rendered rows after the fetch completed. Roster People and invitation People not in this channel were both present with distinct accessible names. No profile changes or member additions were published.Earlier appearance checks covered the actual app in light/dark, wide/narrow and at 150% text: shared InlineHeader, caption subgroups, extra-small group buttons, the directory footer and nested popover focus return. Those shared controls and styles are retained by these fixes.
At
f7a879a66, 243 tests across eight complete files verified idle ranking and Cmd-K/New message compatibility, hosted CI passed, and follow-up agent review accepted the idle correction. The human author also confirmed the native imported-agent flow at that head. The later paging, landmark and focus changes were re-checked by the human author, with hosted CI passing at8e88fe5a0.Historical pagination-test optimization at
a7e388eb6retained the dataset, assertions and five-second limit: five runs took 1.09–1.14 seconds, with a separate local before/after probe at 2.29/0.96 seconds. These are macOS measurements, separate from hosted Linux CI.Optional popover-wiring and group-index refactors remain deferred. Community search, relay discoverability/access policy and verified Managed by rules are preserved.
Screenshots
Actual running-product crops of the final heading and explanation. Community and member details are excluded; these crops document the hint treatment, not native agent population.
buzz-review-completed