
skyvern
Automate browser based workflows with AI
Adds skyvern run dev and skyvern run ui-dev commands to launch both the API and UI servers in detached background mode, plus a .superset/config.json and helper script to automate Superset workspace setup. This streamlines local development by handling environment syncing, dependency installation, and port conflict resolution without blocking the terminal. However, detached subprocesses with suppressed output may leave orphaned services or hide startup failures, making cleanup and debugging harder.
The update refines the Workflow Copilot documentation by clearly distinguishing between loop_over_parameter_key (for static parameters) and loop_variable_reference (for previous block outputs), complete with a âCRITICAL DISTINCTIONâ section and expanded examples. This should improve developer clarity and reduce misconfiguration errors, but reviewers should verify that the documentation stays in sync with the actual for_loop implementation and that the new examples cover all edge cases.
It adds explicit termination detection to the task v2 framework by extending prompt templates, service logic, and schemas with âshould_terminateâ flags, termination reasons, and thought entries, all gated by a feature flag and covered by new tests. This lets tasks gracefully bail out when goals are provably impossible, saving compute and providing clearer failure feedback. However, the added complexity and reliance on conservative termination heuristics raise risks of false positives or missed edge cases and will require ongoing tuning and robust test coverage.
This update introduces an isInternalUpdate flag to the workflow change store so that switching conditional branches is treated as a UI state change rather than a workflow edit, preventing false âunsaved changesâ prompts. It improves user experience by suppressing unnecessary save dialogs when navigating between branches while still correctly capturing genuine modifications. One potential concern is the reliance on hard-coded timeouts (50 ms) to reset the flag, which could lead to race conditions or flaky behavior under different performance conditions.
This change fixes a race condition in the workflow run timeline by synchronizing its query with the workflow run queryâs polling updatesâremoving its own refetch interval and using dataUpdatedAt to invalidate and refetch the timeline whenever the run data changes. As a result, the timeline reliably shows complete steps in real-time without requiring manual page refreshes and avoids redundant polling, improving UX and reducing API churn. A possible concern is that reliance on the workflow run queryâs update timing could delay or miss timeline updates if dataUpdatedAt doesnât change as expected or if query invalidations trigger excessive refetches.
The change swaps out the sidebar collapse/expand icons from PinLeft/PinRight to ChevronLeft/ChevronRight in SidebarContent.tsx to provide clearer directional cues and better UI consistency. Itâs purely a visual update with no behavioral changes, preserving backward compatibility and overall functionality. The main concerns are a pending sync check, the need for design approval to ensure consistency across the app, and a lack of automated UI tests to catch any regression.
This change adds a --database-string option to the quickstart and init_env commands so users can supply their own PostgreSQL connection string and bypass the Docker setup, automatically persisting it in the .env file. It makes the project more flexible for environments without Docker or with existing database infrastructure while preserving the original flow for default setups. A possible concern is that unvalidated connection strings or accidental overrides of existing .env values could lead to silent misconfigurations and obscure runtime errors.
This change removes the âcredentialâ option from the workflow parameter type dropdown in the editor, reinstating a modification from PR #8324 that was reverted by PR #8326. It simplifies the UI and reduces potential security risks by disallowing credential inputs, but it may break existing workflows that rely on credential-type parameters and require updates or migrations.
The API schema has been enhanced with a new run_with parameter in the OpenAPI spec, allowing tasks to explicitly request execution in either âagentâ or âcodeâ mode (or fall back to default via null). This adds flexibility and clearer documentation for developers using the task API, but it may introduce breaking changes for clients that donât recognize the new field and requires careful validation or defaultâmode handling to avoid unexpected behaviors.
This change instruments the page readiness process with structured logging that records the duration, outcome (success/timeout/error), and timeouts for each step (loading indicators, network idle, DOM stability) plus an overall summary. It enhances observability and debugging by surfacing granular performance metrics in Datadog for identifying bottlenecks and tuning timeouts. Concerns include increased log volume and ingestion costs, slight runtime overhead from timing and logging, and the need to verify that no sensitive data is inadvertently logged.
This change adds a dynamic key prop to the Select component in the login block credential selector to force React to remount it when a credential is removed, fixing a confusing UX bug where deselected credentials stayed visually displayed. It ensures the dropdown always reflects the underlying state and improves consistency in the workflow editor. However, relying on key-based remounting can inadvertently reset internal component state, impact performance, or mask deeper rendering issues.
The change updates the GitHub sync configuration to include the fern/ and docs/ directories with deleteOrphaned enabled and switches two LOG.error() calls to LOG.exception() in download_file for richer error tracing. As a result, API specifications and documentation will be automatically mirrored to the skyvern-cloud repo on merge, and debugging is improved with full stack traces, all without altering core functionality. The main concern is that deleteOrphaned may inadvertently remove files in the target repository, posing a low-risk but notable cleanup hazard.
This change enables manual triggering of the Docker build workflow via workflow_dispatch and replaces the built-in GITHUB_TOKEN with a PAT (SKYVERN_OSS_GITHUB_TOKEN) in the auto-release workflow so that release events correctly trigger downstream builds. As a result, maintainers can now fire off Docker image builds on demand or automatically after a release, restoring the CI chain that was previously broken by GitHubâs security restrictions. The trade-off is added complexity in managing and securing an extra PAT with the right permissions and the slight overhead of manual inputs when running the build workflow.
This change adds new types and updates the workflow run timeline UI to display every branch evaluation in conditional blocksâwith original and rendered expressions, true/false color-coding, and matched-branch highlightingâwhile gracefully falling back to the legacy view for older runs. It significantly improves transparency and debuggability of conditional logic by letting users trace exactly how each condition was evaluated and which branch was chosen. Concerns include its reliance on backend PR #8400 being deployed first, the added UI complexity and potential performance impact, and the need to thoroughly test backward compatibility and error handling.
This update adds a new run_with parameter (âagentâ or âcodeâ) to task and workflow run requests and threads it through the agent_protocol and task_v2_service layers so that scripts are generated only in code mode. It gives users finer control over execution flow and can reduce unnecessary script generation when running in agent mode. However, it may break compatibility for clients that donât supply run_with, needs proper value validation, and still has a pending sync check before release.
This v1.0.11 release bumps the version and delivers a mix of new featuresâfull Workflow Copilot enablement (including review/approve flows, output parameter fixes, SOP-to-blocks support), browser sessions v2, DOWNLOAD_FILE action, TOTP multi-field support and HTTP block validationâalongside performance and stability improvements like async file I/O, TTL caching, UI layout tweaks and a raft of bug fixes for race conditions, date handling, compression, Windows event loops and more. These changes make workflows more powerful and reliable, streamlining integration and debugging for both users and downstream developers in a feature-and-fix update.
It bumps the project to v1.0.11 and introduces Stripe-based billing and subscription endpoints, enhanced browser sessions (ad-blocker, captcha-solver, engine selection, updated proxies), and new workflow blocks for PDF export and HTTP file downloads. This enables self-serve monetization, richer browser automation UX, and broader workflow automation while updating dependencies to Playwright 1.58.0. The PRâs large scope raises concerns about regressions, thorough testing of billing flows, and backward compatibility with existing clients.
It adds an automated GitHub Actions workflow that watches pyproject.toml for version bumps, compares new and previous versions, generates changelogs from commits, and creates a tagged GitHub release. This removes manual release steps, ensures consistent, up-to-date release notes, and speeds up the CI/CD process. However, version parsing could fail on complex formats, shallow clones might miss commit history, and handling missing previous tags or other edge cases may need extra maintenance.
This change adds a new server-side endpoint to convert workflow YAML into block structures and updates the frontend to use it for the Copilot review feature, replacing the previous client-side conversion logic. It ensures consistent parsing and error handling for workflow comparisons while cleaning up frontend code and centralizing conversion logic on the server. However, it introduces an extra network round-trip that could affect performance, lacks accompanying tests for the new endpoint, and the hidden include_in_schema=False flag may complicate API discoverability.
This change enriches conditional block outputs by tracking and exposing detailed per-branch evaluation dataârendered Jinja expressions, LLMâbased reasoning, boolean results, prompts, and raw responsesâso users can see exactly how each branch was assessed. It significantly improves debugging transparency and LLMâevaluation accuracy (via chainâofâthought prompting and a slimmed context snapshot) while integrating seamlessly into the existing workflow SDK. Potential concerns include added complexity and performance overhead from extra rendering and LLM calls, risks around securely masking sensitive data, and ensuring new error paths are robustly tested.






![github-actions[bot]](/_next/image?url=https%3A%2F%2Fgithub.com%2Fgithub-actions%5Bbot%5D.png&w=3840&q=75)