v1.4.0Triage that admits when there's nothing to find

Changelog

1.4.0
Feature
  • Rhys Adams

Triage that admits when there's nothing to find

AI triage classifies a report from what the reporter actually wrote. When the capture supports no conclusion, it says so.

#Classification comes from the reporter

  • A report is a bug, a change request, or a question only when the reporter's own message says so. Console entries, network activity, and the pinned element can back up what the reporter said, but they never speak for them.
  • Greetings, test messages, and jokes are recognized for what they are, and the panel says so plainly.

#Straight answers

  • A non-report keeps its title and gets no AI priority. The reporter's words stay the reporter's words.
  • When triage can't tie a report to anything in the capture with confidence, the panel shows Nothing conclusive and leaves it at that.
  • A report is summarized from what it's about. Unrelated console warnings stay in the console tab, where they belong.

Triage output is generated from the capture. The panel labels it as AI and links the evidence it cites, so you can check its work.

1.3.1
Feature
  • Rhys Adams

A lighter widget, and Fix with agent

The widget your visitors download got smaller, and the debug panel hands reports straight to your coding agent.

  • Session replay loads on demand. The replay engine is the widget's heaviest piece. It ships as its own chunk, fetched the first time someone replays a session, so pages that never replay never pay for it.
  • Fix with agent lives in the debug panel's actions menu. It hands a report to your connected coding agent as one prompt, with the capture, repro steps, likely source, and generated test included.
  • Reports name your components. The component trail reads Reveal › Hero: your components, with framework internals like MotionDOMComponent filtered out. When no file and line were captured, the panel says how to get them: connect GitHub and Rebase locates the file in your repo, or add data-rb-source attributes.
  • Profile pictures accept WebP and JPEG uploads, and an updated avatar shows up in threads immediately.
1.3.0
Feature
  • Rhys Adams

One-click team invites, and connect your coding agent

Getting a team onto Rebase is now two emails and a click, and your coding agent can be wired up in the same sitting.

#Invites that sign people straight in

  • Invite teammates by email with a role (Team, Commenter, or Viewer) from setup or Settings → Members.
  • The invite email's link signs the invitee straight into the widget on your site. No code to copy, no second round-trip.
  • Anyone already on the project, or already invited, is caught before the email sends.

#Connect your agent

  • Pick Claude Code, Cursor, VS Code, or Windsurf. Rebase mints a scoped token and hands you the exact configuration for it, ready to copy.
  • The token is shown once, at mint time, like it should be.
  • Once connected, your agent can pull a report's full capture: repro steps, console, network, and the pinned element. No re-typing what went wrong.
1.2.1
Fix
  • Rhys Adams

Jira and Asana badges, and dead-click detection

Linked badges for Jira and Asana pushes, and dead-click detection that accounts for continuous animation.

  • Pushing a ticket to Jira shows its key as a badge in the thread, linking straight to the issue.
  • Pushing a ticket to Asana shows a badge in the thread and records the linked task on the ticket. An Asana task has no short key, so its badge is labelled by provider rather than by reference.
  • Dead-click detection discounts continuous repainting — a product tour, a ticker, a spinner — when judging whether the page responded, so clicks on inert controls are flagged on animated pages.
1.2.0
Feature
  • Rhys Adams

Rebuilt repro steps

Repro steps are rebuilt: each step names the element it touched, typed input is recorded, and steps link back to the live page.

A rebuilt repro trail in the Rebase debug panel, each step naming the element it touched

#Step labels

  • Clicks resolve their visible label, accessible name, or image alt text, so an icon-only control reads as Clicked "Apply" instead of Clicked a button.
  • Typing records the field and its contents: Typed "SAVE20 " in "Discount code". Whitespace is preserved.
  • Paste is recorded separately from typing: Pasted "SAVE20 " in "Discount code".
  • Selects, checkboxes, and radios record the chosen value: Selected "Express" in "Shipping", Turned on "Subscribe".
  • Key presses record the field they landed in: Pressed Enter in "Discount code".
  • Tab switches and back/forward navigations appear in the trail.

