Skip to content

✨ v0.21.0

Choose a tag to compare

@github-actions github-actions released this 21 Dec 01:45
· 0 commits to 866d2e53c612dd783f7ca3f0533e42ad7e1b46e3 since this release

🎉 Major Release: Architecture Overhaul

A massive overhaul including test framework migration, functional architecture refactor, and significant new features.


✨ New Features

  • Server-Sent Events - Real-time dashboard updates without polling (#148)
  • Delete Comparisons - Remove unwanted new screenshots from dashboard (#145)
  • TUI Toolkit - Branded CLI output with polished help commands (#141)
  • Quiet-by-Default - Cleaner, focused CLI output (#138)
  • Observatory Design System - Refreshed reporter UI (#147)

🐛 Bug Fixes

  • Wire authService and projectService into TDD server (#149)
  • Fix HTTP keep-alive preventing clean process exit (#146)
  • Fix acceptBaseline saving with double .png extension (#144)
  • Fix comparison rejection not working in TDD mode (#137)
  • Fix undefined dependencies in TddService methods (#136)

⚙️ Breaking Changes

  • Node.js requirement updated to >=22.0.0 (was >=20.0.0)

♻️ Functional Architecture Refactor

Eliminated thin service wrapper classes and rebuilt around functional modules with explicit dependency injection.

New Module Structure

Module Location Purpose
API src/api/ createApiClient(), endpoints, request handling
Auth src/auth/ createAuthClient(), login/logout, token refresh
Config src/config/ Config merging, serialization, validation
Project src/project/ Project operations, status updates
TDD src/tdd/ Comparisons, baselines, hotspots, results
Report src/report-generator/ HTML report generation
Server src/screenshot-server/ HTTP handling, middleware

Migration Guide

// Old (deprecated, still works)
import { createServices } from '@vizzly-testing/cli'
const services = createServices(config)
await services.apiService.request(...)

// New (recommended)
import { createApiClient, getBuild } from '@vizzly-testing/cli/api'
const client = createApiClient(config)
const build = await getBuild(client, buildId)
🧪 Test Framework Migration

Migrated from Vitest to Node.js 22+ built-in test runner with c8 for coverage.

Coverage Improvements

Metric Before After
Lines ~30% 87%
Functions ~25% 91%
Branches ~40% 95%

1,432 tests with full coverage of all CLI commands, API client, auth, config, TDD service, and error handling.

📊 Stats
  • ~30,000 insertions / ~21,000 deletions
  • ~700 lines removed from services layer
  • Service wrappers removed: ApiService, AuthService, ConfigService, ProjectService, BuildManager
  • All public APIs remain backward compatible