Repository navigation
v0.46.0
This release records Playwright tests from VS Code and JetBrains IDEs, runs an editor's reproduce, bisect and Flake Lab jobs in the desktop app, stamps every run with its origin so one rule decides which runs feed each analysis, draws each worker's CPU, memory and open pages on the timeline, and lets agents write their diagnoses and triage back while Piwi measures whether its hand-backs work.
Full diff: v0.45.0…v0.46.0
✨ Highlights
- 🎬 Record tests from the editor — VS Code and JetBrains IDEs record a Playwright test in a browser the editor opens, with checks and a pause on the recording bar, and write it with the file's page objects, fixtures and the project's test id attribute.
- 🔁 Reproduce, bisect and Flake Lab in the desktop app — From the editor, team CI failures are reproduced and bisected and Flake Lab plans run in the desktop app; the verdict is shared, and a bisect's first bad commit can be recorded on any instance and over MCP.
- 🏷️ Every run carries its origin — The reporter and the desktop app stamp each run with what launched it, and one rule decides which runs feed which analysis, so lab runs stay out of CI analyses and historical imports out of shared state.
- 🌩️ Environment incidents — Piwi recognizes environment incidents, counting failed requests to the app's host, and keeps them out of every verdict;
checkBaseUrlstops a run before any test when the app does not answer. - 📊 Worker resources on the timeline — The reporter samples each worker's CPU and memory and the run's open pages over time, on Windows too, and the workers timeline draws them under each row.
- 🤖 Agents write back — Agents record diagnoses and fix attempts, triage clusters, gaps, merges and bug reports over MCP, and dismiss quarantine proposals; installed skills end each workflow with their write-back.
- 📈 Whether hand-backs work — Piwi records what happened to every hand-back it makes, from gate verdicts and PR feedback to closed auto-heal PRs, and shows whether they work per kind and per AI model.
Features
Recording tests from the editor
- ide: record Playwright tests from the editor, through the editor service (81a1449, 5d40a97)
- ide: add the recording requests to the editor service protocol (bb05a2a)
- ide: build the recorder as a bundle for a browser the editor opens (3150880)
- ide: recording sessions, the editor clients and the JetBrains recording client, work in progress (c0969ad, 19ef3ce, 9956570, ceeec56, 889067a, c9600e9)
- ide: record from Alt+Enter and the Generate menu in JetBrains IDEs (b66e27b)
- ide: show the editor service's messages while recording in VS Code (6f476bb)
- ide: pause a recording from the browser's recording bar (0810405)
- extension: add checks to a test recording's bar (48ea0e9)
- ide: render recorded steps as a test, on any page, with the project's test id attribute (0621226)
- ide: take recorded page objects as fixtures, as the file's tests do (f4911b2)
- ide: leave out the page waits next to a call to your own code (c200aaa)
- ide: read the recorded code's options from the Playwright config's
@piwisection (90ea5f6)
Reproduce, bisect & Flake Lab from the editor
- ide: run tests from the editor as editor runs (c57e69f)
- ide: reproduce and verify flaky tests from the editor, a test's code lens and the failure pages (7ec07dc, 4db305c)
- desktop: reproduce and bisect team CI failures in the desktop app and share the verdict (c7140f5)
- ide: reproduce and bisect team CI failures in the desktop app and share the verdict (0588512)
- app: run an editor's reproduce and bisect jobs in the desktop app (1c37ff6)
- app: record a bisect's first bad commit on any instance and over MCP (92cc37c)
- desktop: run a team instance's Flake Lab plan in the desktop app from the editor, with Flake Lab jobs passed from the editor to the desktop app (ddb6b14, cb2da49)
- app: offer the Flake Lab as the next step of a flaky failure and list it on Home (1904de6)
- app: pick the flaky list's suspect by the lab's order (d2b1a7f)
Run origin & which runs feed which analysis
- reporter: stamp every run with what launched it (8081de2)
- app: stamp every run with its origin and decide eligibility in one rule (fcff940)
- desktop: stamp local, reproduction and bisect runs with their origin (ea21b22)
- desktop: stamp every local run with the origin reference the window chooses (80c53c2)
- app: decide which runs feed which analysis in one rule (e83bdf3)
- app: leave historical imports out of shared state through the rule (5555232)
- app: match CI re-runs to their dispatch and run each test at its line (79b610a)
- app: record what ingest dropped and backfill the branch on stored runs (5e86e94, ef3b584)
Environment incidents & base URL checks
- app: recognize environment incidents and keep them out of every verdict (3945dcd, f137911)
- app: count failed requests to the app's host in the incident classifier (19e893e)
- reporter: add
checkBaseUrl, which checks base URLs before tests run and stops a run before any test when the app does not answer (c4a0b3e, def97fc)
Worker resources
- reporter: send the run's CPU, memory and open pages over time (9e38bbd)
- reporter: read the CPU and memory of each worker's processes over time (5dca40d)
- reporter: read the run's process tree and memory on Windows (6a3113d, 74a79a0)
- app: show CPU, memory and open pages on the workers timeline (99c8e72)
- app: draw CPU, memory and open pages above the workers timeline rows (afcaf33)
- app: draw each worker's sampled CPU and memory under its row (6623bf6)
- app: draw one resource metric under each worker row (de1de08)
- app: point the Resources tab's open pages at the timeline (dbabab8)
Agents, hand-backs & feedback
- ai: let agents record diagnoses and fix attempts, log their writes, and make skills report back (1a47745, d1e59c4)
- reporter: stamp installed skills and end each workflow with its write-back (5b47f8f)
- app: let agents triage clusters, gaps, merges and bug reports over MCP (988cf78, 5e06a1a)
- app: let people and agents dismiss a quarantine proposal (b4e65b4, 00b62b0)
- app: record what happened to every hand-back Piwi makes (ba7877f, 49a5927)
- app: show whether Piwi's hand-backs work, per kind and per AI model (f7a1476, 9b7857e)
- app: store gate verdicts and PR feedback, and count merges that overrode the gate (64c2df8, bcd480a)
- app: learn from closed auto-heal PRs and trace fixes to their Piwi-Heal commit (9bceb10, 7819766)
- app: return full commit messages from every SCM provider (d68045e)
Bug Fixes
Analysis & triage
- app: correct impact selection, clustering, flake clues and gap triage (6317ee2)
- app: widen impact selection when a changed file is not fully mapped (497b37d)
- app: move tests to a real cluster and keep decided merge pairs apart (241e693)
- app: close a gap marked covered-by (be0be9a)
- app: re-probe a pair when its test's source changes (3c90e8d)
- app: name the reproduced flake suspect first and keep the load suspect's id (0d44b65)
- app: stop green sampling when green-samples is declined (2711282)
- app: make fix verification, diagnosis ratings and auto-heal rows trustworthy (e5dbc93, 8434bd5)
- app: link bug reports and list a cluster's merge suggestions over MCP (6fed664)
- ai: read retry passes by test in the diagnosis recurrence sections (3064037)
- ui: show a live bisect's commit on its own cluster only (e4088be)
- notifications: apply owner filters to every event that carries owners (8687cd3)
Ingest, branches & bug reports
- app: keep the branch on every ingest path and lab runs out of CI analyses (6626618, b743c13)
- app: keep the failing step when capping stored steps (e7cf08b)
- app: let every shard of a run pass global setup (21f92d1, cf4d029)
- app: move bug reports on default-branch runs only (58053e6)
- app: let branchless runs move bug reports when no branch is recorded (44bd821)
- app: seed the database
PIWI_DATABASE_PATHnames (b5fedce)
Editors & desktop
- ide: record only on http pages and cap the events a recording keeps (3599c9b)
- ide: record where code can go, from the recorded page only, without duplicates (7966f9e)
- ide: record the steps of a page object's method from VS Code (ebd8c21)
- ide: replace steps with a catalog call only when they act on the elements it names (3ea8689)
- ide: recognize tests called through a fixture or another name (5b40c47)
- ide: read a password that a page object call takes from the environment (6a98eb9)
- ide: never import a name a recorded test's file binds already in VS Code (8d2e7d5)
- ide: read a config's options through its real path, so Playwright loads once (1a8ace9)
- ide: show a paused recording and never orphan one in VS Code (dc83451)
- ide: start recordings in JetBrains IDEs only where the cursor is known (fd47a8c)
- app: disable the translate modal when launching Chromium from the JetBrains plugin (31cabbb, ca1eaf3)
- ide: let an instance open files only in the projects connected to it (d359af2)
- ide: open files in a JetBrains IDE only for the connected instance and the desktop app (8c194f5)
- ide: read the desktop app's address from its discovery file for Open in IDE (f7852a3)
- ide: review fixes for the editor service and the JetBrains client, work in progress (b92d39e, e736b57, 3bf3c80)
- desktop: report reproduction and bisect steps to the local app only (6d410d5)
Reporter, CI & docs
- reporter: leave room for a cold CIM query on Windows (32d0015)
- reporter: name a working command for non-canonical AI-step entries (72a2e1e)
- ci: retry the package smoke's run poll on a reset connection (649b67f)
- docs: render the Flake Lab workflow expression literally (1893db9, 2bceab5)
Piwi Picker fixes — what a full review of the extension found, and the page tools' handoffs
- extension: fix the bugs a full review of the extension found, its medium- and low-severity ones included (b103d2d, d434c91, 3fc8460)
- extension: let page tools hand the page over without breaking each other (47c84cc)
- extension: keep page surfaces usable above a modal dialog the page opened (e909a1d)
- extension: hide elements marked hidden in every page panel (5e85720)
- extension: keep the keyboard focus in the bug HUD when it is drawn again (13e8399)
- extension: keep a replay to its own tab and never overwrite a stop (e8df213)
- extension: never let a Continue play a step that waits for Next (e444db1)
- extension: never record a password typed in a web component, nor Enter's submit twice (0056839)
- extension: save every cookie of the site in Save login for tests (91093ec)