feat(legal): beta acknowledgement on generation and uploads; versioned Terms on native and web - #129
Merged
Merged
Conversation
…d Terms on native and web Owner request: a required beta acknowledgement before generating, the same before every upload, and the same term in the Terms of Service. - Generation popup (showIpfsPublicDisclaimerDialog, web + native, website and social): a second, separate required checkbox with the owner's wording; Agree needs both boxes. Native "retry generation" now shows it too (it skipped the popup entirely). - Upload popup (showBetaUploadDialog): same shape, upload wording, shown on every user-initiated upload action (once per batch). Web: home quick-upload tile (tap and drag-drop), category screens, cloud files, shelf file/photo/recording, collaboration add file, website asset import, NFT mint, share publicly (x2), automate attachment. Native: file browser upload and multi-select upload, enabling or running auto-sync, share publicly, Windows Explorer upload, shelf import and photo save, NFT mint, WhatsApp backup; the automate attachment's public-pin popup carries the upload wording. On web the popup follows the file picker: the picker must open inside the tap, or iOS Safari never shows it. Automatic uploads (auto-sync runs, share-intent drains, queue resume) are covered by the Terms, not a popup. - Terms: one shared text (lib/shared/legal/terms_content.dart) with a new "2. Beta Software and FULA Token" section; existing sections moved verbatim (checked mechanically), renumbered, last-updated date fixed. kTermsVersion = 2: native records the accepted version and UTC time and treats the old boolean as version 1, so every existing user re-accepts once. The web app had no Terms at all: it now shows the same gate (version and time in localStorage, fail-soft), and both settings screens link to the Terms; the web sign-in Terms checkbox links to the text. The Accept button also unlocks when the whole text fits on screen. Tests: 21 new (terms content and versioning, both dialogs, Terms screen); full suite 1110 passed. flutter build web (the Pages command) succeeds; the web gate verified in headless Chrome: gate, scroll unlock, stored version 2 + timestamp, no gate after reload. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AwMWmCivEpYTmmzzmjSTAf
Found in review: saving a Shelf note (web + native) or link (web) stores it in the cloud like any other Shelf item but skipped the beta upload notice. The owner chose the notice on every upload action. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AwMWmCivEpYTmmzzmjSTAf
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.
Owner request: a required beta acknowledgement before generating a website, the same before every upload, and the same term in the Terms of Service — for web and native.
Generation popup
showIpfsPublicDisclaimerDialog(web + native, website and social variants) gains a second, separate required checkbox:Agree needs both boxes. Native retry generation now shows the popup too (it previously skipped it).
Upload popup (every upload action, once per batch)
New
showBetaUploadDialog, same shape, required box:On web the popup comes after the file picker: the picker must open inside the tap or iOS Safari never shows it. Automatic uploads (auto-sync runs, share-intent drains, queue resume) are covered by the Terms, not a popup.
Terms of Service
lib/shared/legal/terms_content.dart) with a new "2. Beta Software and FULA Token" section; existing sections moved verbatim (checked mechanically against the old screen), renumbered; "Last updated" fixed (it said March 2026 while the terms take effect Sept 2026).kTermsVersion = 2. Native records the accepted version and UTC time and treats the old boolean as version 1 → every existing user re-accepts once ("Updated Terms of Service").Verification
flutter build webwith the Pages command succeeds.2+ timestamp → reload skips the gate.Not legal advice
No wording guarantees protection from lawsuits; this implements clickwrap consent (unticked required boxes, versioned acceptance record) — the text should be reviewed by a lawyer, in particular calling FULA integration "for testing and demo use" while generations are paid in FULA.
🤖 Generated with Claude Code
https://claude.ai/code/session_01AwMWmCivEpYTmmzzmjSTAf