Documentation

Data and storage

Every piece of data the tools keep on your device or send to the site, with the exact names and limits.

This is the technical view. The binding text is the privacy policy.

Stored in your browser

The site sets no cookies. It uses localStorage for these keys. They stay on your device, and the site never receives them. Clear the site data in your browser to remove them.

KeyHoldsWritten when
themelight or darkYou pick a colour theme. Auto removes the key.
mps-cueson or offYou turn the vibration and chime cues on or off.
mps-install-dismissed1You close the install hint.
mps.drying.startedAtThe start time of the drying timerYou start the drying timer. It expires 17 hours later.
mps.drying.firedWhich timer alerts already playedA timer alert plays.
mps.checklist.v1The ticked steps of the wet phone checklistYou tick or reset a step.

Never sent

  • Microphone recordings. The clip stays in the memory of the page and is gone when you close or reload it.
  • Checklist ticks and drying timer times.
  • Your answers in the problem finder, except the result shown (as an anonymous event).

Anonymous events

The pages send small anonymous events to the site's own endpoint on Cloudflare. Each event holds its name, the page path, the path of the previous page on this site (if any) and a few short fields. Text values are cut to 64 characters, and one event is at most 1 KB. Events hold no IP address, no browser type, no identifier and no text that you type. The server ignores events from known bots and deletes events after 90 days.

EventGroupFields kept
page_viewPages
page_exitPagescroll, secs
tool_startTooltool
tool_finishTooltool, outcome
next_clickPagefrom, to, after
tool_successTooltool, test, answer, outcome, before, session
tool_errorToolstage, tool
cycle_completeToolcycle
quiz_startToolnone
quiz_resultToolresult
affiliate_clickOtherprogram, placement, tier
checklist_tickToolnone
drying_timer_startToolnone
drying_alertToolat
shareOthermethod
install_promptOtheraction, kind, outcome
voice_sampleToolnone
review_openOthertool, outcome, rating
review_submitOthertool, outcome, rating

The server keeps only the fields in this table and drops all others.

The site also uses Umami Cloud to count page views and the same events. The Umami script loads only when the page is idle, sets no cookies and stores nothing on your device. Its servers receive your IP address with each request; see the privacy policy.

Outcome reports ("did it work?")

After a tool run you can send a short report. A person reads each report before it is published.

FieldRequiredLimit
ToolYesWater eject, speaker check or microphone test
ResultYesWorked, partly or no change
Display nameYes40 characters
Phone modelNo60 characters
NoteNo500 characters
Star ratingNo1 to 5

The report is stored with its time and a review status: pending, approved or rejected. Only approved reports appear on the site. A report that is not approved is deleted after 90 days. Reports store no email address, no IP address and no browser type.

Contact form

FieldRequiredLimit
NameYes80 characters
EmailYes120 characters
MessageYes10 to 2000 characters
Page you wrote fromNo128 characters

Messages are stored in the site's database on Cloudflare and deleted after 12 months.

Against spam, both forms use hidden fields, a daily limit per visitor counted with a one-way code made from the IP address (deleted the next day), and a Cloudflare Turnstile check from the second message in a day.

Offline cache

  • A service worker keeps copies of site files in the browser cache "mps-v3", so pages you visited work without a connection.
  • On the first visit it saves the home page, the silent audio track, the web app manifest and the app icon.
  • Pages: it asks the network first. After 4 seconds without an answer, or offline, it shows the saved copy, or the home page if that page was never saved.
  • Script and style files with a version in their name: it uses the saved copy first and keeps the newest 60 files.
  • Other files, such as images and audio: it shows the saved copy and updates it in the background.