Skip to content

test(activity): scope preview assertions to the request row - #2843

Merged
kalvinnchau merged 2 commits into
mainfrom
fix/activity-preview-ci
Nov 6, 2026
Merged

kalvinnchau merged 2 commits into
mainfrom
fix/activity-preview-ci

Conversation

@kalvinnchau

@kalvinnchau kalvinnchau commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

The activity browser journey matched both the request's activity and the expired outcome attached to an agent's public reply. This caused the strict-mode selector failure on main at c202642f7 (CI failure).

Scope the activity region to the original request row. The first hosted run also exposed telemetry expiring during the six popup geometry inspections. Renew fixture liveness before each inspection and the final popup interaction; retain the existing controlled-clock expiry and completion checks. Production behavior and existing clock setup are unchanged.

Validation:

  • A temporary controlled-expiry diagnostic reproduced the exact two-button strict-mode failure in local WebKit before the selector repair. With the repair, all journey assertions passed in both engines; the added clock advance subsequently exceeded the broker's 60-second signing window during teardown, so the diagnostic was removed from the final diff.
  • Biome and diff checks passed.
  • On head c823dde6e, the complete affected file passed all 10 Chromium/WebKit cases (1.1 minutes locally): bin/pnpm test:browser agent-activity-overhaul.spec.mjs --project chromium --project webkit --no-deps --workers=1. No browser cases were added or removed. This existing journey proves real popup focus, geometry, navigation and thread retention, which DOM tests cannot establish.
  • The liveness follow-up passed the same complete 10-case Chromium/WebKit file locally (1.2 minutes). After the final callback lint fix, the changed journey passed again in both engines on 760663446 (2 cases, 47.2 seconds).
  • Hosted repetition checks passed on 760663446: 10/10 WebKit runs (4.3 minutes) and 10/10 Chromium runs (3.6 minutes), with zero retries. The original head failed 5/10 WebKit repetitions during live popup inspection. These are runner observations, not controlled performance comparisons.
  • Self-review found no blockers: the request activity remains subject to every original assertion, unrelated reply outcomes cannot satisfy it, and geometry setup no longer depends on finishing before the 30-second freshness boundary. Production diff: 0 lines; combined test diff: +18/-7.
  • No full local suite. Commit/push hooks bypassed with --no-verify at the user's explicit request; hosted CI will supply broader checks.

Current-head hosted CI passed on 760663446, including CI required and DCO. The notifications shard passed unchanged on its single rerun. Research found a separately reproducible pending-save race, fixed in draft #2852. GitHub reports approval; the author authorized merging once approval and required CI hold. No human/native acceptance is claimed. The separate Solo Share viewport failure is outside this repair.

avoid matching expired outcomes attached to public replies in the same thread.

Co-authored-by: OpenAI Codex <[email protected]>
Signed-off-by: Kalvin Chau <[email protected]>
@kalvinnchau
kalvinnchau marked this pull request as ready for review November 6, 2026 17:13
@kalvinnchau
kalvinnchau requested a review from a team as a code owner November 6, 2026 17:13
@kalvinnchau
kalvinnchau marked this pull request as draft November 6, 2026 17:21
keep the expected tool details fresh during popup inspection and retain explicit expiry coverage.

Co-authored-by: OpenAI Codex <[email protected]>
Signed-off-by: Kalvin Chau <[email protected]>
@kalvinnchau
kalvinnchau marked this pull request as ready for review November 6, 2026 17:33
@kalvinnchau
kalvinnchau merged commit ed5b3ac into main Nov 6, 2026
81 of 83 checks passed
@kalvinnchau
kalvinnchau deleted the fix/activity-preview-ci branch November 6, 2026 17:50
ravarora2 added a commit that referenced this pull request Nov 6, 2026
Co-authored-by: BuzzPRReviewAssistant1 <a581a7e8115222acdc32ffb14bfce55d48c24478d98e155f8eba126b69b83c7b@buzz.block.builderlab.xyz>

