🎨 Test Keep.mjs UI - Production Flow#
Date: February 13, 2026
Contract: v4 Staging on Mainnet (KT1ER1GyoeRNhkv6E57yKbBbEKi5ynKbaH3W)
✅ Configuration Status#
Your keep.mjs piece is currently configured for:
// From: system/public/aesthetic.computer/lib/keeps/constants.mjs
KEEPS_STAGING = true // Shows "STAGING V4" badges
DEFAULT_NETWORK = "mainnet" // Uses mainnet (not testnet)
Contract = "KT1ER1GyoeRNhkv6E57yKbBbEKi5ynKbaH3W" // v4 staging contract
This is PERFECT for testing! You're using:
- ✅ v4 contract (with royalties, pause, admin transfer)
- ✅ Mainnet (real XTZ, real objkt.com integration)
- ✅ Staging mode (shows version info, test-friendly)
🚀 User Flow: Mint a Keep via aesthetic.computer UI#
Step 1: Create or Pick a KidLisp Piece#
Option A: Create New Piece
- Go to https://aesthetic.computer
- Type a simple KidLisp piece:
(wipe "purple") (ink "yellow") (circle (wiggle width) (wiggle height) 60) - Press Enter to run it
- When it looks good, type:
save test-keep-1 - Note the $code generated (e.g.,
$xyz)
Option B: Use Existing $code
- Pick any existing cached KidLisp piece
- Examples:
$cow,$wand,$butterfly, etc.
Step 2: Navigate to Keep Piece#
Type in aesthetic.computer:
keep test-keep-1
Or with the $code:
keep $xyz
Expected: Keep UI loads showing:
- Preview of your KidLisp piece
- "STAGING V4" badge (orange/yellow)
- Contract address shown:
v4: KT1ER1Gy.. - "Keep This" button (or similar)
Step 3: Connect Your Wallet#
What you'll see:
- "Connect Wallet" button or prompt
- Options: Temple Wallet, Umami, Kukai, etc.
Action:
- Click "Connect Wallet"
- Choose your Tezos wallet (Temple recommended)
- Approve the connection in your wallet popup
- Wait for connection confirmation
Expected result:
- ✅ Wallet address shown in UI
- ✅ "Keep This" button becomes active
- ✅ Console shows: "🪙 KEEP: Wallet connected: tz1..."
Step 4: Review Mint Details#
Before minting, the UI should show:
- Piece name:
$xyz(or your piece name) - Network: "MAINNET (STAGING V4)"
- Contract:
v4: KT1ER1Gy..(clickable link) - Fee: 0 XTZ or 2.5 XTZ (depends on if you're admin)
- Preview: Animated thumbnail (if generated) or static preview
Check the browser console for detailed logs:
🪙 KEEP: Starting mint process for $xyz
🪙 KEEP: Network: mainnet, Contract: KT1ER1GyoeRNhkv6E57yKbBbEKi5ynKbaH3W
🪙 KEEP: Staging mode: true
Step 5: Start the Keep Process#
Click the "Keep This" or "Confirm" button.
What happens (automatic pipeline):
- ✓ Validate Piece - Checks $code exists
- ✓ Analyze Source - Parses KidLisp code
- ✓ Generate Preview - Creates thumbnail via Oven
- ✓ Bundle Assets - Packages HTML + metadata
- ✓ Upload to IPFS - Pinata upload
- ✓ Create Metadata - TZIP-21 JSON with royalties
- 👁️ Review & Confirm - Shows final details
- ✍️ Sign Transaction - Wallet popup
Watch the progress bar - each step shows:
- ⏳ Pending (gray)
- ⚡ Active (yellow/orange)
- ✅ Done (green)
- ❌ Error (red, if something fails)
Step 6: Sign the Transaction#
When you reach the "Sign Transaction" step:
What you'll see:
- Wallet popup (Temple/Umami/etc.)
- Transaction details:
- To:
KT1ER1GyoeRNhkv6E57yKbBbEKi5ynKbaH3W(contract) - Entrypoint:
keep - Amount: 0 XTZ (if you're admin) or 2.5 XTZ (if user)
- Fee: ~0.01-0.05 XTZ (network gas)
- To:
Action:
- Review the transaction details
- Click "Confirm" or "Sign" in your wallet
- Wait for transaction to broadcast
Expected:
- ✅ Wallet shows "Transaction submitted"
- ✅ UI shows operation hash:
opXXX... - ✅ Console logs: "🪙 KEEP: Transaction sent: opXXX..."
Step 7: Wait for Confirmation#
Tezos confirmation takes ~30 seconds (2 blocks).
What you'll see:
- Progress spinner or "Waiting for confirmation..." message
- Operation hash link (clickable to TzKT)
In console:
🪙 KEEP: Waiting for confirmation...
🪙 KEEP: Confirmed! Searching for token...
🪙 KEEP: Found token #X for KidLisp $xyz
Step 8: Mint Complete! 🎉#
Success screen shows:
- ✅ "Keep Minted!"
- Token ID: #0 (or next available)
- Network: MAINNET (STAGING V4)
- Contract: KT1ER1Gy... (clickable)
- Transaction: opXXX... (clickable to TzKT)
- Links:
- "View on objkt.com"
- "View in Wallet"
- "View Transaction"
Buttons to test:
- View on objkt.com → Opens
https://objkt.com/tokens/KT1ER1Gy.../X - Contract → Opens
https://tzkt.io/KT1ER1GyoeRNhkv6E57yKbBbEKi5ynKbaH3W - Transaction → Opens
https://tzkt.io/opXXX...
Step 9: Verify on TzKT#
Click the transaction link or visit:
https://tzkt.io/KT1ER1GyoeRNhkv6E57yKbBbEKi5ynKbaH3W
Check:
- ✅ Recent operations show your
keepcall - ✅ Status:
applied(success) - ✅ Sender: Your wallet address (tz1...)
- ✅ Token minted: Check storage for
next_token_id
Step 10: Verify on objkt.com#
Visit:
https://objkt.com/collection/KT1ER1GyoeRNhkv6E57yKbBbEKi5ynKbaH3W
Wait 1-5 minutes for objkt.com to index the token.
Then check:
- ✅ Token appears in collection
- ✅ Thumbnail displays (animated WebP if Oven was used)
- ✅ Name: "KidLisp $xyz" (or similar)
- ✅ Royalty info: 10%
- ✅ Creator: Your wallet address
Click on the token to see full metadata:
- Description
- Source code snippet
- Artifact URI (IPFS)
- Display URI (IPFS)
- Thumbnail URI (IPFS)
- Royalties (10% to your wallet)
🔍 What to Watch in Browser Console#
Enable browser console (F12) and watch for these logs:
Successful Mint Logs#
🪙 KEEP: Starting mint process for $xyz
🪙 KEEP: Network: mainnet, Contract: KT1ER1GyoeRNhkv6E57yKbBbEKi5ynKbaH3W
🪙 KEEP: Staging mode: true
🪙 KEEP: Wallet connected: tz1abc...
🪙 KEEP: Fetching piece: $xyz
🪙 KEEP: Source loaded (123 bytes)
🪙 KEEP: Thumbnail generated: https://oven.aesthetic.computer/xyz.webp
🪙 KEEP: Bundle created
🪙 KEEP: IPFS upload started...
🪙 KEEP: IPFS upload complete: ipfs://QmXXX...
🪙 KEEP: Metadata created
🪙 KEEP: Review complete, ready to sign
🪙 KEEP: Transaction sent: opXXX...
🪙 KEEP: Waiting for confirmation...
🪙 KEEP: Confirmed! Token ID: 0
🪙 KEEP: Mint complete! 🎉
Error Logs (if something goes wrong)#
❌ KEEP ERROR: Wallet not connected
❌ KEEP ERROR: Piece not found: $xyz
❌ KEEP ERROR: IPFS upload failed
❌ KEEP ERROR: Transaction rejected
❌ KEEP ERROR: Already minted (token ID: 5)
🚨 Common Issues & Solutions#
Issue 1: "Piece not found: $xyz"#
Solution: Make sure you cached the piece first:
- Go to aesthetic.computer
- Type/run the KidLisp code
- Type
save piece-nameto cache it - Then try
keep piece-name
Issue 2: Wallet won't connect#
Solution:
- Make sure Temple Wallet (or your wallet) is installed
- Refresh the page
- Try disconnecting/reconnecting wallet
- Check wallet is set to Mainnet (not Ghostnet)
Issue 3: "Insufficient balance"#
Solution:
- If fee is 2.5 XTZ, make sure you have at least 3 XTZ in wallet
- If you're testing as admin (tz1staging...), fee should be 0
Issue 4: Transaction fails#
Solution:
- Check transaction on TzKT for error message
- Common errors:
- "INSUFFICIENT_FEE" → Need to pay 2.5 XTZ
- "DUPLICATE_CONTENT_HASH" → Already minted this exact piece
- "CONTRACT_PAUSED" → Contract is paused (emergency)
Issue 5: objkt.com doesn't show token#
Solution:
- Wait 5-10 minutes (indexing can be slow)
- Refresh the collection page
- Check TzKT directly (always faster)
- If still missing after 1 hour, might be objkt.com issue
Issue 6: Thumbnail not generated#
Solution:
- Check if Oven service is running
- If Oven fails, mint will use static preview instead
- Not critical - token will still mint successfully
📊 Test Checklist#
After minting, verify all these:
Frontend (keep.mjs UI)#
- "STAGING V4" badge shows
- Contract address displayed:
v4: KT1ER1Gy.. - Wallet connection works
- Progress bar updates through all steps
- Preview/thumbnail displays
- Transaction hash shown
- Success screen appears
Backend (Netlify Functions)#
-
/api/keep-mintendpoint responds - IPFS upload succeeds (Pinata)
- MongoDB updated with keep info
- Oven thumbnail generated (or gracefully fails)
Blockchain (Tezos)#
- Transaction applied successfully
- Token minted with correct ID
- Metadata stored in contract
- Royalty field present (10%)
- Creator address correct
Indexing (TzKT & objkt.com)#
- TzKT shows transaction within 1 minute
- objkt.com indexes within 5-10 minutes
- Token metadata displays correctly
- Thumbnail visible on objkt.com
- Royalty info visible
🎯 Success Criteria#
Minimum success (basic mint works):
- ✅ Keep UI loads
- ✅ Wallet connects
- ✅ Transaction signs and confirms
- ✅ Token ID returned
- ✅ Shows on TzKT
Good success (full integration works):
- ✅ All above +
- ✅ Thumbnail generated via Oven
- ✅ IPFS upload succeeds
- ✅ Token appears on objkt.com
- ✅ Royalty metadata present
Perfect success (everything polished):
- ✅ All above +
- ✅ No errors in console
- ✅ Smooth UX (no weird delays/bugs)
- ✅ All links work (objkt, TzKT, wallet)
- ✅ Ready for v5 production!
🔗 Quick Links#
Contract on TzKT:
https://tzkt.io/KT1ER1GyoeRNhkv6E57yKbBbEKi5ynKbaH3W
Collection on objkt.com:
https://objkt.com/collection/KT1ER1GyoeRNhkv6E57yKbBbEKi5ynKbaH3W
Keep UI:
https://aesthetic.computer/keep/$xyz
(Replace $xyz with your piece code)
📝 What to Note for v5#
While testing, pay attention to:
- Current fee: Is it 0 XTZ or 2.5 XTZ?
- User experience: Any confusing steps?
- Error messages: Are they helpful?
- Performance: Any slow steps?
- Visual polish: Anything look broken?
Document any issues so we can fix them before v5 production launch!
🚀 Next Steps After Testing#
Once you've successfully minted 1-3 test Keeps:
- ✅ Verify objkt.com integration works perfectly
- ✅ Check royalty metadata is present
- ✅ Test secondary sale (optional, list on objkt)
- ✅ Ready for v5 creation - Copy v4, set fee = 2.5 XTZ
- ✅ Deploy v5 to production - Follow KEEPS-V5-PRODUCTION-ROADMAP.md
Testing guide prepared February 13, 2026 for v4 staging contract UI testing via aesthetic.computer production frontend