Skip to content

fix(mentions): show addressed agents first in Solo audience picker - #2856

Merged
zrmarley merged 5 commits into
mainfrom
spuxx/selected-agents-first
Nov 13, 2026
Merged

zrmarley merged 5 commits into
mainfrom
spuxx/selected-agents-first

Conversation

@zrmarley

@zrmarley zrmarley commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • In the Solo audience chooser, put agents addressed at opening first only when browsing without a query, before the 50-row cap. Typed searches retain existing match-quality ranking, including exact names.
  • Keep installed row order stable while toggling, with live checks and availability. Reopening/query changes refresh order; inline @ completion is unchanged.
  • Reuse canonical session.agentChoices and existing Popover, NavigationItem, SearchField and useSearchHighlight owners. No keyboard, membership or last-agent-policy change.

November 11 P2 correction

Published/reviewed head: 0a11cc4; prior feature head bb048e58c6fe0bfa5f34dd8781e719a19fbdd99e.

Kalvin P2 confirmed with mounted real picker: typing Al+Enter called toggle(Alexandra) with either Alexandra alone or Alexandra/Bob addressed. Both new cases fail on the prior feature candidate and pass using pre-feature production owners from 72ce328 with the same tests. The correction limits addressed-first partitioning to blank/whitespace queries; ordinary rankMentions remains the typed-search owner.

  • Complete four affected files (solo-agents.test.tsx, use-mention-choices.test.ts, and both use-search-highlight.test files): 160/160 pass, 46.62s. Existing empty-query ordering/cap regression remains. New tests prove exact picker dispatch, not the composer's last-agent guard itself.
  • Independent new-delta review: PASS, 9/10, no blockers at 0a11cc4; no competing edits or reviewer test reruns.
  • Mandatory pre-commit hooks passed. Normal pre-push hooks passed: types/related tests 140.52s, design 6.68s; Rust Clippy not applicable to this non-Rust delta. No bypass or weakened assertions/timeouts.
  • Exact published PR head verified; mergeable. Fresh hosted CI is pending independently of historical checks below.
  • Fresh agent app-harness exercise: real compiled app with existing production-broker/ephemeral-identity fixture, Chromium + WebKit 2/2 passed, 14.5s (case times 2.0s/2.8s). Exercised both one-/two-addressed cases through the real composer: exact Al Enter adds Al, original audience remains, search retains focus; clearing search preserves addressed-first browsing. No message published. Build used envFile:false, no live identity configuration, installation, native launch or new fixture project.
  • The temporary acceptance probe was not committed; permanent regression coverage remains the mounted tests. Its first run passed typed-Enter/pill assertions but incorrectly counted the still-filtered Al rows as all addressed agents. Corrected the probe to explicitly clear the retained query before checking blank-query ordering; both engines then passed. No product edit, timeout increase or assertion weakening.
  • No permanent browser journey added/removed; no new browser-only behavior was introduced. Fresh human confirmation received on November 11: the author explicitly reported the manual agent-picker test successful and requested marking ready.

Historical evidence — prior feature head only

  • Complete Vitest suite: 997 files / 18,833 tests passed, 8 files / 22 tests skipped.
  • Complete Solo browser journeys: 20/20 Chromium + WebKit.
  • Rendered chooser probe: 8/8, covering themes, narrow/wide widths and enlarged text.
  • Mounted regression coverage: addressed agent beyond the 50-row cap, stable pointer/Enter toggles, reopen/filter/archive, exact-key namesakes and late-arriving choices. Restoring the old priority behavior fails the regression.
  • Independent agent review: PASS, quality 9/10; no material blockers.
  • Human explicitly reported picker ordering works. No separate human claim for keyboard/search/cap/last-agent edge cases. The matching combined native test window was verified, but the earlier picker action's exact window was not independently captured.
  • Combined native acceptance source 1ef7c0a91361310a47a4c5fae4a173ddb12b1a8c contains this reviewed picker implementation unchanged; it is not this PR's head.

Human acceptance and readiness

The author explicitly confirmed on November 11: “Manual test of the agent picker is successful—mark it.” This follows the supplied exact-candidate chooser/typed-Enter acceptance steps and isolated browser handoff at 0a11cc4. Agent exercise, independent review, mandatory hooks and human confirmation are complete for this correction. Historical results remain attributed to their original snapshots above; hosted CI is tracked separately. No merge or release is implied.

buzz-review-completed

November 11 conflict reconciliation

