Skip to content

feat(landing): LANDING frame — white theme, editable hero, drops generator#1

Open
devclone20 wants to merge 10 commits into
mainfrom
landing-frame-white
Open

feat(landing): LANDING frame — white theme, editable hero, drops generator#1
devclone20 wants to merge 10 commits into
mainfrom
landing-frame-white

Conversation

@devclone20

@devclone20 devclone20 commented Jun 20, 2026

Copy link
Copy Markdown
Owner

LANDING frame — rascunho de design

Primeira Landing pública do CLONE FRAME, a herdar a chrome de terminal dos frames.

Mudanças

  • Tema branco por defeito (texto preto/cinza); toggle para dark mantido.
  • Conceito iNFT simplificado — agente + NFT são um único token; removido o copy de marketing e a cadeia confusa "= chave = cofre".
  • Imagem do herói editável — slot de upload (o utilizador escolhe a sua imagem).
  • Drops — botão "Generate a drop" que desbloqueia o acesso aos tools da CLONE FRAME dentro da Venice (builtinvenice.ai).
  • Staking 100k → 10k iCLONE (widget + README).
  • Removido o link "What it is" da navegação.

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 FRAME mint-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.

  • LANDING.widget: new self-contained landing page with dark/light toggle, file-upload hero slot, smooth-scroll nav, and section cards for Frames and Economy. sendPrompt guard and innerHTML image-slot patterns flagged in prior review threads.
  • iCLONE FRAME.widget: new mint-studio widget with collapsible sidebar, code-preview IDE (Solidity / deploy.ts / metadata.json tabs), mock wallet panel, and full Settings view. Contains unguarded sendPrompt calls in the Security/Danger-zone settings rows and user-controlled inputs injected directly into innerHTML in icMeta and icMint.
  • README.md + docs/: staking threshold reduced to 10k, frame sequence renumbered, and new SVG FUTURES diagrams (Harness, Game Over, ACP Troubleshooter) added.

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

Filename Overview
frames/LANDING.widget New public landing frame with white theme, editable hero image slot, and sendPrompt-gated CTAs. Core layout and JS logic are sound; prior review already captured the sendPrompt guard and innerHTML image-slot concerns.
frames/iCLONE FRAME/iCLONE FRAME.widget New mint-studio widget with sidebar nav, code-preview tabs, mock wallet, and Settings panel. Contains unguarded sendPrompt calls in Settings and user-controlled input injected directly into innerHTML in icMeta/icMint.
README.md Staking threshold updated from 100k to 10k iCLONE; frame sequence and directory listing restructured. The numbered file listing in the README does not match the unnumbered filenames committed to frames/ (prior review).
frames/iCLONE FRAME/iNFT Configuration/BACKGROUND.widget New background/layer configurator widget. Renders dynamic gallery and metadata via innerHTML; image src values come from FileReader data URLs (safe). State is entirely in-memory.
frames/iCLONE FRAME/iNFT Configuration/SILUETAS.widget New silhouette/layer picker widget added as part of the iNFT Configuration sub-frame. Mostly static SVG layer selection UI with no notable logic issues.
docs/blueprint-construir.md Documentation-only update to the build blueprint; no code changes.

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
Loading
%%{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 --> M
Loading

Reviews (2): Last reviewed commit: "docs(futures): add GAME OVER arena + dar..." | Re-trigger Greptile

aigenesis20 and others added 9 commits June 20, 2026 01:59
…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>
Comment thread frames/LANDING.widget
Comment on lines +204 to +209
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'});
};
})();

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 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.

Suggested change
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(){};}
})();

Fix in Claude Code

Comment thread frames/LANDING.widget
Comment on lines +197 to +201
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>';
};

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 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.

Suggested change
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!

Fix in Claude Code

Comment thread README.md
Comment on lines 39 to +44
- 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.**

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 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.

Fix in Claude Code

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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants