WIP: Draft: Portal UX: terms disclosure + consent on EVM/Terra sign pages #19

Closed
PlasticDigits wants to merge 0 commits from 2-portal-ux-show-terms-text-and-consent-on-evm-terra-classic-sign-pages into main
PlasticDigits commented 2026-08-10 00:50:29 +00:00 (Migrated from gitlab.com)

Summary

Closes #2. EVM and Terra Classic sign pages now show the full latest terms text before wallet interaction, with a consistent checkbox consent gate.

  • Shared web/src/signShell.ts used by /sign/evm and /sign/terra-classic
  • On load: fetch getTermsLatest + getTermsContent once; show version + effective date + scrollable body
  • Consent gate: Connect & sign disabled until terms load successfully and the user checks I have read and agree to the Terms & Conditions
  • Terms rendered via text nodes only (no innerHTML)
  • Clear loading / error states; polite aria-live status region
  • After wallet connect, if signed_latest already, show success without re-signing
  • Docs/invariants: README, skills/portal-sign-disclosure/SKILL.md, gap analysis crosslinks
  • Pin broken ox pkg.pr.new lockfile entry via npm override so installs resolve

Out of scope (per issue): Solana / Telegram sign pages, bot copy, redesign/i18n/multi-wallet.

Checkbox only (not scroll-to-bottom). CTA stays disabled until:

  1. Terms metadata + full text load successfully, and
  2. User checks the consent checkbox.

UI gate is notice/consent UX, not auth — server still requires a valid wallet signature.

Test plan

  • Unit: web/src/signShell.test.ts (XSS-as-text, consent enable, load error)
  • Unit suite: npm run test:web (11 passed)
  • E2E: cd web && npm run test:e2e (12 passed, retested)
  • Manual: /sign/evm?property=cl8y.com and /sign/terra-classic?property=cl8y.com show current terms after sync
  • Manual: CTA disabled until checkbox; then mock/real wallet sign works
  • Manual: long terms scrollable at mobile width
  • Confirm Solana/Telegram pages unchanged

Acceptance criteria checklist

  • EVM + Terra Classic display full latest terms before wallet interaction
  • Version label + effective date visible near terms
  • Terms rendered safely (no HTML injection)
  • User cannot start Connect & sign without consent gate (documented above)
  • Loading and error states for terms fetch are clear
  • EVM e2e passes; sign-page e2e asserts terms visibility + gate
  • Solana/Telegram not required (postponed)

Closes #2

## Summary Closes #2. EVM and Terra Classic sign pages now show the **full latest terms text** before wallet interaction, with a consistent **checkbox consent gate**. - Shared `web/src/signShell.ts` used by `/sign/evm` and `/sign/terra-classic` - On load: fetch `getTermsLatest` + `getTermsContent` once; show version + effective date + scrollable body - **Consent gate:** Connect & sign disabled until terms load successfully **and** the user checks *I have read and agree to the Terms & Conditions* - Terms rendered via text nodes only (no `innerHTML`) - Clear loading / error states; polite `aria-live` status region - After wallet connect, if `signed_latest` already, show success without re-signing - Docs/invariants: README, `skills/portal-sign-disclosure/SKILL.md`, gap analysis crosslinks - Pin broken `ox` pkg.pr.new lockfile entry via npm override so installs resolve **Out of scope (per issue):** Solana / Telegram sign pages, bot copy, redesign/i18n/multi-wallet. ## Consent gate (for reviewers) Checkbox only (not scroll-to-bottom). CTA stays disabled until: 1. Terms metadata + full text load successfully, and 2. User checks the consent checkbox. UI gate is notice/consent UX, not auth — server still requires a valid wallet signature. ## Test plan - [x] Unit: `web/src/signShell.test.ts` (XSS-as-text, consent enable, load error) - [x] Unit suite: `npm run test:web` (11 passed) - [x] E2E: `cd web && npm run test:e2e` (12 passed, retested) - [ ] Manual: `/sign/evm?property=cl8y.com` and `/sign/terra-classic?property=cl8y.com` show current terms after sync - [ ] Manual: CTA disabled until checkbox; then mock/real wallet sign works - [ ] Manual: long terms scrollable at mobile width - [ ] Confirm Solana/Telegram pages unchanged ## Acceptance criteria checklist - [x] EVM + Terra Classic display full latest terms before wallet interaction - [x] Version label + effective date visible near terms - [x] Terms rendered safely (no HTML injection) - [x] User cannot start Connect & sign without consent gate (documented above) - [x] Loading and error states for terms fetch are clear - [x] EVM e2e passes; sign-page e2e asserts terms visibility + gate - [x] Solana/Telegram not required (postponed) Closes #2
PlasticDigits (Migrated from gitlab.com) closed this pull request 2026-08-10 00:51:08 +00:00
PlasticDigits commented 2026-08-10 00:51:11 +00:00 (Migrated from gitlab.com)

Closing: --related-issue created an empty issue branch instead of fix/issue-2-sign-page-terms. Replacing with correct source branch MR.

Closing: --related-issue created an empty issue branch instead of fix/issue-2-sign-page-terms. Replacing with correct source branch MR.
PlasticDigits commented 2026-08-25 07:04:39 +00:00 (Migrated from gitlab.com)

mentioned in issue #12

mentioned in issue #12

Pull request closed

Sign in to join this conversation.
No reviewers
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
code/cl8y-ecosystem-legal!19
No description provided.