Published merge head 3da18009855d25d6eaec843bfac4d787c77f50e0, integrating main c048b3940803205a8f917c2e92b5050bea15681c without rewriting accepted commits. The sole manual conflict was adjacent help text: preserved both audience-picker guidance and upstream Solo-workspace guidance. Feature diff remains five files, +271/-2. Accepted picker production files are unchanged from 0a11cc4; upstream matcher/terminator handling and assertions are retained.

  • Complete affected mentions suite: 7 files / 307 tests passed, 32.52s, at this exact head.
  • Temporary existing app-harness probe: Chromium + WebKit 2/2 passed, 17.4s; exact Al + Enter with one/two addressed agents, retained audience/focus and blank-query ordering. Fixture identities, no live account/native custody, no message publication. No permanent browser cases added or removed.
  • Independent integration review: PASS 9/10, no blockers, exact head.
  • Normal push hooks passed: types/related tests 164.05s, design 7.03s; Rust hook reported success in 0.29s (not evidence of a fresh full Clippy run).
  • Earlier explicit human picker acceptance remains applicable to the mechanically integrated feature, not a claim that the human tested this merge SHA or all incoming upstream features. Existing attestation retained; no new human test request.
  • Pre-push main advanced to a42ef62 with an unrelated Builderlab sign-in fix; checked merge-tree clean, no overlapping picker changes. No unrelated repair or extra merge added.
  • Fresh GitHub verification after publication: conflict-free, zero unresolved threads, ready; new hosted CI pending, required reviewer approval outstanding. No merge/release/installation performed.

November 13 conflict reconciliation

Published merge head 3443552b4658aa861be4f91e7659bd33e0c571b6, parents 3da18009855d25d6eaec843bfac4d787c77f50e0 and main 7bb45482dea10338f92640b603a9ee5bdf780924. The sole manual resolution preserves both adjacent audience-picker and plugin-draft help paragraphs. No manual production-code changes; upstream loading-name evidence and its tests are retained. Combined feature diff remains five files, +271/-2. No rewritten history.

  • Independent exact-candidate integration review: PASS, 9/10, no blockers (static review).
  • Complete affected Vitest files: 7 files / 291 tests passed, 35.05s at this exact head.
  • Temporary compiled-app/production-broker fixture probe: Chromium + WebKit 2/2 passed, 18.2s. Exact Al Enter with one/two addressed agents preserves audience and search focus; clearing query restores addressed-first browsing. Ephemeral fixture identities, no live account/native custody, no message publication. No permanent browser journey added or removed.
  • Normal push hooks passed: types/related tests 163.56s, design 7.17s, Rust selector 0.28s (not a fresh full Clippy run), organization/history policy hooks. Merge commit follows the configured merge pre-commit skip. Diff check against current main is clean.
  • Prior human acceptance remains historical evidence for the unchanged picker feature, not a claim that a human tested this merge SHA or incoming upstream features. Existing attestation retained. Fresh hosted CI is pending independently; required reviewer approval remains outstanding. No merge, release, installation or native launch performed.

November 13 Huddle CI settlement repair

Head bc12ad688cc961c851bef3cfea2e1a31a8869070 adds a test-only repair in tests/browser/huddles.spec.mjs (+132/-58); picker and Huddle production behavior are unchanged.

  • Resolve layout, reject unfinished finite subtree motion (including pending/paused motion), retain the inner-avatar transform guard, and capture geometry in the same browser evaluation. Preserve all center, gap, containment, and name-overlap thresholds.
  • Deterministically pause the real two-person → solo outer CSS transform at midpoint. The old inner-only predicate accepts a miscentered portrait; the new sampler rejects it. Cleanup resumes motion in finally. Removing only the finite-motion predicate makes both Chromium and WebKit fail specifically at that rejection assertion (centers 230.897/230.913px versus 235px).
  • Add a return-to-solo boundary, restoring six participants before existing hover/name assertions. Existing reduced-motion coverage remains. No browser cases added/removed, retries, timeout increases, shared-helper changes, or production animation changes. Browser rendering is required to test actual CSS/Motion transforms and geometry.
  • Complete Huddle file, Chromium + WebKit, zero retries: 43 passed / 1 existing WebKit capture skip / 0 failed, 44 engine cases. Local macOS runner wall 66.82s, summed execution 119.07s; slowest case is this geometry journey (WebKit 8.93s, Chromium 8.64s). These timings are not comparable to the prior mixed hosted Linux shard; no performance improvement is claimed.
  • Tested base 3443552b4658aa861be4f91e7659bd33e0c571b6 plus the exact committed test blob e3986ed64aead548f2a16ce77432eda832cdd03b (SHA-256 36720b5576ee4b174aeb88e3c0d15225ec16065cb920daa58789fa71553a31bf). Mandatory commit/push hooks passed; types/related tests 94.22s, design 7.86s. Rust selector 0.22s is not a new full Clippy run.
  • Fresh hosted Linux CI remains pending. The original failed run remains evidence, not erased by local success. Prior human acceptance applies to the unchanged picker feature, not a new Huddle acceptance claim. Maintainer approval is separate; no merge/release implied.

