feat(landing): LANDING frame — white theme, editable hero, drops generator#1
feat(landing): LANDING frame — white theme, editable hero, drops generator#1devclone20 wants to merge 10 commits into
Conversation
…s generator - New LANDING.widget: white theme default (black/grey text), dark toggle kept - Simplified iNFT concept (agent + NFT = one token); removed marketing copy - Hero image is now a customisable upload slot - Drops section: "Generate a drop" button (unlocks CLONE FRAME tools in Venice) - Staking lowered 100k -> 10k iCLONE (widget + README) - Removed "What it is" nav link Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…tion - All blue accents -> grey (text, icons, buttons, hero figure, split bar) - Removed Login button (presentation-only site) - Renamed "IMAGE BANK" -> "iNFT Configuration" (landing card + generator label + README) - Hero headline -> "Automate any tasks with your agent iCLONE." Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Economy section now reflects PROJECT revenue, not a creator/mint split - 30% of all CLONE FRAME revenue -> on-chain reserves: 10% BTC (buy + reserve staking), 10% VIRTUALS (reserve staking), 10% iCLONE (buyback & burn); 70% funds development - Removed the phrase "3x10% split" everywhere (landing, iCLONE FRAME, code comments) - README: added project economy / reserves section - Reordered: how it earns -> where revenue goes Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Headline: "Automate any tasks with your iCLONE." - Tagline: "Automate, tokenise and sell your iNFT clone." Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Concept fix: an iNFT is an AI agent with a built-in NFT (NOT "one token" / not "fused into a token"); iCLONE is one category of iNFT - "Four Frames" -> "Clone Frames"; now 3 surfaces - iNFT Configuration folded into iCLONE FRAME (no longer a separate Frame) - Presentation-stage framing: "building in public" - Reworked "what it is" cards: automates / NFT built in / yours to trade Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Hero primary CTA -> "Generate a drop" with caption "Generate a drop to access the frames." - iCLONE meta: "a category of iNFT" -> "works for you" - "what it is": iCLONE described as your agent that works for you Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…CLONE FRAME - LANDING: removed "Automate any tasks…" headline; tagline is now the H1 - frames/ is now an isolated folder with only the frames - iCLONE FRAME is a folder containing its widget + iNFT Configuration/ (was top-level "gerador de banco de nft imagem") - README structure updated Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Opens a living FUTURES section in the README with a clear title and description of the next proposal (The Harness: autonomous agents that never go dormant) and five dark-on-light diagrams: co-planning, the Harness loop, the crew, moving the market, and an ACP Troubleshooter built from 26 real production issues (E1-E26). Kept in sync with the whitepaper (CLONE FRAME.html). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
| window.cfGo=function(s){ | ||
| var map={frames:'sec-frames',econ:'sec-econ'}; | ||
| var el=document.getElementById(map[s]); | ||
| if(el) el.scrollIntoView({behavior:'smooth',block:'start'}); | ||
| }; | ||
| })(); |
There was a problem hiding this comment.
All interactive buttons call
sendPrompt(...) directly, but sendPrompt is never declared inside the widget and has no guard. Outside the Venice/Claude host environment the first button press throws ReferenceError: sendPrompt is not defined, silently breaking all CTA and navigation links. A no-op fallback keeps the widget inert but non-crashing when previewed standalone.
| window.cfGo=function(s){ | |
| var map={frames:'sec-frames',econ:'sec-econ'}; | |
| var el=document.getElementById(map[s]); | |
| if(el) el.scrollIntoView({behavior:'smooth',block:'start'}); | |
| }; | |
| })(); | |
| window.cfGo=function(s){ | |
| var map={frames:'sec-frames',econ:'sec-econ'}; | |
| var el=document.getElementById(map[s]); | |
| if(el) el.scrollIntoView({behavior:'smooth',block:'start'}); | |
| }; | |
| if(typeof sendPrompt==='undefined'){window.sendPrompt=function(){};} | |
| })(); |
| r.onload=function(e){ | ||
| var s=document.getElementById('cfslot'); | ||
| s.classList.add('has'); | ||
| s.innerHTML='<img src="'+e.target.result+'"/><div class="slothint"><i class="ti ti-photo-edit" style="font-size:9px"></i> change image</div>'; | ||
| }; |
There was a problem hiding this comment.
The image preview is built by concatenating the
FileReader data URL directly into innerHTML. While readAsDataURL produces base64 output that cannot carry HTML metacharacters, creating DOM nodes via string concatenation is fragile as a pattern and will break if this function is ever extended to accept a URL (e.g. a remote image URL) that does contain quotes or angle brackets. Using document.createElement and setting src directly is safer and more explicit.
| r.onload=function(e){ | |
| var s=document.getElementById('cfslot'); | |
| s.classList.add('has'); | |
| s.innerHTML='<img src="'+e.target.result+'"/><div class="slothint"><i class="ti ti-photo-edit" style="font-size:9px"></i> change image</div>'; | |
| }; | |
| r.onload=function(e){ | |
| var s=document.getElementById('cfslot'); | |
| s.classList.add('has'); | |
| var img=document.createElement('img'); | |
| img.src=e.target.result; | |
| var hint=document.createElement('div'); | |
| hint.className='slothint'; | |
| hint.innerHTML='<i class="ti ti-photo-edit" style="font-size:9px"></i> change image'; | |
| s.innerHTML=''; | |
| s.appendChild(img); | |
| s.appendChild(hint); | |
| }; |
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
| - Arte 100% on-chain (SVG determinístico). Rarity tiers: `rare` · `superrare` · `iclone`. | ||
|
|
||
| ## Receita | ||
| ## OG PASS — cartão de acesso | ||
|
|
||
| O **OG PASS** é um **cartão de acesso on-chain (NFT) na Base** — a chave do **HUB** e do ecossistema CLONE FRAME. **Coming soon.** | ||
|
|
There was a problem hiding this comment.
Naming convention mismatch between README and repo
The directory listing documents the canonical files as 1 - LANDING.widget, 2 - PLAZA FRAME.widget, etc., but the file actually committed in this PR is frames/LANDING.widget (no number prefix). Anyone following the README to sync from ~/Desktop/Widget Design/ will look for numbered files that don't exist in the repo, and contributors grepping the frames/ directory won't find the names listed here. Either rename the committed file to match the convention or update the listing to reflect the real names.
Adds the second FUTURES proposal — GAME OVER: a battle arena where iNFT agents play simple graphic games (Tic-Tac-Toe, Connect Four, Pong, Rock-Paper-Scissors) head-to-head, both sides fund a prize pool, everyone watches live, and the winner takes it. Five diagrams: match loop, the games, fairness safeguards, prize pool + Glicko-2 ladder, and the flywheel. Also darkens the shared background across all FUTURES diagrams for a softer, more legible set. Kept in sync with the whitepaper (CLONE FRAME.html). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
LANDING frame — rascunho de design
Primeira Landing pública do CLONE FRAME, a herdar a chrome de terminal dos frames.
Mudanças
Ficheiros
frames/LANDING.widget(novo)README.md(staking 10k)🤖 Generated with Claude Code
Greptile Summary
This PR introduces the first public LANDING frame for Clone Frame with a white default theme, an editable hero image slot, and a "Generate a drop" CTA that gates access to Venice tools. It also adds the full
iCLONE FRAMEmint-studio widget, updates the staking requirement from 100k to 10k iCLONE across README and the widget, and bundles SVG diagram assets for the FUTURES documentation section.sendPromptguard andinnerHTMLimage-slot patterns flagged in prior review threads.sendPromptcalls in the Security/Danger-zone settings rows and user-controlled inputs injected directly intoinnerHTMLinicMetaandicMint.Confidence Score: 5/5
Safe to merge — the changes are design-prototype widgets with no backend, no persistent storage, and no production deployment path in this PR.
All changed files are self-contained UI mockup widgets and documentation. The JavaScript is client-side only with no data persistence, no API calls, and no cross-user surface. The two inline patterns flagged (unguarded sendPrompt in the Settings panel and user-input injected into innerHTML in icMeta/icMint) are limited to the widget's own transient DOM and do not cross trust boundaries in the current design-prototype context.
frames/iCLONE FRAME/iCLONE FRAME.widget — the icMeta and icMint functions should be hardened before any copy of this code is used in a context with persistence or shared state.
Important Files Changed
Flowchart
%%{init: {'theme': 'neutral'}}%% flowchart TD A([User opens LANDING.widget]) --> B{Theme toggle} B -->|cfTheme 0| C[White mode] B -->|cfTheme 1| D[Dark mode] A --> E[Click hero slot] E --> F[File picker opens] F --> G{File selected?} G -->|yes| H[FileReader.readAsDataURL] H --> I[cfImg: slot.innerHTML = img tag] G -->|no| E A --> J[Nav link: Frames / Economy] J --> K[cfGo: scrollIntoView smooth] A --> L[CTA: Generate a drop] L --> M{sendPrompt defined?} M -->|Venice host| N[Host handles prompt] M -->|standalone| O[ReferenceError thrown] A --> P[Frame card clicked] P --> M A --> Q[Footer: Venice link] Q --> M%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%% flowchart TD A([User opens LANDING.widget]) --> B{Theme toggle} B -->|cfTheme 0| C[White mode] B -->|cfTheme 1| D[Dark mode] A --> E[Click hero slot] E --> F[File picker opens] F --> G{File selected?} G -->|yes| H[FileReader.readAsDataURL] H --> I[cfImg: slot.innerHTML = img tag] G -->|no| E A --> J[Nav link: Frames / Economy] J --> K[cfGo: scrollIntoView smooth] A --> L[CTA: Generate a drop] L --> M{sendPrompt defined?} M -->|Venice host| N[Host handles prompt] M -->|standalone| O[ReferenceError thrown] A --> P[Frame card clicked] P --> M A --> Q[Footer: Venice link] Q --> MReviews (2): Last reviewed commit: "docs(futures): add GAME OVER arena + dar..." | Re-trigger Greptile