WhyTho

Every element on a page is a decision somebody made.

WhyTho pins the reasoning to the element itself. Turn it on over any page you can load, select something on desktop or on a phone, and write down why it is that way. The note carries the selector, the breakpoint it was taken at, and who made the call.

1

Same day plumbing repair in Waltham

Licensed, insured, and answering the phone at 6am.

1 SEO decided mobile 390px

H1 stays a service plus city string because the phrase carries the local demand. Marketing wanted the brand line here. It moves to the sub head instead.

main > section.hero > h1
Jake Labate

How it works

  1. Sign in and drag your bookmarklet to the bookmarks bar, or drop the script tag on a staging site.
  2. Load any page and start WhyTho. It runs inside the page rather than framing it, because almost every site refuses to be framed.
  3. Select an element. Click on desktop, press and hold on touch. The selector prefers meaning over position: an id, then a test hook such as data-testid, then a stable class path, and only then nth-of-type.
  4. Write the reasoning, pick a category and a status, and save. It goes to your account as you save it, signed with your name. There is no second step.
  5. Read, export or delete it later from any browser you sign in on.

Sharing

An organization holds teams, and a team holds people. A note written inside an organization is visible to every member, attributed to whoever wrote it and to their team. Notes written outside one stay private to the account that made them.

Only the author can edit or delete their own note. Organization admins can remove a whole page. People join by invite code rather than by email invitation.

Type @ in a note to tag a person or a team. Tagging a person puts the note in their inbox; tagging a team puts it in the inbox of everyone on it, marked with the team it came through. Someone who joins a team later inherits what that team was already tagged in.

Getting the notes out

Notes are queryable over a read only HTTP API, scoped by key to one workspace. Filter by site, path, category, status, author, team, free text or date, and page through the results. That covers feeding a dashboard, a CI check that fails when someone edits an element marked do not change, or a report, without anybody copying text by hand.

Create a key in the API tab of the app. Keys are stored as hashes and can be revoked.

What it does not do