What's Changed
Version bumped from 1.0.47 to 1.0.48
Recent Changes
- Bump version to 1.0.48 (#8031) (6195ac8)
- SKY-10678 Let a diagnosis turn repair the run it just read (#8053) (80aa339)
- Use the saved login someone picked, instead of asking for it again (SKY-13483) (#8052) (6077d6f)
- Refuse non-http(s) navigation URLs before consulting DNS (SKY-13070) (#8051) (cd68bdb)
- Revert "Enforce administrator roles on sensitive organization APIs" (#8050) (77bc9b8)
- Enforce administrator roles on sensitive organization APIs (#8047) (7104034)
- test: preserve SKY-13495 review coverage in the OSS-synced tree (#8046) (7f653f1)
- Validate browser navigation destinations (SKY-13070) (#8045) (11f7dfa)
- Stabilize screencast timeout test (#8044) (d0606b7)
- fix(SKY-13502): report a closed browser session as closed instead of high demand (#8043) (3e4efaa)
- Validate navigation destinations in the MCP browser tools (SKY-13070) (#8041) (bddfabc)
- Prefer the Playwright error name in tab-open failure reasons (SKY-13338 follow-up) (#8042) (b337820)
- Validate caller-supplied CDP addresses and withhold the org key from remote endpoints (SKY-13067) (#8039) (3ee6165)
- Require explicit cloud URL opt-in (#8038) (382d13e)
- Validate deployed script content before persistence (SKY-13066) (#8037) (701f0a8)
- Give each code-block engine its own failure reason when it cannot open a tab (SKY-13338) (#8036) (4474620)
- fix: emit copilot session ID in CodeBlock logs (#8035) (6442cdc)
- Retry a CodeBlock browser session that times out starting instead of failing the run (#8034) (d961500)
- Open a tab when a code block's browser session has none (SKY-13338) (#8033) (78ef1de)
- Stacked: cross-process PBS reads (SKY-13473), fail-closed script execution, vendor teardown budget (#8032) (b416fd4)
- Carry the typed CodeBlock runner error code onto the block result (SKY-13469) (#8030) (8a28e97)
- Return the number a user asked for, not the one beside it (SKY-13226) (#8029) (2401cbc)
- Fix email OTP code persistence, expected-type enforcement, and sign-in link recall (#8028) (ec51e28)
- fix: reap browser sessions whose runnable owner type cannot be resolved (#8027) (2ce6771)
- Show a searchable org-credential picker for copilot credential asks (SKY-12832) (#8026) (1ee85ab)
- fix(SKY-13415): hide the copilot rollup chevron when expansion adds no content (#8025) (a565494)
- Restore the message field and organization_id on foreign stdlib log records (#8024) (db63d8e)
- Freeze the wall clock in the select-option widened-shape test (SKY-12634) (#8023) (81ee16e)
- Fix MCP-created sessions for code-only workflows (#SKY-13338) (#8022) (4089324)
- Capture downloads from adopted vendor browser sessions (SKY-13263) (#8021) (f4e6322)
- fix: keep second status batch unbounded in workflow status response (#8020) (68e8f31)
- Retain vendor browser recordings after session teardown (SKY-13262) (#8019) (05bc544)
- Fail fast on oversized workflow branch context (#8016) (7f4d1f3)
- limit workflow status fetch concurrency (#8018) (af84c03)
- Drop never-deployed CDP route env overrides and share one rollout gate (#8017) (84632e8)
- Persist vendor live-view metadata securely (#8014) (f92fd03)
- Route script-assist LLM calls through the per-prompt model config flag (#8015) (ac96c71)
- Skip the empty-downloads S3 LIST fallback for post-cutover runs (#7983) (68254ba)
- Pin vendor identity non-disclosure across customer-facing surfaces (SKY-13266) (#7990) (9a17502)
- Return a card-connected credential as a typed id and bind its login origin (SKY-13432) (#8013) (7abc725)
- Register OpenAI-direct and Azure GPT-5.6 rates from separate tables (#8011) (e9887bd)
- Bound LLM provider calls on the direct client path with a real wall-clock deadline (#8010) (6019b41)
- Shared destructive-confirm dialog primitive + standardized wording (SKY-12989) (#8009) (7b1b0ac)
- Add atomic one-shot browser effect approvals (#8008) (0f0ac70)
- Recover adopted-session statement downloads from live and transient PDF blobs (SKY-12621) (#8007) (e7266fb)
- Give recorded and compute-generated code blocks the new code block shape (SKY-13185) (#8006) (8f02aad)
- Scope the Copilot sandbox gate to code-bearing drafts and make the refusal terminal (#8005) (a82b1ab)
- Revert "Block internal navigation hops before the browser follows them (SKY-13377)" (#8004) (ee52227)
- Recover soft-deleted Key Vault secrets before updates (#8003) (34c6eb7)
- Resolve the login-block credential the same way at run setup and mid-run (#8002) (4416027)
- Exclude login-cookie sidecars from fresh browser profiles (start_fresh cross-org leak) (#8001) (83e353c)
- Show the centered loading indicator while a run resolves (SKY-13416) (#8000) (5266882)
- Keep the copilot Explore phase active while the scout is still logging in (#7999) (39b9e2a)
- Move New profile to the top of the browser-profile dropdown (#7998) (1186193)
- Probe inherited-browser transport liveness before reusing a page-less browser (#7997) (6467bc1)
- Execute the deterministic custom-select collapse for input_text entries with strict entry-scoped verification (#7996) (be29a33)
- feat(SKY-12845): credential run-sequentially toggle in edit UI (#7995) (41a1f61)
- Block internal navigation hops before the browser follows them (SKY-13377) (#7992) (7f72c33)
- Add live view to the browser infrastructure capability table (#7991) (a73776a)
- Resolve the effective form action once and stop nested budget replenish (SKY-12875) (#7989) (12572d0)
- Bound destination-fact resolution work and re-enable capture (SKY-12875) (#7988) (5696727)
- fix(SKY-13101): documented webhook verifier now rejects forged signatures (#7987) (dd2b6bb)
- Revert "Add flag-gated skip of the check-user-goal LLM call for cached-script runs" (#7986) (23ad5c7)
- SKY-13100 Bound gzip decompression in browser recording processing (#7985) (1ab4455)
- SKY-13097 Apply billing + rate-limit guards to task endpoints (#7984) (b600f4a)
- Deliver the MCP user-agent header so MCP-triggered runs persist trigger_type=mcp (#7982) (9fe888e)
- Bind terminal persistence and webhook callbacks (SKY-12887) (#7980) (682692e)
- Fix browser session download fail-silents (SKY-13385) (#7979) (e945a96)
- Fail run closed when the CodeBlock auto-provisioned browser session cannot be created (#SKY-13334) (#7978) (bcb36c5)
- Add flag-gated skip of the check-user-goal LLM call for cached-script runs (#7977) (35bc570)
- Return standalone (dedented) code from the MCP code-block synthesize tool (#SKY-13336) (#7976) (fa6646d)
- fix(SKY-13335): emit secure CodeBlock runner telemetry on the success path (#7975) (fb993c7)
- fix(frontend): stop reporting GitHub star-count rate-limit as a client error (#7974) (46a451e)
- SKY-13353 Follow Copilot test runs in Live Browser (#7972) (ebff937)
- Constrain DOM reads and inventory browser-effect sinks (#7971) (ed7b893)
- Bind protected references to trusted consumers (SKY-12876) (#7970) (06746c0)
- Document unbound credential denial and remove the credential-fill test shim (#7969) (2f1e15e)
- Let organizations default their runs to custom Smart/Fast LLMs from settings (SKY-13343) (#7968) (84f3da0)
- Bind credential fill to the live page origin (#7967) (fdb42f3)
- Bind the URL-matched saved credential when the agent observes a login page (SKY-13293) (#7966) (0b9190e)
- Validate shared browser navigation destinations and revalidate redirect hops (SKY-13112) (#7962) (8621363)
- Redact bearer auth headers and serialized payloads from error logs (SKY-13195) (#7961) (5b9fe2f)
- fix(SKY-13182): recover a live tab-less inherited browser instead of orphaning it (#7960) (aea531f)
- Use the existing runaway guard for the download-handler wait timeouts (#7958) (3e48383)
- Add per-workflow Mask Secrets advanced setting (SKY-11822) (#7955) (68f9764)
- Downgrade setup_workflow_run client-4xx failures from error+traceback to warning (SKY-13284) (#7954) (5dc96d2)
- fix(tasks): cancel-button gating, webhook-replay runId, google-oauth valid flag (#7953) (248e1d1)
- fix: log per-poll OTP webhook fetch failure at warning not error (#7952) (c80b8cb)
- Materialize the updated row before commit so artifact URI writes stop raising MissingGreenlet (SKY-13354) (#7951) (49b3d8d)
- Add LLM experiment launch gates: OpenRouter provider routing, pinned DeepSeek 0731 key, multi-arm analyzer (#7950) (2ffdfcc)
- Add a Gemini API flex-tier config for gemini-3.1-flash-lite (#7949) (ab7e2d9)
- fix(credentials): delete-path follow-ups from #14215 review (SKY-13271) (#7946) (d025fb2)
- Fix Cmd+V paste into the VNC live browser stream on macOS (SKY-13324) (#7944) (bc661cb)
- Expose 1Password and Bitwarden MCP endpoints (#7945) (d95ee2b)
- Attach at-failure screenshot and final URL to failed code blocks (SKY-13250) (#7943) (ccc2ee5)
- Count the two-state wait as an observation (SKY-13252 follow-up) (#7942) (ed76dae)
- Let an MCP agent wait on two page states at once (SKY-13252) (#7941) (3891f4c)
- Redact secrets in run artifacts: HAR/console scrubbing, LLM-boundary redaction, visual input masking (SKY-11822) (#7940) (5f3062d)
- Route non-mutating requests to answer-only Copilot turns (#7939) (95c5d7c)
- Route reasoning_effort via extra_body on the partner-hosted DeepSeek config (SKY-12750) (#7938) (7314bea)
- Split login from data extraction when the scout demonstrated a credentialed flow (#7934) (16b2efa)
- Tell the user when a copilot turn runs out of time, and log every timeout (SKY-13249) (#7927) (06938f9)
- Report code-block browser failures by their real cause, not as unsupported operations (#7913) (f076b0c)
- Deliver the download instead of shipping a draft the build test disproved (SKY-13230) (#7914) (4bb0105)
- Keep a Copilot turn in the chat when the server restarts mid-turn (SKY-13205) (#7911) (e3e1f93)
- Reconcile the strict synthesis partition at one accounting point (SKY-13207) (#7909) (d999952)
- SKY-13245 Add Magic Link tab to the Credentials page (re-land) (#7908) (1b346bf)
- Increase loop block iteration limit from 500 to 1000 (SKY-13310) (#7907) (0dc37aa)
- SKY-13244 Select a connected email account as the 2FA identifier (re-land) (#7905) (330f1cf)
- Overlay the hover drag grip on the block card gutter instead of reserving header space (SKY-13289) (#7904) (b860f38)
- Stop a Python comment from killing an entire code block (SKY-13300) (#7903) (5b75e3f)
- Recover adopted-session blob downloads by reading bytes at the download event (SKY-12621) (#7902) (fbbbca3)
- SKY-13243 Generalize 2FA email scanning into a source registry with Outlook support (#7901) (80f2dcb)
- API docs sync: cap browser session lifetime at 4 hours (#7887) (c48bc2f)
- Copy icon on hover for every JSON tree viewer node (SKY-13286) (#7900) (a2fcc2e)
- Parse ZIP unzip-only: File Parser always outputs extracted file list for ZIPs (SKY-13279) (#7899) (7855da6)
- Match the Azure OpenAI host, not a URL substring (#7898) (f5eb24b)
- build(deps): non-default rustwright dependency group + lock guard (RUS-5) [R1] (#7870) (8f856f6)
- Copilot: credit working runs and retire the authoring guards that failed them (#7845) (870d61c)
- Make Copilot GPT-5.6 cache writes reusable and observable (#7888) (5cb87a6)
- Give copilot-written sign-in code time to load a slow page (SKY-13208) (#7885) (8ec0c37)
- fix(RUS-5): preserve pinned selection in handler cleanup paths (#7879) (4f43310)
- Resolve Copilot credentials when the login page appears, not only at turn start (SKY-13200) (#7878) (3c201c6)
- Report Copilot test-run failures honestly, and remember ones no later run retried (SKY-13206) (#7873) (479da06)
- SKY-13202 Let the copilot see connected Google and Microsoft accounts (#7871) (e197cc9)
- Show what the copilot actually did in its activity feed (SKY-13203) (#7869) (7d0370e)
- SKY-13134: deploy lightweight worker in automatic staging rollout (#7868) (e7ed6f7)
- fix(openapi): remove orphaned raw TOTP response component (#7867) (786874d)
- feat(SKY-12845): serialize workflow runs by credential (core, non-scheduled) (#7865) (7df5bad)
- feat: enable raw OTP fallback by default, remove TOTP_RAW_FALLBACK_ENABLED (#7866) (b670a1e)
- Collect complete rows from server-windowed virtualized grids (#7863) (436a840)
- fix: ignore unresolved OTP placeholders (#7859) (c459166)
- fix(RUS-5): classify page boundary engine errors (#7861) (60ccd70)
- Restore a local dev path for copilot code-block test runs (#7856) (aab2a29)
- [SKY-12229] Bump mistune to >=3.3.0 for CVE-2026-49851 (#7785) (682cf7f)
- feat: support browser session startup URL (#7029) (8934cf8)
- Scope the task generation cache to the requesting organization (SKY-13102) (#7844) (363b58c)
- fix(RUS-5): thread selected browser engine into remaining elements (#7843) (a306395)
- Route scheduled-run finalizers to the derived run id; classify non-timeout activity failures (SKY-12983) (#7842) (7aae240)
- Fix sequential child runs failing with missing browser page (SKY-13182) (#7841) (314799c)
- Render Google Sheets destination dropdown options as single A - Header lines (SKY-13180) (#7840) (8496b93)
- fix(RUS-5): thread selected engine through handler readbacks (#7839) (e2d213a)
- Clarify browser session defaults and CAPTCHA solver trade-offs in docs (#7836) (f322b48)
- Read adopted-session blob downloads from every open browser tab (SKY-12621) (#7838) (0c243ea)
- migrate handler.py canary-critical error catches to selected-engine APIs (SKY-12007) [R6] (#7835) (fe745cf)
- fix(SKY-12735): preserve open ARIA popups from screenshot-scroll dismissal (#7837) (5e8200f)
- fix: preserve unparsed OTP content for agent-time resolution (#7834) (1ffc889)
- SKY-12543: Guard checkbox label fallback from interactive descendants (#7833) (162b27f)
- Polish studio run pane failure UX (SKY-13141) (#7830) (d9f80eb)
- Redact secret values from exception text at the reporting seams (SKY-12626) (#7832) (6bc77b8)
- Revert defineProperty export helper to plain assignment in injected-script wrapper (SKY-12875) (#7831) (311e045)
- Route download.path() awaiters through shielded resolve_artifact_path (SKY-12982) (#7829) (88a702a)
- Validate destinations on two unguarded browser navigation paths (SKY-13113) (#7828) (ed81c43)
- Show complete six-digit labels on the run outcomes chart (#7783) (50a2928)
- Classify closed browser targets during screenshot capture (SKY-12906) (#7795) (fe40a00)
- Delete the copilot repair ceiling: a stuck repair is reported, not a reason to end the turn (SKY-13108) (#7802) (27491c0)
- Fix failing compute-task safety test on main (#7800) (4e5d6e8)
- Fail the run-timeline query when the API returns a non-array payload (SKY-13162) (#7827) (0da06fe)
- Validate the create-from-prompt response shape at the boundary (SKY-13154) (#7826) (6d0d31a)
- Stop the unsaved-changes dialog from exiting its navigation blocker twice (SKY-13124) (#7825) (de44f84)
- Stabilize download handler timing tests (#7803) (9e565c4)
- SKY-13109 Give block authoring the steps the copilot's scout already demonstrated (#7805) (dc0f0ef)
- SKY-13104 Report page controls the copilot can actually act on (#7806) (10fb044)
- Stop logging an expected analytics serving-table absence as an error (#7824) (575dab2)
- Stop logging closed browser targets as screenshot errors (SKY-13058) (#7823) (082668c)
- SKY-13107 Refuse to type a saved credential's secret into a page field (#7807) (0dd0f6a)
- Stop rationing copilot page inspection and show the page after acting (#7808) (6c5426a)
- Fix finally block failure propagation (SKY-13122) (#7809) (9ae2e79)
- Fix end timestamps in code-only runs: finalize uploaded recordings, stamp action times (SKY-13145, SKY-13142) (#7814) (5c5ba71)
- Let normal-select reach 100% without breaking sibling select experiments' control groups (#7815) (6b6ec53)
- Make row actions visible with a shared kebab + context-menu component (SKY-12955) (#7816) (19d59d2)
- Hide Tags, Scripts, and Custom LLMs sections from the API reference (SKY-13151) (#7817) (9502e57)
- Persist webhook_failure_reason when webhook delivery raises, and name the exception in delivery logs (#7818) (962315e)
- Reap orphaned upstream browser sessions from outside the process that holds them (SKY-13158) (#7821) (f7dd9b8)
- Reject knowably invalid Bitwarden item IDs at workflow run creation (#7819) (792c4b2)
- Report element-tree share and actual drop count when a prompt exceeds the token ceiling (SKY-12350) (#7820) (bfb0faf)
- Raise cloud storage block limit to 300 files (#7793) (f413ffe)
- Copilot acts on a page by selector only, and reports why an action failed (#7792) (bb2649d)
- SKY-13032 Copilot: only three named checks may refuse to save a workflow; delete the rest (#7791) (5189b7f)
- Cap screenshot and recording URL lifetime at one hour (SKY-12527) (#7788) (24ca0b3)
- Eval dashboard: difficulty pills, perf-vs-cost quadrant, copyable task titles (#7799) (5ad1e11)
- SKY-11100: add compute task-type to task_v2 (code-as-action synthesis) (#7798) (c46b500)
- fix(log-noise): downgrade expected frontend-disconnect in message channel stream (#7759) (0d88589)
- Allow clicking through conditional branches in read-only workflow canvases (SKY-12861) (#7758) (99e0e76)
- Fetch a sign-in code from an email address alone, keeping code-vs-link (SKY-13031) (#7756) (a2ca8e6)
- Let copilot exploration solve login CAPTCHAs via the shared solve ladder (SKY-12967) (#7755) (f3906e6)
- migrate dom.py catch sites to selected-engine error identity (SKY-12007) [R5] (#7812) (366d5be)
- feat: backend activity-driven persistent browser session lease renewal (SKY-10833, SKY-13045) (#7813) (57cf308)
- Route CDP retry/connection classification through the selected engine (RUS-5) (#7810) (a754c05)
- Route page.py evaluate/context-loss recovery through the selected browser engine (RUS-5) [R4a] (#7811) (e5a37c9)
- Bind richer per-selected-engine browser error families (RUS-5) (#7801) (3746821)
- Stream large captured downloads to disk instead of replaying the body (SKY-12642) (#7804) (b353703)
- Clarify destination-fact security constraints (#7780) (d416c54)
- SKY-13000 Copilot: a plain single-value extraction verifies as success instead of "not independently verified" (#7779) (e995e87)
- SKY-13105 Bound the page read that could hang an entire copilot turn (#7796) (be051ad)
- Temporarily disable destination-fact capture to stop resolved-URL amplification (SKY-12875) (#7770) (33b6c9a)
- Cap sensitive-artifact TTLs in storage presigned URLs too (SKY-12527) (#7789) (ab469cc)
- CI fix: restore monotonic-clock stabilization reverted by #7794 (#7797) (5862cd2)
- SKY-13030 Copilot: work out which email address to sign in with instead of demanding a password that cannot exist (#7761) (5001bbf)
- fix: log best-effort error-detection fallbacks at warning not error (#7760) (6ac5868)
- feat(browser-firewall): hydrate destination facts for forms, tabs, and dialogs (SKY-12875) (#7767) (3fa1f81)
- Copilot: stop discarding saved drafts for reasons the save path only steers on (SKY-13125) (#7794) (42e208a)
- Route Workday login to the agent; keep fill/submit deterministic (SKY-12657) (#7778) (23ebe8c)
- Compatibility hotfix: put the input-text runtime hint on the base Action model (SKY-13013) (#7777) (7f5f557)
- Repair malformed MCP list and timeout arguments (#7765) (ffb5e89)
- SKY-13061: reach reCAPTCHA v2 anchor inside its frame (#7787) (82fa4ff)
- Store blank OTP run-scoping ids as NULL instead of empty strings (SKY-13060) (#7784) (8cceb6e)
- CI fix: stabilize test_paused_loop_does_not_trip_total_timeout_on_resume (#7786) (893f2fa)
- SKY-12981: invalidate a failed loop block's output to prevent stale prior-iteration reuse (#7775) (d37078a)
- Classify non-script post-dispatch click timeouts by selected engine (RUS-5) (#7772) (91dcd2a)
- Recover blocked inline PDF downloads when no download event fires (#7774) (0bb8411)
- Type into the nested input when a card field's wrapper isn't directly fillable (SKY-12448) (#7773) (22f23de)
- Bound Redis connect-retry cost and fail open on the browser-address quarantine path (#7766) (8e3b40a)
- fix(log-noise): downgrade handled screenshot-timeout from error to warning (#7757) (bc396d0)
- Add Claude Opus 5 as a selectable model (SKY-13026) (#7741) (3a3340c)
- SKY-12945 Copilot: route the code-authoring guardrail's give-up into the accept-or-build step (#7740) (26f1f93)
- Stop banning evaluate in Copilot-authored code blocks; fail closed on unparseable drafts (SKY-13043) (#7754) (86f5b83)
- Add a pure, fail-closed policy core for browser actions (#7753) (1dfc4c9)
- SKY-12974 Copilot: stop rejecting a saved credential at author time; redact at the log and database seams (#7751) (44029da)
- Charge 10 credits per OTP-code parse (#7750) (d43eb5d)
- security: bump auth-stack, next, sharp, brace-expansion, postcss, jupyterlab (Dependabot) (#7747) (c074454)
- Sync OpenAPI reference from production (#7749) (063b424)
- security: bump body-parser to 1.20.6 to fix two Dependabot alerts (#7626) (d77df0f)
- Remove docs/pr-screenshots (internal PR evidence, not docs) (#7744) (402dab6)
- Scan tests/unit for the url-substring anti-pattern before it reaches OSS CodeQL (#7743) (29542fd)
- fix(SKY-12998): route verified copilot fixes through the review gate (#7739) (f8c2cf7)
- Remember the target site across turns, including after a cancel (SKY-12968) (#7737) (f94709f)
- Stop video-path future poisoning from killing workflow activities and finalize interrupted runs (SKY-12852) (#7723) (55315eb)
- docs: serve documentation media from jsDelivr (SKY-12977) (#7722) (d064e71)
- Remove 34 unreferenced documentation media files (#7721) (2d94859)
- Keep Copilot tool calls paired during context pruning (#7719) (5c19779)
- Gate AI-fallback completion for the Workday submit block (SKY-12992) (#7718) (8618771)
- Add an always-on per-iteration TODO list to the copilot agent prompt (#7717) (cfafaae)
- Use current credential scope in deferral gates (#7716) (a137cbe)
- SKY-12957 Copilot: stop asking the user to confirm outputs the request contract already pinned (#7715) (fdeb748)
- SKY-12917 Make Copilot credential resolution exhaustive (#7714) (3902e23)
- SKY-12933 Copilot: build the login step from what the scout demonstrated (#7713) (bcf7430)
- Workday submit: require positive confirmation before marking submitted (SKY-12657) (#7712) (2360de1)
- Let Copilot use credentials saved without a login URL (SKY-12959) (#7711) (808ef71)
- Classify cached-script timeouts by selected engine (RUS-5) (#7708) (35bb60d)
- Classify incremental-tree analysis timeouts by the run's selected browser engine (RUS-5) (#7710) (6c59fa1)
- Classify vendor CDP errors by selected engine (RUS-5) (#7709) (15a28eb)
- Classify code-block heal errors by selected engine (RUS-5) (#7707) (daa2505)
- Resolve the output-contract pass path through the single actuation resolver (SKY-12907) (#7706) (de8c2b3)
- Remove retired Fern documentation and media (SKY-12972) (#7705) (0e793da)
- Bound feature-flag flip staleness to snapshot sync (SKY-12962) (#7704) (7937156)
- Save the workflow instead of giving up when Copilot already found the value (SKY-12907) (#7703) (d95cf91)
- SKY-12918 Copilot: remember the site from the first message when a follow-up doesn't repeat it (#7701) (8ed9fcc)
- Log the copilot terminal render decision per turn (SKY-12853) (#7700) (44a693c)
- SKY-12916 Let Copilot safely continue through login and verification pages (#7699) (f1d2ec8)
- Deduplicate the MCP block walk and store empty code block goals as NULL (#7698) (90ba93b)
- MCP-created code blocks default to the new code block editor experience (#7697) (54ad287)
- Stop replaying custom-select clicks that may have already changed the page (#7696) (09d2ff4)
- fix(SKY-12864): tell MCP agents when code-only rejections come from org policy (#7693) (c547801)
- Stop PBS OTLP span-export error bursts caused by brief node-local collector blips (SKY-12925) (#7694) (6566255)
- SKY-12858 Copilot: list the steps a draft workflow is missing, and add them back after repeated omissions (#7695) (3a7746f)
- Route unsafe checkbox blockers through verified fallback (#7692) (25ea3e2)
- Classify scrape timeouts by the run's selected browser engine (RUS-5) (#7691) (f40153a)
- fix(SKY-12641): give the LLM clear no-file-download feedback (#7690) (a49b8a8)
- Keep real passwords out of generated login code, and stop endless safety-check retries (SKY-12866) (#7689) (918f553)
- SKY-12733 Stop correct “no” answers from failing completed workflows (#7688) (d0fe4dd)
- Render the copilot terminal reply from the finalized outcome envelope, behind a flag (#7681) (1f55e4a)
- SKY-12415 Keep date-driven row selection stable as lists change (#7686) (7bc4913)
- Let Copilot finish a login it was allowed to start (SKY-12867) (#7684) (0d83e89)
- Copilot uses a saved credential matching the login site automatically; credential create/update APIs accept tested_url (#7683) (c9aabd3)
- Copilot chat reads run-outcome facts from the terminal envelope (SKY-12853 FE) (#7682) (60b540c)
- Re-authenticate an expired integration connection in place (SKY-12572) (#7680) (b6af277)
- Only upload live-view screenshots while someone is actually watching (#7677) (9af227c)
- Add a screenshot side-effect hook to the CDP proxy: capture core, config source, artifact sink (#7676) (964f21f)
- Route vendor hosted-browser sessions through the CDP proxy behind a flag (#7675) (2d0a6f6)
- Resolve ambiguous typing targets before input (SKY-12707) (#7674) (8fb6403)
- Truthful stop copy and honest run-outcome rendering in copilot chat (#7673) (0cf768e)
- Sync OpenAPI reference from production (#7672) (118f77c)
- Assemble a shadow terminal outcome envelope per copilot turn (#7671) (17fc4ea)
- SKY-12564 Parameterize witnessed account and month in download filenames (#7670) (70a6d3a)
- feat(SKY-12843): eval dashboard screenshot gallery with per-step narration + rubric breakdown (#7669) (9d9f04c)
- Wait for disabled controls before browser actions (SKY-12518) (#7665) (22579ef)
- Bound workflow copilot debug HTML before prompts (#7664) (38324a0)
- Add a Past Runs tab to Studio and label the run pane "Run: wr_…" (SKY-12796) (#7667) (7f12a9d)
- fix(SKY-12416): re-resolve visibility after navigation (#7666) (a6d9f15)
- fix(SKY-12848): ignore unmatched VNC touch releases (#7663) (8ef5ec6)
- feat(SKY-12794): keep studio Code a run-view tab; editor Visual/YAML as shared toggles (#7662) (e90e8fb)
- Deterministic Workday script: fix widget fills + offline regression suite (SKY-12657) (#7661) (8dbb031)
- fix(SKY-12831): co-locate copilot run-tool narration + name unmapped tools (SKY-12385) (#7660) (b1a907e)
- Show the test-run count on the copilot not-confirmed checklist stub (#7659) (d49aa76)
- Classify auth-gated Copilot actions as login intent so the credential prompt fires at turn start (#7658) (b41fe71)
- Make the copilot's terminal credential ask recoverable (#7656) (6b53bde)
- Fall back select-verification prompts to the secondary LLM instead of the main model (#7657) (732e461)
- Show an instant rotating placeholder in the copilot chat after send (#7655) (e1db603)
- feat(SKY-12835): responsive StatusBadge — collapse to icon-only under container width pressure (#7654) (6628d13)
- Classify element screenshot capture failures (SKY-12519, SKY-12517, SKY-12477) (#7653) (c5e5df5)
- Show human-in-the-loop approve/reject buttons in both run views (SKY-12802) (#7652) (495163f)
- Capture inline data URL downloads as files (#7651) (80da8ad)
- Handle optional custom-selection misses gracefully; keep required misses typed (SKY-12678, SKY-12631, SKY-12514, SKY-12700) (#7650) (61d3399)
- fix(copilot): converge repeated metadata rejects (SKY-12763) (#7649) (e4adab0)
- Keep a credential named earlier in the conversation approved when the user confirms (SKY-12812) (#7648) (3c8fb0a)
- Bind per-run browser engine's error families to its selection (#7647) (b782251)
- feat(SKY-12773): show created/queued/started/finished run timing in the Studio run summary (#7646) (534029a)
- Keep copilot test-run action rows visible at the terminal turn (#7645) (a540d3b)
- feat(SKY-12798): render the studio run view at /runs/{wr} (#7644) (1f51942)
- Render Workflow Studio run-view block prompts as prose, not code (SKY-12797) (#7643) (2569a02)
- feat(SKY-12792): cue the studio title as a link to past runs (#7642) (9e52729)
- perf(frontend): drop duplicate run-status poll on run view (#7641) (1c343fc)
- Remove the outputs indicator dot from the Studio v2 Outputs toggle (SKY-12793) (#7640) (f15056e)
- test(guard): close aliased ImportFrom submodule bypass in browser-object identity guard (#7639) (8a1274d)
- fix(SKY-9971): bound transient download observation gaps (#7638) (6820670)
- Recover and classify stale frame/element targets in typing and frame resolution (SKY-12618, SKY-12558) (#7637) (6836b25)
- fix(SKY-12710): scope domUtils.js injection to avoid page global collisions (#7636) (4a492b8)
- fix(SKY-12817): support hover instructions in single-action task parsing (#7635) (0795160)
- test(SKY-12575): cover delimiter-broken JSON in the LLM href-render repair path (#7634) (0ebce51)
- fix(SKY-12786): lower expected CDP frame publisher logs (#7633) (5ed9a5d)
- Keep required steps in generated browser workflows (#7632) (950990a)
- fix(SKY-12743): add opt-in popup grace for file-download clicks (#7631) (ce21fea)
- SKY-12732: Stop the copilot from putting real passwords into generated login code (#7630) (85dd46a)
- SKY-12760: Ask for login credentials at turn start, not end-of-turn (#7629) (00000b8)
- SKY-12811 Let the copilot keep exploring until it finds every value the request asked for (#7628) (169407c)
- Supersede stale markerless pinned scripts with the current static module (SKY-12657) (#7625) (b0c6640)
- security: bump body-parser, dompurify, fast-uri, pyasn1, setuptools to fix 11 Dependabot alerts (#7627) (3e16016)
- Resolve Copilot bare-word entrypoints from verified evidence (#7624) (e1789f9)
- workday runs onto the deterministic script (#7622) (cf0efa9)
- eval.skyvern.com improvements (#7615) (b351024)
- fix(SKY-12490): retry profile creation when startup sweep tombstones a freshly locked dir (#7621) (1d66418)
- Revert "Replace the Workday static script (deterministic) + flag-gated code-mode rollout" (#7620) (2f29ec1)
- Set up MCP without leaving the app (#7619) (38e81d0)
- feat(SKY-12771): add Agent filter to Run History page (#7618) (481c62a)
- feat(SKY-12788): add Gemini 3.5 Flash Lite and Gemini 3.6 Flash model support (#7617) (2c7283f)
- Copilot: the log-only feature flag can now disable any draft-blocking check, not just 3 of 7 (#7616) (2ef1714)
- feat(SKY-12138): default-enable copilot credential-pause kill-switch (#7614) (6d9d604)
- Stop recording completed Copilot runs with registered outputs as failures (SKY-12765) (#7613) (14974a4)
- Suppress recurring Playwright collected-object teardown log burst (SKY-12701) (#7612) (5da73bf)
- Restore SKY-12240 failure-scope FE changes reverted by #13707 (#7611) (473fb0e)
- feat(SKY-11258): stream code-block actions live via idempotent upsert (#7610) (c674778)
- feat(SKY-12766): render copilot test-run action rows live during runs (#7609) (216a63b)
- feat(SKY-12766): surface run id on copilot block_progress frames (#7608) (a4652f5)
- fix(SKY-11513): link studio title to runs page with a blended edit button (#7607) (88f12a8)
- Rename Studio header CTA "Agent Inputs" to "Inputs" (SKY-12237) (#7606) (e416dc4)
- chore(SKY-12238): rename studio Run CTA "Run agent" to "Run" (#7605) (480cc35)
- Restyle the studio action-detail failure block to the app's destructive convention (#7604) (2bc822c)
- Replace the Workday static script (deterministic) + flag-gated code-mode rollout (#7603) (62d14e9)
- Studio block detail: render status via the shared StatusBadge pill (#7602) (f901a9d)
- fix(SKY-12242): fill studio browser media pane edge-to-edge (#7601) (12f0897)
- chore(SKY-12746): rename studio run-view sections to Run inputs/Run outputs (#7600) (83cd727)
- fix(SKY-12246): respect canvas lock for studio block expand/collapse (#7599) (7f897af)
- fix(SKY-12245): disable double-click zoom on the workflow editor canvas (#7598) (951c280)
- feat(browser): cloud per-run engine resolver + fail-closed engines (SKY-12007) [5/5] (#7597) (2700c29)
- Stop rejecting valid requested outputs after copying errors (#7596) (f1e679b)
- fix(SKY-12240): scope failure reason to one place per surface (#7595) (199fae2)
- security: bump brace-expansion and Pillow to patched versions (#7591) (65ea026)
- security: bump brace-expansion, js-yaml, and Pillow to fix eleven Dependabot alerts (#7592) (fb976c3)
- Revert the six flag-gated agent-handler verification PRs for SKY-12398/12399/12400 (#7590) (584eb78)
- feat(SKY-11571): let collapse feature flags target individual workflows (#7589) (c08f705)
- Remove obsolete standalone container definition (#7588) (0ecc9a9)
- chore(deps): bump axios from 1.16.1 to 1.18.0 in /skyvern-frontend in the npm_and_yarn group across 1 directory (#7584) (63fe173)
- feat(SKY-12676): show every browser action live on the session Timeline for MCP sessions (#7587) (1b6f2e8)
- feat(SKY-12443): make studio run-view JSON blocks searchable (#7586) (e870b72)
- Accept phone numbers that country-aware fields rewrite with an explicit +1 (SKY-11718) (#7585) (35e38d0)
- feat(SKY-12490): clean up browser profile folders orphaned by hard-killed local MCP servers (#7580) (0889d7d)
- DB-back the Odysseys runtime/tokens/cost panel (drop the hardcoded dataset) (#7582) (fac111a)
- Remove the CDP proxy service and proxy configuration from the package (#7583) (a20c56f)
- fix(SKY-12698): auto-wire workflow parameters into code blocks on code-only create/update (#7578) (e73bac0)
- feat(browser): terminal cleanup for standalone script browsers (SKY-12007) [4/5] (#7577) (072f416)
- Bound max_screenshot_scrolls to prevent workflow_runs integer overflow (SKY-12445) (#7575) (8b12660)
- Add paused to the public RunStatus enum (SKY-12549) (#7576) (a77cdac)
- Reject malformed MCP tool arguments with a clear error (SKY-12666) (#7574) (892e2a0)
- test(browser): engine-owner cancellation and cleanup races (SKY-12007) [3/5] (#7573) (541af0c)
- chore(security): non-security md5 flag in copilot schema test and npm ignore-scripts for proxy js_clients fixture (#7572) (20a496d)
- SKY-12561: Remove unreachable submit rung binding channel (#7568) (2740602)
- Guard element ops against incompatible element types (SKY-12687, SKY-12566, SKY-12673) (#7544) (c22c402)
- Classify page-analysis timeouts as page-load timeouts (SKY-12629) (#7538) (46ea228)
- feat: land run-level tagging workstream (#7259) (3940728)
- feat(browser): pin one browser engine per logical run (SKY-12007) [2/5] (#7571) (82e0212)
- fix(SKY-12143): recover credential inputs corrupted by the fill+type caret race (rotation + truncation) (#7570) (905d846)
- fix(SKY-12715): accept template variables in HTTP Request block URL validation (#7569) (e331d17)
- SKY-12613: Add selection-shaped routes to the typed binding corrective (#7567) (a89e503)
- Preserve delivered-unverified Copilot output (SKY-12614) (#7566) (1e188e2)
- SKY-12588: withhold block runs while declared workflow inputs are wired to nothing (stacked on #13549) (#7565) (da5afc7)
- SKY-12548: Copilot: carry a typed binding directive across author-time declared-input rejects so the next attempt converges (#7564) (290b16c)
- Copilot: stop unbounded retry loops on code-block turns — end with an honest failure message or a corrective hint (SKY-12711) (#7557) (df443c1)
- Gate durable Copilot authoring on scout goal-reach; arm the freehand reject by selector provenance (SKY-12547) (#7556) (6d49ba1)
- fix(SKY-12701): disable OTLP trace export on Hetzner temporal workers and quiet exporter logs (#7552) (d3ba7ef)
- feat(SKY-12649): browser profile usage endpoint + atomic delete used-by guard (#7550) (706799b)
- SKY-12309: Avoid failing successful Copilot runs when an optional blocker is absent (#7549) (ed492e4)
- feat(SKY-12649): Browser Profiles Refresh-in-place, role badges, used-by delete guards (#7548) (677cdc9)
- Honor CDP proxy denylist env knobs in production; second-signal fast drain exit (SKY-12533) (#7547) (0373f34)
- Production entrypoint, health/drain, and cloud image for the CDP proxy (SKY-12533) (#7546) (b691820)
- fix(SKY-12530): don't remove shared workflow-run context on SDK run_action cleanup (#7545) (0504175)
- Guard undefined block parameters in workflow editor (SKY-12405) (#7543) (a300961)
- Support org-level CDP operation denylists (SKY-12538) (#7542) (8e96fda)
- Classify transient LLM upstream failures as retryable (SKY-12620) (#7541) (3228cf1)
- Reject ambiguous xpath-fallback element resolution (SKY-12606, SKY-12605, SKY-12635) (#7540) (f71fe69)
- Harden skyvern-api parsing/validation boundaries (SKY-12523, SKY-12625, SKY-12515) (#7539) (61d1ef2)
- Add the command-interception middleware seam for custom CDP-op implementations (SKY-12535) (#7537) (eabfab9)
- Add CDP proxy benchmark harness: direct vs proxied on identical workloads (SKY-12503) (#7536) (ff95642)
- feat(SKY-12505): ADR + hexagonal scaffold for the Python CDP proxy service (#7535) (9ca4896)
- feat: code-first browser recording (opt-in feature preview) (#7534) (59b739e)
- Arm an escalating convergence directive when Copilot authors code blocks without metadata (SKY-11949) (#7533) (79b0bf1)
- fix(SKY-12398): verify text-input commit with fallback ladder and repeated-action circuit breaker (#7531) (f6dff06)
- Scope the public eval artifact lookup to the eval org (SKY-12639 follow-up) (#7530) (9f3ad0d)
- test: stop hand-quoted Playwright snippets from drifting back into the MCP tools (#7529) (b939daf)
- fix(SKY-12153): address codex review on fallback credentials (follow-up to #13599) (#7528) (844cc3b)
- Converge Copilot author-time metadata-gate rejects to a typed terminal (SKY-12594) (#7527) (6ce4735)
- fix(SKY-12400): verify autocomplete commit on all selection paths with polled suggestion detection (#7525) (cdc4cb5)
- feat(SKY-12612): run-list outcome-risk marker (#7526) (0ed96a3)
- fix(SKY-12661): route select-verification prompts through LLM_CONFIG_BY_PROMPT_TYPE (#7524) (6be22e4)
- feat(SKY-12612): batch run-heal-summary endpoint for run-list outcome-risk (#7523) (7a42e92)
- feat(SKY-12153): fallback credentials with automatic run retry (#7521) (27c90a1)
- fix(SKY-12399): surface a diagnostic when a submit click does not advance the form (#7520) (29e4fb9)
- docs(SKY-12601): make MCP element-ref lifetime truthful per transport (stdio vs hosted HTTP) (#7519) (579c9ed)
- fix: run background work when FastAPI BackgroundTasks is unavailable (#7518) (27583a0)
- fix(SKY-12399): verify masked input commits, retype on empty/placehol… (#7517) (2d3be92)
- fix(SKY-12399): shadow-DOM-aware incremental dropdown detection with scoped fallback (#7516) (5ecabeb)
- test(SKY-12634): stop two select tests racing a real wall clock under CI load (#7515) (dcda6e6)
- refactor: extract _is_org_flag_enabled so org-bucketed flag gates stop being copy-pasted (#7514) (485f166)
- Show unsaved workflow changes and change summaries in Studio (SKY-12442) (#7513) (68d138f)
- Render-validate copilot code blocks at the persist seam (SKY-12591) (#7512) (58b0397)
- feat(browser): OSS browser-engine registry/adapter foundation (SKY-12007) (#7511) (6086909)
- fix: offer the Skyvern credential source outside the cloud shell (#7510) (555fc82)
- fix(SKY-12590): treat off-schema OTP parser output as 400, not retryable 502 (#7509) (91db8f4)
- SKY-12593: load legacy copilot criteria-set rows via tolerant decode, fail closed on drift (#7508) (42865f1)
- fix(SKY-12545): keep credentialed terminal actions past login (#7507) (e06e65e)
- feat(SKY-12600): add an artifact timeline tab to browser sessions (run view for MCP-driven sessions) (#7506) (0f97394)
- Redact signed/presigned artifact URL params from webhook delivery logs (SKY-12624) (#7505) (21f67b2)
- Strip metadata from signed artifact URLs and redact signature params from logs and traces (#7504) (66c964b)
- [SKY-12553] Add per-gate Copilot author-time log-only registry (#7503) (19fe761)
- Import externally recorded eval runs into the eval dashboard (#7502) (28db09c)
- feat(SKY-12550): record what an agent does in the browser so it can be replayed as a workflow (#7498) (446e3ee)
- Gate artifact URL re-minting to Skyvern signed content URLs (#7499) (8ed3be1)
- Refuse Copilot drafts whose entire output contract is a null blocker (SKY-12539) (#7497) (3fcac5d)
- chore(deps): bump mcp to 1.28.1 to fix 3 high-severity Dependabot alerts (#7496) (1443952)
Full Changelog: v1.0.47...v1.0.48
What's Changed
- chore(deps): bump mcp to 1.28.1 to fix 3 high-severity Dependabot alerts by @wintonzheng in #7496
- Refuse Copilot drafts whose entire output contract is a null blocker (SKY-12539) by @andrewneilson in #7497
- Gate artifact URL re-minting to Skyvern signed content URLs by @AronPerez in #7499
- feat(SKY-12550): record what an agent does in the browser so it can be replayed as a workflow by @marcmuon in #7498
- Import externally recorded eval runs into the eval dashboard by @trevor-cheung in #7502
- [SKY-12553] Add per-gate Copilot author-time log-only registry by @andrewneilson in #7503
- Strip metadata from signed artifact URLs and redact signature params from logs and traces by @AronPerez in #7504
- Redact signed/presigned artifact URL params from webhook delivery logs (SKY-12624) by @AronPerez in #7505
- feat(SKY-12600): add an artifact timeline tab to browser sessions (run view for MCP-driven sessions) by @marcmuon in #7506
- fix(SKY-12545): keep credentialed terminal actions past login by @andrewneilson in #7507
- SKY-12593: load legacy copilot criteria-set rows via tolerant decode, fail closed on drift by @andrewneilson in #7508
- fix(SKY-12590): treat off-schema OTP parser output as 400, not retryable 502 by @LawyZheng in #7509
- fix: offer the Skyvern credential source outside the cloud shell by @AronPerez in #7510
- feat(browser): OSS browser-engine registry/adapter foundation (SKY-12007) by @LawyZheng in #7511
- Render-validate copilot code blocks at the persist seam (SKY-12591) by @andrewneilson in #7512
- Show unsaved workflow changes and change summaries in Studio (SKY-12442) by @celalzamanoglu in #7513
- refactor: extract _is_org_flag_enabled so org-bucketed flag gates stop being copy-pasted by @AronPerez in #7514
- test(SKY-12634): stop two select tests racing a real wall clock under CI load by @AronPerez in #7515
- fix(SKY-12399): shadow-DOM-aware incremental dropdown detection with scoped fallback by @AronPerez in #7516
- fix(SKY-12399): verify masked input commits, retype on empty/placehol… by @AronPerez in #7517
- fix: run background work when FastAPI BackgroundTasks is unavailable by @AronPerez in #7518
- docs(SKY-12601): make MCP element-ref lifetime truthful per transport (stdio vs hosted HTTP) by @marcmuon in #7519
- fix(SKY-12399): surface a diagnostic when a submit click does not advance the form by @AronPerez in #7520
- feat(SKY-12153): fallback credentials with automatic run retry by @AronPerez in #7521
- feat(SKY-12612): batch run-heal-summary endpoint for run-list outcome-risk by @pedrohsdb in #7523
- fix(SKY-12661): route select-verification prompts through LLM_CONFIG_BY_PROMPT_TYPE by @pedrohsdb in #7524
- feat(SKY-12612): run-list outcome-risk marker by @pedrohsdb in #7526
- fix(SKY-12400): verify autocomplete commit on all selection paths with polled suggestion detection by @AronPerez in #7525
- Converge Copilot author-time metadata-gate rejects to a typed terminal (SKY-12594) by @andrewneilson in #7527
- fix(SKY-12153): address codex review on fallback credentials (follow-up to #13599) by @AronPerez in #7528
- test: stop hand-quoted Playwright snippets from drifting back into the MCP tools by @marcmuon in #7529
- Scope the public eval artifact lookup to the eval org (SKY-12639 follow-up) by @AronPerez in #7530
- fix(SKY-12398): verify text-input commit with fallback ladder and repeated-action circuit breaker by @AronPerez in #7531
- Arm an escalating convergence directive when Copilot authors code blocks without metadata (SKY-11949) by @andrewneilson in #7533
- feat: code-first browser recording (opt-in feature preview) by @cindehaa in #7534
- feat(SKY-12505): ADR + hexagonal scaffold for the Python CDP proxy service by @AronPerez in #7535
- Add CDP proxy benchmark harness: direct vs proxied on identical workloads (SKY-12503) by @AronPerez in #7536
- Add the command-interception middleware seam for custom CDP-op implementations (SKY-12535) by @AronPerez in #7537
- Harden skyvern-api parsing/validation boundaries (SKY-12523, SKY-12625, SKY-12515) by @AronPerez in #7539
- Reject ambiguous xpath-fallback element resolution (SKY-12606, SKY-12605, SKY-12635) by @AronPerez in #7540
- Classify transient LLM upstream failures as retryable (SKY-12620) by @AronPerez in #7541
- Support org-level CDP operation denylists (SKY-12538) by @AronPerez in #7542
- Guard undefined block parameters in workflow editor (SKY-12405) by @AronPerez in #7543
- fix(SKY-12530): don't remove shared workflow-run context on SDK run_action cleanup by @AronPerez in #7545
- Production entrypoint, health/drain, and cloud image for the CDP proxy (SKY-12533) by @AronPerez in #7546
- Honor CDP proxy denylist env knobs in production; second-signal fast drain exit (SKY-12533) by @AronPerez in #7547
- feat(SKY-12649): Browser Profiles Refresh-in-place, role badges, used-by delete guards by @celalzamanoglu in #7548
- SKY-12309: Avoid failing successful Copilot runs when an optional blocker is absent by @andrewneilson in #7549
- feat(SKY-12649): browser profile usage endpoint + atomic delete used-by guard by @celalzamanoglu in #7550
- fix(SKY-12701): disable OTLP trace export on Hetzner temporal workers and quiet exporter logs by @LawyZheng in #7552
- Gate durable Copilot authoring on scout goal-reach; arm the freehand reject by selector provenance (SKY-12547) by @andrewneilson in #7556
- Copilot: stop unbounded retry loops on code-block turns — end with an honest failure message or a corrective hint (SKY-12711) by @andrewneilson in #7557
- SKY-12548: Copilot: carry a typed binding directive across author-time declared-input rejects so the next attempt converges by @andrewneilson in #7564
- SKY-12588: withhold block runs while declared workflow inputs are wired to nothing (stacked on #13549) by @andrewneilson in #7565
- Preserve delivered-unverified Copilot output (SKY-12614) by @andrewneilson in #7566
- SKY-12613: Add selection-shaped routes to the typed binding corrective by @andrewneilson in #7567
- fix(SKY-12715): accept template variables in HTTP Request block URL validation by @suchintan in #7569
- fix(SKY-12143): recover credential inputs corrupted by the fill+type caret race (rotation + truncation) by @LawyZheng in #7570
- feat(browser): pin one browser engine per logical run (SKY-12007) [2/5] by @LawyZheng in #7571
- feat: land run-level tagging workstream by @AronPerez in #7259
- Classify page-analysis timeouts as page-load timeouts (SKY-12629) by @AronPerez in #7538
- Guard element ops against incompatible element types (SKY-12687, SKY-12566, SKY-12673) by @AronPerez in #7544
- SKY-12561: Remove unreachable submit rung binding channel by @andrewneilson in #7568
- chore(security): non-security md5 flag in copilot schema test and npm ignore-scripts for proxy js_clients fixture by @wintonzheng in #7572
- test(browser): engine-owner cancellation and cleanup races (SKY-12007) [3/5] by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7573
- Reject malformed MCP tool arguments with a clear error (SKY-12666) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7574
- Add paused to the public RunStatus enum (SKY-12549) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7576
- Bound max_screenshot_scrolls to prevent workflow_runs integer overflow (SKY-12445) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7575
- feat(browser): terminal cleanup for standalone script browsers (SKY-12007) [4/5] by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7577
- fix(SKY-12698): auto-wire workflow parameters into code blocks on code-only create/update by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/7578
- Remove the CDP proxy service and proxy configuration from the package by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7583
- DB-back the Odysseys runtime/tokens/cost panel (drop the hardcoded dataset) by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/7582
- feat(SKY-12490): clean up browser profile folders orphaned by hard-killed local MCP servers by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/7580
- Accept phone numbers that country-aware fields rewrite with an explicit +1 (SKY-11718) by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/7585
- feat(SKY-12443): make studio run-view JSON blocks searchable by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7586
- feat(SKY-12676): show every browser action live on the session Timeline for MCP sessions by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/7587
- chore(deps): bump axios from 1.16.1 to 1.18.0 in /skyvern-frontend in the npm_and_yarn group across 1 directory by @dependabot[bot] in https://github.com/Skyvern-AI/skyvern/pull/7584
- Remove obsolete standalone container definition by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7588
- feat(SKY-11571): let collapse feature flags target individual workflows by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/7589
- Revert the six flag-gated agent-handler verification PRs for SKY-12398/12399/12400 by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7590
- security: bump brace-expansion, js-yaml, and Pillow to fix eleven Dependabot alerts by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7592
- security: bump brace-expansion and Pillow to patched versions by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7591
- fix(SKY-12240): scope failure reason to one place per surface by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7595
- Stop rejecting valid requested outputs after copying errors by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7596
- feat(browser): cloud per-run engine resolver + fail-closed engines (SKY-12007) [5/5] by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7597
- fix(SKY-12245): disable double-click zoom on the workflow editor canvas by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7598
- fix(SKY-12246): respect canvas lock for studio block expand/collapse by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7599
- chore(SKY-12746): rename studio run-view sections to Run inputs/Run outputs by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7600
- fix(SKY-12242): fill studio browser media pane edge-to-edge by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7601
- Studio block detail: render status via the shared StatusBadge pill by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7602
- Replace the Workday static script (deterministic) + flag-gated code-mode rollout by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7603
- Restyle the studio action-detail failure block to the app's destructive convention by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7604
- chore(SKY-12238): rename studio Run CTA "Run agent" to "Run" by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7605
- Rename Studio header CTA "Agent Inputs" to "Inputs" (SKY-12237) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7606
- fix(SKY-11513): link studio title to runs page with a blended edit button by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7607
- feat(SKY-12766): surface run id on copilot block_progress frames by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7608
- feat(SKY-12766): render copilot test-run action rows live during runs by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7609
- feat(SKY-11258): stream code-block actions live via idempotent upsert by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7610
- Restore SKY-12240 failure-scope FE changes reverted by #13707 by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7611
- Suppress recurring Playwright collected-object teardown log burst (SKY-12701) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7612
- Stop recording completed Copilot runs with registered outputs as failures (SKY-12765) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7613
- feat(SKY-12138): default-enable copilot credential-pause kill-switch by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7614
- Copilot: the log-only feature flag can now disable any draft-blocking check, not just 3 of 7 by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7616
- feat(SKY-12788): add Gemini 3.5 Flash Lite and Gemini 3.6 Flash model support by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7617
- feat(SKY-12771): add Agent filter to Run History page by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7618
- Set up MCP without leaving the app by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7619
- Revert "Replace the Workday static script (deterministic) + flag-gated code-mode rollout" by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7620
- fix(SKY-12490): retry profile creation when startup sweep tombstones a freshly locked dir by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7621
- eval.skyvern.com improvements by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/7615
- workday runs onto the deterministic script by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7622
- Resolve Copilot bare-word entrypoints from verified evidence by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7624
- security: bump body-parser, dompurify, fast-uri, pyasn1, setuptools to fix 11 Dependabot alerts by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7627
- Supersede stale markerless pinned scripts with the current static module (SKY-12657) by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7625
- SKY-12811 Let the copilot keep exploring until it finds every value the request asked for by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7628
- SKY-12760: Ask for login credentials at turn start, not end-of-turn by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7629
- SKY-12732: Stop the copilot from putting real passwords into generated login code by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7630
- fix(SKY-12743): add opt-in popup grace for file-download clicks by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7631
- Keep required steps in generated browser workflows by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7632
- fix(SKY-12786): lower expected CDP frame publisher logs by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7633
- test(SKY-12575): cover delimiter-broken JSON in the LLM href-render repair path by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7634
- fix(SKY-12817): support hover instructions in single-action task parsing by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7635
- fix(SKY-12710): scope domUtils.js injection to avoid page global collisions by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7636
- Recover and classify stale frame/element targets in typing and frame resolution (SKY-12618, SKY-12558) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7637
- fix(SKY-9971): bound transient download observation gaps by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7638
- test(guard): close aliased ImportFrom submodule bypass in browser-object identity guard by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7639
- Remove the outputs indicator dot from the Studio v2 Outputs toggle (SKY-12793) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7640
- perf(frontend): drop duplicate run-status poll on run view by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7641
- feat(SKY-12792): cue the studio title as a link to past runs by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7642
- Render Workflow Studio run-view block prompts as prose, not code (SKY-12797) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7643
- feat(SKY-12798): render the studio run view at /runs/{wr} by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7644
- Keep copilot test-run action rows visible at the terminal turn by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7645
- feat(SKY-12773): show created/queued/started/finished run timing in the Studio run summary by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7646
- Bind per-run browser engine's error families to its selection by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7647
- Keep a credential named earlier in the conversation approved when the user confirms (SKY-12812) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7648
- fix(copilot): converge repeated metadata rejects (SKY-12763) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7649
- Handle optional custom-selection misses gracefully; keep required misses typed (SKY-12678, SKY-12631, SKY-12514, SKY-12700) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7650
- Capture inline data URL downloads as files by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7651
- Show human-in-the-loop approve/reject buttons in both run views (SKY-12802) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7652
- Classify element screenshot capture failures (SKY-12519, SKY-12517, SKY-12477) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7653
- feat(SKY-12835): responsive StatusBadge — collapse to icon-only under container width pressure by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7654
- Show an instant rotating placeholder in the copilot chat after send by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7655
- Fall back select-verification prompts to the secondary LLM instead of the main model by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/7657
- Make the copilot's terminal credential ask recoverable by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7656
- Classify auth-gated Copilot actions as login intent so the credential prompt fires at turn start by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7658
- Show the test-run count on the copilot not-confirmed checklist stub by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7659
- fix(SKY-12831): co-locate copilot run-tool narration + name unmapped tools (SKY-12385) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7660
- Deterministic Workday script: fix widget fills + offline regression suite (SKY-12657) by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7661
- feat(SKY-12794): keep studio Code a run-view tab; editor Visual/YAML as shared toggles by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7662
- fix(SKY-12848): ignore unmatched VNC touch releases by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7663
- fix(SKY-12416): re-resolve visibility after navigation by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7666
- Add a Past Runs tab to Studio and label the run pane "Run: wr_…" (SKY-12796) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7667
- Bound workflow copilot debug HTML before prompts by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7664
- Wait for disabled controls before browser actions (SKY-12518) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7665
- feat(SKY-12843): eval dashboard screenshot gallery with per-step narration + rubric breakdown by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/7669
- SKY-12564 Parameterize witnessed account and month in download filenames by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7670
- Assemble a shadow terminal outcome envelope per copilot turn by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/7671
- Sync OpenAPI reference from production by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7672
- Truthful stop copy and honest run-outcome rendering in copilot chat by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/7673
- Resolve ambiguous typing targets before input (SKY-12707) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7674
- Route vendor hosted-browser sessions through the CDP proxy behind a flag by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7675
- Add a screenshot side-effect hook to the CDP proxy: capture core, config source, artifact sink by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7676
- Only upload live-view screenshots while someone is actually watching by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/7677
- Re-authenticate an expired integration connection in place (SKY-12572) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7680
- Copilot chat reads run-outcome facts from the terminal envelope (SKY-12853 FE) by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/7682
- Copilot uses a saved credential matching the login site automatically; credential create/update APIs accept tested_url by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/7683
- Let Copilot finish a login it was allowed to start (SKY-12867) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7684
- SKY-12415 Keep date-driven row selection stable as lists change by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7686
- Render the copilot terminal reply from the finalized outcome envelope, behind a flag by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/7681
- SKY-12733 Stop correct “no” answers from failing completed workflows by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7688
- Keep real passwords out of generated login code, and stop endless safety-check retries (SKY-12866) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7689
- fix(SKY-12641): give the LLM clear no-file-download feedback by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7690
- Classify scrape timeouts by the run's selected browser engine (RUS-5) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7691
- Route unsafe checkbox blockers through verified fallback by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7692
- SKY-12858 Copilot: list the steps a draft workflow is missing, and add them back after repeated omissions by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7695
- Stop PBS OTLP span-export error bursts caused by brief node-local collector blips (SKY-12925) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7694
- fix(SKY-12864): tell MCP agents when code-only rejections come from org policy by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/7693
- Stop replaying custom-select clicks that may have already changed the page by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/7696
- MCP-created code blocks default to the new code block editor experience by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7697
- Deduplicate the MCP block walk and store empty code block goals as NULL by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7698
- SKY-12916 Let Copilot safely continue through login and verification pages by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7699
- Log the copilot terminal render decision per turn (SKY-12853) by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/7700
- SKY-12918 Copilot: remember the site from the first message when a follow-up doesn't repeat it by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7701
- Save the workflow instead of giving up when Copilot already found the value (SKY-12907) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7703
- Bound feature-flag flip staleness to snapshot sync (SKY-12962) by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/7704
- Remove retired Fern documentation and media (SKY-12972) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7705
- Resolve the output-contract pass path through the single actuation resolver (SKY-12907) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7706
- Classify code-block heal errors by selected engine (RUS-5) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7707
- Classify vendor CDP errors by selected engine (RUS-5) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7709
- Classify incremental-tree analysis timeouts by the run's selected browser engine (RUS-5) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7710
- Classify cached-script timeouts by selected engine (RUS-5) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7708
- Let Copilot use credentials saved without a login URL (SKY-12959) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7711
- Workday submit: require positive confirmation before marking submitted (SKY-12657) by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7712
- SKY-12933 Copilot: build the login step from what the scout demonstrated by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7713
- SKY-12917 Make Copilot credential resolution exhaustive by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7714
- SKY-12957 Copilot: stop asking the user to confirm outputs the request contract already pinned by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7715
- Use current credential scope in deferral gates by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7716
- Add an always-on per-iteration TODO list to the copilot agent prompt by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7717
- Gate AI-fallback completion for the Workday submit block (SKY-12992) by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7718
- Keep Copilot tool calls paired during context pruning by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7719
- Remove 34 unreferenced documentation media files by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7721
- docs: serve documentation media from jsDelivr (SKY-12977) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7722
- Stop video-path future poisoning from killing workflow activities and finalize interrupted runs (SKY-12852) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7723
- Remember the target site across turns, including after a cancel (SKY-12968) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7737
- fix(SKY-12998): route verified copilot fixes through the review gate by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7739
- Scan tests/unit for the url-substring anti-pattern before it reaches OSS CodeQL by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7743
- Remove docs/pr-screenshots (internal PR evidence, not docs) by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7744
- security: bump body-parser to 1.20.6 to fix two Dependabot alerts by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7626
- Sync OpenAPI reference from production by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7749
- security: bump auth-stack, next, sharp, brace-expansion, postcss, jupyterlab (Dependabot) by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7747
- Charge 10 credits per OTP-code parse by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7750
- SKY-12974 Copilot: stop rejecting a saved credential at author time; redact at the log and database seams by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7751
- Add a pure, fail-closed policy core for browser actions by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7753
- Stop banning evaluate in Copilot-authored code blocks; fail closed on unparseable drafts (SKY-13043) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7754
- SKY-12945 Copilot: route the code-authoring guardrail's give-up into the accept-or-build step by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7740
- Add Claude Opus 5 as a selectable model (SKY-13026) by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7741
- fix(log-noise): downgrade handled screenshot-timeout from error to warning by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7757
- Bound Redis connect-retry cost and fail open on the browser-address quarantine path by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7766
- Type into the nested input when a card field's wrapper isn't directly fillable (SKY-12448) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7773
- Recover blocked inline PDF downloads when no download event fires by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7774
- Classify non-script post-dispatch click timeouts by selected engine (RUS-5) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7772
- SKY-12981: invalidate a failed loop block's output to prevent stale prior-iteration reuse by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7775
- CI fix: stabilize test_paused_loop_does_not_trip_total_timeout_on_resume by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7786
- Store blank OTP run-scoping ids as NULL instead of empty strings (SKY-13060) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7784
- SKY-13061: reach reCAPTCHA v2 anchor inside its frame by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7787
- Repair malformed MCP list and timeout arguments by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7765
- Compatibility hotfix: put the input-text runtime hint on the base Action model (SKY-13013) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7777
- Route Workday login to the agent; keep fill/submit deterministic (SKY-12657) by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7778
- Copilot: stop discarding saved drafts for reasons the save path only steers on (SKY-13125) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7794
- feat(browser-firewall): hydrate destination facts for forms, tabs, and dialogs (SKY-12875) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7767
- fix: log best-effort error-detection fallbacks at warning not error by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7760
- SKY-13030 Copilot: work out which email address to sign in with instead of demanding a password that cannot exist by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7761
- CI fix: restore monotonic-clock stabilization reverted by #7794 by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7797
- Cap sensitive-artifact TTLs in storage presigned URLs too (SKY-12527) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7789
- Temporarily disable destination-fact capture to stop resolved-URL amplification (SKY-12875) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7770
- SKY-13105 Bound the page read that could hang an entire copilot turn by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7796
- SKY-13000 Copilot: a plain single-value extraction verifies as success instead of "not independently verified" by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7779
- Clarify destination-fact security constraints by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7780
- Stream large captured downloads to disk instead of replaying the body (SKY-12642) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7804
- Bind richer per-selected-engine browser error families (RUS-5) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7801
- Route page.py evaluate/context-loss recovery through the selected browser engine (RUS-5) [R4a] by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7811
- Route CDP retry/connection classification through the selected engine (RUS-5) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7810
- feat: backend activity-driven persistent browser session lease renewal (SKY-10833, SKY-13045) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7813
- migrate dom.py catch sites to selected-engine error identity (SKY-12007) [R5] by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7812
- Let copilot exploration solve login CAPTCHAs via the shared solve ladder (SKY-12967) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7755
- Fetch a sign-in code from an email address alone, keeping code-vs-link (SKY-13031) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7756
- Allow clicking through conditional branches in read-only workflow canvases (SKY-12861) by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7758
- fix(log-noise): downgrade expected frontend-disconnect in message channel stream by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7759
- SKY-11100: add compute task-type to task_v2 (code-as-action synthesis) by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/7798
- Eval dashboard: difficulty pills, perf-vs-cost quadrant, copyable task titles by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/7799
- Cap screenshot and recording URL lifetime at one hour (SKY-12527) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7788
- SKY-13032 Copilot: only three named checks may refuse to save a workflow; delete the rest by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7791
- Copilot acts on a page by selector only, and reports why an action failed by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7792
- Raise cloud storage block limit to 300 files by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7793
- Report element-tree share and actual drop count when a prompt exceeds the token ceiling (SKY-12350) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7820
- Reject knowably invalid Bitwarden item IDs at workflow run creation by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7819
- Reap orphaned upstream browser sessions from outside the process that holds them (SKY-13158) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7821
- Persist webhook_failure_reason when webhook delivery raises, and name the exception in delivery logs by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7818
- Hide Tags, Scripts, and Custom LLMs sections from the API reference (SKY-13151) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7817
- Make row actions visible with a shared kebab + context-menu component (SKY-12955) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7816
- Let normal-select reach 100% without breaking sibling select experiments' control groups by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/7815
- Fix end timestamps in code-only runs: finalize uploaded recordings, stamp action times (SKY-13145, SKY-13142) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7814
- Fix finally block failure propagation (SKY-13122) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7809
- Stop rationing copilot page inspection and show the page after acting by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7808
- SKY-13107 Refuse to type a saved credential's secret into a page field by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7807
- Stop logging closed browser targets as screenshot errors (SKY-13058) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7823
- Stop logging an expected analytics serving-table absence as an error by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7824
- SKY-13104 Report page controls the copilot can actually act on by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7806
- SKY-13109 Give block authoring the steps the copilot's scout already demonstrated by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7805
- Stabilize download handler timing tests by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7803
- Stop the unsaved-changes dialog from exiting its navigation blocker twice (SKY-13124) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7825
- Validate the create-from-prompt response shape at the boundary (SKY-13154) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7826
- Fail the run-timeline query when the API returns a non-array payload (SKY-13162) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7827
- Fix failing compute-task safety test on main by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7800
- Delete the copilot repair ceiling: a stuck repair is reported, not a reason to end the turn (SKY-13108) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7802
- Classify closed browser targets during screenshot capture (SKY-12906) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7795
- Show complete six-digit labels on the run outcomes chart by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7783
- Validate destinations on two unguarded browser navigation paths (SKY-13113) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7828
- Route download.path() awaiters through shielded resolve_artifact_path (SKY-12982) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7829
- Revert defineProperty export helper to plain assignment in injected-script wrapper (SKY-12875) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7831
- Redact secret values from exception text at the reporting seams (SKY-12626) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7832
- Polish studio run pane failure UX (SKY-13141) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7830
- SKY-12543: Guard checkbox label fallback from interactive descendants by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7833
- fix: preserve unparsed OTP content for agent-time resolution by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7834
- fix(SKY-12735): preserve open ARIA popups from screenshot-scroll dismissal by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7837
- migrate handler.py canary-critical error catches to selected-engine APIs (SKY-12007) [R6] by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7835
- Read adopted-session blob downloads from every open browser tab (SKY-12621) by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7838
- Clarify browser session defaults and CAPTCHA solver trade-offs in docs by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7836
- fix(RUS-5): thread selected engine through handler readbacks by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7839
- Render Google Sheets destination dropdown options as single A - Header lines (SKY-13180) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7840
- Fix sequential child runs failing with missing browser page (SKY-13182) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7841
- Route scheduled-run finalizers to the derived run id; classify non-timeout activity failures (SKY-12983) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7842
- fix(RUS-5): thread selected browser engine into remaining elements by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7843
- Scope the task generation cache to the requesting organization (SKY-13102) by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/7844
- feat: support browser session startup URL by @sardortaylakov in https://github.com/Skyvern-AI/skyvern/pull/7029
- [SKY-12229] Bump mistune to >=3.3.0 for CVE-2026-49851 by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7785
- Restore a local dev path for copilot code-block test runs by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7856
- fix(RUS-5): classify page boundary engine errors by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7861
- fix: ignore unresolved OTP placeholders by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7859
- Collect complete rows from server-windowed virtualized grids by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7863
- feat: enable raw OTP fallback by default, remove TOTP_RAW_FALLBACK_ENABLED by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7866
- feat(SKY-12845): serialize workflow runs by credential (core, non-scheduled) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7865
- fix(openapi): remove orphaned raw TOTP response component by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7867
- SKY-13134: deploy lightweight worker in automatic staging rollout by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7868
- Show what the copilot actually did in its activity feed (SKY-13203) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7869
- SKY-13202 Let the copilot see connected Google and Microsoft accounts by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7871
- Report Copilot test-run failures honestly, and remember ones no later run retried (SKY-13206) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7873
- Resolve Copilot credentials when the login page appears, not only at turn start (SKY-13200) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7878
- fix(RUS-5): preserve pinned selection in handler cleanup paths by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7879
- Give copilot-written sign-in code time to load a slow page (SKY-13208) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7885
- Make Copilot GPT-5.6 cache writes reusable and observable by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7888
- Copilot: credit working runs and retire the authoring guards that failed them by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7845
- build(deps): non-default rustwright dependency group + lock guard (RUS-5) [R1] by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7870
- Match the Azure OpenAI host, not a URL substring by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7898
- Parse ZIP unzip-only: File Parser always outputs extracted file list for ZIPs (SKY-13279) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7899
- Copy icon on hover for every JSON tree viewer node (SKY-13286) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7900
- API docs sync: cap browser session lifetime at 4 hours by @mintlify[bot] in https://github.com/Skyvern-AI/skyvern/pull/7887
- SKY-13243 Generalize 2FA email scanning into a source registry with Outlook support by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7901
- Recover adopted-session blob downloads by reading bytes at the download event (SKY-12621) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7902
- Stop a Python comment from killing an entire code block (SKY-13300) by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/7903
- Overlay the hover drag grip on the block card gutter instead of reserving header space (SKY-13289) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7904
- SKY-13244 Select a connected email account as the 2FA identifier (re-land) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7905
- Increase loop block iteration limit from 500 to 1000 (SKY-13310) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7907
- SKY-13245 Add Magic Link tab to the Credentials page (re-land) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7908
- Reconcile the strict synthesis partition at one accounting point (SKY-13207) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7909
- Keep a Copilot turn in the chat when the server restarts mid-turn (SKY-13205) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7911
- Deliver the download instead of shipping a draft the build test disproved (SKY-13230) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7914
- Report code-block browser failures by their real cause, not as unsupported operations by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7913
- Tell the user when a copilot turn runs out of time, and log every timeout (SKY-13249) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7927
- Split login from data extraction when the scout demonstrated a credentialed flow by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7934
- Route reasoning_effort via extra_body on the partner-hosted DeepSeek config (SKY-12750) by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7938
- Route non-mutating requests to answer-only Copilot turns by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7939
- Redact secrets in run artifacts: HAR/console scrubbing, LLM-boundary redaction, visual input masking (SKY-11822) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7940
- Let an MCP agent wait on two page states at once (SKY-13252) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7941
- Count the two-state wait as an observation (SKY-13252 follow-up) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7942
- Attach at-failure screenshot and final URL to failed code blocks (SKY-13250) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7943
- Expose 1Password and Bitwarden MCP endpoints by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7945
- Fix Cmd+V paste into the VNC live browser stream on macOS (SKY-13324) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7944
- fix(credentials): delete-path follow-ups from #14215 review (SKY-13271) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7946
- Add a Gemini API flex-tier config for gemini-3.1-flash-lite by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7949
- Add LLM experiment launch gates: OpenRouter provider routing, pinned DeepSeek 0731 key, multi-arm analyzer by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7950
- Materialize the updated row before commit so artifact URI writes stop raising MissingGreenlet (SKY-13354) by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7951
- fix: log per-poll OTP webhook fetch failure at warning not error by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7952
- fix(tasks): cancel-button gating, webhook-replay runId, google-oauth valid flag by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7953
- Downgrade setup_workflow_run client-4xx failures from error+traceback to warning (SKY-13284) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7954
- Add per-workflow Mask Secrets advanced setting (SKY-11822) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7955
- Use the existing runaway guard for the download-handler wait timeouts by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7958
- fix(SKY-13182): recover a live tab-less inherited browser instead of orphaning it by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7960
- Redact bearer auth headers and serialized payloads from error logs (SKY-13195) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7961
- Validate shared browser navigation destinations and revalidate redirect hops (SKY-13112) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7962
- Bind the URL-matched saved credential when the agent observes a login page (SKY-13293) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7966
- Bind credential fill to the live page origin by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7967
- Let organizations default their runs to custom Smart/Fast LLMs from settings (SKY-13343) by @suchintan in https://github.com/Skyvern-AI/skyvern/pull/7968
- Document unbound credential denial and remove the credential-fill test shim by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7969
- Bind protected references to trusted consumers (SKY-12876) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7970
- Constrain DOM reads and inventory browser-effect sinks by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7971
- SKY-13353 Follow Copilot test runs in Live Browser by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/7972
- fix(frontend): stop reporting GitHub star-count rate-limit as a client error by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/7974
- fix(SKY-13335): emit secure CodeBlock runner telemetry on the success path by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7975
- Return standalone (dedented) code from the MCP code-block synthesize tool (#SKY-13336) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7976
- Add flag-gated skip of the check-user-goal LLM call for cached-script runs by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7977
- Fail run closed when the CodeBlock auto-provisioned browser session cannot be created (#SKY-13334) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7978
- Fix browser session download fail-silents (SKY-13385) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7979
- Bind terminal persistence and webhook callbacks (SKY-12887) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7980
- Deliver the MCP user-agent header so MCP-triggered runs persist trigger_type=mcp by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7982
- SKY-13097 Apply billing + rate-limit guards to task endpoints by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7984
- SKY-13100 Bound gzip decompression in browser recording processing by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7985
- Revert "Add flag-gated skip of the check-user-goal LLM call for cached-script runs" by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7986
- fix(SKY-13101): documented webhook verifier now rejects forged signatures by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7987
- Bound destination-fact resolution work and re-enable capture (SKY-12875) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7988
- Resolve the effective form action once and stop nested budget replenish (SKY-12875) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7989
- Add live view to the browser infrastructure capability table by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7991
- Block internal navigation hops before the browser follows them (SKY-13377) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7992
- feat(SKY-12845): credential run-sequentially toggle in edit UI by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7995
- Execute the deterministic custom-select collapse for input_text entries with strict entry-scoped verification by @marcmuon in https://github.com/Skyvern-AI/skyvern/pull/7996
- Probe inherited-browser transport liveness before reusing a page-less browser by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/7997
- Move New profile to the top of the browser-profile dropdown by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7998
- Keep the copilot Explore phase active while the scout is still logging in by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/7999
- Show the centered loading indicator while a run resolves (SKY-13416) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8000
- Exclude login-cookie sidecars from fresh browser profiles (start_fresh cross-org leak) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8001
- Resolve the login-block credential the same way at run setup and mid-run by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8002
- Recover soft-deleted Key Vault secrets before updates by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8003
- Revert "Block internal navigation hops before the browser follows them (SKY-13377)" by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/8004
- Scope the Copilot sandbox gate to code-bearing drafts and make the refusal terminal by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8005
- Give recorded and compute-generated code blocks the new code block shape (SKY-13185) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8006
- Recover adopted-session statement downloads from live and transient PDF blobs (SKY-12621) by @LawyZheng in https://github.com/Skyvern-AI/skyvern/pull/8007
- Add atomic one-shot browser effect approvals by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8008
- Shared destructive-confirm dialog primitive + standardized wording (SKY-12989) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8009
- Bound LLM provider calls on the direct client path with a real wall-clock deadline by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/8010
- Register OpenAI-direct and Azure GPT-5.6 rates from separate tables by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/8011
- Return a card-connected credential as a typed id and bind its login origin (SKY-13432) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8013
- Pin vendor identity non-disclosure across customer-facing surfaces (SKY-13266) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7990
- Skip the empty-downloads S3 LIST fallback for post-cutover runs by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/7983
- Route script-assist LLM calls through the per-prompt model config flag by @cindehaa in https://github.com/Skyvern-AI/skyvern/pull/8015
- Persist vendor live-view metadata securely by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8014
- Drop never-deployed CDP route env overrides and share one rollout gate by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8017
- limit workflow status fetch concurrency by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8018
- Fail fast on oversized workflow branch context by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8016
- Retain vendor browser recordings after session teardown (SKY-13262) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8019
- fix: keep second status batch unbounded in workflow status response by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8020
- Capture downloads from adopted vendor browser sessions (SKY-13263) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8021
- Fix MCP-created sessions for code-only workflows (#SKY-13338) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8022
- Freeze the wall clock in the select-option widened-shape test (SKY-12634) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8023
- Restore the message field and organization_id on foreign stdlib log records by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8024
- fix(SKY-13415): hide the copilot rollup chevron when expansion adds no content by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8025
- Show a searchable org-credential picker for copilot credential asks (SKY-12832) by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8026
- fix: reap browser sessions whose runnable owner type cannot be resolved by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8027
- Fix email OTP code persistence, expected-type enforcement, and sign-in link recall by @celalzamanoglu in https://github.com/Skyvern-AI/skyvern/pull/8028
- Return the number a user asked for, not the one beside it (SKY-13226) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8029
- Carry the typed CodeBlock runner error code onto the block result (SKY-13469) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8030
- Stacked: cross-process PBS reads (SKY-13473), fail-closed script execution, vendor teardown budget by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8032
- Open a tab when a code block's browser session has none (SKY-13338) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8033
- Retry a CodeBlock browser session that times out starting instead of failing the run by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8034
- fix: emit copilot session ID in CodeBlock logs by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8035
- Give each code-block engine its own failure reason when it cannot open a tab (SKY-13338) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8036
- Validate deployed script content before persistence (SKY-13066) by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/8037
- Require explicit cloud URL opt-in by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8038
- Validate caller-supplied CDP addresses and withhold the org key from remote endpoints (SKY-13067) by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/8039
- Prefer the Playwright error name in tab-open failure reasons (SKY-13338 follow-up) by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8042
- Validate navigation destinations in the MCP browser tools (SKY-13070) by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/8041
- fix(SKY-13502): report a closed browser session as closed instead of high demand by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8043
- Stabilize screencast timeout test by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8044
- Validate browser navigation destinations (SKY-13070) by @trevor-cheung in https://github.com/Skyvern-AI/skyvern/pull/8045
- test: preserve SKY-13495 review coverage in the OSS-synced tree by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8046
- Enforce administrator roles on sensitive organization APIs by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8047
- Revert "Enforce administrator roles on sensitive organization APIs" by @AronPerez in https://github.com/Skyvern-AI/skyvern/pull/8050
- Refuse non-http(s) navigation URLs before consulting DNS (SKY-13070) by @pedrohsdb in https://github.com/Skyvern-AI/skyvern/pull/8051
- Use the saved login someone picked, instead of asking for it again (SKY-13483) by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8052
- SKY-10678 Let a diagnosis turn repair the run it just read by @andrewneilson in https://github.com/Skyvern-AI/skyvern/pull/8053
- Bump version to 1.0.48 by @wintonzheng in https://github.com/Skyvern-AI/skyvern/pull/8031
New Contributors
- @sardortaylakov made their first contribution in https://github.com/Skyvern-AI/skyvern/pull/7029
Full Changelog: v1.0.47...v1.0.48