Skip to content

fix(channels): prioritize your agents in member search - #1794

Merged
tellaho merged 23 commits into
mainfrom
tho/channel-members-own-agents
Oct 28, 2026
Merged

tellaho merged 23 commits into
mainfrom
tho/channel-members-own-agents

Conversation

@tellaho

@tellaho tellaho commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

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 rankPeople matcher/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

  1. Open Manage members in a channel with permission to add members and at least five imported agents not already in it. With an empty query, Your agents offers four entries and a secondary Show more button. Shared relationship and usage preferences apply before that limit, so a DM'd or frequently chosen agent can lead the first page.
  2. Search a name shared by imported agents, people, other community agents, and your older/non-device agent inventory. The matching non-empty groups appear in that order; each begins with four rows.
  3. Expand one group. Only that group reveals four more entries. When the final Show more disappears after Enter or Space, focus moves to the first newly revealed row’s first available control; Tab continues within that row. Changing the query or refreshing resets the groups. Find more matches fetches and reveals the next directory page directly; local-only groups keep their own expansion limits.
  4. Open the community badge beside Your agents and the information icon beside Your other agents. Their popovers explain the distinction; Escape dismisses the popover and restores its trigger while Members stays open.
  5. Search a person by username or an imported agent by its own name when its displayed profile name differs. They remain findable; within each group the shared matcher applies exact-name, prior-choice, relationship and usage preferences.

Shared ranking and channel-specific behavior

Each channel invitation group calls features/search/people-rank.ts directly; the dialog no longer composes a channel ranking score. Existing peopleRelationships supplies 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 matchPerson rule directly.

The remaining consumer-specific behavior is:

  • Four outer groups, eligibility checks, local-inventory admission and four-row pages: these are the channel invitation contract. Local name admission uses the existing shared matchPerson rule and also accepts public keys.
  • Unmatched key-only or relay-returned results follow shared-ranked name matches, without duplicates: the shared name ranker intentionally filters results whose names do not match, while this picker must retain directory/key lookup results.
  • Solo retains its existing combined page and name ordering: its sharing chooser is outside this channel-group change.

Validation and remaining checks

  • Current head 8e88fe5a0 includes main through 993e403ce without 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 through 0bc0752b6 without conflicts. TypeScript, commit hooks and mandatory pre-push gates pass. The type/related-test gate took 116.68 seconds with the documented BUZZ_TEST_WORKERS=2 limit 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 at 8e88fe5a0.

  • Historical pagination-test optimization at a7e388eb6 retained 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.

Theme Group heading Information popover
Dark Your other agents heading and information button, dark theme Explanation for agents from other devices or earlier setups, dark theme
Light Your other agents heading and information button, light theme Explanation for agents from other devices or earlier setups, light theme

buzz-review-completed

tellaho and others added 11 commits October 27, 2026 22:56
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>
@tellaho

tellaho commented Oct 28, 2026

Copy link
Copy Markdown
Contributor Author

🤖 Carl: pushed the CI repair at a7e388eb6219f7aa7ed0bbfa8b57a268352bddff, integrating main through 6405ec863.

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:

  • Complete ChannelMembersDialog.test.tsx: 57/57 pass; pagination case repeated 5/5 with no retries, at 1.09–1.14s per run locally.
  • Complete channel-completion, channel-members-focus, and conversation browser files: 38/38 pass across Chromium and WebKit (--config tests/browser/playwright.config.mjs --no-deps --workers=2), with no cases removed.
  • Mandatory pre-push TypeScript/related-unit and design gates pass at this head.

New CI run is in progress. This remains a draft; hosted confirmation, independent review, and the native imported-agent walkthrough remain pending.

tellaho and others added 2 commits October 28, 2026 09:27
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>
@tellaho

tellaho commented Oct 28, 2026

Copy link
Copy Markdown
Contributor Author

🤖 Carl: the invitation groups now call the shared rankPeople function directly at 3b152dc8bdc39435ad9c667b9cd2ae8d47d30890, replacing the dialog’s score composition. Usernames, hidden managed-agent names, DM/shared-channel relationships, and remembered usage follow the shared matcher and ordering rules. Successful additions record a picker-specific choice; failed or retired additions do not.

Remaining consumer-specific behavior:

  • The four outer groups, eligibility/local-inventory admission, and four-row pages implement the agreed channel invitation policy. Name admission still uses shared matchPerson; public-key lookups remain accepted.
  • Key-only and relay-returned results that the shared name ranker cannot match stay after ranked name matches, without duplicates, so directory results remain reachable.
  • Solo retains its existing combined page and name order because this change targets channel invitation groups.

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 a7e388eb6; the new head needs its own hosted result. This remains a draft pending review and native imported-agent walkthrough. Main is included through 6405ec863.

tellaho and others added 3 commits October 28, 2026 10:26
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>
@tellaho

tellaho commented Oct 28, 2026

Copy link
Copy Markdown
Contributor Author

🤖 Carl: pushed the accepted presentation fixes at 0543047d2c04b9ff1abe962798f003d651c41c12, including main through a0ea099b5 without conflicts.

  • Not in this channel/chat now uses shared InlineHeader (14px medium); subgroup labels remain caption-sized.
  • Group Show more actions use shared subtle/xs capsules. Find more matches keeps its existing size in the separate search footer.

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 3b152dc8b; the new head needs its own result. The 87-test and 32-browser-case totals in the description belong to that earlier head. This remains a draft pending independent review and native imported-agent population validation. The description now records these snapshot-specific checks and limits.

