Extension 0.9.0: share a result, redeem an invite, English only #12

Merged
kroshtan merged 1 commit from invites-share into main 2026-11-10 12:46:05 +00:00
Owner
  • Share this result: preview (POST /v1/shares/preview) then create (POST /v1/shares), no Authorization; link and delete code shown with copy buttons.
  • Have an invite?: redeem a code onto the signed-in account (POST /v1/invites/redeem); codes never stored.
  • Store listing: packs come with invites (28 / 56 / 112 checks).
  • English only: _locales, i18n.ts and the Dutch listing removed.
  • Fixed a race where a report and a share could overwrite each other's state.
  • Buying stays on the website's /checkout, which shows the invite codes once.

🤖 Generated with Claude Code

https://claude.ai/code/session_014HgVKRqhxEZCM6yP8io6fk

- Share this result: preview (POST /v1/shares/preview) then create (POST /v1/shares), no Authorization; link and delete code shown with copy buttons. - Have an invite?: redeem a code onto the signed-in account (POST /v1/invites/redeem); codes never stored. - Store listing: packs come with invites (28 / 56 / 112 checks). - English only: _locales, i18n.ts and the Dutch listing removed. - Fixed a race where a report and a share could overwrite each other's state. - Buying stays on the website's /checkout, which shows the invite codes once. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_014HgVKRqhxEZCM6yP8io6fk
Extension 0.9.0: share a result, redeem an invite; English only
All checks were successful
CI / check (pull_request) Successful in 1m2s
22877817ec
Share this result: under a finished check, the popup asks the API for a
preview of the public page (POST /v1/shares/preview) and shows it with the
server's notice; only "Share" makes it (POST /v1/shares). Both go without
Authorization, whatever the client holds, so the /r/<id> page names no
account. The link (Copy link) and the delete code (shown with what it's for,
Copy delete code) stay with the tab's result in session memory until the tab
moves on. Refusals (too old, forged, checkout page, not shareable, 429, off)
are explained in plain words; a failed share keeps the preview to retry. The
background checks and marks each step synchronously, so a double click sends
once; reports and shares no longer overwrite each other's state.

Have an invite?: in the popup's account section and on the settings page when
signed in, POST /v1/invites/redeem with the account's own sign-in. The code is
checked locally first, sent once and never stored; the server's reasons for a
refused code are shown as it words them, and an expired sign-in signs out.
The store listing says each pack comes with invites (25 + 1 invite of 3
checks, 50 + 2, 100 + 4); the codes themselves are shown once by the website's
checkout, where purchases happen.

English only: _locales (en, nl), chrome.i18n and the language switch are gone;
the text lives in the pages and code, the manifest's description is plain
text, the API is always asked for English, and the server's verdict text is
shown as it comes. The Dutch store listing is removed.

PRIVACY.md, the store listing and privacy practices describe shared results
(public, 90 days, no account attached, delete code) and invites (not linked
to the buyer). New CHANGELOG.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014HgVKRqhxEZCM6yP8io6fk
kroshtan deleted branch invites-share 2026-11-10 12:46:05 +00:00
Sign in to join this conversation.
No reviewers
No labels
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
kroshtan/unfret_extension!12
No description provided.