Cloud-collab shadows follow the peer runtime state and only expose start/stop for the peer owner. Chat @ mentions list files once through the workspace backend, interval cron edits no longer reset the next run, and output-schema MCP failures stay on the tool result.
Apply the remaining working-tree changes: connectors empty-state layout,
plus the knowledge, HITL, captcha, workspace, user-cache, and SSRF
adjustments with matching tests.
Co-authored-by: Cursor <cursoragent@cursor.com>
* feat(browser): support real remote drag with shared canvas pointer
Forward CDP mousedown/mousemove/mouseup (with clickCount) so remote
browser and desktop can drag instead of pan-to-scroll, and share a
connecting indicator while the stream starts.
* fix(chat): restore loading earlier messages on scroll up
Keep the load-older gate armed across virtual list updates, release
the in-flight latch when history declines to start, and expose a
clickable fallback when the list does not overflow.
Co-authored-by: Cursor <cursoragent@cursor.com>
* feat(workspace): clarify path semantics with from_workspace
Add from_workspace so workspace UI keeps leading-slash relative paths
while chat/tool downloads can pass host-absolute send_file paths
through BackendWorkspace, with a host download allowlist.
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(workspace): preserve chat document path semantics
* fix(workspace): harden file URL and host path checks on Windows
Preserve Unix-style file:// paths instead of url2pathname backslashes,
decode percent-encoded segments, and deny POSIX system roots like /etc
before Path.resolve() on Windows.
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(workspace): decode Windows file URLs to native paths
Unquote percent-encoded segments in file:///C:/… URLs and normalize
via Path so send_file enrichment matches str(Path.resolve()) on Windows.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: jubaoliang <jubaoliang@tencent.com>
Co-authored-by: Cursor <cursoragent@cursor.com>