Conversation
…n tab switch Upgrade SelfAgentRegistry implementation on Celo mainnet to include ACTION_IDENTIFY (0x49) for read-only passport-scan nullifier lookup. New implementation: 0xBe81Bd959cD3B07CaFd242f9b7Ce5936fBEc4c66 Fix My Agents tab switching clearing the agents list — remove setAgents([]) from all tab click handlers so fetched agent data persists across tab switches. Update deployment registry with new mainnet implementation address.
…nts, upgrade Sepolia registry Fix on-chain polling bug where scanning a previously registered agent showed "success" even when the current proof failed. The polling now checks initial registration state before starting and only triggers success on a state transition from unregistered to registered. Upgrade SelfAgentRegistry implementation on Celo Sepolia to include ACTION_IDENTIFY support. New implementation: 0x6802A22e396743dedBf30f9289e7fF4c65fDC68A
…ed variable error Fixes Vercel build failure: "Block-scoped variable 'intervalRef' used before its declaration" by hoisting the let declaration above the async function that references it.
Agents from one lookup mode (e.g. wallet) were bleeding into other tabs (e.g. passport scan) because the previous tab-switching fix removed all setAgents([]) calls. Now agents are cleared only when changing modes, not when re-clicking the same tab.
…tence When passport identify finds 0 agents via the agentsByNullifier mapping (agents registered before the identify contract upgrade), fall back to scanning AgentRegisteredWithHumanProof events to match by nullifier. Only ~22 events on mainnet so no performance impact. Auto-reconnect wallet on page load using eth_accounts (silent, no prompt) instead of requiring the user to click Connect Wallet after every refresh. Re-fetch wallet agents when switching back to the wallet tab from another tab.
Any AI agent (OpenClaw, Claude, etc.) can now share a single URL with a human to complete any Self Protocol flow — no Self MCP installation, no SDK, no device restrictions. New hosted scan page at /scan/[sessionToken]: server component decrypts the session and extracts QR data and deep link. Client component detects mobile vs desktop: shows "Open Self App" deep link button first on mobile, large scannable QR first on desktop. Polls every 3 seconds via Authorization: Bearer header (works for all session types: register, identify, deregister, refresh). Handles session expiry, scan errors, and token rotation automatically. Bare layout (fixed inset-0 z-50) renders clean without the app Navbar/Footer. Server-side QR rendering (lib/renderQr.ts): uses the already-installed qrcode package to render PNGs server-side. New GET /api/qr/[sessionToken] endpoint returns the QR as image/png. Register and identify API responses now include qrImageBase64 (PNG base64) and scanUrl. MCP tool updates: self_register_agent and self_deregister_agent now return scan_url as the primary field with instructions to share it with the human. Inline QR image content block still included for MCP clients that render images. Adds 12 new component tests for ScanClient covering render, copy per session type, polling URL and Bearer token, state transitions (success/expired/error), token rotation, expiry timer, and QR onError callback. 275/275 tests pass, zero TypeScript errors, next build succeeds.
… API Replace the multi-step registration wizard with a single-page two-column layout. Left column provides manual registration with framework selection (29 frameworks across 5 categories), guardian options, and disclosure controls. Right column shows a curl one-liner for agent-driven registration via the new GET /api/agent/bootstrap OpenAPI endpoint. Backend: derive humanAddress from Ed25519 pubkey in challenge endpoint, wire guardian address through for ed25519-linked mode, add bootstrap endpoint returning registration OpenAPI spec. SDK: add ed25519Pubkey/ed25519Signature fields and expand disclosure types for all request interfaces. Remove old wizard components (WizardShell, ModeSelector, NetworkStep, WhoAreYouStep) and their tests. Relocate shared mode types to lib/registration-modes.ts. Center agent tabs and widen layout for register page.
…contract config Add visa contract address to network config (Sepolia: 0x2852087C2D9EdeE47057100df59263999442c4a8, mainnet: pending deployment). Add VISA_ABI and TypedVisaContract to contract-types. Create /api/visa/[chainId]/[agentId] route returning tier, metrics, eligibility, and thresholds. Create VisaCard client component with tier badge, metrics display, progress bars to next tier, and eligibility indicators.
Create /agents/[agentId] detail page showing agent info (address, registration date, nationality, verification level) and the VisaCard component. Add VisaBadge component that fetches tier from the visa API and renders a colored badge. Agent list cards now link to the detail page and show visa tier badges inline.
Add /api/visa/[chainId]/batch endpoint that fetches tiers for multiple agents in a single RPC session. Agent list now batch-fetches all visa tiers in one call instead of N individual requests. VisaBadge simplified to a pure presentational component receiving tier as prop. VisaCard now includes Check Eligibility button (calls scoring service /push endpoint) and Claim Upgrade button (shown when eligible for next tier). Add metrics last-updated timestamp display.
…ce env var Fix API returning string keys (tourist/work/citizenship) while VisaCard expects number keys (1/2/3). Normalize volumeUsd and threshold values from 6-decimal on-chain format to human-readable USD in API response. Add NEXT_PUBLIC_SCORING_SERVICE_URL to .env.example.
…d on settings change The registration QR code was never appearing because useEffect dependency arrays included the `reg` object (new reference every render) and `loading` state (mutated inside the effect). Both caused the effect cleanup to cancel in-flight API calls before they could complete. Fixed by using a ref for the loading guard and removing `reg` from all effect dependency arrays (specific properties are already listed individually). Also increased QR code size from 220px to 350px for better scannability, and added automatic session reset when the user changes disclosures, guardian, network, or mode after a QR is already displayed.
…ace condition SelfAppBuilderClass is loaded via dynamic import into a module-level variable, so when the import resolves after the payload-parsing effect already ran, no re-render triggers the selfApp-building effect. Added sdkReady state flag set alongside the module variable, and included it in the effect dependency array so the QR code builds regardless of load order.
- Add /api/visa/claim endpoint for gasless tier claims via server-side relayer - Wire up VisaCard claim button with loading state and success screen - Add "Upgrade Available" banner and tier benefits from Celo spec - Update Sepolia visa contract to 0xD976...c35 (real Self Agent Registry) - Add claimTierUpgrade and mintVisa to VISA_ABI
- Replace raw tx hash with "View transaction" link to block explorer (Celoscan/Blockscout) - Pass blockExplorer URL from network config into VisaCard - Rename "Check Eligibility" to "Refresh Status" — just re-reads on-chain data - Remove unused NEXT_PUBLIC_SCORING_SERVICE_URL dependency from VisaCard
Add visibilitychange listener that re-fetches agents when the user switches back to the tab. Works across all lookup modes (wallet, passkey, privy). Previously required a manual page refresh to see agents after tab switching.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.