Releases: vizzly-testing/cli
Release list
📚 Storybook Plugin v0.1.3
[0.1.3] - 2026-01-28
What's Changed
Changed
- Migrated test suite from Vitest to Node.js built-in test runner (
node:test) for better performance and reduced dependencies - Replaced ESLint and Prettier with Biome for unified, faster linting and formatting
- Upgraded minimum Node.js version requirement from 20.0.0 to 22.0.0
- Improved test coverage from 87% to 99%
Fixed
- Fixed
services.get()calls to use direct property access, resolving "services.get is not a function" errors when using the plugin in cloud mode - Added comprehensive E2E tests that work with both
vizzly tdd run(local TDD mode) andvizzly run(cloud mode) - Improved Puppeteer performance in CI environments with optimized arguments and timeout handling
Full Changelog: storybook/v0.1.2...storybook/v0.1.3
✨ v0.23.2
Vizzly CLI v0.23.2
What's Changed
Added
vizzly previewimprovements: Added--dry-runflag to preview files before uploading, and--exclude/--includeflags for granular control over which files to upload- Smart file exclusions: The preview command now automatically excludes non-static files (
node_modules,tests/,coverage/, config files, etc.) to prevent accidental uploads
Fixed
- 5xx error resilience: CI pipelines no longer fail when Vizzly API experiences temporary outages. The CLI now gracefully handles 5xx errors (500, 502, 503, Cloudflare tunnel errors, etc.) by warning the user but exiting with code 0, allowing tests to continue. Client errors (4xx) still fail as expected to catch real issues.
- Ruby SDK connection timeout: Added
open_timeoutto Ruby SDK HTTP calls to prevent hanging on unreachable servers - Form data upload compatibility: Fixed form-data uploads in the preview command to work correctly with Node's native fetch API
- Marketplace plugin installation: Corrected plugin path so
/plugin marketplace add vizzly-testing/clinow works properly
Changed
- Claude plugin: Simplified from complex MCP-based architecture to a skills-first approach with clearer documentation and commands
- README: Streamlined documentation (moved detailed content to docs.vizzly.dev)
- Plugin installation method:
marketplace.jsonmoved to repo root for proper GitHub installation
Full Changelog: v0.23.1...v0.23.2
✨ v0.23.1
v0.23.1
What's Changed
Fixed
-
GitHub Actions PR commit SHA detection - Fixed incorrect commit SHA detection for GitHub Actions
pull_requestevents. The CLI now correctly reads the PR head commit SHA from the GitHub Actions event payload instead of using the temporary merge commit SHA. This fixes check runs appearing on wrong commits and baseline detection issues in PR workflows. -
SDK E2E test compatibility - Fixed SDK E2E tests to work properly with both
vizzly tdd run(local TDD mode) andvizzly run(cloud mode). All SDKs now detect theVIZZLY_SERVER_URLenvironment variable to skip starting their own TDD server when running under the Vizzly CLI.
Changed
- CI workflow organization - Restructured CI workflows from a single monolithic
ci.ymlinto focused, maintainable workflow files:sdk-e2e.yml,sdk-unit.yml,reporter.yml, andtui.ymlfor better clarity and faster feedback.
Dependencies
- Updated Babel packages (
@babel/cli,@babel/core,@babel/preset-env) from 7.28.3/5 to 7.28.6 - Updated
@tanstack/react-queryfrom 5.90.16 to 5.90.19 - Updated
@types/nodefrom 25.0.6 to 25.0.9
Full Changelog: v0.23.0...v0.23.1
✨ v0.23.0
Vizzly CLI v0.23.0
What's Changed
Added
- Preview command for static site hosting - New
vizzly preview <path>command enables teams to upload static files (dist/, build/, etc.) as previews attached to builds. Useful for sharing live previews of built applications alongside visual test results - Session tracking - Build context now flows between commands via
.vizzly/session.json, enabling seamless multi-step workflows - GitHub Actions integration -
vizzly runnow auto-writesVIZZLY_BUILD_IDto$GITHUB_ENVfor easy cross-step use in CI - Preview URL in status -
vizzly statuscommand now displays the preview URL when available - SDK E2E testing in CI - Added automated end-to-end tests for all SDKs (JS, Vitest, Ember, Ruby) to prevent integration regressions
Fixed
- Vitest SDK status values - Fixed Vitest client to use correct status values from TDD handler (
match/diffinstead ofpassed/failed). This resolves the "Unknown comparison status: match" error - Performance improvements - Updated honeydiff to v0.8.1 for significant performance gains:
- SSIM calculation now 5x faster using integral images and parallel processing
- Full HD (1920×1080) image comparisons: 239ms → 51ms
- Identical image detection skip saves ~250M operations per comparison
- Security fixes - Fixed ReDoS vulnerability in MCP SDK UriTemplate regex patterns
Changed
- Dependency updates - Updated honeydiff (0.8.0 → 0.8.1), MCP SDK (1.25.1 → 1.25.2), Node types (25.0.3 → 25.0.6), and Vite (7.3.0 → 7.3.1)
Full Changelog: ember/v0.0.3...v0.23.0
🧪 Vitest Integration v0.1.1
[0.1.1] - 2026-01-15
What's Changed
Fixed
- Fixed compatibility with Vizzly CLI v0.23.0+ by updating status value handling from
passed/failedtomatch/diff - Added support for
baseline-updatedstatus to properly handle baseline updates in TDD mode
Full Changelog: vitest/v0.1.0...vitest/v0.1.1
✨ v0.22.2
Vizzly CLI v0.22.2
What's Changed
Changed
-
Performance optimization for screenshot type detection: The client SDK now explicitly specifies the image data type (
'base64'or'file-path'), allowing the server to skip expensive regex validation on every screenshot. This eliminates O(n) processing for large base64 strings and significantly speeds up processing for content-heavy pages. -
Reduced CLI bundle size: Removed unused static-site SDK dependency from CLI package dependencies.
Fixed
- File path detection false positives: Fixed
looksLikeFilePathutility to correctly distinguish between JPEG base64 data (which starts with/9j/) and actual file paths.
Backwards Compatibility
All changes are fully backwards compatible. The server gracefully falls back to type detection for client SDKs that don't yet provide the explicit type field.
Full Changelog: v0.22.1...v0.22.2
✨ v0.22.1
What's Changed
Added
- Intelligent release notes generation: The release workflow now uses Claude Code to generate comprehensive, user-friendly release notes automatically instead of simple commit lists. This provides better context and clearer descriptions of what changed.
Fixed
- Catastrophic regex backtracking in base64 detection: Fixed a performance issue in the
isBase64validation regex that caused stack overflow errors on large base64 strings (such as changelog screenshots). The regex has been replaced with a simpler, non-backtracking validation approach that:- Validates character classes directly
- Checks length is divisible by 4
- Allows up to 2 padding characters at the end
- Improved error reporting: 500 error messages in the screenshot server now include actual error details for better debugging
- Browser test isolation: Fixed browser tests that were inadvertently opening actual browser tabs during test runs by exporting validation logic as a pure function
Full Changelog: static-site/v0.0.11...v0.22.1
🧪 Vitest Integration v0.1.0
[0.1.0] - 2026-01-07
What's Changed
Changed
- Migrated to Biome for linting and formatting - Replaced ESLint + Prettier with Biome for faster, unified code quality checks. Updated all npm scripts (
lint,format,check) to use Biome tooling.
Performance
- Improved screenshot upload performance - Added explicit
type: 'file-path'field when sending screenshots to the Vizzly server, enabling O(1) type detection instead of content sniffing. This reduces server-side processing overhead for every screenshot.
Full Changelog: vitest/v0.0.3...vitest/v0.1.0
[0.0.3] - 2025-11-29
[0.1.0] - 2025-01-24
Added
- Initial release of Vitest v4 browser mode integration
- Drop-in replacement for Vitest's native
toMatchScreenshotmatcher vizzlyPlugin()Vite plugin for seamless integration- Custom matcher implementation via
expect.extend()in browser context - Direct HTTP communication from browser to Vizzly server
- Support for both TDD mode (local comparison) and cloud mode (async upload)
- First-class API with
properties,threshold, andfullPageoptions getVizzlyStatus()helper to check Vizzly availabilitygetVizzlyInfo()re-export from CLI client- Comprehensive documentation and examples
Features
- True Drop-in Replacement - Just add plugin, no test changes required
- Standard Vitest API - Use native
toMatchScreenshotsyntax - TDD Mode - Interactive local dashboard with instant feedback
- Cloud Mode - Team collaboration with visual reviews
- Clean Options API - Top-level
properties, not nested - Auto-discovery - Automatically finds running TDD server
- Graceful Degradation - Tests pass when Vizzly not available
- No Conflicts - Completely disables Vitest's native system
🐹 Ember SDK v0.0.3
[0.0.3] - 2026-01-07
What's Changed
Changed
- Removed unused remote browser configuration options (
browserWSEndpoint,connectOverCDP,rewriteUrlForDocker) that were for an abandoned remote browser approach. Docker workflows now rely solely on theVIZZLY_SERVER_URLenvironment variable.
Fixed
- Fixed catastrophic regex backtracking in base64 detection that caused stack overflow on large screenshots (like changelog images). Replaced with simpler non-backtracking validation logic.
- Improved error messages in screenshot server to include actual error details instead of generic 500 responses.
- Reduced console noise by only logging connection errors once instead of repeatedly.
Full Changelog: ember/v0.0.2...ember/v0.0.3
🏗️ Static Site Plugin v0.0.11
[0.0.11] - 2026-01-06
What's Changed
Added
- Support for array patterns in
includeandexcludeconfiguration options, allowing multiple page sections to be filtered without complex regex patterns
Full Changelog: static-site/v0.0.10...static-site/v0.0.11