Co-authored-by: Dr. Spuxx, the Living Mutagen <dbeea7b641217ab95b3c75e547b999cc044d294afebbf240df7fe90c249de836@feedback.communities.buzz.xyz>
Signed-off-by: Zach Marley <[email protected]>
@zrmarley
zrmarley marked this pull request as ready for review November 11, 2026 17:54
@zrmarley
zrmarley requested a review from a team as a code owner November 11, 2026 17:54
@zrmarley
zrmarley marked this pull request as draft November 11, 2026 18:18
Co-authored-by: Dr. Spuxx, the Living Mutagen <dbeea7b641217ab95b3c75e547b999cc044d294afebbf240df7fe90c249de836@feedback.communities.buzz.xyz>
Signed-off-by: Zach Marley <[email protected]>
@zrmarley
zrmarley marked this pull request as ready for review November 11, 2026 18:36
zrmarley and others added 3 commits November 11, 2026 11:40
Preserve both audience-picker and Solo-workspace help instructions.

Co-authored-by: Dr. Spuxx, the Living Mutagen <dbeea7b641217ab95b3c75e547b999cc044d294afebbf240df7fe90c249de836@feedback.communities.buzz.xyz>
Signed-off-by: Zach Marley <[email protected]>
Preserve both audience-picker and plugin-draft help instructions.

Co-authored-by: Dr. Spuxx, the Living Mutagen <dbeea7b641217ab95b3c75e547b999cc044d294afebbf240df7fe90c249de836@feedback.communities.buzz.xyz>
Signed-off-by: Zach Marley <[email protected]>
Check finite subtree motion and inner avatar transforms in the same layout sample. Hold the real solo transition to prove unfinished outer motion is rejected, and cover a return to solo before restoring the hover roster.

Co-authored-by: Dr. Spuxx, the Living Mutagen <dbeea7b641217ab95b3c75e547b999cc044d294afebbf240df7fe90c249de836@feedback.communities.buzz.xyz>
Signed-off-by: Zach Marley <[email protected]>

@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 at bc12ad6. No new actionable findings in the reviewed change.

The geometry check samples animation readiness and bounds together, rejects pending or paused finite motion, and uses bounded polling. The negative control holds the production self-avatar CSS transition; removing the finite-motion guard causes the intended assertion to fail in Chromium and WebKit. Cleanup resumes the held transition in finally.

Validation included the full Huddle browser fixture (43 passed, one existing skip), repeated geometry checks, and actual-app mention-picker checks through the production browser broker with modeled upstream (4/4 passed). The prior exact-name Enter issue remains fixed.

Validation caveats remain: hosted JavaScript CI was incomplete, and the local full suite reported one discovery timeout plus two teardown rejections whose attribution was not established. Native Huddle IPC/audio and real-relay admission were not validated. This approval does not establish a clean full-suite result.

