Skip to content

test: scope row menu placement checks to active section rows - #2493

Merged
kalvinnchau merged 1 commit into
mainfrom
fix/ci-navigation-row-menu-41913145972
Nov 4, 2026
Merged

kalvinnchau merged 1 commit into
mainfrom
fix/ci-navigation-row-menu-41913145972

Conversation

@kalvinnchau

@kalvinnchau kalvinnchau commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

The row-menu lifetime journey fails in Chromium and WebKit after the new Team sidebar section: the descendant-summary filter matches Team as well as Starred, so the placement assertion sees both the active Starred row and the deliberately retained inert Work exit copy. This repeats on newer main ccf922bd503961341d761eab7b84f393f3ef615c.

Select the exact Work/Starred section keys and reuse the existing active-row selector for all placement assertions, including the return to Work. Preserve the held exit animation, portal closure, inertness, focus recovery and menu resurrection assertions. One test file; no product changes, cases added/removed, timeout changes or retries.

Validation: the affected case failed before and passed after in both engines locally on macOS. Final commit 0fae6538b47c430ff9bad88f1bc2e8af976b5152 passed 1/1 per engine using bin/pnpm test:browser --project chromium --project webkit --no-deps --workers=1 navigation-row-menu.spec.mjs --grep "does not resurrect" (15.6 s total). Mandatory hooks passed; broader validation is delegated to hosted CI. The production frontend/broker fixture uses disposable identity/state and modeled upstream; native and real-relay behavior were not exercised. Human acceptance has not been observed.

Original failure: https://github.com/block/buzz-app/actions/runs/41913145972 (main 6997a5844a9c7bb62084dfbf949bb0aba2e260dc). Both trace DOMs show one active row and one inert, aria-hidden exit copy.

Hosted result: https://github.com/block/buzz-app/actions/runs/41917945627 passed at 0fae6538b47c430ff9bad88f1bc2e8af976b5152; CI required succeeded at 2026-11-04 21:50:55 UTC. All 23 browser journey shards passed, including the affected Chromium shard (131/131) and WebKit shard (81/81). Affected-case hosted repetitions passed 10/10 per engine. Independent agent review found no actionable defects. The PR remains draft; human acceptance has not been observed.

select exact sidebar section keys and exclude held inert exit copies
from placement assertions while preserving menu and focus coverage.

Co-authored-by: am <6e30cd56c30e030cd31bb0939b94a7c257c9a09d5ba2d92cf2735da45629f248@buzz.block.builderlab.xyz>
Signed-off-by: Kalvin Chau <[email protected]>
@kalvinnchau
kalvinnchau marked this pull request as ready for review November 4, 2026 22:23
@kalvinnchau
kalvinnchau requested a review from a team as a code owner November 4, 2026 22:23
@kalvinnchau
kalvinnchau merged commit f5b94e1 into main Nov 4, 2026
41 checks passed
@kalvinnchau
kalvinnchau deleted the fix/ci-navigation-row-menu-41913145972 branch November 4, 2026 22:23
delkc added a commit that referenced this pull request Nov 4, 2026
Bring in the sidebar test selector fix from #2493 without changing the /leave implementation.

