Skip to content

copy: rename "Donation Button" to "Donate Button" across UI and docs - #14

Merged
pretyflaco merged 2 commits into
blinkbitcoin:mainfrom
designsats:copy/donate-button
Aug 20, 2026
Merged

pretyflaco merged 2 commits into
blinkbitcoin:mainfrom
designsats:copy/donate-button

Conversation

@designsats

@designsats designsats commented Aug 20, 2026 •

Copy link
Copy Markdown

The widget is called the Donate Button in product copy, but the repo said
"Donation Button" throughout. This renames the user-facing string everywhere it
appears, and stops at identifiers.

ab23734 (#9) made "Donation Button" consistent; this is the same sweep in the
other direction, now that the name has settled.

What changed

Commit 1 — copy across UI and docs (13 files, no behavior change)

  • index.html / 404.html: <title>, page and card headings, lead copy, and the
    og:/twitter: meta tags.
  • js/generator.js: the embed-snippet comments the generator emits
    (<!-- Blink Donate Button widget/script -->), kept in sync with the copy of that
    same snippet in README.md.
  • README / MULTILANG-README / ANALYTICS-README, the package.json description,
    and the *-test.html pages.

Commit 2 — invoice memo + version bump (payment-path; isolated for review)

The memo was the last payer-visible "donation button" string. The two receive paths
differ, and only one is actually affected:

  • Custodial: the memo is the invoice description the payer's wallet renders
    (lnInvoiceCreateOnBehalfOfRecipient and the USD variant), so payers now see
    <username> donate button.
  • Self-custodial (Spark): the memo is sent as the LUD-12 comment, while the
    description comes from the LNURL metadata server-side (Payment to <username>).
    That path's payer-visible text is unchanged by this PR, as it was before it.
    blink.sv advertises commentAllowed: 255, well above the memo length, so nothing
    is truncated.

Version 1.5.1 -> 1.5.2 plus the analytics widget_version, per AGENTS.md.

Deliberately NOT renamed

Renaming these would break live embeds or split analytics history:

Identifier Why it stays
donation-button.blink.sv (Pages path, all URLs) every embed in the wild loads its script from this path
blink-donation-button (package.json name) package identity
embedded_donation_button (analytics referral tag) renaming splits the metric's history

Acceptance requirements

  • Every user-facing "Donation Button" / "donation button" reads "Donate Button" /
    "donate button" — zero occurrences remain repo-wide.
  • The Pages path, package name and analytics referral tag are unchanged.
  • The embed snippet in README.md still matches the one js/generator.js emits.
  • No public API change: BlinkPayButton.init, its config options, the container-id
    contract and the success/QR DOM behavior are untouched.
  • Widget version header and analytics widget_version bumped together.
  • Custodial smoke: a real small donation shows <username> donate button as the
    invoice description in the payer's wallet.

Testing specs

Automated — 147 tests pass across 11 files, eslint clean (4 pre-existing
no-unused-vars warnings, untouched):

npm ci && npm test && npm run lint

The two memo assertions move with the change:

  • tests/blink-lnurl.spec.js — canonical getInvoiceFromLightningAddress
  • tests/widget-spark.spec.js — the inline-copy parity test

Manual — per AGENTS.md, payment-path changes want a real smoke:

  • spark-test.html against a self-custodial username. Expect the description to read
    Payment to <username> (LNURL metadata, unchanged by this PR) — the memo rides
    along as the LUD-12 comment.
  • A custodial username is the case that actually changes; expect
    <username> donate button in the payer's wallet. Not yet run — needs a
    maintainer with a custodial test account.

Not addressed here: npm run format currently fails on 11 files on main (including
files this PR never touches). CI runs npm ci && npm test, so it is green. Reformatting
belongs in its own PR.

Screenshots

image

designsats and others added 2 commits August 20, 2026 11:20
The widget is named "Donate Button" in product copy, but the repo said
"Donation Button" throughout. Rename the user-facing string across the
generator UI, the docs and the manual test pages.

- index.html / 404.html: <title>, page and card headings, lead copy, and
  the og:/twitter: meta tags.
- js/generator.js: the embed-snippet comments it emits
  (<!-- Blink Donate Button widget/script -->), kept in sync with the copy
  of that same snippet in README.md.
- README / MULTILANG-README / ANALYTICS-README, the package.json
  description, and the *-test.html pages.

Identifiers are deliberately untouched, since renaming them would break
live embeds or split analytics history: the donation-button.blink.sv Pages
path (every embed in the wild loads its script from there), the
blink-donation-button package name, and the 'embedded_donation_button'
referral tag.

Copy only, no behavior change. 147 tests pass; eslint clean.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Follow the UI rename through to the invoice memo, the last payer-visible
"donation button" string in the widget.

The two receive paths differ, and only one is actually affected:

- Custodial: the memo is the invoice description the payer's wallet
  renders (lnInvoiceCreateOnBehalfOfRecipient and the USD variant), so
  payers now see "<username> donate button".
- Self-custodial (Spark): the memo is sent as the LUD-12 comment, while
  the description comes from the LNURL metadata server-side
  ("Payment to <username>"). That path's payer-visible text is unchanged
  by this commit, as it was before it. blink.sv advertises
  commentAllowed: 255, well above the memo length, so nothing is
  truncated.

The memo assertions in the canonical helper test and the inline-parity
Spark test move with it.

Version 1.5.1 -> 1.5.2 plus the analytics widget_version, per AGENTS.md,
since this changes deployed behavior. No public API / DOM changes.
147 tests pass; eslint clean.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

@pretyflaco pretyflaco left a comment •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Custodial smoke test: PASSED ✅

Checked out the PR head (c1d2c7e), served the widget locally, and initialized it against the custodial test account pretyflaco (BTC wallet, resolved via accountDefaultWallet). The widget took the custodial path and produced an invoice via lnInvoiceCreateOnBehalfOfRecipient:

  • Invoice: lnbc10u1p4gwg2qpp539crdq2vch2hywj4wwlnm6aac4jg4v22fvf4c0yx4g6rggmdunyqdp8wpex2arevekxzcm0ypjx7mnpw3jjqcn4w36x7mscqzpuxqzuysp5xt4egkc43wk78p9l0g0jxkr74qnm7mx0wuj5uyprx4lelqmqnc9q9qxpqysgqyf2zzfcfxch7tvhw4qqpfrwnkwu9ex6cperf4akauuz7nev6cpk9muk2suy9ezxdcjc0sm55glaawavqz5ppkn7he7r2ee73zwkkc2sqjvzupv (1,000 sats, 15 min expiry)
  • Decoded BOLT11 description field: pretyflaco donate button — the new memo, exactly as intended
  • Rendered in Blink mobile (Send Bitcoin screen) as the note/label "pretyflaco donate button" — payer-visible string confirmed in a real wallet (screenshot below)
  • Analytics URL on the widget: widget_version=1.5.2, referral=embedded_donation_button (unchanged), script path unchanged
  • npm test on the PR branch: 147/147 passing across 11 files

This checks the last open acceptance item (custodial smoke). Approving.

Screenshot evidence:
donatebutton

@pretyflaco
pretyflaco merged commit b4a03fc into blinkbitcoin:main Aug 20, 2026
2 checks passed
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.

2 participants