The support button can only be clicked by whoever is already holding the device #172

Closed
opened 2026-09-12 07:20:37 +00:00 by tiagoagueda · 1 comment
Owner

README.md and the wiki's Home.md carry a Buy me a coffee image linking to
https://buymeacoffee.com/tiagoagueda. It works in exactly one situation: somebody is
reading the page on the device they would pay from, and clicks.

That is not how most of these pages get seen. A README is read on a laptop, shown over a
shoulder, projected in a talk, pasted into a screenshot, printed onto a slide. In every one
of those the link is a picture of a button — visible, and unusable. A QR code is the same
link in a form a second device can pick up, which is the whole of the difference.

Replace the button image with the QR code, in the two places it appears:

  • README.md:35 — assets/support/buy-me-a-coffee.png
  • ../postulo.wiki/Home.md:32 — images/buy-me-a-coffee.png
  • ../postulo.wiki/_Sidebar.md:30 — a text link, and fine as it is; a sidebar has no room
    for a code and the page it points at will have one.

The asset exists already

~/job-hunter/qr-code.png — the official Buy Me a Coffee code, 3000×3000, black rounded
modules and the yellow cup logo inset, on white. Nothing needs generating. It wants
moving into assets/support/ and into the wiki's images/, not recreating.

Read back with a decoder, it carries:

https://www.buymeacoffee.com/tiagoagueda

The button beside it links to the same page without the www.. Same destination, two
spellings; pick one and use it in both places, so there is one string to fix if the handle
ever changes.

Size, because this code is fussier than most

Decoding it mechanically only succeeded when the master was reduced to about 375px. It
failed at 250px, at 500px, and at full size, with and without a threshold pass. A phone
camera is far more tolerant than a strict decoder — it has autofocus, many frames and the
error correction to spend — so this is not "the code is broken". It is a warning that the
stylised dot modules and the logo sitting over the middle leave less margin than a plain
code would.

Two things follow:

  • Render it near 300–400px, not the 44px the button occupies. A QR at button height
    scans from nothing.
  • Scan the committed file with an actual phone before closing this. A visual check
    proves nothing here, and the decoder disagreeing with itself across scales is exactly the
    case where it is worth doing.

Keep the white plate behind it. Forgejo, GitHub and the wiki all render the README on
either a light or a dark ground, and a transparent-background code disappears into one of
them.

Alt text is the only thing a screen reader or a text browser gets from this, so it names
the destination rather than describing a square.

What this must not become

README.md promises, a paragraph below the button:

nothing inside Postulo will ever ask you for money: no banner in the interface, no
prompt, no reminder on the dashboard. This is the only place the question is put.

The QR code goes where the button already is and nowhere else. Not a widget, not on the
dashboard, not in the footer of the application, not in the extension. This issue makes one
existing ask legible to a camera — it is not permission to add a second ask anywhere.

Also

  • assets/support/NOTICE.txt records where the current image came from; the replacement
    needs the same note, including that the code came from Buy Me a Coffee itself.
  • The wiki is its own repository, so its commit refs this issue (Refs postulo/postulo#N).
  • No new dependency. The code is committed as an asset; nothing at runtime draws it.
`README.md` and the wiki's `Home.md` carry a *Buy me a coffee* image linking to <https://buymeacoffee.com/tiagoagueda>. It works in exactly one situation: somebody is reading the page on the device they would pay from, and clicks. That is not how most of these pages get seen. A README is read on a laptop, shown over a shoulder, projected in a talk, pasted into a screenshot, printed onto a slide. In every one of those the link is a picture of a button — visible, and unusable. A QR code is the same link in a form a second device can pick up, which is the whole of the difference. Replace the button image with the QR code, in the two places it appears: - `README.md:35` — `assets/support/buy-me-a-coffee.png` - `../postulo.wiki/Home.md:32` — `images/buy-me-a-coffee.png` - `../postulo.wiki/_Sidebar.md:30` — a text link, and fine as it is; a sidebar has no room for a code and the page it points at will have one. ### The asset exists already `~/job-hunter/qr-code.png` — the official Buy Me a Coffee code, 3000×3000, black rounded modules and the yellow cup logo inset, on white. **Nothing needs generating.** It wants moving into `assets/support/` and into the wiki's `images/`, not recreating. Read back with a decoder, it carries: https://www.buymeacoffee.com/tiagoagueda The button beside it links to the same page **without** the `www.`. Same destination, two spellings; pick one and use it in both places, so there is one string to fix if the handle ever changes. ### Size, because this code is fussier than most Decoding it mechanically only succeeded when the master was reduced to about **375px**. It failed at 250px, at 500px, and at full size, with and without a threshold pass. A phone camera is far more tolerant than a strict decoder — it has autofocus, many frames and the error correction to spend — so this is not "the code is broken". It is a warning that the stylised dot modules and the logo sitting over the middle leave less margin than a plain code would. Two things follow: - Render it near **300–400px**, not the 44px the button occupies. A QR at button height scans from nothing. - **Scan the committed file with an actual phone** before closing this. A visual check proves nothing here, and the decoder disagreeing with itself across scales is exactly the case where it is worth doing. Keep the white plate behind it. Forgejo, GitHub and the wiki all render the README on either a light or a dark ground, and a transparent-background code disappears into one of them. Alt text is the only thing a screen reader or a text browser gets from this, so it names the destination rather than describing a square. ### What this must not become `README.md` promises, a paragraph below the button: > **nothing inside Postulo will ever ask you for money**: no banner in the interface, no > prompt, no reminder on the dashboard. This is the only place the question is put. The QR code goes where the button already is and nowhere else. Not a widget, not on the dashboard, not in the footer of the application, not in the extension. This issue makes one existing ask legible to a camera — it is not permission to add a second ask anywhere. ### Also - `assets/support/NOTICE.txt` records where the current image came from; the replacement needs the same note, including that the code came from Buy Me a Coffee itself. - The wiki is its own repository, so its commit refs this issue (`Refs postulo/postulo#N`). - No new dependency. The code is committed as an asset; nothing at runtime draws it.
Author
Owner

Landed on 0.3.0 as cfbd62446.

Also postulo.wiki@e8d9056. The size mattered: the first attempt shipped at 360px and decoded to nothing. A strict decoder reads the original at 300, 330, 375 and 440 and fails at 360, 400, 500 and above, so 330 ships — the one size that decoded under every resampling tried — with the reasoning in NOTICE.txt. A phone scan of the committed file is still worth doing; a strict decoder is stricter than a phone but not a substitute for one.

Landed on `0.3.0` as `cfbd62446`. Also `postulo.wiki@e8d9056`. **The size mattered:** the first attempt shipped at 360px and decoded to nothing. A strict decoder reads the original at 300, 330, 375 and 440 and fails at 360, 400, 500 and above, so 330 ships — the one size that decoded under every resampling tried — with the reasoning in `NOTICE.txt`. **A phone scan of the committed file is still worth doing**; a strict decoder is stricter than a phone but not a substitute for one.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Postulo/postulo#172
No description provided.