* origin/main: (71 commits)
  test(activity): scope preview assertions to the request row (#2843)
  perf(search): fold people names once across palette keystrokes (#2570)
  fix(github): keep PR watches running when localStorage is full (#2699)
  Make drafts and sent part of Messages (#2728)
  fix(canvas): render every Canvas within the save limit (#2839)
  test(messages): wait for the row measurement frame before thread catch-up dwell (#2837)
  Keep agent coordination history readable after work finishes (#2454)
  test(mentions): serve the mentions fixture as a build so cold loads fit (#2776)
  test(browser): let a late publication land after its page closed (#2565)
  test(relay): wait for the verified owner before a guest edits an agent (#2413)
  test: wait for the companion default width measurement (#2750)
  test(browser): preserve conversation scroll while revealing actions (#2715)
  test(browser): wait for link hit-testing after thread close (#2792)
  perf(messages): skip micromark for plain prose bodies (#2780)
  perf(inbox): load the emoji name table on first use (#2774)
  perf(messages): cut main-thread work while a busy channel is open (#2729)
  Refine agent Attention cards, watch details, and status controls (#2717)
  fix(bestie): remove a Bestie from its agent card on any device (#2720)
  feat(agents): preview Builderlab agent card links with Add to Buzz (#2719)
  Restore macOS Cmd-W window closing when no tab handles it (#2443)
  ...

Signed-off-by: Ravneet Arora <[email protected]>
tlongwell-block added a commit that referenced this pull request Nov 6, 2026
* origin/main:
  fix(sidebar): rename Remove from Team to Close conversation (#2845)
  perf(channels): cut header and name-matching work in large channels (#2726)
  fix(browser): silence a browser page once its tab goes away (#2721)
  Community Mesh: shared compute plugin (including agent type) (#941)
  perf(relay): cut main-thread work from profile updates (#2730)
  fix(composer): lead the channel placeholder with its sidebar icon (#2829)
  test(activity): scope preview assertions to the request row (#2843)
  perf(search): fold people names once across palette keystrokes (#2570)
  fix(github): keep PR watches running when localStorage is full (#2699)
  Make drafts and sent part of Messages (#2728)
  fix(canvas): render every Canvas within the save limit (#2839)

Co-authored-by: Eva <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@buzz.block.builderlab.xyz>
Co-authored-by: Tyler Longwell <[email protected]>
Signed-off-by: Tyler Longwell <[email protected]>
wpfleger96 added a commit that referenced this pull request Nov 6, 2026
…leanup

* origin/main:
  feat(agents): let app-hosted agents read their owner's channels and members (#2745)
  NEXUS-4271: Expose installed plugin status (#2754)
  fix(menu): stop clipping lifecycle actions behind a hidden scrollbar (#2716)
  feat(agents): give approved external apps the selected agent's full Buzz tools (#2707)
  AIDA-2549: Keep Claude settings drafts in sync (#2841)
  fix(channels): keep a channel's side panels open when returning to it (#2838)
  fix(builderlab): clarify remote-agent account availability (#2764)
  fix(sidebar): rename Remove from Team to Close conversation (#2845)
  perf(channels): cut header and name-matching work in large channels (#2726)
  fix(browser): silence a browser page once its tab goes away (#2721)
  Community Mesh: shared compute plugin (including agent type) (#941)
  perf(relay): cut main-thread work from profile updates (#2730)
  fix(composer): lead the channel placeholder with its sidebar icon (#2829)
  test(activity): scope preview assertions to the request row (#2843)
  perf(search): fold people names once across palette keystrokes (#2570)
  fix(github): keep PR watches running when localStorage is full (#2699)
  Make drafts and sent part of Messages (#2728)
  fix(canvas): render every Canvas within the save limit (#2839)

# Conflicts:
#	.github/workflows/release.yml
cheng-block added a commit to cheng-block/buzz-app that referenced this pull request Nov 6, 2026
…ime-hint

* upstream/main:
  ci: give the native job room for a cold Rust cache (block#2867)
  fix(pairing): refuse unknown communities natively and name the requesting process (block#2835)
  Add per-interest Attention pause and management controls (block#2847)
  feat(drafts): show where unsent drafts wait (block#2853)
  feat(agents): let app-hosted agents read their owner's channels and members (block#2745)
  NEXUS-4271: Expose installed plugin status (block#2754)
  fix(menu): stop clipping lifecycle actions behind a hidden scrollbar (block#2716)
  feat(agents): give approved external apps the selected agent's full Buzz tools (block#2707)
  AIDA-2549: Keep Claude settings drafts in sync (block#2841)
  fix(channels): keep a channel's side panels open when returning to it (block#2838)
  fix(builderlab): clarify remote-agent account availability (block#2764)
  fix(sidebar): rename Remove from Team to Close conversation (block#2845)
  perf(channels): cut header and name-matching work in large channels (block#2726)
  fix(browser): silence a browser page once its tab goes away (block#2721)
  Community Mesh: shared compute plugin (including agent type) (block#941)
  perf(relay): cut main-thread work from profile updates (block#2730)
  fix(composer): lead the channel placeholder with its sidebar icon (block#2829)
  test(activity): scope preview assertions to the request row (block#2843)
  perf(search): fold people names once across palette keystrokes (block#2570)
  fix(github): keep PR watches running when localStorage is full (block#2699)

Signed-off-by: Cheng Peng <[email protected]>
Co-authored-by: Cursor <[email protected]>
klopez4212 added a commit that referenced this pull request Nov 7, 2026
Legacy Buzz saves emoji avatars as percent-encoded SVG. Importing one
connected the agent but dropped its picture and showed the
unsupported-image warning. Recognize the legacy editor's exact template,
render its emoji and background with the existing avatar renderer, and
pass the resulting PNG through the native import upload.

The converted image is bound to the original saved picture so a changed
source cannot receive stale artwork. Conversion and upload failures
retain the existing partial-success behavior. Arbitrary SVG remains
unsupported. Imported emoji artwork adopts the current renderer's sizing
and square source canvas; it preserves the emoji and color, not the old
SVG's exact pixels.

Validation:
- 30 focused unit tests passed, covering legacy/compound emoji, escaped
text, malformed and unsupported SVG, adapter failures and source
selection.
- Browser regression passed in Chromium and WebKit using real emoji
painting and PNG encode/decode. This browser-only case proves a boundary
jsdom cannot; parser and failure matrices remain in unit tests. One
browser scenario added, none removed.
- Native regression covers accepted converted PNG, the old
unsupported-SVG outcome without conversion, stale source, wrong MIME,
invalid data and size bounds.
- Full `cargo test -p Buzz` could not complete: SIGSEGV in
`window_state::tests::onboarding_snapshot_is_kept_until_next_launch_restore`.
Reproduced with serial execution and with only that existing test. That
window-state code is unchanged; this is not a full native-suite pass.
- Independent agent review: no blockers.
- Required push hooks passed at `16aaa2524`: TypeScript/related unit
tests, design checks and native Clippy. An earlier concurrent run timed
out in the existing app-pages integration test; it passed independently
and in the unchanged hook rerun with two workers.
- Full Vitest suite: 1,001 files passed, 8 skipped; 18,914 tests passed,
22 skipped (four workers, 626 seconds). The isolated native import
regression also passed.

Remaining validation: an installed-app import with a real legacy emoji
agent and human confirmation: import the agent, verify its
emoji/background carry over without the picture warning, and verify it
connects normally. The complete native import → signed upload →
persisted picture URL flow and a live upload failure remain unverified.


CI follow-up: merged main to include the already-landed activity-test
repair from #2843. The failed WebKit job matched both request and reply
activity; the upstream fix scopes the assertions to the request row and
renews fixture liveness during popup inspection. The complete activity
and emoji-import browser files passed all 12 cases across Chromium and
WebKit locally (1.5 minutes). No additional product changes or browser
cases were added for this repair. Ready-for-review status is preserved.

---------

Signed-off-by: klopez4212 <[email protected]>
Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
ravarora2 added a commit that referenced this pull request Nov 12, 2026
## Why

GitHub rejects HTTP requests without a User-Agent. Buzz's native plugin
clients omit that header, so GitHub-backed plugins can receive Forbidden
for otherwise valid reads.

Fixes [AIDA-2426](https://linear.app/squareup/issue/AIDA-2426).

## What

Set the existing Buzz/version identifier as the default User-Agent for
both shared native HTTP clients and the dedicated one-shot byte-upload
client. Keep explicit plugin values, including mixed-case headers and
empty values.

## How

Reuse `crate::relay::user_agent()` in the shared client builder and
`send_byte_upload`. This covers ordinary requests, byte downloads,
archive uploads and `uploadBytesOnce` without changing plugin APIs or
adding GitHub-specific behavior.

## Risk

The default applies to shared native clients, including
federated-identity uploads. Origin checks, authentication, redirects,
timeouts, protected-request retry rules and pooling rules stay
unchanged.

## Testing

Regression proof on macOS: all three transport tests failed before their
respective client defaults were added and passed afterward. They inspect
headers received by a local server through the production clients.
Coverage includes ordinary/protected requests, explicit overrides, byte
downloads and the one-shot multipart byte-upload path.

On `062aa53ce`, the full `bin/cargo test -p Buzz --locked --
--nocapture` run recorded 989 passing tests, including all three
User-Agent regressions, before the native test process exited with
SIGSEGV. The unchanged original base,
`fe3dd1947181de66dc6e4fd8ca5d3b61573c0ca2`, previously reproduced the
same native crash. The full local macOS package suite is not green.

The branch now includes main's merged activity-test repair
([#2843](#2843)). On `062aa53ce`,
both complete `agent-activity-overhaul.spec.mjs` and
`history-loading.spec.mjs` files passed all 48 Chromium/WebKit cases
locally, without retries. No browser cases or assertions were removed or
relaxed in this PR. [Current hosted
CI](https://github.com/block/buzz-app/actions/runs/42267489414).

Pending native workflow: launch the changed native build, open a
previously failing GitHub-backed file in the Markdown reader, and
confirm its content loads. Installed-plugin and human acceptance testing
remain outstanding. The PR is currently marked ready for review; that
status does not establish native-workflow or human acceptance.

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