Monorepo for Aesthetic.Computer aesthetic.computer
4
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat(keeps): add v6 launch tab to keeps.kidlisp.com

Adds a dedicated v6 Launch tab with contract identity, token attribute
preview, 12-step launch checklist (with security audit), and wallet
status. Also adds v6 to the Docs version dropdown with changelog.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

+339 -3
+339 -3
system/public/kidlisp.com/keeps.html
··· 406 406 } 407 407 } 408 408 409 + .keeps-endpoint-name.v6 { 410 + color: #4ade80; 411 + } 412 + 413 + .keeps-endpoint-name.v6::after { 414 + content: " v6"; 415 + color: #4ade80; 416 + font-size: 10px; 417 + font-weight: 500; 418 + margin-left: 6px; 419 + } 420 + 421 + /* v6 Launch Steps */ 422 + .v6-launch-steps { 423 + display: flex; 424 + flex-direction: column; 425 + gap: 0; 426 + } 427 + 428 + .v6-step { 429 + display: flex; 430 + align-items: flex-start; 431 + gap: 12px; 432 + padding: 12px 16px; 433 + border-left: 2px solid var(--border-color); 434 + position: relative; 435 + } 436 + 437 + .v6-step.done { 438 + border-left-color: #4a9c5d; 439 + } 440 + 441 + .v6-step.pending { 442 + border-left-color: var(--border-color); 443 + } 444 + 445 + .v6-step-icon { 446 + flex-shrink: 0; 447 + width: 22px; 448 + height: 22px; 449 + display: flex; 450 + align-items: center; 451 + justify-content: center; 452 + font-size: 14px; 453 + border-radius: 50%; 454 + } 455 + 456 + .v6-step.done .v6-step-icon { 457 + color: #4a9c5d; 458 + } 459 + 460 + .v6-step.pending .v6-step-icon { 461 + color: var(--text-tertiary); 462 + } 463 + 464 + .v6-step-content { 465 + flex: 1; 466 + } 467 + 468 + .v6-step-title { 469 + font-weight: 600; 470 + font-size: 13px; 471 + color: var(--text-primary); 472 + margin-bottom: 2px; 473 + } 474 + 475 + .v6-step.done .v6-step-title { 476 + color: var(--text-tertiary); 477 + } 478 + 479 + .v6-step-desc { 480 + font-size: 12px; 481 + color: var(--text-tertiary); 482 + line-height: 1.5; 483 + } 484 + 485 + .v6-step-desc code { 486 + background: var(--code-bg); 487 + color: var(--code-text); 488 + padding: 1px 5px; 489 + border-radius: 3px; 490 + font-size: 11px; 491 + } 492 + 409 493 .keeps-version-docs { display: none; } 410 494 .keeps-version-docs.active { display: block; } 411 495 ··· 1214 1298 <div class="keeps-tabs-container"> 1215 1299 <div class="keeps-tabs"> 1216 1300 <button class="keeps-tab active" data-tab="index">Index</button> 1301 + <button class="keeps-tab" data-tab="v6">v6 Launch</button> 1217 1302 <button class="keeps-tab" data-tab="docs">Docs</button> 1218 1303 <button class="keeps-tab" data-tab="about">About</button> 1219 1304 </div> ··· 1233 1318 </div> 1234 1319 </div> 1235 1320 1321 + <!-- TAB: v6 Launch --> 1322 + <div class="keeps-tab-content" id="tab-v6"> 1323 + <div style="padding: 24px 0;"> 1324 + <div style="display: flex; align-items: center; gap: 16px; margin-bottom: 20px; flex-wrap: wrap;"> 1325 + <h2 style="margin: 0; color: var(--text-primary); font-size: 24px; font-weight: 600;"> 1326 + v6 Production Launch 1327 + </h2> 1328 + <span style="padding: 4px 12px; background: rgba(255, 193, 7, 0.15); border: 1px solid rgba(255, 193, 7, 0.4); border-radius: 12px; font-size: 12px; color: #d4a017; font-weight: 600;"> 1329 + PRE-LAUNCH 1330 + </span> 1331 + </div> 1332 + 1333 + <!-- Contract Identity --> 1334 + <div style="margin-bottom: 24px; padding: 16px; background: var(--bg-secondary); border-radius: 8px; border: 1px solid var(--border-color);"> 1335 + <div style="margin-bottom: 8px; color: var(--text-secondary); font-size: 13px; font-weight: 500;">Contract Identity</div> 1336 + <div style="display: grid; grid-template-columns: auto 1fr; gap: 6px 16px; font-size: 13px; color: var(--text-secondary);"> 1337 + <span style="color: var(--text-tertiary);">Name</span> 1338 + <span style="font-weight: 600; color: var(--ac-purple);">KidLisp</span> 1339 + <span style="color: var(--text-tertiary);">Description</span> 1340 + <span><a href="https://keeps.kidlisp.com">https://keeps.kidlisp.com</a></span> 1341 + <span style="color: var(--text-tertiary);">Homepage</span> 1342 + <span><a href="https://kidlisp.com">https://kidlisp.com</a></span> 1343 + <span style="color: var(--text-tertiary);">Version</span> 1344 + <span>6.0.0</span> 1345 + <span style="color: var(--text-tertiary);">Interfaces</span> 1346 + <span>TZIP-012, TZIP-016, TZIP-021</span> 1347 + <span style="color: var(--text-tertiary);">Admin Wallet</span> 1348 + <span style="font-family: 'Courier New', monospace; font-size: 12px;">keeps.tez (tz1Lc2...un2dC)</span> 1349 + <span style="color: var(--text-tertiary);">Default Fee</span> 1350 + <span>2.5 XTZ</span> 1351 + <span style="color: var(--text-tertiary);">Royalty</span> 1352 + <span>10% (1000 bps)</span> 1353 + <span style="color: var(--text-tertiary);">Minting Tool</span> 1354 + <span><a href="https://kidlisp.com">https://kidlisp.com</a></span> 1355 + </div> 1356 + <div style="margin-top: 12px;"> 1357 + <a href="https://github.com/whistlegraph/aesthetic-computer/blob/main/tezos/keeps_fa2_v6.py" target="_blank" 1358 + style="padding: 6px 12px; background: var(--bg-tertiary); color: var(--text-primary); border: 1px solid var(--border-color); border-radius: 4px; text-decoration: none; font-size: 13px; font-weight: 500;"> 1359 + Source Code 1360 + </a> 1361 + </div> 1362 + </div> 1363 + 1364 + <!-- Token Attribute Preview --> 1365 + <div style="margin-bottom: 24px; padding: 16px; background: var(--bg-secondary); border-radius: 8px; border: 1px solid var(--border-color);"> 1366 + <div style="margin-bottom: 12px; color: var(--text-secondary); font-size: 13px; font-weight: 500;">Token Attributes (v6 Format)</div> 1367 + <div style="display: flex; flex-wrap: wrap; gap: 8px;"> 1368 + <span style="padding: 4px 10px; background: var(--bg-tertiary); border: 1px solid var(--border-subtle); border-radius: 4px; font-size: 12px;"> 1369 + <span style="color: var(--text-tertiary);">Category:</span> <span style="color: var(--text-primary);">Generative</span> 1370 + </span> 1371 + <span style="padding: 4px 10px; background: var(--bg-tertiary); border: 1px solid var(--border-subtle); border-radius: 4px; font-size: 12px;"> 1372 + <span style="color: var(--text-tertiary);">Length:</span> <span style="color: var(--text-primary);">142</span> 1373 + </span> 1374 + <span style="padding: 4px 10px; background: var(--bg-tertiary); border: 1px solid var(--border-subtle); border-radius: 4px; font-size: 12px;"> 1375 + <span style="color: var(--text-tertiary);">Packed on:</span> <span style="color: var(--text-primary);">2026-03-02</span> 1376 + </span> 1377 + <span style="padding: 4px 10px; background: var(--bg-tertiary); border: 1px solid var(--border-subtle); border-radius: 4px; font-size: 12px;"> 1378 + <span style="color: var(--text-tertiary);">Handle:</span> <span style="color: var(--text-primary);">@jeffrey</span> 1379 + </span> 1380 + <span style="padding: 4px 10px; background: var(--bg-tertiary); border: 1px solid var(--border-subtle); border-radius: 4px; font-size: 12px;"> 1381 + <span style="color: var(--text-tertiary);">User:</span> <span style="color: var(--text-primary);">ac25namuc</span> 1382 + </span> 1383 + <span style="padding: 4px 10px; background: var(--bg-tertiary); border: 1px solid var(--border-subtle); border-radius: 4px; font-size: 12px;"> 1384 + <span style="color: var(--text-tertiary);">Dependencies:</span> <span style="color: var(--text-primary);">0</span> 1385 + </span> 1386 + </div> 1387 + <div style="margin-top: 8px; font-size: 11px; color: var(--text-tertiary);"> 1388 + Changes from v5 RC: "User Code" &rarr; "User", "Packed" &rarr; "Packed on", removed "Analyzer Version" 1389 + </div> 1390 + </div> 1391 + 1392 + <!-- Launch Steps --> 1393 + <h3 style="margin: 0 0 16px; color: var(--text-primary); font-size: 18px; font-weight: 600; border-bottom: 2px solid var(--ac-purple); padding-bottom: 8px;"> 1394 + Launch Checklist 1395 + </h3> 1396 + 1397 + <div class="v6-launch-steps"> 1398 + <div class="v6-step done"> 1399 + <span class="v6-step-icon">&#x2714;</span> 1400 + <div class="v6-step-content"> 1401 + <div class="v6-step-title">Contract Source Written</div> 1402 + <div class="v6-step-desc">keeps_fa2_v6.py &mdash; identical logic to v5, updated docstrings and metadata references</div> 1403 + </div> 1404 + </div> 1405 + 1406 + <div class="v6-step done"> 1407 + <span class="v6-step-icon">&#x2714;</span> 1408 + <div class="v6-step-content"> 1409 + <div class="v6-step-title">Deploy Script Created</div> 1410 + <div class="v6-step-desc">deploy-v6.mjs &mdash; supports --dry-run and --wallet flags, embeds contract metadata at deploy time</div> 1411 + </div> 1412 + </div> 1413 + 1414 + <div class="v6-step done"> 1415 + <span class="v6-step-icon">&#x2714;</span> 1416 + <div class="v6-step-content"> 1417 + <div class="v6-step-title">Token Attributes Cleaned</div> 1418 + <div class="v6-step-desc">Renamed User Code &rarr; User, Packed &rarr; Packed on, removed Analyzer Version, mintingTool set to kidlisp.com</div> 1419 + </div> 1420 + </div> 1421 + 1422 + <div class="v6-step done"> 1423 + <span class="v6-step-icon">&#x2714;</span> 1424 + <div class="v6-step-content"> 1425 + <div class="v6-step-title">User Code Routing Fixed</div> 1426 + <div class="v6-step-desc">Permahandle codes (ac25namuc) now redirect to @handle instead of 404</div> 1427 + </div> 1428 + </div> 1429 + 1430 + <div class="v6-step done"> 1431 + <span class="v6-step-icon">&#x2714;</span> 1432 + <div class="v6-step-content"> 1433 + <div class="v6-step-title">Wallet Funding</div> 1434 + <div class="v6-step-desc">keeps.tez funded with ~8 XTZ, staging with ~3.8 XTZ for deployment and testing</div> 1435 + </div> 1436 + </div> 1437 + 1438 + <div class="v6-step done"> 1439 + <span class="v6-step-icon">&#x2714;</span> 1440 + <div class="v6-step-content"> 1441 + <div class="v6-step-title">v5 RC Security Audit</div> 1442 + <div class="v6-step-desc">63 tests passed (0 failures) &mdash; admin auth, fee enforcement, content hash dedup, pause system, royalties all verified against live v5 RC contract</div> 1443 + </div> 1444 + </div> 1445 + 1446 + <div class="v6-step pending"> 1447 + <span class="v6-step-icon">&#x25CB;</span> 1448 + <div class="v6-step-content"> 1449 + <div class="v6-step-title">v6 Security Audit</div> 1450 + <div class="v6-step-desc">Run full test suite against freshly deployed v6 contract: admin-only entrypoints, fee bypass attempts, content hash collision, pause enforcement, royalty limits, transfer auth, metadata lock permanence</div> 1451 + </div> 1452 + </div> 1453 + 1454 + <div class="v6-step pending"> 1455 + <span class="v6-step-icon">&#x25CB;</span> 1456 + <div class="v6-step-content"> 1457 + <div class="v6-step-title">Deploy to Mainnet</div> 1458 + <div class="v6-step-desc">Run <code>node tezos/deploy-v6.mjs --wallet=kidlisp</code> to originate the production contract on keeps.tez</div> 1459 + </div> 1460 + </div> 1461 + 1462 + <div class="v6-step pending"> 1463 + <span class="v6-step-icon">&#x25CB;</span> 1464 + <div class="v6-step-content"> 1465 + <div class="v6-step-title">Update Contract Addresses</div> 1466 + <div class="v6-step-desc">Set new KT1 address in constants.mjs, set KEEPS_STAGING = false, update all 8 codebase references</div> 1467 + </div> 1468 + </div> 1469 + 1470 + <div class="v6-step pending"> 1471 + <span class="v6-step-icon">&#x25CB;</span> 1472 + <div class="v6-step-content"> 1473 + <div class="v6-step-title">End-to-End Mint Test</div> 1474 + <div class="v6-step-desc">Mint a real KidLisp piece through the full pipeline: kidlisp.com &rarr; keep &rarr; IPFS &rarr; contract &rarr; verify on objkt.com</div> 1475 + </div> 1476 + </div> 1477 + 1478 + <div class="v6-step pending"> 1479 + <span class="v6-step-icon">&#x25CB;</span> 1480 + <div class="v6-step-content"> 1481 + <div class="v6-step-title">objkt.com Verification</div> 1482 + <div class="v6-step-desc">Confirm collection appears correctly on objkt.com with name "KidLisp", verify token metadata, thumbnail, and royalty display</div> 1483 + </div> 1484 + </div> 1485 + 1486 + <div class="v6-step pending"> 1487 + <span class="v6-step-icon">&#x25CB;</span> 1488 + <div class="v6-step-content"> 1489 + <div class="v6-step-title">Public Launch</div> 1490 + <div class="v6-step-desc">Enable client-side minting via Beacon wallet, announce on kidlisp.com</div> 1491 + </div> 1492 + </div> 1493 + </div> 1494 + 1495 + <!-- Wallet Balances --> 1496 + <h3 style="margin: 24px 0 16px; color: var(--text-primary); font-size: 18px; font-weight: 600; border-bottom: 2px solid var(--ac-purple); padding-bottom: 8px;"> 1497 + Wallet Status 1498 + </h3> 1499 + <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 12px;"> 1500 + <div style="padding: 12px; background: var(--bg-secondary); border-radius: 6px; border: 1px solid var(--border-color);"> 1501 + <div style="font-size: 11px; color: var(--text-tertiary); margin-bottom: 4px;">keeps.tez (deployer)</div> 1502 + <div style="font-size: 16px; font-weight: 600; color: var(--text-primary);">~8 XTZ</div> 1503 + <div style="font-size: 10px; color: var(--text-tertiary); font-family: 'Courier New', monospace; margin-top: 2px;">tz1Lc2...un2dC</div> 1504 + </div> 1505 + <div style="padding: 12px; background: var(--bg-secondary); border-radius: 6px; border: 1px solid var(--border-color);"> 1506 + <div style="font-size: 11px; color: var(--text-tertiary); margin-bottom: 4px;">staging</div> 1507 + <div style="font-size: 16px; font-weight: 600; color: var(--text-primary);">~3.8 XTZ</div> 1508 + <div style="font-size: 10px; color: var(--text-tertiary); font-family: 'Courier New', monospace; margin-top: 2px;">tz1dfo...e4Gzt</div> 1509 + </div> 1510 + </div> 1511 + </div> 1512 + </div> 1513 + 1236 1514 <!-- TAB: Docs (versioned) --> 1237 1515 <div class="keeps-tab-content" id="tab-docs"> 1238 1516 <div style="padding: 24px 0;"> ··· 1241 1519 Keeps FA2 Contract 1242 1520 </h2> 1243 1521 <select class="keeps-version-select" id="version-select"> 1244 - <option value="v5" selected>v5 (RC)</option> 1522 + <option value="v6" selected>v6 (Production)</option> 1523 + <option value="v5">v5 (RC)</option> 1245 1524 <option value="v4">v4 (Staging)</option> 1246 1525 <option value="v3">v3 (Dev Only)</option> 1247 1526 <option value="v2">v2 (Legacy)</option> 1248 1527 </select> 1249 1528 </div> 1250 1529 1530 + <!-- ═══════════════════════════════════════ V6 ═══════════════════════════════════════ --> 1531 + <div class="keeps-version-docs active" id="docs-v6"> 1532 + 1533 + <div style="margin-bottom: 24px; padding: 16px; background: var(--bg-secondary); border-radius: 8px; border: 1px solid var(--border-color);"> 1534 + <div style="margin-bottom: 8px; color: var(--text-secondary); font-size: 13px; font-weight: 500;">Contract Address (Mainnet Production)</div> 1535 + <div style="font-family: 'Courier New', monospace; color: var(--text-tertiary); font-size: 14px; font-style: italic;"> 1536 + Pending deployment... 1537 + </div> 1538 + <div style="margin-top: 8px; color: var(--text-tertiary); font-size: 12px;">Admin: keeps.tez (tz1Lc2...un2dC)</div> 1539 + <div style="margin-top: 12px; display: flex; gap: 8px; flex-wrap: wrap;"> 1540 + <a href="https://github.com/whistlegraph/aesthetic-computer/blob/main/tezos/keeps_fa2_v6.py" target="_blank" 1541 + style="padding: 6px 12px; background: var(--ac-purple); color: white; border-radius: 4px; text-decoration: none; font-size: 13px; font-weight: 500;"> 1542 + Source Code 1543 + </a> 1544 + <a href="https://github.com/whistlegraph/aesthetic-computer/blob/main/tezos/deploy-v6.mjs" target="_blank" 1545 + style="padding: 6px 12px; background: var(--bg-tertiary); color: var(--text-primary); border: 1px solid var(--border-color); border-radius: 4px; text-decoration: none; font-size: 13px; font-weight: 500;"> 1546 + Deploy Script 1547 + </a> 1548 + </div> 1549 + </div> 1550 + 1551 + <p style="margin-bottom: 24px; color: var(--text-secondary); line-height: 1.6;"> 1552 + The Keeps FA2 v6 is the production release deployed on keeps.tez. Contract name: <strong>KidLisp</strong>. 1553 + Identical smart contract logic to v5 RC. Changes are in metadata and token attributes: 1554 + mintingTool set to kidlisp.com, "User Code" renamed to "User", "Packed" renamed to "Packed on", 1555 + "Analyzer Version" removed. 1556 + </p> 1557 + 1558 + <div style="margin-bottom: 32px;"> 1559 + <h3 style="margin: 0 0 16px; color: var(--text-primary); font-size: 18px; font-weight: 600; border-bottom: 2px solid var(--ac-purple); padding-bottom: 8px;"> 1560 + v6 Changes from v5 1561 + </h3> 1562 + 1563 + <div class="keeps-endpoint"> 1564 + <div class="keeps-endpoint-name v6">Contract Metadata</div> 1565 + <div class="keeps-endpoint-desc">Name: "KidLisp" &bull; Description: "https://keeps.kidlisp.com" &bull; Homepage: "https://kidlisp.com"</div> 1566 + </div> 1567 + 1568 + <div class="keeps-endpoint"> 1569 + <div class="keeps-endpoint-name v6">Token Attributes</div> 1570 + <div class="keeps-endpoint-desc">"User Code" &rarr; "User" &bull; "Packed" &rarr; "Packed on" &bull; "Analyzer Version" removed</div> 1571 + </div> 1572 + 1573 + <div class="keeps-endpoint"> 1574 + <div class="keeps-endpoint-name v6">Minting Tool</div> 1575 + <div class="keeps-endpoint-desc">mintingTool updated to https://kidlisp.com (was https://aesthetic.computer)</div> 1576 + </div> 1577 + </div> 1578 + 1579 + <p style="color: var(--text-tertiary); font-size: 13px;"> 1580 + All v5 endpoints and features preserved: keep, edit_metadata, lock_metadata, set_contract_metadata, 1581 + lock_contract_metadata, set_keep_fee, withdraw_fees, burn_keep, pause, unpause, set_default_royalty, admin_transfer. 1582 + Plus FA2 standard: transfer, update_operators, balance_of, mint, burn, set_administrator. 1583 + </p> 1584 + </div> 1585 + 1251 1586 <!-- ═══════════════════════════════════════ V5 ═══════════════════════════════════════ --> 1252 - <div class="keeps-version-docs active" id="docs-v5"> 1587 + <div class="keeps-version-docs" id="docs-v5"> 1253 1588 1254 1589 <div style="margin-bottom: 24px; padding: 16px; background: var(--bg-secondary); border-radius: 8px; border: 1px solid var(--border-color);"> 1255 1590 <div style="margin-bottom: 8px; color: var(--text-secondary); font-size: 13px; font-weight: 500;">Contract Address (Mainnet RC)</div> ··· 1667 2002 <div style="padding: 16px; margin-top: 24px; background: var(--bg-secondary); border-radius: 8px; border-left: 4px solid var(--ac-purple);"> 1668 2003 <h4 style="margin: 0 0 8px; color: var(--text-primary); font-size: 16px; font-weight: 600;">Version History</h4> 1669 2004 <ul style="margin: 8px 0; padding-left: 20px; color: var(--text-secondary); line-height: 1.8;"> 2005 + <li><strong>v6.0</strong> - Production release on keeps.tez. Contract name "KidLisp", cleaned token attributes, mintingTool set to kidlisp.com</li> 1670 2006 <li><strong>v5.0 RC</strong> - Default 2.5 XTZ fee, immutable content_hash during edits, improved error messages</li> 1671 2007 <li><strong>v4.0</strong> - Added royalty support, emergency pause/unpause, admin_transfer</li> 1672 2008 <li><strong>v3.0</strong> - Added editable metadata (owner/creator), creator tracking</li> ··· 2042 2378 2043 2379 // Route from URL path on load (e.g. /about, /docs) 2044 2380 const pathTab = location.pathname.replace(/^\/+/, '').split('/')[0]; 2045 - if (pathTab && ['about', 'docs'].includes(pathTab)) { 2381 + if (pathTab && ['about', 'docs', 'v6'].includes(pathTab)) { 2046 2382 switchTab(pathTab); 2047 2383 } 2048 2384