What's new
The features that landed in each release, newest first — the answer to "what changed since I last upgraded, and is any of it worth reading about". It is generated from the project changelog, which also holds the bug fixes and the full commit history.
Piwi is pre-1.0: minor releases can carry breaking changes and the database schema moves with them, so read Upgrading before you bump a tag.
0.26 — 2026-08-19
- add branch as first-class dimension for baselines and analytics
- add test selections — data-driven test subsets from run history
- ai: support text-only models and live diagnosis E2E tests
- app: { items } envelope for cluster commits — D6 complete
- app: { items } envelope for GET /api/projects
- app: { items } envelopes for flaky-tests and project clusters
- app: { items } envelopes for project performance and slow-tests
- app: { items } envelopes for the content CRUD list routes
- app: { items } envelopes for the project/run listing routes
- app: { items } envelopes for the settings/user CRUD list routes
- app: add machine-readable errorCode to every API error (D8)
- app: add test selections — model, resolver, API and demo
- app: auto-heal broken locators by opening a fix PR
- app: explain why tests did not run and link blocking failures
- app: finish auto-heal — settings UI, PR-opened notification, healing chips, retention
- app: gate on a selection, selection MCP tools, and the Selections tab
- app: hand back a git-applyable edit for healed locators
- app: impact-from-diff — map a changed-file set to the tests it affects
- app: live step streaming, attempt chips, fail-on-flaky, distinct run statuses
- app: make git branch a first-class, queryable, analysis-bearing dimension
- app: make git branch first class data
- app: open a fix pull request automatically when a locator breaks
- app: public share links for executions and failure clusters
- app: rank a selection's materialized order for fail-fast
- app: record per-attempt outcomes and show attempt chips
- app: return { items } envelopes from the low-fanout list routes
- app: selection health & drift analytics
- app: selection suggestions, an ids predicate, and duration-balanced shards
- app: show live running steps inline on each running test row
- app: stream live per-test steps to the run page
- app: unify query parsing with clamp-and-400 helpers — D10
- auth: harden auth rate limiting and polish the first-admin setup flow
- db: persist run-level shardIndex — D3
- demo: seed did-not-run reasons and a serial-group cascade
- docs: make the split hero a scene and recapture it from the current app
- notifications: auth-less support, global subscriptions, digests, delivery fixes
- notifications: support global channels and browser subscriptions
- piwi run impact --base — run the tests your diff affects
- reporter: add piwi select/run and resolveSelection
- reporter: fail the run when flaky tests are detected
- reporter: gate --require-selection and the run-the-right-tests skill
- reporter: keep timed-out and interrupted runs distinct
- reporter: piwi run --fail-fast — least-reliable tests first
- reporter: piwi run impact --base — run the tests your diff impacts
- reporter: piwi select/run --shard for duration-balanced shards
- reporter: resolve branch via CI fallback chain and capture PR number
- selection health & drift analytics, fail-fast ordering
- ui: chart test runs as per-run bars and drop the unovis dependency
0.25 — 2026-08-02
- app: desktop history navigation and new-project-from-folder flow
- app: expand feature screenshot harness with annotations and docs scenes
- app: joined desktop nav pair, feature-screenshot harness, reporter init command fix
- app: scene-driven docs screenshots with element targeting and annotations
- desktop: create projects from local folders with setup detection
0.24 — 2026-08-01
- ai: add deterministic replay core for natural-language AI steps
- ai: add no-LLM rename-match repair for drifted locators
- ai: make AI-step limits and caps configurable
- ai: surface AI-step intent on the healing panel and in diagnosis (adb81e0, 77e2d8f)
- ai: wait for Ajax responses race-proof in piwiRun flows
- ai: wire the author-verify-commit loop for natural-language steps
- ai: wire the screenshot vision fallback as opt-in (default off)
- app: surface AI-step coverage in the dashboard and demo
- reporter: add AI-step authoring and replay system
0.23 — 2026-07-31
- app: desktop_check_local_env pre-flight for local runs
- app: link local runs to Piwi runs, live progress, sidebar pill, env pre-flight
- app: link local runs to their Piwi run, with live progress and an activity pill
- app: local run notifications, quit confirmation, and new run-locally entry points (b54ae47, 64d1497)
- app: run tests locally from a split button with a persistent runs tray (f850c65, 441708e)
0.22 — 2026-07-30
- desktop: built-in MCP stdio bridge for Claude Desktop
0.21 — 2026-07-30
- add Setup page with capability detection and checklist
- app: a permanent Setup page with a capability checklist
- app: add OpenCode MCP auto installer in the Desktop app (f1e1304, 5a053eb)
- app: add server-aware setup_piwi MCP prompt
- app: no-AI-credits prompt copy flow + MCP tool for the function catalog
- app: object params for test functions, editable catalog entries
- app: surface the setup_piwi prompt on the MCP server page
- app: warn when the linked folder holds none of the tests being run (ebff14e, 7bc5d2c)
- deps: rename @piwitests/instrumentation to @piwitests/instrumentation-nitro
- extension: add npm run extension:dev for rebuild-on-save
- extension: add npm run extension:zip to package a store-ready build
- extension: add Piwi Picker browser extension (standalone MVP) (b0f6236, 7d72290)
- extension: add the Firefox add-on ID to the manifest
- extension: assertion suggester (C2)
- extension: copy context for agent (E1, standalone portion)
- extension: digit shortcuts for every popup action, icon beside the label
- extension: lay the popup out as a two-column icon grid
- extension: link from the "Test functions" panel to the catalog in Piwi
- extension: locator console (A6) and multi-pick pattern derivation (A7)
- extension: locator lint overlay (A9)
- extension: map URL patterns to projects, with an active-project popup override
- extension: named pick session with fixture/Markdown/JSON export (C3/C7)
- extension: record actions across pages, matched live against your own test functions (5618641, 6c40b6d)
- extension: register test functions from pasted code (AI), and test them against the live page
- extension: run one tool at a time, show which, cancel with Esc
- extension: standalone power tools (P2)
- reporter: add
piwi initcommand and MCP prompts - reporter: add piwi init command and agent skills
- ui: anchor scoped locators on app-specific data-* attributes
- ui: make picked locators legible in the picker and the dashboard (66f46bd, 6e630f4)
- ui: redesign the run and execution summary headers as single adaptive cards
- ui: scope role-less elements to a parent by their text
- ui: single out a repeated container with filter({ hasText })
0.20 — 2026-07-27
- add one-click deploy templates for hosting platforms
- app: ambient unread badge and tray status for desktop notifications (5c5e8aa, ba98465)
- app: embed CSS url() assets as data URIs in the snapshot picker
- app: import local archives by drag and drop or open-with in the desktop app (c4b2610, 444ac09)
- app: in-app updates for the desktop app (6cf9b30, 0da85fc)
- app: one-click deploy templates for Railway, Render, Fly, Koyeb and Coolify
- app: one-click MCP client configuration in the desktop app (087080e, c661eb6)
- app: run failing tests locally from the desktop app (5713195, 069db17)
- snapshot: inline external stylesheets in DOM picker
0.19 — 2026-07-26
- ai: copy the exact request a diagnosis would send
- app: assemble a fix plan an agent can act on
- app: bring the markdown export to parity and tighten the report design
- app: card layout for the run's test-case list on phones (230cd7b, 0e6c724)
- app: close the loop — fix verification, quarantine, ownership and agent fix plans
- app: derive test ownership from CODEOWNERS
- app: export an execution or cluster for offline reading (692a0a0, 59ba8d1)
- app: filter tests by tag, owner and priority
- app: import bare trace files, and show import progress
- app: import past runs from Playwright blob reports
- app: post run summaries back to pull requests
- app: quarantine flaky tests with an exit ramp
- app: support base path in file API URLs with compress option
- app: verify whether a fix actually landed
- clustering: semantic merging with LLM adjudication
- db: store test tags and ownership metadata
- demo: import blob reports and traces in the browser
- import historical Playwright blob reports and traces
- reporter: add a gate command that fails CI on the run's analysis
- reporter: capture locators from passing assertions
- reporter: capture per-test tags and piwi ownership annotations (5a955a9, 870489e)
- reporter: discover the running desktop app when no server is configured
- reporter: skip run registration in Playwright UI mode
- ui: add the quarantine tab and seed the demo with both tiers
- ui: calmer status palette, readable tag pills, quieter run rows
- ui: compact durations everywhere and a usable run tree on mobile
- ui: highlight source blocks in the export and share one highlighter
- ui: one export menu instead of three scattered copy affordances
- ui: quiet the environment pills
- ui: separate the page canvas from cards and block headers
- ui: show the same test-case data in the run's flat list and tree
- ui: show whether a recorded fix actually held (6ff8900, cb25827)
0.18 — 2026-07-23
- desktop: add shell integration for external links and notifications
0.17 — 2026-07-22
- desktop: add in-app background/autostart toggles and open on tray click
- desktop: surface local connection details and hide auth-only settings in desktop mode
0.16 — 2026-07-22
- app: add loopback access guard for the desktop build
- app: add timeout-hygiene thresholds settings page (269da5a, 9318636)
- app: let the Playwright reporter submit to the desktop app
- app: show resolved database and storage paths in storage settings
- app: surface reclaimable timeout time in the Wasted CI time widget (20bda99, 2d30465)
- app: surface timeout-reduction opportunities & stale test.slow() marks (67a7ba6, 3d69a59)
- demo: auto-reseed when demo schema becomes stale
- demo: seed server-trace spans on network requests
- desktop: add Tauri desktop app bundling the local server
- desktop: add Tauri desktop app with bundled server
- reporter: add OpenTelemetry-style server traces end to end (f824684, e6d48d4)
- ui: add DurationValue for compact durations with a faded unit
- ui: add project filter and reduce padding on analytics page (f626824, bb592c2)
0.15 — 2026-07-19
- add @piwitests/server npm package to run the dashboard server (e390cc3, 919910f)
- add timeline markers for project events
- analytics: improve pass rate heatmap axis labels
- app: add env-format emitters for deployment config snippets
- app: add regression, browser, and endpoint analytics widgets (01b413d, 775cf2a)
- app: add timeline markers API, handlers and auto-detection
- app: add wizard metadata and version ranges to the piwi env var registry
- db: add markers table for project timeline events
- docs: generate the configuration reference and add an offline env generator
- keyboard navigation, skip link, and tab URL sync
- reporter: publish the dashboard run URL to CI runners (ac26d29, 22c6432)
- ui: full-period pass-rate heatmap axis and side-by-side insights layout
- ui: overlay timeline markers on charts and add timeline tab
0.14 — 2026-07-18
- add trace-derived "go deeper" evidence views (call stack, network)
- ai: add trace call stack and network diagnosis sections
- app: add cross-project analytics dashboard (0b1d880, d0da2ac)
- app: add trace stack and network parsing with evidence endpoints
- app: merge modern before/after trace events into parsed actions
- app: port locator-alternative generation into shared with a dri…
- demo: add a reset-data button to the demo toolbar
- demo: rebase seed timestamps to load time
- demo: rebase seeded timestamps to load time so runs never look stale
- demo: record app-under-test evidence instead of dashboard screenshots
- demo: serve trace stacks and network insights in demo mode
- demo: single-source failure fixture module
- demo: wire the 12 demo routes with no client-side equivalent
- ui: show full call stack and trace network in evidence cards
0.13 — 2026-07-18
- add "Open in IDE" integration for source files
- add execution-scoped AI diagnosis and source frames
- app: add step timing waterfall and per-category summary
- app: cap stored per-case payload sizes at ingest
- app: expose test source and an execution-scoped diagnosis read
- app: expose the failing call site and source line in healing results
- app: flag failure groups that have a locator fix available
- app: nested ARIA tree view + switch to it with a trace loaded
- app: paginate, filter and revamp the project test-cases catalog
- app: scheduled retention sweep
- app: show a prominent Your pick callout in the healing panel
- app: surface user-picked locators and trace-viewer picking in healing panel (c48933c, 34932ed)
- app: thread and render the test-source call stack
- app: unify the healing ladder and detect when a locator is healed
- automatic data retention and storage efficiency
- db: add a test_source_frames column
- db: content-addressed case payload dedup
- demo: parse the committed trace ZIP in-browser for the locator picker
- enrich browser configs with context fields and merge browser card into CI/Env
- interactive DOM snapshot locator picker with healing integration
- reporter: add failure-time locator picker with pickLocatorOnFailure (06ef91b, 8459636)
- reporter: add locator picker from the failure pages
- reporter: capture the failing call stack as multi-frame test source
- reporter: explain why a failure-time locator tool was skipped
- reporter: fire the locator picker on assertion failures too
- reporter: guide the locator picker with anchors, snapping and live match counts
- reporter: open Playwright Inspector on failing page with inspectOnFailure (9a8fd9c, a51bd46)
- reporter: syntax-highlight locators in the picker overlay
- snapshot: render ARIA tree as nested inspector view with toggle
- test-cases: add searchable, filterable catalog with tree view
- ui: add a try-it-out console and code samples to the API docs
- ui: enrich the test run case steps tab
- ui: fold the browser block into the CI / Env card on the run-case page
- ui: harden the snapshot picker and guide users to the target element
- ui: lead locator healing with the recommended fix and a one-line edit
- ui: note when one locator fix covers the whole cluster
- ui: open displayed source paths in the local IDE
- ui: rebuild the test-run-case page as a diagnosis-first flow
- ui: render the API reference in-app instead of a CDN (9814de6, b7514a4)
- ui: show each route's required role in the API docs
0.12 — 2026-07-12
- add visual diff, environment diff, DOM snapshot, and page state capture
- ai: add environment diff section comparing failing execution to last pass
- ai: add trace-derived DOM snapshot diagnosis section with context limit
- ai: attach visual diff overlay and metric to the diagnosis context
- app: add lazy visual diff endpoint comparing failure screenshot to last pass
- app: expose environment diff endpoint and evidence cards
- app: heal renamed labels and headings with structural alternatives and stale-aware fixes
- app: ingest page state and add app state diagnosis section
- app: render sanitized DOM snapshots from stored trace blobs
- db: add metadata json column to files table
- db: add page state column to test run cases
- reporter: capture LCP, CLS and INP core web vitals
- reporter: capture page state at test end
- reporter: structural locators for renamed elements
- ui: add page state and DOM snapshot evidence cards
- ui: add visual diff viewer to test case and cluster evidence
- ui: show LCP, CLS and INP tiles on the test case page
0.11 — 2026-07-11
- app: scope flaky-test analysis to a single environment (6652de9, 812a956)
- capture: teardown race guard and web vitals stashing
- cluster: global-view diagnosis layout
- compress screenshots server-side via sharp before sending to AI
- demo: enrich step events with hooks/fixtures and add wait-heavy scenario
- demo: enrich step events with hooks/fixtures and add wait-heavy…
- diagnosis: context coverage strip and citation reveal-on-page
- notifications: embed failing-test context in run and cluster alerts (6c4d8db, a3777d5)
- release: adopt release-please for file-authoritative versioning (#215)
- reporter: rename capture fixtures to piwiFixtures and export the PiwiFixtures type
- reporter: respect explicit
enabledoption - send test screenshots to AI and embed in HTML export (d4fa1fd, 22471d7)
- settings: AI usage panel, per-role connection tests, form fixes
- ui: add CollapsibleSectionCard and useFoldedState primitives
- ui: surface test videos as first-class evidence (519b66c, 3f11c51)
- users: replace Global Access toggle with radio group in Project Access modal
0.10 — 2026-07-11
- app: scope flaky-test analysis to a single environment (6652de9, 812a956)
- capture: teardown race guard and web vitals stashing
- notifications: embed failing-test context in run and cluster alerts (6c4d8db, a3777d5)
- reporter: rename capture fixtures to piwiFixtures and export the PiwiFixtures type
- ui: surface test videos as first-class evidence (519b66c, 3f11c51)
0.9 — 2026-07-09
- cluster: global-view diagnosis layout
- compress screenshots server-side via sharp before sending to AI
- demo: enrich step events with hooks/fixtures and add wait-heavy scenario
- diagnosis: context coverage strip and citation reveal-on-page
- release: adopt release-please for file-authoritative versioning (#215)
- reporter: respect explicit
enabledoption - send test screenshots to AI and embed in HTML export
- settings: AI usage panel, per-role connection tests, form fixes
- ui: add CollapsibleSectionCard and useFoldedState primitives
- users: replace Global Access toggle with radio group in Project Access modal
0.7 — 2026-07-08
- AI diagnosis fetches full source files and validates suggested patches (#202)
- redesigned failure-cluster detail page layout (#205)
- failure tab UX: URL persistence and smart defaults (#207)
- data-grounded demo AI diagnosis + hardened diagnosis engine (#208)
- reusable responsive primitives for mobile screens (#209)
0.6 — 2026-07-02
- MCP server expanded from 14 to 38 tools — global search, run insights, spec health, slow tests, performance & stability trends, network requests, failure groups, repo commits & diffs, test catalog, traces, tags, links, recent activity, instance stats
- AI failure-cluster workflow via MCP — list open clusters, diagnose, explain failures, set status & base commit, submit feedback
- locator healing exposed through MCP with enriched healing context
- timeline span-type filter — data-driven toggles for tests, setup, hooks, fixtures & wasted waits
- OpenAPI spec generated at build time and served at
/_openapi.jsonin production
0.5 — 2026-06-28
- locator healing: capture & suggestion of alternative locators, signature-based matching, convention-preserving fix recommendation
- backend logs shown under each network request in the test-case view
- home page revamp with filtering by environment and run type; settings revamp with env-var info
- test screenshots sent to AI diagnosis and embedded in HTML export
- user display names and optional passwords; demo "act as" user switcher
- reporter: heartbeat for fast interrupted-run detection
0.3 — 2026-06-23
- diagnosis page with enhanced AI diagnosis (multiple hypotheses & severity levels)
- global search across all projects; new-regression tracking
- sharding support with improved shard timeline
- backend logs with test-tree visualization; custom run names
- notifications & subscriptions for projects + account management
- MCP server integration; home wizard
- contextual help blocks throughout the UI