Monorepo for Aesthetic.Computer
aesthetic.computer
1# 🎨 Test Keep.mjs UI - Production Flow
2**Date:** February 13, 2026
3**Contract:** v4 Staging on Mainnet (`KT1ER1GyoeRNhkv6E57yKbBbEKi5ynKbaH3W`)
4
5---
6
7## ✅ Configuration Status
8
9Your `keep.mjs` piece is currently configured for:
10
11```javascript
12// From: system/public/aesthetic.computer/lib/keeps/constants.mjs
13
14KEEPS_STAGING = true // Shows "STAGING V4" badges
15DEFAULT_NETWORK = "mainnet" // Uses mainnet (not testnet)
16Contract = "KT1ER1GyoeRNhkv6E57yKbBbEKi5ynKbaH3W" // v4 staging contract
17```
18
19**This is PERFECT for testing!** You're using:
20- ✅ v4 contract (with royalties, pause, admin transfer)
21- ✅ Mainnet (real XTZ, real objkt.com integration)
22- ✅ Staging mode (shows version info, test-friendly)
23
24---
25
26## 🚀 User Flow: Mint a Keep via aesthetic.computer UI
27
28### Step 1: Create or Pick a KidLisp Piece
29
30**Option A: Create New Piece**
311. Go to https://aesthetic.computer
322. Type a simple KidLisp piece:
33 ```lisp
34 (wipe "purple")
35 (ink "yellow")
36 (circle (wiggle width) (wiggle height) 60)
37 ```
383. Press Enter to run it
394. When it looks good, type: `save test-keep-1`
405. Note the $code generated (e.g., `$xyz`)
41
42**Option B: Use Existing $code**
43- Pick any existing cached KidLisp piece
44- Examples: `$cow`, `$wand`, `$butterfly`, etc.
45
46---
47
48### Step 2: Navigate to Keep Piece
49
50Type in aesthetic.computer:
51```
52keep test-keep-1
53```
54
55Or with the $code:
56```
57keep $xyz
58```
59
60**Expected:** Keep UI loads showing:
61- Preview of your KidLisp piece
62- "STAGING V4" badge (orange/yellow)
63- Contract address shown: `v4: KT1ER1Gy..`
64- "Keep This" button (or similar)
65
66---
67
68### Step 3: Connect Your Wallet
69
70**What you'll see:**
71- "Connect Wallet" button or prompt
72- Options: Temple Wallet, Umami, Kukai, etc.
73
74**Action:**
751. Click "Connect Wallet"
762. Choose your Tezos wallet (Temple recommended)
773. Approve the connection in your wallet popup
784. Wait for connection confirmation
79
80**Expected result:**
81- ✅ Wallet address shown in UI
82- ✅ "Keep This" button becomes active
83- ✅ Console shows: "🪙 KEEP: Wallet connected: tz1..."
84
85---
86
87### Step 4: Review Mint Details
88
89Before minting, the UI should show:
90- **Piece name:** `$xyz` (or your piece name)
91- **Network:** "MAINNET (STAGING V4)"
92- **Contract:** `v4: KT1ER1Gy..` (clickable link)
93- **Fee:** 0 XTZ or 2.5 XTZ (depends on if you're admin)
94- **Preview:** Animated thumbnail (if generated) or static preview
95
96**Check the browser console** for detailed logs:
97```
98🪙 KEEP: Starting mint process for $xyz
99🪙 KEEP: Network: mainnet, Contract: KT1ER1GyoeRNhkv6E57yKbBbEKi5ynKbaH3W
100🪙 KEEP: Staging mode: true
101```
102
103---
104
105### Step 5: Start the Keep Process
106
107Click the **"Keep This"** or **"Confirm"** button.
108
109**What happens (automatic pipeline):**
1101. ✓ **Validate Piece** - Checks $code exists
1112. ✓ **Analyze Source** - Parses KidLisp code
1123. ✓ **Generate Preview** - Creates thumbnail via Oven
1134. ✓ **Bundle Assets** - Packages HTML + metadata
1145. ✓ **Upload to IPFS** - Pinata upload
1156. ✓ **Create Metadata** - TZIP-21 JSON with royalties
1167. 👁️ **Review & Confirm** - Shows final details
1178. ✍️ **Sign Transaction** - Wallet popup
118
119**Watch the progress bar** - each step shows:
120- ⏳ Pending (gray)
121- ⚡ Active (yellow/orange)
122- ✅ Done (green)
123- ❌ Error (red, if something fails)
124
125---
126
127### Step 6: Sign the Transaction
128
129When you reach the "Sign Transaction" step:
130
131**What you'll see:**
132- Wallet popup (Temple/Umami/etc.)
133- Transaction details:
134 - **To:** `KT1ER1GyoeRNhkv6E57yKbBbEKi5ynKbaH3W` (contract)
135 - **Entrypoint:** `keep`
136 - **Amount:** 0 XTZ (if you're admin) or 2.5 XTZ (if user)
137 - **Fee:** ~0.01-0.05 XTZ (network gas)
138
139**Action:**
1401. Review the transaction details
1412. Click "Confirm" or "Sign" in your wallet
1423. Wait for transaction to broadcast
143
144**Expected:**
145- ✅ Wallet shows "Transaction submitted"
146- ✅ UI shows operation hash: `opXXX...`
147- ✅ Console logs: "🪙 KEEP: Transaction sent: opXXX..."
148
149---
150
151### Step 7: Wait for Confirmation
152
153**Tezos confirmation takes ~30 seconds** (2 blocks).
154
155**What you'll see:**
156- Progress spinner or "Waiting for confirmation..." message
157- Operation hash link (clickable to TzKT)
158
159**In console:**
160```
161🪙 KEEP: Waiting for confirmation...
162🪙 KEEP: Confirmed! Searching for token...
163🪙 KEEP: Found token #X for KidLisp $xyz
164```
165
166---
167
168### Step 8: Mint Complete! 🎉
169
170**Success screen shows:**
171- ✅ "Keep Minted!"
172- **Token ID:** #0 (or next available)
173- **Network:** MAINNET (STAGING V4)
174- **Contract:** KT1ER1Gy... (clickable)
175- **Transaction:** opXXX... (clickable to TzKT)
176- **Links:**
177 - "View on objkt.com"
178 - "View in Wallet"
179 - "View Transaction"
180
181**Buttons to test:**
182- **View on objkt.com** → Opens `https://objkt.com/tokens/KT1ER1Gy.../X`
183- **Contract** → Opens `https://tzkt.io/KT1ER1GyoeRNhkv6E57yKbBbEKi5ynKbaH3W`
184- **Transaction** → Opens `https://tzkt.io/opXXX...`
185
186---
187
188### Step 9: Verify on TzKT
189
190Click the transaction link or visit:
191```
192https://tzkt.io/KT1ER1GyoeRNhkv6E57yKbBbEKi5ynKbaH3W
193```
194
195**Check:**
196- ✅ Recent operations show your `keep` call
197- ✅ Status: `applied` (success)
198- ✅ Sender: Your wallet address (tz1...)
199- ✅ Token minted: Check storage for `next_token_id`
200
201---
202
203### Step 10: Verify on objkt.com
204
205Visit:
206```
207https://objkt.com/collection/KT1ER1GyoeRNhkv6E57yKbBbEKi5ynKbaH3W
208```
209
210**Wait 1-5 minutes** for objkt.com to index the token.
211
212**Then check:**
213- ✅ Token appears in collection
214- ✅ Thumbnail displays (animated WebP if Oven was used)
215- ✅ Name: "KidLisp $xyz" (or similar)
216- ✅ Royalty info: 10%
217- ✅ Creator: Your wallet address
218
219**Click on the token** to see full metadata:
220- Description
221- Source code snippet
222- Artifact URI (IPFS)
223- Display URI (IPFS)
224- Thumbnail URI (IPFS)
225- Royalties (10% to your wallet)
226
227---
228
229## 🔍 What to Watch in Browser Console
230
231Enable browser console (F12) and watch for these logs:
232
233### Successful Mint Logs
234```
235🪙 KEEP: Starting mint process for $xyz
236🪙 KEEP: Network: mainnet, Contract: KT1ER1GyoeRNhkv6E57yKbBbEKi5ynKbaH3W
237🪙 KEEP: Staging mode: true
238🪙 KEEP: Wallet connected: tz1abc...
239🪙 KEEP: Fetching piece: $xyz
240🪙 KEEP: Source loaded (123 bytes)
241🪙 KEEP: Thumbnail generated: https://oven.aesthetic.computer/xyz.webp
242🪙 KEEP: Bundle created
243🪙 KEEP: IPFS upload started...
244🪙 KEEP: IPFS upload complete: ipfs://QmXXX...
245🪙 KEEP: Metadata created
246🪙 KEEP: Review complete, ready to sign
247🪙 KEEP: Transaction sent: opXXX...
248🪙 KEEP: Waiting for confirmation...
249🪙 KEEP: Confirmed! Token ID: 0
250🪙 KEEP: Mint complete! 🎉
251```
252
253### Error Logs (if something goes wrong)
254```
255❌ KEEP ERROR: Wallet not connected
256❌ KEEP ERROR: Piece not found: $xyz
257❌ KEEP ERROR: IPFS upload failed
258❌ KEEP ERROR: Transaction rejected
259❌ KEEP ERROR: Already minted (token ID: 5)
260```
261
262---
263
264## 🚨 Common Issues & Solutions
265
266### Issue 1: "Piece not found: $xyz"
267**Solution:** Make sure you cached the piece first:
2681. Go to aesthetic.computer
2692. Type/run the KidLisp code
2703. Type `save piece-name` to cache it
2714. Then try `keep piece-name`
272
273### Issue 2: Wallet won't connect
274**Solution:**
2751. Make sure Temple Wallet (or your wallet) is installed
2762. Refresh the page
2773. Try disconnecting/reconnecting wallet
2784. Check wallet is set to Mainnet (not Ghostnet)
279
280### Issue 3: "Insufficient balance"
281**Solution:**
282- If fee is 2.5 XTZ, make sure you have at least 3 XTZ in wallet
283- If you're testing as admin (tz1staging...), fee should be 0
284
285### Issue 4: Transaction fails
286**Solution:**
2871. Check transaction on TzKT for error message
2882. Common errors:
289 - "INSUFFICIENT_FEE" → Need to pay 2.5 XTZ
290 - "DUPLICATE_CONTENT_HASH" → Already minted this exact piece
291 - "CONTRACT_PAUSED" → Contract is paused (emergency)
292
293### Issue 5: objkt.com doesn't show token
294**Solution:**
2951. Wait 5-10 minutes (indexing can be slow)
2962. Refresh the collection page
2973. Check TzKT directly (always faster)
2984. If still missing after 1 hour, might be objkt.com issue
299
300### Issue 6: Thumbnail not generated
301**Solution:**
302- Check if Oven service is running
303- If Oven fails, mint will use static preview instead
304- Not critical - token will still mint successfully
305
306---
307
308## 📊 Test Checklist
309
310After minting, verify all these:
311
312### Frontend (keep.mjs UI)
313- [ ] "STAGING V4" badge shows
314- [ ] Contract address displayed: `v4: KT1ER1Gy..`
315- [ ] Wallet connection works
316- [ ] Progress bar updates through all steps
317- [ ] Preview/thumbnail displays
318- [ ] Transaction hash shown
319- [ ] Success screen appears
320
321### Backend (Netlify Functions)
322- [ ] `/api/keep-mint` endpoint responds
323- [ ] IPFS upload succeeds (Pinata)
324- [ ] MongoDB updated with keep info
325- [ ] Oven thumbnail generated (or gracefully fails)
326
327### Blockchain (Tezos)
328- [ ] Transaction applied successfully
329- [ ] Token minted with correct ID
330- [ ] Metadata stored in contract
331- [ ] Royalty field present (10%)
332- [ ] Creator address correct
333
334### Indexing (TzKT & objkt.com)
335- [ ] TzKT shows transaction within 1 minute
336- [ ] objkt.com indexes within 5-10 minutes
337- [ ] Token metadata displays correctly
338- [ ] Thumbnail visible on objkt.com
339- [ ] Royalty info visible
340
341---
342
343## 🎯 Success Criteria
344
345**Minimum success (basic mint works):**
346- ✅ Keep UI loads
347- ✅ Wallet connects
348- ✅ Transaction signs and confirms
349- ✅ Token ID returned
350- ✅ Shows on TzKT
351
352**Good success (full integration works):**
353- ✅ All above +
354- ✅ Thumbnail generated via Oven
355- ✅ IPFS upload succeeds
356- ✅ Token appears on objkt.com
357- ✅ Royalty metadata present
358
359**Perfect success (everything polished):**
360- ✅ All above +
361- ✅ No errors in console
362- ✅ Smooth UX (no weird delays/bugs)
363- ✅ All links work (objkt, TzKT, wallet)
364- ✅ Ready for v5 production!
365
366---
367
368## 🔗 Quick Links
369
370**Contract on TzKT:**
371```
372https://tzkt.io/KT1ER1GyoeRNhkv6E57yKbBbEKi5ynKbaH3W
373```
374
375**Collection on objkt.com:**
376```
377https://objkt.com/collection/KT1ER1GyoeRNhkv6E57yKbBbEKi5ynKbaH3W
378```
379
380**Keep UI:**
381```
382https://aesthetic.computer/keep/$xyz
383```
384(Replace `$xyz` with your piece code)
385
386---
387
388## 📝 What to Note for v5
389
390While testing, pay attention to:
3911. **Current fee:** Is it 0 XTZ or 2.5 XTZ?
3922. **User experience:** Any confusing steps?
3933. **Error messages:** Are they helpful?
3944. **Performance:** Any slow steps?
3955. **Visual polish:** Anything look broken?
396
397**Document any issues** so we can fix them before v5 production launch!
398
399---
400
401## 🚀 Next Steps After Testing
402
403Once you've successfully minted 1-3 test Keeps:
404
4051. ✅ **Verify objkt.com integration** works perfectly
4062. ✅ **Check royalty metadata** is present
4073. ✅ **Test secondary sale** (optional, list on objkt)
4084. ✅ **Ready for v5 creation** - Copy v4, set fee = 2.5 XTZ
4095. ✅ **Deploy v5 to production** - Follow [KEEPS-V5-PRODUCTION-ROADMAP.md](KEEPS-V5-PRODUCTION-ROADMAP.md)
410
411---
412
413*Testing guide prepared February 13, 2026 for v4 staging contract UI testing via aesthetic.computer production frontend*