@tellaho

tellaho commented Oct 28, 2026

Copy link
Copy Markdown
Contributor Author

🤖 Agent review (independent, at 0543047d2). Comments only; the human author decides what to fix.

Score: 8/10. One blocking finding keeps it below 9.

Blocking

With nothing typed, the shared ranking does not order anything (ChannelMembersDialog.tsx ~914-940, rankPeople call)

  • Cause: with needle === "", matchPerson returns tier 0 for everyone. personMatch therefore gives every candidate rank 0, and searchOrder returns early for rank 0 without looking at the relationship band or usage. All rows tie, so the stable sort keeps inventory order.
  • Failure: a user with more than four managed agents who always invites one, or who has a DM with it, may find it hidden behind Show more when the dialog opens. That idle state is the one this PR adds. Every ordering test types text first, so no test catches it.
  • Fix: for an empty query, order with the same shared pieces using a non-exact rank: relationship band plus remembered usage. Alternatively, have personMatch treat an empty needle as non-exact, if Cmd-K and New message are unaffected. Add a default-state test that seeds a remembered choice, visit or DM and expects that agent first.

Optional

  • Coupling: communityReader is now injected into the Channels plugin only for the scope-hint popover. That forces three fixture edits plus a local splitPartition/try-catch. Deriving the hint from existing session data, such as useAgentScopeCommunity, would be leaner.
  • Group coupling: candidateGroup returns indices 0-3 that must stay in step with the order of the group-name array. A single { name, test } list would remove that hidden coupling.
  • Show more focus: when a group's last page loads, the focused Show more button unmounts. Consider moving focus to the first newly revealed row.
  • Stale ordering after Add: usage is memoized on [scope, solo, text, refresh], so after a successful Add the new choice doesn't reorder rows until the text changes. Low impact.
  • Solo and sub-group headings: Solo's "Not in this chat" now uses InlineHeader; the author accepted this. The sub-group headings remain caption h4s by design.

Checks out

  • Candidate sourcing moved to agentChoices.selectable, equivalent to the old identities plus archiveHides.
  • Solo ordering is unchanged.
  • Key-only and relay-only results are appended without duplicates.
  • Failed adds don't record usage.
  • rankPeople is called directly.

Scope: read the production diff, the PR comments, the shared search, ranking and selection modules, and the AGENTS.md and docs/agents.md review rules. Ran no tests and didn't run the app. Skipped docs/contributing.md, the full DESIGN.md and the VISION docs.

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>
@tellaho

tellaho commented Oct 28, 2026

Copy link
Copy Markdown
Contributor Author

🤖 Carl: fixed the blocking idle-ordering defect at f7a879a662587aba823b2154729c746bc34543ff. Blank queries now receive a neutral non-exact rank in shared personMatch, allowing the existing searchOrder relationship bands and usage boost to sort suggestions before the four-row limit. The dialog still calls rankPeople directly.

All three new regression cases fail on 0543047d2 and pass with the fix. The dialog case reopens with six managed agents, a signed DM and remembered usage, without typing, and confirms both preferred agents reach the first page. Shared cases cover empty/whitespace queries and person/DM usage.

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 matchPerson directly. Their full SearchResults, NewMessage and recovery tests pass, alongside existing typed-name ranking tests.

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 BUZZ_TEST_WORKERS=2 limit also used by CI (115.79 seconds for types/related tests). Selection, assertions, timeouts and retries are unchanged.

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.

@tellaho

tellaho commented Oct 28, 2026

Copy link
Copy Markdown
Contributor Author

🤖 Follow-up agent review at f7a879a66: the earlier blocker (idle ordering) is resolved.

  • personMatch now gives a blank needle the non-exact rank 1. searchOrder therefore no longer returns early on an exact match, and the relationship band and usage boost order idle rows before the four-row limit.
  • The only other rankPeople caller is Cmd-K (SearchResults.tsx), and it only ranks people when peopleNeedle is non-empty (!!peopleNeedle, line 315). New message uses matchPerson directly. Neither one's behavior changes.
  • The new ranker and dialog regressions cover the blank, whitespace-only and reopen cases.

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.

@tellaho
tellaho marked this pull request as ready for review October 28, 2026 17:55
@tellaho
tellaho requested a review from a team as a code owner October 28, 2026 17:55

@kalvinnchau kalvinnchau left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Two P3 usability/accessibility findings remain at f7a879a. No P0–P2 defect was established. Please address the pagination visibility and distinct region names below.

Comment thread src/bundled/channels/ChannelMembersDialog.tsx
Comment thread src/bundled/channels/ChannelMembersDialog.tsx Outdated
tellaho and others added 4 commits October 28, 2026 11:18
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 kalvinnchau left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Approved as requested. The completed review covered f7a879a; subsequent changes through 961a8de have not been re-reviewed. The two P3 findings in the prior review remain unverified at this head.

@kalvinnchau kalvinnchau left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 The two previously reported P3 findings are repaired at this head. One limited keyboard-navigation defect is now reproduced.

Comment thread src/bundled/channels/ChannelMembersDialog.tsx
tellaho and others added 2 commits October 28, 2026 11:55
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>
@tellaho
tellaho merged commit 560230a into main Oct 28, 2026
44 checks passed
@tellaho
tellaho deleted the tho/channel-members-own-agents branch October 28, 2026 20:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants