
The product’s whole promise is a link somebody else can open. Until yesterday, on a Mac, that link said Error.
The panel records VP9 in WebM, Safari has no decoder for it, and the player handed the browser a single source built from the stored file’s own type. One source and nothing to fall back to means the video element fails rather than degrading, so a share link opened in Safari showed a word and nothing else. Nothing was logged. The only person who found out was the recipient, and the person who sent it never knew.
The server now encodes an H.264 copy beside every upload and the player offers both, so the browser takes the one it can play. Extension 1.6.0, published to the store, goes further and records MP4 directly wherever the browser allows it - in which case there is nothing to convert and no second file to store.
The reporter hears back
A report has carried a status since it had one at all, and since the list gained the control to move it, teams can actually triage. Nothing told the person who filed it.
Somebody who reports a bug on a stranger’s site was told their report had been opened, and then heard nothing again however it ended. That makes the first mail read like the only thing we were ever going to say.
There is now a second mail, when a report is resolved. Only resolved: “in progress” says somebody has started looking, which is weaker and would train people to ignore the mail, and a move back to pending is not worth an inbox. One report, one mail.
The other direction was just as quiet. A report filed against a claimed domain was announced to nobody, so a team found out by opening the list and looking - the opposite of what the product promises, which is that somebody else should not have to chase you. Teams are now told when a report arrives for a domain they own, including the case where the report arrives first and the domain is claimed afterwards.
And because more mail is not automatically better, /app/notifications lists every notification
the product may send you, each with its own switch.
Your own reading no longer counts as a read
A site owner reads the view count on a report as “this was seen”. Opening your own report counted towards it, which quietly inflated the one number that was supposed to answer that question.
Both halves are fixed. A signed-in reporter’s own visit is not counted, and an anonymous reporter - who has no account to be recognised by - gets an owner key alongside the share token when they upload. Opening the report with the key exchanges it for a cookie scoped to that report’s own path and redirects to the clean URL, so the key never sits in the address bar where it could be copied into a ticket by accident.
Severity you can disagree with
Every report carries a suggested severity. Until yesterday it could be read, sorted and filtered by, and changed by nobody.
The team can now set it. Both values are kept and shown, because they answer different questions, and the interface says so in as many words:
- Suggested severity
- A suggestion for sorting, not a judgement. Impact on your business is not visible in a capture.
- Severity set by the team
- Somebody who owns this domain read the impact differently from the model. The suggestion below is kept as it was.
The design decision underneath is where the override lives. Every automatic reading rewrites the whole of its own output, and a report can be read again, so an override stored in there would be destroyed by the next read - silently, without telling the person who set it. It gets a column of its own instead, recording who set it and when, which the automatic reading cannot reach.
Session Replay
Free Chrome extension. One click on the page that is misbehaving captures the screenshot, the console and the network log, and hands you a link to paste into the ticket.
Past the allowance, a report is kept rather than refused
A report arriving over a paid plan’s monthly allowance used to be a refusal. It is now accepted and not charged for, and it loses exactly one thing: the automatic reading.
Everything else is unchanged. It is kept for the plan’s full history, and it opens with the recording, the network log, the console and the reporter’s own note. The page says which report this happened to and why, rather than leaving a gap where the analysis would be.
A bug report you cannot file is worth nothing to anybody, and a month’s allowance is a billing arrangement rather than a statement about which bugs matter.
Two things about capture, in opposite directions
Redaction can now be switched off, narrowly. It used to be decided entirely in the extension, with nothing on the server able to say otherwise - the right default while every report was a public link with no sign-in, because anything captured was effectively published. Private reports and plan entitlements both arrived since. A domain can now opt into unredacted capture, and only when three things are true at once: the plan sells it, the domain asks for it, and the reports are private. Miss any one and the capture is redacted as before.
The pricing pages now say the recording length you actually get. Three public surfaces had said a flat ten minutes since the recorder read a constant. The recorder takes the length from the plan now, so the flat claim was wrong in both directions: five minutes on an unclaimed domain, ten on Starter, thirty on Professional. We wrote about the upload ceilings not matching the plans last week; this is the same mistake one surface further out.
Smaller things
- A reporter can reach their own reports over MCP. The surface could only answer “what was filed against a domain my team owns”, which is one of the two lines the dashboard has always drawn.
- The nine public pages are now written in German, Spanish, French, Italian, Portuguese and Russian as well as English, rather than machine-shaped versions of the English ones.
- The extension reopens its panel window at the size you dragged it to, and a screenshot now stays with the URL and page title it was taken on.
-
desktopCaptureis gone from the extension’s permissions. We wrote on Sunday that we had found a permission we declare and never call, and that it would come off in the next release; 1.6.0 is that release. -
identify()can carry any key a meta tag could, rather than the five it started with. That is published on npm as 0.4.0; the copy served from our own pages follows.