Community limits on index and docs come from tiers.js - #354
Merged
Conversation
index.html, docs.html and docs/api.md sold the free Community plan as "10 uploads per hour". That number is ANON_RATE_PER_HOUR, the per-IP ceiling on POST /v2/anon-inbound, an endpoint deprecated 2026-05-28 with a sunset of 31 December 2026. It was never the limit of a logged-in Community account. The real caps are in relay/lib/tiers.js: transfers_month 10, file_mb 5, enforced in relay.js by the 402 monthly_transfer_quota_reached gate and the 413 "Max 5MB" check. The three pages now say what those enforce. site-claims test 11 reads the community row out of tiers.js and pins the sentences to it, and rejects any per-hour or per-day upload claim on a public page. pricing, parasign and parasend carry the same stale sentence and are excluded until #336 and #339 land.
This was referenced Sep 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The free Community plan was sold on three pages with a number that belongs to a different, retired thing.
10 uploads per hourisANON_RATE_PER_HOUR, the per-IP ceiling onPOST /v2/anon-inbound(relay/relay.js:4300-4312). That endpoint was deprecated on 2026-05-28 and carriesSunset: Wed, 31 Dec 2026. It has never been the limit of a logged-in Community account.The source of truth
relay/lib/tiers.js, thecommunityrow:transfers_monthrelay/relay.js:4594-4602,402 monthly_transfer_quota_reachedfile_mbrelay/relay.js:4550,413 Max 5MBsigns_monthview_ttl_msmax_viewsPer page
frontend/index.html (ParaSend tier list)
Community · 1 hour link expiry, burn on first read, 10 uploads per hourCommunity · 10 transfers a month, 5 MB per file, 1 hour link expiry, burn on first readfrontend/docs.html (FAQ, "How do I get a pgp_ API key?")
Community plan: 10 uploads/hour per IP, 1-hour TTL, burn-on-first-read.Community plan: 10 transfers a month, 5 MB per file, 1-hour TTL, burn-on-first-read.frontend/docs/api.md (Authentication)
- `pgp_` prefix — end user key (10 uploads/day free, no account needed)- `pgp_` prefix, end user key. Community plan: 10 transfers a month, 5 MB per file.10 uploads/daymatched nothing in the code at all, and "no account needed" was wrong too: apgp_key comes from/signup.The pin
tests/site-claims.test.mjs, test 11. It readstransfers_monthandfile_mbstraight out of thecommunityblock intiers.js, asserts the three pages state those numbers, and asserts the relay still enforces them (monthly_transfer_quota_reached, theMax ${...}MBcheck), so the pages are pinned to a constant that is actually load-bearing. It then scans every public page for anyN uploads per hour/dayphrasing and fails on it.Sabotage check,
10to20in index.html:And with the old sentence restored on both pages:
Per-minute claims are deliberately out of scope:
frontend/help/iot-integration.html(60/min, API) andfrontend/docs/self-hosting.md(10/min, nginx) have their own sources.pricing.html:249still says10 uploads per hour per IPand is excluded from the scan by name, with a comment saying to drop the exclusion once #336 and #339 land.parasign.htmlandparasend.htmlwere left alone as asked; neither carries the phrase today.Not touched
pricing.html, parasign.html, parasend.html, the nav generator, every head element.
Tests
links, seo-contract, ui-truthfulness, site-claims (11/11), frontend-loading-contract, csp-inline, cache-bust, eslint, static-sanity (10 green) all pass.