#Typed values captured by default

Values in ordinary fields are now captured and shown in the repro trail. Previously all input values were masked.

Always masked, regardless of configuration: password, telephone, and hidden inputs; payment fields (autocomplete="cc-*"); one-time codes; and anything matched by your mask selectors or existing FullStory, Hotjar, Sentry, PostHog, or LogRocket markers. Captured values are also scanned for token and secret patterns. Raw values leave the page only inside a report the reporter submits; session-storage state and automatic error captures stay masked.

Set privacy.maskAllInputs: true in the widget configuration to restore the previous behavior.

#Interactive repro trail

  • Click a step to scroll to the element on the live page and highlight it. Missing elements are reported.
  • Hover a step to preview its element without scrolling. Arrow keys move between steps.
  • Each step exposes its CSS selector, structural attributes, and absolute timestamp on hover.
  • The report screenshot marks the exact point the reporter clicked.
  • A capture with no interactions shows an empty state in the Repro tab.

#Timeline consistency

  • Repeated interactions collapse into single entries: a typing burst is one step, repeated reloads read Page reloaded ×3, and duplicate blur events are removed.
  • The same rules apply to the timelines written into GitHub, Linear, Jira, and Asana issues, so the panel and the exported issue match.
  • Generated Playwright tests receive the captured selector for every step.
1.1.0
Feature
  • Rhys Adams

Automated Playwright regression tests

Any bug report can now generate a Playwright test from its captured steps.

Generating a Playwright test from a bug report in the Rebase debug panel

#Generate Playwright test

  • In the debug panel, open the actions menu at the top of any report and choose Generate Playwright test.
  • The spec is built from the captured session — the clicks, the typing, the page it happened on, and the element the reporter pinned — and walks the same path.
  • Steps target the element that was reported, using the selector recorded in the capture. Pages with test ids are targeted by test id.
  • The assertion covers what actually went wrong, so the test fails while the bug is there and passes once the fix lands.
  • Copy the spec or download it as a file.

Specs are written by AI from the captured session. Read one before it goes into your suite — treat it as a first draft rather than finished work.

#Duplicate detection

  • A new report that looks like an existing one is flagged to the reporter at the moment they submit.
  • Opening a report shows the other reports that were folded into it.
1.0.0
Release
  • Rhys Adams

Rebase 1.0

First public release. One script tag adds a reporting widget to any site: anyone can flag an element, and the report files into your tracker.

A bug report in Rebase, with the captured session shown in the debug panel beside it

#Capture

  • Flagging an element on the live page captures the session around it: the last actions, console entries, and network requests, merged into one time-ordered timeline.
  • Reports carry a screenshot from the moment of the click and a device and environment snapshot.
  • Dead clicks and rage clicks are detected and labelled.

#Triage

  • Every report arrives with a summary, a severity, and the suspected source, matched against the connected repo down to the file and line.
  • Repeat reports are detected and linked to the original instead of piling up as duplicates.

#Trackers

  • GitHub, Linear, Jira, and Asana are supported. Reports file themselves as structured issues in the right project.
  • Status syncs both ways — close the issue in the tracker and the report closes in Rebase.
  • Slack posts new and resolved tickets to a channel.

#Detected issues

Uncaught errors from real visitor sessions are collected and queued for review, with the same captured context attached as a reported issue.

#Threads and roles

Reports are pins on the live site. Each one opens a thread with mentions, and roles and invites control team access.

#Privacy

  • Everything typed is masked before it enters the capture buffer.
  • Password, card, and one-time-code fields are never captured at all.
  • Reports are scrubbed a second time server-side.
  • Every customer's data stays isolated to its own tenant.

#MCP server

The MCP server exposes full ticket context — console, network, steps, suspected source — to Claude Code, Cursor, or any MCP client.

#Install

Add the one-line script tag and claim the site with a meta tag. No API keys.

One script tag. Every report ready to fix.

Free forever on one site. No card, no extension, no dashboard to learn.