Co-authored-by: Buzzsaw <a760f3ee1dc0daf403313e35766d0d983a8898aaa9ca95a034727165c63a8680@claysworld.communities.buzz.xyz>
Signed-off-by: Clay Delk <[email protected]>
johnmatthewtennant added a commit that referenced this pull request Nov 4, 2026
* origin/main: (38 commits)
  fix(browser): load scheme-less address input over https, falling back to http (#2467)
  fix(identity): stop one-click key unlinks and show the linked backed-up key (#2486)
  fix(test): observe coordination transition events (#2297)
  fix(profiles): keep the next view's profile reads through a shrink (#2395)
  fix(channels): show Add and Send message errors above the Manage members list (#2421)
  fix(threads): keep reply hooks off agent activity bubbles (#2422)
  fix(channels): offer only Copy link in a not-joined preview's sidebar actions (#2425)
  test: scope row menu placement checks to active section rows (#2493)
  feat(relay): detach channel windows to a point in history (#2042)
  feat(identity): decide a missing backup choice from community membership (#2378)
  Offer Builderlab decisions in FI builds (#2227)
  feat(inbox): preview recent Inbox activity when hovering the sidebar row (#2347)
  Add collapsible Solo and Team sidebar sections (#2296)
  fix(codex): open long Codex transcripts a page of items at a time (#2259)
  Keep Solo model and effort choices per chat (#2342)
  feat(sidebar): smooth channel reordering with bounded motion (#2108)
  Connect legacy agents from DMs and channel mentions (#2423)
  fix: exclude muted channels from sidebar unread scroll indicators (#2335)
  fix(claude-code): open long Claude transcripts a page at a time (#2428)
  feat(solo): share chats as view only (#2375)
  ...
damienrj added a commit to damienrj/buzz-app that referenced this pull request Nov 4, 2026
…-clone-auth-ab8b97

* origin/main:
  fix(browser): load scheme-less address input over https, falling back to http (block#2467)
  fix(identity): stop one-click key unlinks and show the linked backed-up key (block#2486)
  fix(test): observe coordination transition events (block#2297)
  fix(profiles): keep the next view's profile reads through a shrink (block#2395)
  fix(channels): show Add and Send message errors above the Manage members list (block#2421)
  fix(threads): keep reply hooks off agent activity bubbles (block#2422)
  fix(channels): offer only Copy link in a not-joined preview's sidebar actions (block#2425)
  test: scope row menu placement checks to active section rows (block#2493)
  feat(relay): detach channel windows to a point in history (block#2042)

Signed-off-by: damienrj <[email protected]>
wpfleger96 added a commit that referenced this pull request Nov 4, 2026
…-nip-fi

* origin/main:
  fix(identity): stop one-click key unlinks and show the linked backed-up key (#2486)
  fix(test): observe coordination transition events (#2297)
  fix(profiles): keep the next view's profile reads through a shrink (#2395)
  fix(channels): show Add and Send message errors above the Manage members list (#2421)
  fix(threads): keep reply hooks off agent activity bubbles (#2422)
  fix(channels): offer only Copy link in a not-joined preview's sidebar actions (#2425)
  test: scope row menu placement checks to active section rows (#2493)
  feat(relay): detach channel windows to a point in history (#2042)

# Conflicts:
#	src/app/IdentitySettings.test.tsx
#	src/app/IdentitySettings.tsx
#	src/app/Settings.tsx
wpfleger96 added a commit that referenced this pull request Nov 4, 2026
…r-load-perf

* origin/main: (31 commits)
  test: fix invitation and coordination checks on main (#2517)
  perf(search): name searched people from the profile search response (#2353)
  Use the merge queue for pull requests that require it (#2452)
  fix(browser): load scheme-less address input over https, falling back to http (#2467)
  fix(identity): stop one-click key unlinks and show the linked backed-up key (#2486)
  fix(test): observe coordination transition events (#2297)
  fix(profiles): keep the next view's profile reads through a shrink (#2395)
  fix(channels): show Add and Send message errors above the Manage members list (#2421)
  fix(threads): keep reply hooks off agent activity bubbles (#2422)
  fix(channels): offer only Copy link in a not-joined preview's sidebar actions (#2425)
  test: scope row menu placement checks to active section rows (#2493)
  feat(relay): detach channel windows to a point in history (#2042)
  feat(identity): decide a missing backup choice from community membership (#2378)
  Offer Builderlab decisions in FI builds (#2227)
  feat(inbox): preview recent Inbox activity when hovering the sidebar row (#2347)
  Add collapsible Solo and Team sidebar sections (#2296)
  fix(codex): open long Codex transcripts a page of items at a time (#2259)
  Keep Solo model and effort choices per chat (#2342)
  feat(sidebar): smooth channel reordering with bounded motion (#2108)
  Connect legacy agents from DMs and channel mentions (#2423)
  ...
michaelneale added a commit that referenced this pull request Nov 4, 2026
* origin/main: (31 commits)
  test: fix invitation and coordination checks on main (#2517)
  perf(search): name searched people from the profile search response (#2353)
  Use the merge queue for pull requests that require it (#2452)
  fix(browser): load scheme-less address input over https, falling back to http (#2467)
  fix(identity): stop one-click key unlinks and show the linked backed-up key (#2486)
  fix(test): observe coordination transition events (#2297)
  fix(profiles): keep the next view's profile reads through a shrink (#2395)
  fix(channels): show Add and Send message errors above the Manage members list (#2421)
  fix(threads): keep reply hooks off agent activity bubbles (#2422)
  fix(channels): offer only Copy link in a not-joined preview's sidebar actions (#2425)
  test: scope row menu placement checks to active section rows (#2493)
  feat(relay): detach channel windows to a point in history (#2042)
  feat(identity): decide a missing backup choice from community membership (#2378)
  Offer Builderlab decisions in FI builds (#2227)
  feat(inbox): preview recent Inbox activity when hovering the sidebar row (#2347)
  Add collapsible Solo and Team sidebar sections (#2296)
  fix(codex): open long Codex transcripts a page of items at a time (#2259)
  Keep Solo model and effort choices per chat (#2342)
  feat(sidebar): smooth channel reordering with bounded motion (#2108)
  Connect legacy agents from DMs and channel mentions (#2423)
  ...

Signed-off-by: Michael Neale <[email protected]>
cheng-block added a commit to cheng-block/buzz-app that referenced this pull request Nov 5, 2026
…punctuation

* upstream/main: (78 commits)
  fix(plugins): read Square HTTPS sources with the Block SSH agent (block#2465)
  feat(plugins): let agents request plugin changes for owner review (block#2280)
  fix(messages): keep the hover toolbar while its menu is open (block#2439)
  feat(workflows): suggest channel members for @ in Send Message text (block#2309)
  AIDA-2344: Exclude muted channels from Dock (block#2313)
  feat(search): add slack-style message search operators on desktop (block#2463)
  test: fix invitation and coordination checks on main (block#2517)
  perf(search): name searched people from the profile search response (block#2353)
  Use the merge queue for pull requests that require it (block#2452)
  fix(browser): load scheme-less address input over https, falling back to http (block#2467)
  fix(identity): stop one-click key unlinks and show the linked backed-up key (block#2486)
  fix(test): observe coordination transition events (block#2297)
  fix(profiles): keep the next view's profile reads through a shrink (block#2395)
  fix(channels): show Add and Send message errors above the Manage members list (block#2421)
  fix(threads): keep reply hooks off agent activity bubbles (block#2422)
  fix(channels): offer only Copy link in a not-joined preview's sidebar actions (block#2425)
  test: scope row menu placement checks to active section rows (block#2493)
  feat(relay): detach channel windows to a point in history (block#2042)
  feat(identity): decide a missing backup choice from community membership (block#2378)
  Offer Builderlab decisions in FI builds (block#2227)
  ...

Signed-off-by: Cheng Peng <[email protected]>

# Conflicts:
#	docs/buzz-help.md
kazemek21 added a commit that referenced this pull request Nov 5, 2026
## TL;DR
Keep the “New messages” divider fixed during a channel visit, even as
reading advances unread state or the timeline temporarily remounts.
Capture one verified entry boundary rather than deriving it from the
moving unread cursor. Fixes NEXUS-4082.

## How
The existing message-visit owner records loaded row IDs, verified
history completeness, the read-intent revision, and read evidence before
the timeline mounts. Unresolved attention stays uncertain; later
synchronization cannot redefine entry. The timeline captures one unread
message ID and keeps it under that visit token. It checks evidence in
chronological order only through that first unread row. Messages
received during loading or an inline seek cannot become the entry
boundary. If the entry boundary cannot be proved, omit the divider
rather than guess.

Read eligibility, focus requirements, membership checks, settled-reading
dwell, and read-state writes remain with their existing owners. No new
focus handoff or force-read operation is included. Normal guest-channel
opening focus and Search Buzz dismissal belong to the human-owned
[#2140](#2140); this PR neither
implements nor depends on that change.

## Verification
Snapshot `8219ae795` includes the merged [selector repair
#2493](#2493). Blox passed root
typecheck, touched-file Biome, design checks, and 830 tests across 16
complete affected files. All 58 browser cases passed in Chromium and
WebKit across the complete `new-message-boundary`, `history-loading`,
`activity-groups`, `activity-lifecycle`, and `navigation-row-menu`
files, without skips or retries. All 39 selected source hashes match the
uploaded snapshot and committed files; downloaded artifact digests match
the receipt. The box was deleted. Current-head hosted CI is pending.

The six later-row ordering cases failed before this repair, while six
earlier-row controls passed. All 12 now pass: later unresolved evidence
cannot suppress an earlier proven unread boundary. Unresolved or changed
evidence at or before that boundary still prevents choosing it.

The retained divider scope adds three browser scenarios (six engine
cases), removing none. Browser-only coverage exercises real virtualizer
geometry, keyboard scrolling, selection/copy, and signed delivery
through the broker/store. The saved-offset regression previously failed
with 32px drift in both engines; the original `<4px` tolerance is
unchanged. The mounted ordering matrix stays in React Testing Library.
No browser cases were added or removed by this repair.

The remount fixture toggles timeline presentation under
`MessageManagement`; it does not drive the real `ConversationTab` →
`ChannelBody` inline-seek route. That wiring was source-traced only.
Native WebView and live multi-device behavior remain unproven.

Earlier opening-focus scope was withdrawn: its ten mounted cases and two
width-based browser journeys (four engine cases) were removed, with
`ChannelsPage.tsx` and `channel-permissions.spec.mjs` restored to base.
Those cases covered the withdrawn focus behavior, not this divider. No
replacement focus proof is claimed.

Historical synthetic screenshots at `993af5f` (not current-head native
verification).

Before the boundary.

![boundary-before](https://d24qwcpro867f5.cloudfront.net/repos/block/buzz-app/prs/2083/boundary-993af5f-before.png)

After the boundary.

![boundary-after](https://d24qwcpro867f5.cloudfront.net/repos/block/buzz-app/prs/2083/boundary-993af5f-after.png)

After channel revisit, with grouped messages.

![boundary-grouped](https://d24qwcpro867f5.cloudfront.net/repos/block/buzz-app/prs/2083/boundary-993af5f-grouped.png)

Narrow, dark view with larger text.

![boundary-narrow-dark](https://d24qwcpro867f5.cloudfront.net/repos/block/buzz-app/prs/2083/boundary-993af5f-narrow-dark.png)

## Limits
The divider stays absent for the whole visit when history was incomplete
or unverified at entry, even if older rows load later. It may also be
absent if entry membership or evidence at or before the first unread row
cannot be proved. Read-intent changes or changed evidence needed to
locate the boundary before capture conservatively omit it. Uncertainty
in a later row no longer suppresses an earlier proven unread boundary. A
visible read/unread transition cannot exclude older unread messages, and
delayed rows cannot establish entry membership.

A read change in another channel while entry awaits evidence can also
suppress the divider for this visit. Entry reconciliation can clear a
prior message-force marker and advance the same global revision. The
public API does not expose a target-specific entry set or mutation
cause. This PR retains that conservative guard; focused tests preserve
the omission and verify the affected messages remain unread.

The original live #announcements unread report remains unproved. Private
screenshots did not establish its channel role or focus state and are
not published. This divider-only change claims no confirmed fix for that
incident. Native WebView was not exercised.

## Coordination
Based on main, including the merged held-reader resize and fixture
repairs. Keeps the existing unread/relay owners and does not expand
their APIs. The opening-focus overlap was removed rather than creating a
competing owner or an ordering dependency on #2140.

— Generated with Codex (gpt-6.1-sol) on behalf of kylez.

Signed-off-by: Kyle Zemek <[email protected]>
Co-authored-by: Codex <[email protected]>
dr0uleau added a commit that referenced this pull request Nov 5, 2026
## Why

The Solo owner journey reaches the 120-second test deadline on [hosted
Linux
WebKit](https://github.com/block/buzz-app/actions/runs/41915404658/job/126874187269).
Its last enabled-state assertion gets only 653 ms of its 10-second
budget.

## What

Separate access saves and reloads from confirmation checks for joined
viewers and existing Public chats. Keep every assertion and all four
theme/layout presentations. Keep both engines, timeouts, and zero
retries.

## How

Each scenario gets fresh keys, relay state, storage, and a browser
context. Worker builds remain shared. The save case checks eight signed
edits. The confirmation case checks that cancellation sends no
publications. Browser layout, focus, reload, and production broker
wiring remain covered. No cases move to a lower layer.

## Risk

Only one browser test file changes: +33/-4 lines. Production code stays
unchanged. The file gains one case per engine and one fixture setup per
engine.

## Testing

On macOS arm64 Blox, run `bin/pnpm test:browser
tests/browser/solo-public-access.spec.mjs --project chromium --project
webkit --no-deps --workers=2`.

| Evidence | Base `f51ecb16b` | Head `3232b3d80` |
| --- | ---: | ---: |
| Cases passed | 6 | 8 |
| Elapsed time | 1.0 min | 61.94 s |
| Sum of case durations | 113.4 s | 114.0 s |
| Slowest case | 39.5 s | 23.6 s |
| Worker build setup | 2.60 / 2.87 s | 2.46 / 2.64 s |

The two owner cases take 21.9 / 16.3 s in Chromium and 23.6 / 15.2 s in
WebKit. Temporarily remove the retained-access warning from
`ChannelGeneralAccess`: the moved confirmation assertion fails in both
engines with the missing warning. Restore the source byte for byte; the
clean head passes all eight cases.

Independent agent review finds no blockers. `sq agents review
"origin/main...HEAD"` rejects the range before review starts because
routine dispatch does not support custom ranges. Local hooks and
formatting pass. CI discovery confirms that every functional case
remains selected exactly once. The broader integration run has one local
setup failure; its focused rerun passes. The full rerun has the same
setup failure (exit 11); its cause remains open.

[Hosted Linux
validation](https://github.com/block/buzz-app/actions/runs/41920447002)
passes the Solo file. The WebKit shard passes all 70 cases in 420.0 s,
with 770.1 s of summed execution. The Solo file takes 128.6 s in total;
its owner cases take 47.4 and 37.3 s.

Ten repeated runs pass all 40 cases in each engine, without retries.
Chromium takes 549.5 s elapsed / 1018.0 s summed execution; its slowest
case takes 37.0 s. WebKit takes 1011.4 s elapsed / 1916.3 s summed
execution; its slowest case takes 74.7 s. These runs establish bounded
evidence on this head, not absence of all flakes.

The base includes [the navigation test
fix](#2493). At rebased head
`0b5bd598f`, all eight focused cases pass on macOS arm64 Blox in 61.85
s. The test diff matches the reviewed commit byte for byte. All hosted
checks pass on rebased head `0b5bd598f`. The local integration setup
failure remains open; hosted integration passes on the earlier snapshot.

The author waives the human test for this test-only PR. Agent review and
both-engine validation are complete. No native app or real-account flow
runs. No Keychain prompt occurs.

buzz-review-completed

Generated with Codex

Signed-off-by: Daniel Rouleau <[email protected]>
Co-authored-by: Codex <[email protected]>
ravarora2 added a commit that referenced this pull request Nov 5, 2026
## Why

People cannot delete workflows created by agents they own, leaving
obsolete scheduled automation outside their control. Fixes
[AIDA-2393](https://linear.app/squareup/issue/AIDA-2393).

## What

Allow a verified agent owner to delete the agent’s workflow using the
human’s signing identity, including with the channel’s Guest role.
Editing, enabling and running remain author-only. Find agent-authored
workflows under **Owner → All channel workflows**.

## How

Reuse cryptographically verified ownership through the UI, command
validation and the final check before publication. Both signing hosts
admit only canonical workflow deletes; the relay authorizes ownership.
Keep uncertain deletions visible and recoverable without automatic
replay.

Refresh permissions on profile, access and session changes. Report
confirmation-time refusal through the existing error surfaces, retain
the editor draft, and explain disabled Delete actions accessibly. The
read-only browser journey checks the menu, explanation and keyboard
focus behavior. No browser cases were added or removed.

## Risk

This changes a destructive permission boundary. **Do not merge or ship
until the target relay is confirmed to include
[block/buzz#7735](block/buzz#7735 Older
relays may accept deletion without stopping scheduled execution. The
deployed SHA remains unverified.

Removing profile ownership proof revokes app permission but does not
clear the relay’s first-write-wins owner record. Guest deletion was
confirmed against a local relay; the reviewer also independently
verified WebSocket deletion and restart cleanup, then [withdrew the
channel-gate
finding](#2281 (comment)).
This does not establish channel-scoped-token compatibility.

## Testing

At the prior published head `3928a5686`, all 41 executed hosted checks
passed, including **CI required**; Windows native validation and the
unselected browser flake lane were skipped. Main’s
[#2493](#2493) fixed the
independent sidebar test failure.

Rebased onto main `b62173845` at `6d323d1a4`; all four feature patches
are unchanged. Local TypeScript, 122 workflow regression tests, 16
browser-host broker tests, and 72 Chromium/WebKit browser checks passed.
The initial concurrent unit run hit two editor-test timeouts; the
complete five-file serial rerun passed with unchanged assertions and
limits. No test cases, retries or timeouts were removed or relaxed.

Design, Clippy and machine push-policy checks passed. The broad
affected-unit pre-push lane remains excluded under the author’s earlier
instruction; no full local unit pass is claimed. The first hosted
attempt failed before tests in ten jobs because pnpm release downloads
returned HTTP 504. All ten failure logs confirm that cause. After the
run finished, a failed-jobs rerun was accepted and attempt 2 is in
progress; the rebased head is not yet hosted-green.

Earlier real-session checks against local relay `d44031f41` confirmed
owner deletion, unrelated-user rejection, fresh definition removal and
scheduled execution stopping. These checks do not verify the production
deployment.

## Before merge

- Confirm the target relay contains #7735.
- Obtain human native-app acceptance: delete a disposable own-agent
workflow through **All channel workflows**, reload and confirm removal;
verify an unrelated agent’s workflow stays protected.

Human acceptance is unconfirmed. The existing PR ready state is
preserved; this description does not attest merge readiness.

Generated with Codex

---------

Signed-off-by: Ravneet Arora <[email protected]>
Co-authored-by: BuzzPRReviewAssistant1 <a581a7e8115222acdc32ffb14bfce55d48c24478d98e155f8eba126b69b83c7b@buzz.block.builderlab.xyz>
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