Repository navigation
v0.43.0
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.gotowhen runs record nobaseURL(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
PATHand under their Windows names (45f6634, 8e7b290)