Repository navigation
Conversation
2d258df to
85d804f
Compare
kalvinnchau
left a comment
There was a problem hiding this comment.
🤖 One cross-client compatibility finding; desktop browser journeys passed against a modeled relay, but mobile UI compatibility was not exercised.
Read mobile forum posts and comments through the existing channel and thread views. Preserve author actions and deletion recovery across host validation. Co-authored-by: BuzzPRReviewAssistant1 <a581a7e8115222acdc32ffb14bfce55d48c24478d98e155f8eba126b69b83c7b@buzz.block.builderlab.xyz> Signed-off-by: Ravneet Arora <[email protected]>
Keep the existing HTTP profiling fixture aligned with the forum-compatible thread request. Co-authored-by: BuzzPRReviewAssistant1 <a581a7e8115222acdc32ffb14bfce55d48c24478d98e155f8eba126b69b83c7b@buzz.block.builderlab.xyz> Signed-off-by: Ravneet Arora <[email protected]>
Keep the signed browser relay fixture strict while accepting the forum kinds requested by thread views. Co-authored-by: BuzzPRReviewAssistant1 <a581a7e8115222acdc32ffb14bfce55d48c24478d98e155f8eba126b69b83c7b@buzz.block.builderlab.xyz> Signed-off-by: Ravneet Arora <[email protected]>
Keep forum edits and reactions unavailable until mobile applies their overlays. Correct signed thread and activity fixtures, and establish the retained-prefix reading position before its anchoring assertion. Co-authored-by: BuzzPRReviewAssistant1 <a581a7e8115222acdc32ffb14bfce55d48c24478d98e155f8eba126b69b83c7b@buzz.block.builderlab.xyz> Signed-off-by: Ravneet Arora <[email protected]>
Co-authored-by: BuzzPRReviewAssistant1 <a581a7e8115222acdc32ffb14bfce55d48c24478d98e155f8eba126b69b83c7b@buzz.block.builderlab.xyz> Signed-off-by: Ravneet Arora <[email protected]>
Co-authored-by: BuzzPRReviewAssistant1 <a581a7e8115222acdc32ffb14bfce55d48c24478d98e155f8eba126b69b83c7b@buzz.block.builderlab.xyz> Signed-off-by: Ravneet Arora <[email protected]>
Give required Node integration its own job after repeated native timeouts. Co-authored-by: BuzzPRReviewAssistant1 <a581a7e8115222acdc32ffb14bfce55d48c24478d98e155f8eba126b69b83c7b@buzz.block.builderlab.xyz> Signed-off-by: Ravneet Arora <[email protected]>
Keep incoming messages after the history row when browser time is paused. Co-authored-by: BuzzPRReviewAssistant1 <a581a7e8115222acdc32ffb14bfce55d48c24478d98e155f8eba126b69b83c7b@buzz.block.builderlab.xyz> Signed-off-by: Ravneet Arora <[email protected]>
9fa4d55 to
73772bc
Compare
|
🤖 Follow-up design review at
The updated component coverage includes both forum kinds, member/guest ownership, chat deletion/retry and author deletion recovery. Hosted CI attempt 2 completed successfully on this exact head. Source review only; I did not run local tests or inspect rendered widths/themes, enlarged text, empty/loading/error/long-content states, keyboard focus, many-agent layouts or live mobile/native behavior. Those acceptance checks remain outstanding. |
Keep unread actions and agent-owner deletion aligned with the existing service capabilities. Preserve deletion of self-authored forum content. Co-authored-by: appetizer <a581a7e8115222acdc32ffb14bfce55d48c24478d98e155f8eba126b69b83c7b@buzz.block.builderlab.xyz> Signed-off-by: Ravneet Arora <[email protected]>
def7b3d to
98cee06
Compare
|
🤖 In response to the two action findings: both are valid and addressed in
Extended MessageManagement coverage for forum kinds 45001/45003, ordinary chat controls, and agent-owner menu behavior for members and guests. The chat cases retain actual deletion and retry assertions for kinds 9/40002; forum cases assert the unsupported action is absent after profile ownership resolves. Existing own-forum deletion/recovery coverage remains. No browser cases were added or removed. Staged formatting/static checks passed. Local tests and fresh rendered inspection were skipped under the existing instruction to use hosted CI. Hosted validation completed successfully on |
|
🤖 Could you add a screenshot or short video of the change to the PR? Design uses these for faster reviews. |
…in the measurements lane (#3447) ## Why `browser-host/relay-broker-live.test.mjs`, "real broker keeps 100,000 joined channels and delivers outside the first batch", times out intermittently in the shared JavaScript shard. | Sighting | Lane | |---|---| | [7 Nov, PR, passed on re-run](https://github.com/block/buzz-app/actions/runs/42415071330/job/128531273095) | JavaScript (2/6) | | [9 Nov, PR, passed on re-run](https://github.com/block/buzz-app/actions/runs/42600556170/job/129103660721) | JavaScript (2/6) | **This PR edits `.github/workflows/ci.yml`.** It adds one step to the existing Browser measurements job. The required gate is unchanged: no job was added or removed, and the measurements result that `CI required` already checks now carries the scale check. ## Root cause The test asserts wall-clock time: about 20 s of single-threaded CPU has to finish inside a 30 s `vi.waitFor` budget. Vitest hashes files to shards, so the test always shared shard 2/6 with `InboxPage.test.tsx` and `vite-config.test.mjs`, under two workers. - `main` passed at 22.5 s. - The two failing jobs reached the budget at 33.9 s and 32.8 s, with the broker connected and no channels reported joined yet. - Their whole shard ran 440 to 446 s against 366 s on `main`. - Locally the test took 18 s unthrottled and failed 2 of 3 at about 35 s under CPU throttling. The 30 s budget is a documented performance contract, so it is not raised. ## Change The test body moves into a helper shared by two tests in the same file. - **"real broker delivers outside the first joined batch"** joins one channel more than a live batch and runs in the shared shards. It keeps the behavioural contract: one socket, the first live-only REQ names a full batch that excludes the last channel, an event in that channel is delivered, and swapping it for a new channel establishes the new one and retires the old route. The lone overflow channel replays inside its own REQ, so this case expects one live-only batch REQ, not two. - **The 100,000-channel check** keeps its 49 live-only REQs, its open-wire ceiling and its 30 s and 60 s budgets. It is gated with `test.skipIf(!process.env.BUZZ_BROKER_SCALE)`, the same pattern the Claude Code protection live test uses. The gated check runs as a step of the Browser measurements job, which already runs serially on an isolated runner. The step sets `BUZZ_BROKER_SCALE`, filters by title through `ci-test-report.mjs`, and uploads its report with the job's evidence artifact. A title filter that matches nothing is a green run of zero tests, so the step then requires exactly one passed test. `docs/contributing.md` lists the step under the lane. No budget, assertion or failure path was weakened, and no engine was skipped. ## Evidence Measured locally on an idle 32-core Linux host, Vitest 5.0.4. | Measurement | Before | After | |---|---|---| | Scale check alone | 14.8 s test time (`vitest run -t "100,000"`, 15.3 s total) | 15.0 s test time, 16.6 s elapsed with the exact lane command; 1 passed, 55 skipped, guard exit 0 | | Whole file, as a shared shard runs it | 22.2 s, 55 tests | 7.5 s, 55 passed and 1 skipped | | New behavioural case | | 10 of 10 fresh runs passed, 231 to 277 ms | | Guard with the gate unset, `-t "100,000"` | | vitest exits 0 with 56 skipped; the guard exits 1 | Hosted, before, from a green `main` run: Browser measurements 10 m 34 s, JavaScript (2/6) 7 m 31 s. Biome is clean on the test file and the workflow parses. The pre-push type check and the file's related unit tests passed on this branch's head. `tests/integration/browser-ci.test.mjs` pins the upload paths of the **Measurement evidence** step, in the case "classic-scrollbar cases run exactly once, after the measurements, without clearing their evidence". The second commit adds `test-results/broker-scale` to that expected list. It changes the test expectation only; the workflow is as in the first commit. | Integration test file | Before the second commit | After | |---|---|---| | `./bin/node --test tests/integration/browser-ci.test.mjs`, macOS, Node v24.18.0 | 6 passed, 1 failed on the upload-path assertion | 7 passed, 0 failed | That assertion is the only pin of the measurements job's steps or paths. The lane's other integration test files and the Linux container the lane uses in CI were not run locally. ## Not confirmed, not run - Hosted timings after the change are not known yet. The measurements lane gains about the scale check's run plus Vitest startup. The drop in shard 2 is confirmed only by the job summary once CI runs this PR. Reviewers should compare both there. - The local timings are from Linux and are not hosted CI numbers. - No human has tested this yet, so `buzz-review-completed` is not set. ## Left alone - `InboxPage.test.tsx` shares the same slow shard with no race found. It needs fixture-cost profiling rather than a timeout change. - Open PRs #3050, #3046, #2883, #2836, #2014, #1140, #1105 and #873 also edit `ci.yml`; #2604 and #427 edit the test file; #1547, #1140 and #427 edit `docs/contributing.md`. A trial merge of each against this change is clean. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Signed-off-by: mtoohey <[email protected]> Signed-off-by: Matt Toohey <[email protected]> Co-authored-by: Claude Fable 5.1 <[email protected]>

Why
Mobile forum posts and replies are saved on the relay but disappear from desktop's conversation view. Desktop omits their event kinds from channel history and thread handling.
Fixes AIDA-2490.
What
Show existing forum posts and replies through the current desktop conversation and thread views. Support deletion and reporting, including recovery after an uncertain deletion. Forum editing and reacting remain unavailable until mobile consumes their overlays. Forum read-state actions and deletion of an agent’s forum content by its owner are also unavailable; deletion of the viewer’s own forum content remains supported.
How
Include forum events in channel rows, thread admission and both pagination paths. Reuse the current rendering, attachments, live subscription and signed cursor checks. Browser and native deletion validators accept forum targets under the existing bounded deletion capability; author and channel authorization stay in place.
Regression coverage includes history and reload, live delivery, exact reply links, reconnect repair, mixed chat/forum pagination with tied timestamps, attachments, author checks, migrated-author deletion, deletion recovery and host validation. No automated browser cases were added or removed; protocol/state coverage lives in Vitest and the existing native validator test.
Node integration now runs in a separate required job. Native compilation previously left only 87 seconds of its 20-minute budget for the complete Node suite. The required-check guard rejects failures or skips in either job.
Risk
This changes shared message classification and action gates. It requires no data migration. Agent-owner mutation support remains limited to its existing message kinds.
Testing
Used the production desktop UI in a browser dev host against the existing local relay, with its synthetic account. In Chromium and WebKit, the actual post and reply created earlier through the iOS simulator app appeared, remained visible after reload, and a newly published forum reply arrived live. Each engine completed 26 successful queries with no page errors. Inspected the existing conversation/thread components in both themes at 1440px and 540px, with a 150% root font size.
Independent source review completed; its three findings were fixed. Native Tauri UI and human acceptance remain pending. To try it: open the same forum on mobile and this desktop build, open the post's replies, reload desktop, then add another reply and check that it arrives.
Validation limit: the full macOS native package suite crashed in both parallel and serial runs. Its unchanged
window_state::tests::onboarding_snapshot_is_kept_until_next_launch_restoretest also crashes alone under LLDB when Tauri's MockRuntime passes a mock window handle to Objective-C. The forum deletion validator test passes; this does not establish a full native-suite pass.Follow-up at
8d45d966e: regression coverage gates forum edits/reactions in the message API, menu, keyboard edit selection and reaction controls while preserving chat actions and forum deletion/reporting. Corrected the browser fixture’s signed thread-kind digest and its activity-query classification. The existing prefix-insertion test now establishes its reading position directly; its anchoring assertions are unchanged. No browser cases were added or removed. Local follow-up tests were skipped at the human’s request. Compatibility coverage, all six JavaScript shards and both Vitest flake batches passed onb070d94f8; earlier local UI checks predate this follow-up.CI scheduling evidence: run 42276502874 passed all Rust tests/doctests but timed out during Node integration. A successful main baseline took 164 seconds for Node integration (274 passed, 5 skipped); browser test discovery was the slowest case at 148 seconds.
ad7e33f4cmoves that unchanged command into its own job, adds one scheduling guard test and extends the existing required-lane failure checks. Post-split hosted CI passed both jobs: native completed in 18m14s; Node integration completed in 4m19s, including 207s execution (279 passed, 5 skipped). Runner setup and standalone plugin-target compilation add work; these different CI snapshots are not a controlled performance comparison.The remaining WebKit failure exposed a timestamp-ordering error in the notification fixture: its incoming message could predate the history row while browser time was paused.
9fa4d55b5supplies increasing event timestamps and checks the unread precondition, preserving notification/dwell assertions. No browser cases were added or removed. Hosted CI on9fa4d55b5passed, including WebKit, Rust/tool, Node integration and the required gate. Local tests remain skipped as requested.Rebased onto main
fa5bf08f7at73772bcb0d4cb3c9c0d74ced657028f88c659342. The only conflict combined independent help-guide additions; range-diff confirms the remaining seven commits are unchanged. GitHub now reports mergeable. Hosted CI completed successfully on73772bcb0d4cb3c9c0d74ced657028f88c659342, including Rust/tool, Node integration, browser checks and the required gate; DCO passed. Review approval, native Tauri UI acceptance and human acceptance remain pending.Action follow-up at
98cee06f7c2300b6cb141e88af5659f76df3c705: addressed both design-review findings by gating forum menu/keyboard unread actions and agent-owner deletion. Extended component coverage for both forum kinds, self-deletion, and ordinary chat owner deletion/retry as member and guest. Existing service permissions remain unchanged. Hosted validation completed successfully on98cee06f7c2300b6cb141e88af5659f76df3c705: attempt 2 passed, including JavaScript 5/6 and the required gate. The rerun completed that shard in 5m18s on the unchanged commit with the same timeout and test selection. MessageManagement.test.tsx passed all 54 tests in JavaScript 2/6 and all five iterations in each of the two Vitest flake jobs; the other non-skipped jobs also passed. The original shard timeout’s cause remains unknown because its log and timing artifact were unavailable. Local tests and fresh rendered/native inspection remained skipped under the existing instruction. Review approval and native/human acceptance remain outstanding; green hosted CI does not establish those acceptance checks.Generated with Codex