Skip to content

publish: signed Publisher Release Agreement at submit time#40

Merged
TeoSlayer merged 1 commit into
mainfrom
feat/publisher-release-agreement
Jun 21, 2026
Merged

publish: signed Publisher Release Agreement at submit time#40
TeoSlayer merged 1 commit into
mainfrom
feat/publisher-release-agreement

Conversation

@Alexgodoroja

@Alexgodoroja Alexgodoroja commented Jun 21, 2026

Copy link
Copy Markdown
Collaborator

What & why

Publishers submit their apps through the publish wizard, but there was no point
at which they granted Pilot Protocol the rights to list them or released us from
claims over that use. This adds a release form the publisher signs at submit
time
— the very end of the flow, gating the Submit button.

In plain terms, by signing the publisher:

  1. confirms they have the right to publish the app,
  2. grants Pilot Protocol a license to use their name and the app's name to
    list and promote it in the app store and on the website, and
  3. releases us and covenants not to sue over that authorized use.

Changes

  • New legal page /publisher-agreement — the full Publisher Release
    Agreement: a non-exclusive name/marks license grant plus a release & covenant
    not to sue, with the usual reps/warranties, indemnity, and Delaware governing
    law. Styled to match /terms and /aup.
  • Publish wizard — Review step gains a Release agreement card: a typed
    full legal name (the electronic signature) and an agree checkbox with
    a link to the full agreement. The Submit button stays disabled until both
    are provided; doSubmit re-checks them as the authoritative guard.
  • Submission payload now carries release { agreement_version, signer_name, agreed, signed_at } so the signed acceptance can be recorded server-side.
  • Footer (Legal column), sitemap.xml.ts, the publish intro requirements, and
    the /plain/publish machine twin updated to match.

Server note

The browser flow posts to the separate publish-api server (not in this repo).
Go's encoding/json ignores unknown fields by default, so the added release
object is backward-compatible — but to actually persist the signed
acceptance, the publish-api submit handler needs to read and store
release.{signer_name,agreed,agreement_version,signed_at}. Flagging for a
follow-up there.

Verification

  • npm run check:plain — passes (legal pages intentionally have no plain twin;
    guard still green).
  • npm run build — 190 pages, /publisher-agreement builds, sitemap includes
    it at priority 0.7.
  • Drove the form headless: Submit is disabled on arrival, stays disabled with
    only the name or only the checkbox, enables with both, and disables again
    on uncheck. Signature persists across reload and shows live in the review
    table.

Add a release form to the final step of the publish wizard. Before an app
can be submitted, the publisher signs a short release that (1) confirms they
have the right to publish, (2) grants Pilot Protocol a license to use their
name and the app's name to list and promote it in the app store and on the
website, and (3) releases us from claims arising from that authorized use.

- New legal page /publisher-agreement with the full agreement (name/likeness
  license grant + covenant not to sue), styled to match /terms and /aup.
- Review step gains a Release agreement card: a typed full-legal-name
  signature and an agree checkbox. The Submit button stays disabled until
  both are provided, and doSubmit guards on them as the authoritative check.
- Submission payload carries release { agreement_version, signer_name,
  agreed, signed_at } so the server can record the signed acceptance.
- Footer, sitemap, intro requirements, and the /plain/publish twin updated.
@github-actions

Copy link
Copy Markdown

🚀 Preview deployed to Cloudflare Pages

  • Commit deploy URL: https://91205f8c.pilotprotocol.pages.dev
  • Branch alias: https://feat/publisher-release-agreement.pilotprotocol.pages.dev (may take ~30s to propagate)
  • Commit: ef1e0eb8f767e679ed7d79be9d92657719392b6d

@TeoSlayer TeoSlayer merged commit b1feee2 into main Jun 21, 2026
2 checks passed
@TeoSlayer TeoSlayer deleted the feat/publisher-release-agreement branch June 21, 2026 10:51
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