mirror of
https://github.com/openclaw/openclaw.git
synced 2026-07-09 23:43:54 +00:00
* fix(browser): drain download saves and use monotonic cursor for act response - Add drainPendingDownloadSaves() to wait for in-flight saveAs before sampling - Use monotonic downloadSeq cursor instead of bounded-list length - Propagate downloads info in POST /act response for click/batch/evaluate Fixes #93250 * fix(lint): add braces around single-line if returns Fixes eslint(curly) failures in drainPendingDownloadSaves and pickNewDownloads. PR #93307 required CI gate. Ref: ClawSweeper P1 review finding * fix(browser): scope act download metadata to action * fix(browser): broadcast downloads to all active captures to prevent misattribution When concurrent /act calls overlap on the same page, using state.actionDownloadCaptures.at(-1) assigned downloads to the wrong action's capture. Push managed save promises to all active captures so the triggering action always receives its download metadata. Also adds regression tests: broadcast-to-all-captures, sequential capture isolation, and strengthen the dispose test to assert no re-capture after disposal. * fix(browser): prevent unhandled rejection when download capture action throws before drain Move managedSave.catch() before the captures-branch check so the rejection handler always runs, preventing an unhandled promise rejection when the action throws before drain() is called. Simplify the handler by removing the now-dead return + catch at the bottom. * fix(browser): type downloads in BrowserActResponse, fix lint unused var - Add optional downloads field to BrowserActResponse type contract so typed callers of browserAct() can consume the new payload without casts. - Remove unused afterDispose variable in pw-session tests (lint fix). * fix(test): correct post-dispose download assertion capture.promises is not cleared by dispose(), so re-draining a disposed capture still returns pre-dispose results. This is benign — callers should drain before disposing. Update the test to assert the actual behavior (still shows old results, new download not captured). * test(browser): cover /act download metadata response * refactor(browser): report action-owned downloads safely * fix(browser): close action download ownership races * test(browser): type action download capture mock --------- Co-authored-by: Peter Steinberger <steipete@gmail.com>