Skip to content

Invite device reports via pre-filled GitHub issues - #3

Merged
mannes merged 1 commit into
mainfrom
device-report
Sep 24, 2026
Merged

mannes merged 1 commit into
mainfrom
device-report

Conversation

@mannes

@mannes mannes commented Sep 24, 2026

Copy link
Copy Markdown
Contributor

Brushlog is only confirmed on the Oral-B iO. This asks everyone else to tell us how their brush behaves, without getting in the way.

What the user sees

A dismissible, non-blocking toast (bottom right):

  • A brush that isn't an iO connects → "Brushlog is only confirmed on the Oral-B iO so far. Does your brush work? Tell us how it went". Asked once per model: dismissing or reporting is remembered in localStorage. It waits for GATT discovery so the report includes the service layout. An iO gets no toast.
  • The chooser is dismissed, or connecting fails → "Brush not in the list, or won't connect? Tell us which one". Dismissing hides it until the next cancel or failure.

Both open a pre-filled GitHub issue form in a new tab. The app sends nothing itself; the user reviews and submits on GitHub.

What's in the report

Connected: advertised name, model id / protocol / firmware, service and characteristic UUIDs with their properties, and the browser. No brushing data, no characteristic values, no raw frames. If we need a capture, we ask for the Diagnostics report in the thread.

Connection problem: the browser and the error message, if there was one.

Changes

  • .github/ISSUE_TEMPLATE/device-report.yml and connection-problem.yml (labels device report / connection problem, both created)
  • src/lib/report.ts builds the issue URLs; src/components/ReportToast.tsx shows the toast
  • useBrush exposes cancelled (the last connect ended with the chooser dismissed)
  • README: a paragraph under Compatibility

Testing

  • npm run typecheck and npm run build pass
  • Toast checked in desktop Chrome on the dev server, connected to a non-Oral-B device (unconfirmed case)
  • Needs a hardware check: an iO connection shows no toast; dismissing the chooser shows the connection-problem toast

The forms only resolve on main, so the pre-filled links fall back to the plain issue picker until this merges.

A dismissible toast, never in the way:
- a brush that isn't an iO (the one confirmed line) connects: asks once
  per model whether it works and opens the device-report issue form
  pre-filled with model id, protocol, firmware and the GATT layout. No
  brushing data, no characteristic values, no raw frames.
- the chooser is dismissed or connecting fails: offers the
  connection-problem form.
The app sends nothing itself; the user reviews and submits on GitHub.
@mannes
mannes merged commit a97a271 into main Sep 24, 2026
2 checks passed
@mannes
mannes deleted the device-report branch September 24, 2026 07:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant