Legal pages update, child safety, and marketplace seller acknowledgment#243
Merged
Legal pages update, child safety, and marketplace seller acknowledgment#243
Conversation
…nalytics provisions Comprehensive privacy policy update covering payment processing (Stripe, Lightning), marketplace activity, community-managed relays (The Garden, The Pantry), Cloudflare analytics, third-party wallets, international use, and user choices. Updated children's privacy to reflect 13+ general / 18+ marketplace eligibility. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New /child-safety route covering CSAE zero-tolerance policy, age requirements, architecture context, moderation practices, reporting workflows, NCMEC compliance, and marketplace child safety provisions. Linked from the prohibited conduct section of the Terms of Service. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…and label definitions Adds structured sections for disclosure labels (Sponsored, Boosted, Promoted), clarifies that promotion does not constitute endorsement of marketplace goods, adds disclosure integrity requirements and links to Sponsor Terms and ToS. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…r banner First-time sellers see an interstitial requiring ToS acceptance before creating a listing or store. Acceptance is stored in localStorage with timestamp + npub. Existing store edits skip the modal. Buyer-side banner on /market, /market/products, and kitchen detail pages warns that transactions are peer-to-peer with no Zap Cooking involvement. Dismissible per session via sessionStorage. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Deploying frontend with
|
| Latest commit: |
f34cd4d
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://1236f0b1.frontend-hvd.pages.dev |
| Branch Preview URL: | https://update-legal-pages-and-marke.frontend-hvd.pages.dev |
spe1020
pushed a commit
that referenced
this pull request
May 1, 2026
…only [refs #243] Audit follow-up on PR #370. The four sinks routing through sanitizeHTML all render in browser-side contexts, and Cloudflare Workers (production runtime) doesn't reliably support jsdom even with nodejs_compat — at best a heavy bundle, at worst an SSR runtime crash. Switch to plain `dompurify` and return empty on SSR rather than raw, which is strictly safer than the prior `browser ? sanitize : raw` patterns this PR replaced. Also adds a comment about the hook leak on DOMPurify's shared singleton so future imports of `dompurify` directly inherit the rel-link policy. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
spe1020
added a commit
that referenced
this pull request
May 1, 2026
…inks (#370) * security(dompurify): centralize sanitizer wrapper [refs #213 #243 #245 #247] Made-with: Cursor * security(dompurify): sanitize translated recipe HTML [refs #243] Made-with: Cursor * security(dompurify): sanitize share card HTML [refs #243] Made-with: Cursor * security(dompurify): make longform sanitizer SSR-safe [refs #243] Made-with: Cursor * security(dompurify): drop isomorphic-dompurify, sanitizer is browser-only [refs #243] Audit follow-up on PR #370. The four sinks routing through sanitizeHTML all render in browser-side contexts, and Cloudflare Workers (production runtime) doesn't reliably support jsdom even with nodejs_compat — at best a heavy bundle, at worst an SSR runtime crash. Switch to plain `dompurify` and return empty on SSR rather than raw, which is strictly safer than the prior `browser ? sanitize : raw` patterns this PR replaced. Also adds a comment about the hook leak on DOMPurify's shared singleton so future imports of `dompurify` directly inherit the rel-link policy. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: spe1020 <sethsager@Seths-MacBook-Air.local> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
spe1020
added a commit
that referenced
this pull request
May 1, 2026
…p, regression tests (#371) * security(dompurify): sanitize DM bubble output [refs #213] Made-with: Cursor * security(dompurify): sanitize mention composer output [refs #213] Made-with: Cursor * security(dompurify): bump dompurify [closes #213 #243 #245 #247] Made-with: Cursor * security(dompurify): add sanitizer regression tests [refs #213 #243 #245 #247] Made-with: Cursor * test(security): fix sanitize regression test typecheck harness Made-with: Cursor * test(security): address copilot review on sanitizer regression tests - Import sanitizeHTML at top of file for the 7 tests that don't need a fresh module evaluation. Down from 8 module re-imports + hook registrations per file run to 2, addressing the hook-accumulation concern raised in PR #371 review. - Preserve original Object.prototype descriptors for tagNameCheck / attributeNameCheck via getOwnPropertyDescriptor and restore them exactly (or Reflect.deleteProperty when originally absent), instead of unconditionally `delete`-ing in finally. - Same pattern for the SSR test's globalThis.window override: capture the full original descriptor and restore it precisely. - Inline rationale on why the prototype-pollution test does NOT need module re-evaluation (dompurify resolves CUSTOM_ELEMENT_HANDLING config at sanitize-call time, not at module init). --------- Co-authored-by: spe1020 <sethsager@Seths-MacBook-Air.local>
spe1020
added a commit
that referenced
this pull request
May 1, 2026
… advisories (#372) * security(dompurify): sanitize DM bubble output [refs #213] Made-with: Cursor * security(dompurify): sanitize mention composer output [refs #213] Made-with: Cursor * security(dompurify): bump dompurify [closes #213 #243 #245 #247] Made-with: Cursor * security(dompurify): add sanitizer regression tests [refs #213 #243 #245 #247] Made-with: Cursor * test(security): fix sanitize regression test typecheck harness Made-with: Cursor * test(security): address copilot review on sanitizer regression tests - Import sanitizeHTML at top of file for the 7 tests that don't need a fresh module evaluation. Down from 8 module re-imports + hook registrations per file run to 2, addressing the hook-accumulation concern raised in PR #371 review. - Preserve original Object.prototype descriptors for tagNameCheck / attributeNameCheck via getOwnPropertyDescriptor and restore them exactly (or Reflect.deleteProperty when originally absent), instead of unconditionally `delete`-ing in finally. - Same pattern for the SSR test's globalThis.window override: capture the full original descriptor and restore it precisely. - Inline rationale on why the prototype-pollution test does NOT need module re-evaluation (dompurify resolves CUSTOM_ELEMENT_HANDLING config at sanitize-call time, not at module init). * security: rewrite pnpm.overrides to use range floors [closes GHSA-2mjp-6q6p-2qxm GHSA-34x7-hfp2-rc4v GHSA-3v7f-55p6-f55p GHSA-4992-7rv2-5pvq GHSA-737v-mqg7-c878 GHSA-83g3-92jg-28cx GHSA-8qm3-746x-r74r GHSA-8qq5-rm4j-mr97 GHSA-9ppj-qmqm-q256 GHSA-cfw5-2vxh-hr84 GHSA-f23m-r3pf-42rh GHSA-f269-vfmq-vjvj GHSA-mwv9-gp5h-frr4 GHSA-qffp-2rhf-9h96 GHSA-qx2v-qp2m-jg93 GHSA-r5fr-rjxr-66jc GHSA-r6q2-hw4h-h46w GHSA-xxjr-mmjv-4gpg] Made-with: Cursor * security(overrides): tighten range floors to caret-bounded majors Address PR #372 copilot review: 1. Open-ended `>=X.Y.Z` floors could allow a future major release to resolve in during a lockfile regen, potentially breaking builds or runtime behavior. Convert all `pnpm.overrides` to `^X.Y.Z` to keep the security floor while pinning to the current major. Resolved versions in pnpm-lock.yaml are unchanged (tar@7.5.13, dompurify@3.4.2, picomatch@4.0.4, minimatch@10.2.5, etc.). 2. Aligns the dompurify override (`^3.4.2`) with the direct devDependency declaration so the lockfile importer specifier and package.json declaration are consistent — addresses the confusing `>=3.4.2` vs `^3.4.2` mismatch flagged on pnpm-lock.yaml. Verified: pnpm install clean, pnpm test 85/85 pass, pnpm run check 0 errors, pnpm run build succeeds, audit shows no regression. --------- Co-authored-by: spe1020 <sethsager@Seths-MacBook-Air.local>
spe1020
added a commit
that referenced
this pull request
May 1, 2026
* security(dompurify): sanitize DM bubble output [refs #213] Made-with: Cursor * security(dompurify): sanitize mention composer output [refs #213] Made-with: Cursor * security(dompurify): bump dompurify [closes #213 #243 #245 #247] Made-with: Cursor * security(dompurify): add sanitizer regression tests [refs #213 #243 #245 #247] Made-with: Cursor * test(security): fix sanitize regression test typecheck harness Made-with: Cursor * test(security): address copilot review on sanitizer regression tests - Import sanitizeHTML at top of file for the 7 tests that don't need a fresh module evaluation. Down from 8 module re-imports + hook registrations per file run to 2, addressing the hook-accumulation concern raised in PR #371 review. - Preserve original Object.prototype descriptors for tagNameCheck / attributeNameCheck via getOwnPropertyDescriptor and restore them exactly (or Reflect.deleteProperty when originally absent), instead of unconditionally `delete`-ing in finally. - Same pattern for the SSR test's globalThis.window override: capture the full original descriptor and restore it precisely. - Inline rationale on why the prototype-pollution test does NOT need module re-evaluation (dompurify resolves CUSTOM_ELEMENT_HANDLING config at sanitize-call time, not at module init). * security: rewrite pnpm.overrides to use range floors [closes GHSA-2mjp-6q6p-2qxm GHSA-34x7-hfp2-rc4v GHSA-3v7f-55p6-f55p GHSA-4992-7rv2-5pvq GHSA-737v-mqg7-c878 GHSA-83g3-92jg-28cx GHSA-8qm3-746x-r74r GHSA-8qq5-rm4j-mr97 GHSA-9ppj-qmqm-q256 GHSA-cfw5-2vxh-hr84 GHSA-f23m-r3pf-42rh GHSA-f269-vfmq-vjvj GHSA-mwv9-gp5h-frr4 GHSA-qffp-2rhf-9h96 GHSA-qx2v-qp2m-jg93 GHSA-r5fr-rjxr-66jc GHSA-r6q2-hw4h-h46w GHSA-xxjr-mmjv-4gpg] Made-with: Cursor * security(overrides): tighten range floors to caret-bounded majors Address PR #372 copilot review: 1. Open-ended `>=X.Y.Z` floors could allow a future major release to resolve in during a lockfile regen, potentially breaking builds or runtime behavior. Convert all `pnpm.overrides` to `^X.Y.Z` to keep the security floor while pinning to the current major. Resolved versions in pnpm-lock.yaml are unchanged (tar@7.5.13, dompurify@3.4.2, picomatch@4.0.4, minimatch@10.2.5, etc.). 2. Aligns the dompurify override (`^3.4.2`) with the direct devDependency declaration so the lockfile importer specifier and package.json declaration are consistent — addresses the confusing `>=3.4.2` vs `^3.4.2` mismatch flagged on pnpm-lock.yaml. Verified: pnpm install clean, pnpm test 85/85 pass, pnpm run check 0 errors, pnpm run build succeeds, audit shows no regression. * security: bump vite to ^5.4.21 [closes #235 #236] Made-with: Cursor * security: bump @sveltejs/kit [closes #106] Made-with: Cursor * chore: bump @sveltejs/adapter-cloudflare for vite 6 compat Made-with: Cursor * security: bump wrangler [closes #74] Made-with: Cursor * security: bump markdown-it to ^14.1.1 [refs #84 #86 — defensive timeout in follow-up] Made-with: Cursor * security: override js-yaml to patched line [closes #51] Made-with: Cursor * security: bump @sveltejs/adapter-vercel [closes #95] Made-with: Cursor * chore: migrate _routes.json config to adapter-cloudflare 7.x format Made-with: Cursor --------- Co-authored-by: spe1020 <sethsager@Seths-MacBook-Air.local>
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.
Summary
/child-safetypage with CSAE zero-tolerance policy, age requirements, architecture context, moderation practices, NCMEC compliance, and reporting workflows. Linked from ToS Section 4/market,/market/products, and kitchen detail pages warning that transactions are peer-to-peer. Dismissible per session via sessionStorageTest plan
/privacyrenders all 14 sections correctly/child-safetyrenders with proper headings, NCMEC links work/disclosurerenders with updated label definitions and linkszc_seller_ackrecord/market— buyer banner appears/market/products— banner stays dismissed🤖 Generated with Claude Code