Skip to content

v0.43.0

Choose a tag to compare

@PhenX PhenX released this 30 Sep 21:26
afdfe36

This release adds a GitHub-style search language to the test lists, marks the line a test failed at in VS Code and JetBrains IDEs, connects the editors to the desktop app without pairing, and closes the security and data-correctness findings of a code audit.

Full diff: v0.42.0…v0.43.0

⚠ Breaking changes

  • ide: the JetBrains plugin needs a 2024.1 or later IDE; 2023.3 and 2023.x IDEs no longer install it. The plugin requires IntelliJ platform 2024.1 and drops the 2023.3 workarounds (43cc081)

✨ Highlights

  • 🔍 Test search language — Search the test catalog and the test lists with GitHub-style qualifiers; the Tests tabs share one search, order and highlight.
  • 📍 Failures at the line — The editor extensions mark the line a test failed at, with why, its screenshot and its trace, and show each test's latest result in the gutter, from the default branch if yours never ran.
  • 🖥️ Editors meet the desktop app — VS Code and JetBrains IDEs connect to the desktop app with no pairing, on the folder's linked project, and keep it beside a shared instance, one Connect away.
  • 🔔 Targeted notifications — Subscriptions filter by branch and environment, and a scheduled report shows who receives it and whose each channel is.
  • 🔒 Security audit fixes — Cross-site writes are refused, stored-XSS paths into the dashboard and its emails are closed, stored credentials go only to their own endpoint, and request bodies, uploads and batches are bounded.
  • 🧮 Data correctness — Each test counts once in run insights and the CI gate, PostgreSQL reports correct counts and pass rates, and SQLite queues writes behind an open transaction instead of failing.
  • 📤 A reporter that does not hold up CI — The end-of-run upload no longer stalls CI against an unresponsive dashboard, an unreadable file fails its upload instead of crashing the runner, and parallel CI jobs and re-runs stay in separate runs.

Features

Test search

  • add a test search language to test lists (966387e)
  • app: search the test catalog with GitHub-style qualifiers (483ea3e)
  • ui: share one search, order and highlight across the Tests tabs (4bdb725)

Piwi in your editor

  • ide: mark the line a test failed at, with why and its evidence: its screenshot and its trace (1959408, 249bcfd)
  • ide: show each test's latest result in the gutter, from the default branch if yours never ran (b3b0bb0)
  • ide: connect to the desktop app with no pairing, on the folder's linked project (a6b3da3, 093f204)
  • ide: keep the desktop app beside a shared instance, one Connect away (da9013f, 08e5ab0)
  • desktop: publish the linked project folders in the discovery file (722c932)
  • ide: open Piwi's settings from the Language Services widget in JetBrains IDEs (71fd806)
  • ide: open the dashboard's source paths through the JetBrains plugin (28d6c89)

Notifications

  • notifications: filter subscriptions by branch and environment (c66c716, cb580b4)
  • notifications: show who receives a scheduled report and whose each channel is (7e52db3, 1b58f49)

Issues, dashboards & URL patterns

  • integrations: support typed labels and tags in issue creation (1ca8b54)
  • ui: rename a saved dashboard from its menu and the dashboards list (7960735)
  • app: suggest URL patterns from page.goto when runs record no baseURL (ac9c22f, ee22b50)

Bug Fixes

Security & access

  • app: close the security findings from the code audit (928b2b6)
  • app: refuse cross-site writes and drop the wildcard CORS headers (c43ead0)
  • app: close stored-XSS paths into the dashboard and its emails (dbed337)
  • app: close reads of another project's files and diagnoses (2b98030)
  • app: send stored AI keys and Jira tokens only to their own endpoint (77b2140)
  • app: send the SCM token only to known GitLab hosts (1386d77)
  • app: keep shard stream tokens as digests in run metadata (6677a98)
  • app: require the run's own stream token to revive an interrupted run (8daa2fd)
  • app: bound request bodies, uploads, shards, periods and MCP batches (7481cc3)
  • app: keep reporter data from expanding in generated shell commands (79f2322)
  • app: mask locator option values without exponential backtracking (e61a2d0)
  • app: show a restricted user the recent runs of their own projects (aad1e42)
  • app: find a restricted user's search matches, ignoring case and wildcards (d29769e)

Data correctness & ingestion

  • app: fix the data-correctness bugs from the code audit (6baee93)
  • app: count each test once in run insights and the CI gate (a3fb650)
  • app: attach uploaded traces and screenshots to the right test when duplicates are skipped (2b64c77)
  • app: keep the reported status of a run whose report upload is slow or lost (8e5bc91)
  • app: let a failed import be retried instead of reported as a duplicate (1474df0)
  • app: keep ingesting a project after one failed test-case cache load (7b9ef36)
  • app: stop concurrent first reports of a new project failing with a server error (e6520ce)
  • app: keep recent lab runs from emptying history, flaky and gap windows (3ac20d9)
  • app: keep a project's SCM token when its settings are saved (f71af79)
  • app: write project settings, tags and members all or nothing (51efb1f)
  • app: open one auto-heal pull request per action when sweeps overlap (7519fb9)
  • app: write each Jira issue and comment once when a click and the sweep race (c0e7fd9)
  • notifications: send each outbox delivery once when sweeps overlap (837cce6)
  • ai: use the per-role models picked in settings when AI is env-managed (add2bb1)

Databases

  • app: open the test page on PostgreSQL 14 and 15 (c957da7)
  • app: report test-case counts, pass rates and last-run times correctly on PostgreSQL (3c8914a)
  • db: queue SQLite writes behind an open transaction instead of failing with busy (81cf9f2)

Reporter

  • reporter: stop the end-of-run upload from stalling CI against an unresponsive dashboard (977e380)
  • reporter: fail an upload whose file cannot be read instead of crashing the Playwright runner (2f9d7f0)
  • reporter: keep parallel CI jobs and workflow re-runs in separate dashboard runs (6c9313b)
  • reporter: replay undelivered live events only into the run they came from (1bc5fdc)
  • reporter: stop an oversized live event batch from blocking the rest of the stream (c72c333)

Dashboard

  • ui: complete a qualifier whose values arrive after the typing (e1f3969)
  • ui: keep typed values in the issue labels and tag field pickers (ddd78af)
  • ui: load server-rendered page data with the viewer's session (359bebd)
  • ui: refresh the timeline and attempts tabs when another test is picked (2cb6e8d)

Editors & desktop

  • ide: install, update and remove the JetBrains plugin with a restart (7a88071)
  • ide: keep the JetBrains plugin off the UI thread and find Rider's Playwright configs (4a89c26, dfc616f)
  • ide: start test commands off the UI thread and let Connect's wait be cancelled (c23d511)
  • ide: reach the editor service from the JetBrains plugin on 2026.x IDEs (0f0c4c0)
  • ide: stop using APIs 2026.3 deprecates or schedules for removal, where 2024.1 allows (9d56d96)
  • ide: connect to a local Nuxt dev server from a JetBrains IDE (e247fca)
  • ide: reach a local instance on whichever loopback address it listens on (28db343)
  • ide: keep downloaded evidence names to plain characters (15d68a4)
  • ide: keep the test-title regex linear on unterminated strings (2344494)
  • desktop: find IDE launchers off the PATH and under their Windows names (45f6634, 8e7b290)