@zrmarley
zrmarley merged commit 69b5fa3 into main Nov 13, 2026
123 of 125 checks passed
@zrmarley
zrmarley deleted the spuxx/selected-agents-first branch November 13, 2026 16:21
joshfriend added a commit that referenced this pull request Nov 13, 2026
* origin/main: (153 commits)
  feat(agents): preview where interrupted agents were working before resume (#3494)
  perf(messages): close the editor and delete dialog on submit (#3493)
  feat(messages): quote selected message text into the composer (#2392)
  perf(toast): scope docked clearance to the toast host (#3489)
  fix(unread): undo exact captured ordinary reads conditionally (#3473)
  fix(solo): keep navigation responsive during chat deletion (#3488)
  fix(channels): keep custom thread tab names until the tab closes (#3458)
  perf(relay): verify cached history in the native host (#3426)
  fix(settings): refine claude and typesafe key setup dialogs (#3391)
  Update bundled help for Bestie and agent settings (#3194)
  feat(profiles): share and show a local time zone (#3332)
  Revert "feat(link-previews): unfurl web links below messages by default" (#3480)
  Show disabled plugin chats in Solo (#3456)
  perf(messages): host one context menu per message list (#3465)
  test(claude): keep the quit-release test copy above the minimum version (#3477)
  fix(profiles): restore verified names from the device cache (#3382)
  fix(mentions): show addressed agents first in Solo audience picker (#2856)
  perf: count member access once and scope find highlights to painting (#3464)
  perf(messages): prepare a message once for its renderer and link previews (#3466)
  fix(composer): speed up long pastes and paste office text as text (#3441)
  ...

# Conflicts:
#	docs/plugin-authoring-guide.md
joshfriend added a commit that referenced this pull request Nov 13, 2026
…when-ready

* origin/main: (21 commits)
  fix(agents): report a conversation wake that fails before its turn starts (#2192)
  fix(usage): read Claude transcripts over 50 MB a page at a time (#3498)
  feat(agents): preview where interrupted agents were working before resume (#3494)
  perf(messages): close the editor and delete dialog on submit (#3493)
  feat(messages): quote selected message text into the composer (#2392)
  perf(toast): scope docked clearance to the toast host (#3489)
  fix(unread): undo exact captured ordinary reads conditionally (#3473)
  fix(solo): keep navigation responsive during chat deletion (#3488)
  fix(channels): keep custom thread tab names until the tab closes (#3458)
  perf(relay): verify cached history in the native host (#3426)
  fix(settings): refine claude and typesafe key setup dialogs (#3391)
  Update bundled help for Bestie and agent settings (#3194)
  feat(profiles): share and show a local time zone (#3332)
  Revert "feat(link-previews): unfurl web links below messages by default" (#3480)
  Show disabled plugin chats in Solo (#3456)
  perf(messages): host one context menu per message list (#3465)
  test(claude): keep the quit-release test copy above the minimum version (#3477)
  fix(profiles): restore verified names from the device cache (#3382)
  fix(mentions): show addressed agents first in Solo audience picker (#2856)
  perf: count member access once and scope find highlights to painting (#3464)
  ...
joshfriend added a commit that referenced this pull request Nov 13, 2026
…n-on-github

* origin/main: (21 commits)
  fix(agents): report a conversation wake that fails before its turn starts (#2192)
  fix(usage): read Claude transcripts over 50 MB a page at a time (#3498)
  feat(agents): preview where interrupted agents were working before resume (#3494)
  perf(messages): close the editor and delete dialog on submit (#3493)
  feat(messages): quote selected message text into the composer (#2392)
  perf(toast): scope docked clearance to the toast host (#3489)
  fix(unread): undo exact captured ordinary reads conditionally (#3473)
  fix(solo): keep navigation responsive during chat deletion (#3488)
  fix(channels): keep custom thread tab names until the tab closes (#3458)
  perf(relay): verify cached history in the native host (#3426)
  fix(settings): refine claude and typesafe key setup dialogs (#3391)
  Update bundled help for Bestie and agent settings (#3194)
  feat(profiles): share and show a local time zone (#3332)
  Revert "feat(link-previews): unfurl web links below messages by default" (#3480)
  Show disabled plugin chats in Solo (#3456)
  perf(messages): host one context menu per message list (#3465)
  test(claude): keep the quit-release test copy above the minimum version (#3477)
  fix(profiles): restore verified names from the device cache (#3382)
  fix(mentions): show addressed agents first in Solo audience picker (#2856)
  perf: count member access once and scope find highlights to painting (#3464)
  ...
joshfriend added a commit that referenced this pull request Nov 13, 2026
* origin/main: (31 commits)
  Let plugin panels name their tab with panels.useTabTitle (#3251)
  fix(agents): report a conversation wake that fails before its turn starts (#2192)
  fix(usage): read Claude transcripts over 50 MB a page at a time (#3498)
  feat(agents): preview where interrupted agents were working before resume (#3494)
  perf(messages): close the editor and delete dialog on submit (#3493)
  feat(messages): quote selected message text into the composer (#2392)
  perf(toast): scope docked clearance to the toast host (#3489)
  fix(unread): undo exact captured ordinary reads conditionally (#3473)
  fix(solo): keep navigation responsive during chat deletion (#3488)
  fix(channels): keep custom thread tab names until the tab closes (#3458)
  perf(relay): verify cached history in the native host (#3426)
  fix(settings): refine claude and typesafe key setup dialogs (#3391)
  Update bundled help for Bestie and agent settings (#3194)
  feat(profiles): share and show a local time zone (#3332)
  Revert "feat(link-previews): unfurl web links below messages by default" (#3480)
  Show disabled plugin chats in Solo (#3456)
  perf(messages): host one context menu per message list (#3465)
  test(claude): keep the quit-release test copy above the minimum version (#3477)
  fix(profiles): restore verified names from the device cache (#3382)
  fix(mentions): show addressed agents first in Solo audience picker (#2856)
  ...
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