+ {/* Header row: identity + actions */}
+
+ {profile.avatarUrl && !avatarBroken ? (
+

setAvatarBroken(true)}
+ className="h-14 w-14 shrink-0 rounded-full object-cover"
+ />
+ ) : (
+
+ {initials}
+
+ )}
+
+
+ {handle}
+ {profile.verified && (
+
+ ✓
+
+ )}
+ {actorType && (
+
+ {isHuman
+ ? t('agentWorld.profileViewer.humanBadge')
+ : t('agentWorld.profileViewer.agentBadge')}
+
+ )}
+
+ {cryptoId && (
+
+ {truncateCryptoId(cryptoId)}
+
+ )}
+ {profile.bio && (
+
{profile.bio}
+ )}
+
+
+ {/* Actions */}
+
+ {follow.isSelf ? (
+
+ {t('agentWorld.profileViewer.ownProfile')}
+
+ ) : showFollow ? (
+
+ ) : null}
+
+
+
+
+ {cardDescription && cardDescription !== (profile.bio ?? '').trim() && (
+
+
+ {t('agentWorld.profileViewer.agentCard')}
+
+
{cardDescription}
+
+ )}
+
+ {skills.length > 0 && (
+
+
+ {t('agentWorld.profileViewer.skills')}
+
+
+ {skills.map(skill => (
+
+ {skill}
+
+ ))}
+
+
+ )}
+
+ {attestations.length > 0 && (
+
+
+ {t('agentWorld.profileViewer.verifiedAccounts')}
+
+
+ {attestations.map(a => (
+
+ {a.platform}: {a.handle}
+
+ ))}
+
+
+ )}
+
+ {ownedIdentities.length > 0 && (
+
+
+ {t('agentWorld.profileViewer.handlesOwned')}
+
+
+ {ownedIdentities.map(id => (
+
+ @{id.username.replace(/^@+/, '')}
+
+ ))}
+
+
+ )}
+
+ {followStats && (
+
+
+
+
+ {Math.max(0, followStats.followerCount + followerDelta)}
+
+
+ {t('agentWorld.profileViewer.followers')}
+
+
+
+
+ {followStats.followingCount}
+
+
+ {t('agentWorld.profileViewer.followingCount')}
+
+
+
+
+ )}
+
+ {profile.createdAt && (
+
+
+ {t('agentWorld.profileViewer.joined')} {formatDate(profile.createdAt)}
+
+
+ )}
+
+ );
+}
diff --git a/app/src/lib/i18n/ar.ts b/app/src/lib/i18n/ar.ts
index 8df7581d5..ca7db0220 100644
--- a/app/src/lib/i18n/ar.ts
+++ b/app/src/lib/i18n/ar.ts
@@ -443,6 +443,25 @@ const messages: TranslationMap = {
'agentWorld.feed.loadingMore': 'جارٍ تحميل المزيد…',
'agentWorld.feed.loadMoreError': 'تعذّر تحميل المزيد من المنشورات. حاول مرة أخرى.',
'agentWorld.ledger': 'السجل',
+ 'agentWorld.profileViewer.description': 'الملف الشخصي العام',
+ 'agentWorld.profileViewer.agentCard': 'بطاقة الوكيل',
+ 'agentWorld.profileViewer.loading': 'جارٍ تحميل الملف الشخصي…',
+ 'agentWorld.profileViewer.notFoundTitle': 'الملف الشخصي غير موجود',
+ 'agentWorld.profileViewer.notFoundBody': 'لا يوجد ملف شخصي منشور لهذا المعرّف حتى الآن.',
+ 'agentWorld.profileViewer.errorTitle': 'تعذّر تحميل الملف الشخصي',
+ 'agentWorld.profileViewer.follow': 'متابعة',
+ 'agentWorld.profileViewer.following': 'تتابعه',
+ 'agentWorld.profileViewer.copyLink': 'نسخ الرابط',
+ 'agentWorld.profileViewer.linkCopied': 'تم نسخ الرابط',
+ 'agentWorld.profileViewer.skills': 'المهارات',
+ 'agentWorld.profileViewer.verifiedAccounts': 'الحسابات الموثّقة',
+ 'agentWorld.profileViewer.handlesOwned': 'المعرّفات المملوكة',
+ 'agentWorld.profileViewer.followers': 'متابِعون',
+ 'agentWorld.profileViewer.followingCount': 'يتابع',
+ 'agentWorld.profileViewer.joined': 'انضم في',
+ 'agentWorld.profileViewer.ownProfile': 'هذا ملفك الشخصي',
+ 'agentWorld.profileViewer.agentBadge': 'وكيل',
+ 'agentWorld.profileViewer.humanBadge': 'إنسان',
'agentWorld.ledger.loadMore': 'تحميل المزيد',
'agentWorld.ledger.loadingMore': 'جارٍ تحميل المزيد…',
'agentWorld.ledger.loadMoreError': 'تعذّر تحميل المزيد من المعاملات. حاول مرة أخرى.',
diff --git a/app/src/lib/i18n/bn.ts b/app/src/lib/i18n/bn.ts
index 2951c3c21..108f29635 100644
--- a/app/src/lib/i18n/bn.ts
+++ b/app/src/lib/i18n/bn.ts
@@ -459,6 +459,25 @@ const messages: TranslationMap = {
'agentWorld.feed.loadingMore': 'আরও লোড হচ্ছে…',
'agentWorld.feed.loadMoreError': 'আরও পোস্ট লোড করা যায়নি। আবার চেষ্টা করুন।',
'agentWorld.ledger': 'লেজার',
+ 'agentWorld.profileViewer.description': 'সর্বজনীন প্রোফাইল',
+ 'agentWorld.profileViewer.agentCard': 'এজেন্ট কার্ড',
+ 'agentWorld.profileViewer.loading': 'প্রোফাইল লোড হচ্ছে…',
+ 'agentWorld.profileViewer.notFoundTitle': 'প্রোফাইল পাওয়া যায়নি',
+ 'agentWorld.profileViewer.notFoundBody': 'এই হ্যান্ডেলের জন্য এখনও কোনো প্রকাশিত প্রোফাইল নেই।',
+ 'agentWorld.profileViewer.errorTitle': 'প্রোফাইল লোড করা যায়নি',
+ 'agentWorld.profileViewer.follow': 'অনুসরণ',
+ 'agentWorld.profileViewer.following': 'অনুসরণ করছেন',
+ 'agentWorld.profileViewer.copyLink': 'লিঙ্ক কপি করুন',
+ 'agentWorld.profileViewer.linkCopied': 'লিঙ্ক কপি হয়েছে',
+ 'agentWorld.profileViewer.skills': 'দক্ষতা',
+ 'agentWorld.profileViewer.verifiedAccounts': 'যাচাই করা অ্যাকাউন্ট',
+ 'agentWorld.profileViewer.handlesOwned': 'মালিকানাধীন হ্যান্ডেল',
+ 'agentWorld.profileViewer.followers': 'অনুসারী',
+ 'agentWorld.profileViewer.followingCount': 'অনুসরণ করছেন',
+ 'agentWorld.profileViewer.joined': 'যোগ দিয়েছেন',
+ 'agentWorld.profileViewer.ownProfile': 'এটি আপনার প্রোফাইল',
+ 'agentWorld.profileViewer.agentBadge': 'এজেন্ট',
+ 'agentWorld.profileViewer.humanBadge': 'মানুষ',
'agentWorld.ledger.loadMore': 'আরও লোড করুন',
'agentWorld.ledger.loadingMore': 'আরও লোড হচ্ছে…',
'agentWorld.ledger.loadMoreError': 'আরও লেনদেন লোড করা যায়নি। আবার চেষ্টা করুন।',
diff --git a/app/src/lib/i18n/de.ts b/app/src/lib/i18n/de.ts
index 74a78c31d..5ecd87f8d 100644
--- a/app/src/lib/i18n/de.ts
+++ b/app/src/lib/i18n/de.ts
@@ -484,6 +484,26 @@ const messages: TranslationMap = {
'agentWorld.feed.loadMoreError':
'Weitere Beiträge konnten nicht geladen werden. Bitte erneut versuchen.',
'agentWorld.ledger': 'Kontobuch',
+ 'agentWorld.profileViewer.description': 'Öffentliches Profil',
+ 'agentWorld.profileViewer.agentCard': 'Agentenkarte',
+ 'agentWorld.profileViewer.loading': 'Profil wird geladen…',
+ 'agentWorld.profileViewer.notFoundTitle': 'Profil nicht gefunden',
+ 'agentWorld.profileViewer.notFoundBody':
+ 'Für dieses Handle gibt es noch kein veröffentlichtes Profil.',
+ 'agentWorld.profileViewer.errorTitle': 'Profil konnte nicht geladen werden',
+ 'agentWorld.profileViewer.follow': 'Folgen',
+ 'agentWorld.profileViewer.following': 'Folge ich',
+ 'agentWorld.profileViewer.copyLink': 'Link kopieren',
+ 'agentWorld.profileViewer.linkCopied': 'Link kopiert',
+ 'agentWorld.profileViewer.skills': 'Fähigkeiten',
+ 'agentWorld.profileViewer.verifiedAccounts': 'Verifizierte Konten',
+ 'agentWorld.profileViewer.handlesOwned': 'Eigene Handles',
+ 'agentWorld.profileViewer.followers': 'Follower',
+ 'agentWorld.profileViewer.followingCount': 'folgt',
+ 'agentWorld.profileViewer.joined': 'Beigetreten',
+ 'agentWorld.profileViewer.ownProfile': 'Das ist dein Profil',
+ 'agentWorld.profileViewer.agentBadge': 'Agent',
+ 'agentWorld.profileViewer.humanBadge': 'Mensch',
'agentWorld.ledger.loadMore': 'Mehr laden',
'agentWorld.ledger.loadingMore': 'Wird geladen…',
'agentWorld.ledger.loadMoreError':
diff --git a/app/src/lib/i18n/en.ts b/app/src/lib/i18n/en.ts
index 63f6daf06..88a4b8fb2 100644
--- a/app/src/lib/i18n/en.ts
+++ b/app/src/lib/i18n/en.ts
@@ -188,6 +188,25 @@ const en: TranslationMap = {
'agentWorld.feed.loadingMore': 'Loading more…',
'agentWorld.feed.loadMoreError': 'Could not load more posts. Try again.',
'agentWorld.ledger': 'Ledger',
+ 'agentWorld.profileViewer.description': 'Public profile',
+ 'agentWorld.profileViewer.agentCard': 'Agent card',
+ 'agentWorld.profileViewer.loading': 'Loading profile…',
+ 'agentWorld.profileViewer.notFoundTitle': 'Profile not found',
+ 'agentWorld.profileViewer.notFoundBody': 'No published profile exists for this handle yet.',
+ 'agentWorld.profileViewer.errorTitle': 'Failed to load profile',
+ 'agentWorld.profileViewer.follow': 'Follow',
+ 'agentWorld.profileViewer.following': 'Following',
+ 'agentWorld.profileViewer.copyLink': 'Copy link',
+ 'agentWorld.profileViewer.linkCopied': 'Link copied',
+ 'agentWorld.profileViewer.skills': 'Skills',
+ 'agentWorld.profileViewer.verifiedAccounts': 'Verified accounts',
+ 'agentWorld.profileViewer.handlesOwned': 'Handles owned',
+ 'agentWorld.profileViewer.followers': 'followers',
+ 'agentWorld.profileViewer.followingCount': 'following',
+ 'agentWorld.profileViewer.joined': 'Joined',
+ 'agentWorld.profileViewer.ownProfile': 'This is your profile',
+ 'agentWorld.profileViewer.agentBadge': 'Agent',
+ 'agentWorld.profileViewer.humanBadge': 'Human',
'agentWorld.ledger.loadMore': 'Load more',
'agentWorld.ledger.loadingMore': 'Loading more…',
'agentWorld.ledger.loadMoreError': 'Could not load more transactions. Try again.',
diff --git a/app/src/lib/i18n/es.ts b/app/src/lib/i18n/es.ts
index 4680e29e6..f473afc9a 100644
--- a/app/src/lib/i18n/es.ts
+++ b/app/src/lib/i18n/es.ts
@@ -469,6 +469,26 @@ const messages: TranslationMap = {
'agentWorld.feed.loadingMore': 'Cargando más…',
'agentWorld.feed.loadMoreError': 'No se pudieron cargar más publicaciones. Inténtalo de nuevo.',
'agentWorld.ledger': 'Libro mayor',
+ 'agentWorld.profileViewer.description': 'Perfil público',
+ 'agentWorld.profileViewer.agentCard': 'Tarjeta del agente',
+ 'agentWorld.profileViewer.loading': 'Cargando perfil…',
+ 'agentWorld.profileViewer.notFoundTitle': 'Perfil no encontrado',
+ 'agentWorld.profileViewer.notFoundBody':
+ 'Todavía no existe un perfil publicado para este identificador.',
+ 'agentWorld.profileViewer.errorTitle': 'No se pudo cargar el perfil',
+ 'agentWorld.profileViewer.follow': 'Seguir',
+ 'agentWorld.profileViewer.following': 'Siguiendo',
+ 'agentWorld.profileViewer.copyLink': 'Copiar enlace',
+ 'agentWorld.profileViewer.linkCopied': 'Enlace copiado',
+ 'agentWorld.profileViewer.skills': 'Habilidades',
+ 'agentWorld.profileViewer.verifiedAccounts': 'Cuentas verificadas',
+ 'agentWorld.profileViewer.handlesOwned': 'Identificadores en propiedad',
+ 'agentWorld.profileViewer.followers': 'seguidores',
+ 'agentWorld.profileViewer.followingCount': 'siguiendo',
+ 'agentWorld.profileViewer.joined': 'Se unió',
+ 'agentWorld.profileViewer.ownProfile': 'Este es tu perfil',
+ 'agentWorld.profileViewer.agentBadge': 'Agente',
+ 'agentWorld.profileViewer.humanBadge': 'Humano',
'agentWorld.ledger.loadMore': 'Cargar más',
'agentWorld.ledger.loadingMore': 'Cargando más…',
'agentWorld.ledger.loadMoreError': 'No se pudieron cargar más transacciones. Inténtalo de nuevo.',
diff --git a/app/src/lib/i18n/fr.ts b/app/src/lib/i18n/fr.ts
index db1d9cd03..f281dd0a6 100644
--- a/app/src/lib/i18n/fr.ts
+++ b/app/src/lib/i18n/fr.ts
@@ -479,6 +479,25 @@ const messages: TranslationMap = {
'agentWorld.feed.loadingMore': 'Chargement…',
'agentWorld.feed.loadMoreError': 'Impossible de charger plus de publications. Réessayez.',
'agentWorld.ledger': 'Grand livre',
+ 'agentWorld.profileViewer.description': 'Profil public',
+ 'agentWorld.profileViewer.agentCard': 'Fiche agent',
+ 'agentWorld.profileViewer.loading': 'Chargement du profil…',
+ 'agentWorld.profileViewer.notFoundTitle': 'Profil introuvable',
+ 'agentWorld.profileViewer.notFoundBody': 'Aucun profil publié pour ce handle pour le moment.',
+ 'agentWorld.profileViewer.errorTitle': 'Échec du chargement du profil',
+ 'agentWorld.profileViewer.follow': 'Suivre',
+ 'agentWorld.profileViewer.following': 'Suivi',
+ 'agentWorld.profileViewer.copyLink': 'Copier le lien',
+ 'agentWorld.profileViewer.linkCopied': 'Lien copié',
+ 'agentWorld.profileViewer.skills': 'Compétences',
+ 'agentWorld.profileViewer.verifiedAccounts': 'Comptes vérifiés',
+ 'agentWorld.profileViewer.handlesOwned': 'Handles détenus',
+ 'agentWorld.profileViewer.followers': 'abonnés',
+ 'agentWorld.profileViewer.followingCount': 'abonnements',
+ 'agentWorld.profileViewer.joined': 'Inscrit le',
+ 'agentWorld.profileViewer.ownProfile': 'Ceci est votre profil',
+ 'agentWorld.profileViewer.agentBadge': 'Agent',
+ 'agentWorld.profileViewer.humanBadge': 'Humain',
'agentWorld.ledger.loadMore': 'Charger plus',
'agentWorld.ledger.loadingMore': 'Chargement…',
'agentWorld.ledger.loadMoreError': 'Impossible de charger plus de transactions. Réessayez.',
diff --git a/app/src/lib/i18n/hi.ts b/app/src/lib/i18n/hi.ts
index e709ef2a7..232e8a110 100644
--- a/app/src/lib/i18n/hi.ts
+++ b/app/src/lib/i18n/hi.ts
@@ -459,6 +459,25 @@ const messages: TranslationMap = {
'agentWorld.feed.loadingMore': 'और लोड हो रहा है…',
'agentWorld.feed.loadMoreError': 'अधिक पोस्ट लोड नहीं हो सके। फिर से प्रयास करें।',
'agentWorld.ledger': 'खाता बही',
+ 'agentWorld.profileViewer.description': 'सार्वजनिक प्रोफ़ाइल',
+ 'agentWorld.profileViewer.agentCard': 'एजेंट कार्ड',
+ 'agentWorld.profileViewer.loading': 'प्रोफ़ाइल लोड हो रही है…',
+ 'agentWorld.profileViewer.notFoundTitle': 'प्रोफ़ाइल नहीं मिली',
+ 'agentWorld.profileViewer.notFoundBody': 'इस हैंडल के लिए अभी तक कोई प्रकाशित प्रोफ़ाइल नहीं है।',
+ 'agentWorld.profileViewer.errorTitle': 'प्रोफ़ाइल लोड नहीं हो सकी',
+ 'agentWorld.profileViewer.follow': 'फ़ॉलो करें',
+ 'agentWorld.profileViewer.following': 'फ़ॉलो कर रहे हैं',
+ 'agentWorld.profileViewer.copyLink': 'लिंक कॉपी करें',
+ 'agentWorld.profileViewer.linkCopied': 'लिंक कॉपी हो गया',
+ 'agentWorld.profileViewer.skills': 'कौशल',
+ 'agentWorld.profileViewer.verifiedAccounts': 'सत्यापित खाते',
+ 'agentWorld.profileViewer.handlesOwned': 'स्वामित्व वाले हैंडल',
+ 'agentWorld.profileViewer.followers': 'फ़ॉलोअर्स',
+ 'agentWorld.profileViewer.followingCount': 'फ़ॉलोइंग',
+ 'agentWorld.profileViewer.joined': 'शामिल हुए',
+ 'agentWorld.profileViewer.ownProfile': 'यह आपकी प्रोफ़ाइल है',
+ 'agentWorld.profileViewer.agentBadge': 'एजेंट',
+ 'agentWorld.profileViewer.humanBadge': 'मानव',
'agentWorld.ledger.loadMore': 'और लोड करें',
'agentWorld.ledger.loadingMore': 'और लोड हो रहा है…',
'agentWorld.ledger.loadMoreError': 'अधिक लेन-देन लोड नहीं हो सके। फिर से प्रयास करें।',
diff --git a/app/src/lib/i18n/id.ts b/app/src/lib/i18n/id.ts
index 839ddc9de..77954eb44 100644
--- a/app/src/lib/i18n/id.ts
+++ b/app/src/lib/i18n/id.ts
@@ -465,6 +465,25 @@ const messages: TranslationMap = {
'agentWorld.feed.loadingMore': 'Memuat lagi…',
'agentWorld.feed.loadMoreError': 'Tidak dapat memuat postingan lainnya. Coba lagi.',
'agentWorld.ledger': 'Buku Besar',
+ 'agentWorld.profileViewer.description': 'Profil publik',
+ 'agentWorld.profileViewer.agentCard': 'Kartu agen',
+ 'agentWorld.profileViewer.loading': 'Memuat profil…',
+ 'agentWorld.profileViewer.notFoundTitle': 'Profil tidak ditemukan',
+ 'agentWorld.profileViewer.notFoundBody': 'Belum ada profil yang dipublikasikan untuk handel ini.',
+ 'agentWorld.profileViewer.errorTitle': 'Gagal memuat profil',
+ 'agentWorld.profileViewer.follow': 'Ikuti',
+ 'agentWorld.profileViewer.following': 'Mengikuti',
+ 'agentWorld.profileViewer.copyLink': 'Salin tautan',
+ 'agentWorld.profileViewer.linkCopied': 'Tautan disalin',
+ 'agentWorld.profileViewer.skills': 'Keterampilan',
+ 'agentWorld.profileViewer.verifiedAccounts': 'Akun terverifikasi',
+ 'agentWorld.profileViewer.handlesOwned': 'Handel yang dimiliki',
+ 'agentWorld.profileViewer.followers': 'pengikut',
+ 'agentWorld.profileViewer.followingCount': 'mengikuti',
+ 'agentWorld.profileViewer.joined': 'Bergabung',
+ 'agentWorld.profileViewer.ownProfile': 'Ini profil Anda',
+ 'agentWorld.profileViewer.agentBadge': 'Agen',
+ 'agentWorld.profileViewer.humanBadge': 'Manusia',
'agentWorld.ledger.loadMore': 'Muat lebih banyak',
'agentWorld.ledger.loadingMore': 'Memuat lagi…',
'agentWorld.ledger.loadMoreError': 'Tidak dapat memuat transaksi lainnya. Coba lagi.',
diff --git a/app/src/lib/i18n/it.ts b/app/src/lib/i18n/it.ts
index c922c9441..062d3539e 100644
--- a/app/src/lib/i18n/it.ts
+++ b/app/src/lib/i18n/it.ts
@@ -472,6 +472,26 @@ const messages: TranslationMap = {
'agentWorld.feed.loadingMore': 'Caricamento…',
'agentWorld.feed.loadMoreError': 'Impossibile caricare altri post. Riprova.',
'agentWorld.ledger': 'Registro',
+ 'agentWorld.profileViewer.description': 'Profilo pubblico',
+ 'agentWorld.profileViewer.agentCard': 'Scheda agente',
+ 'agentWorld.profileViewer.loading': 'Caricamento profilo…',
+ 'agentWorld.profileViewer.notFoundTitle': 'Profilo non trovato',
+ 'agentWorld.profileViewer.notFoundBody':
+ 'Non esiste ancora un profilo pubblicato per questo handle.',
+ 'agentWorld.profileViewer.errorTitle': 'Impossibile caricare il profilo',
+ 'agentWorld.profileViewer.follow': 'Segui',
+ 'agentWorld.profileViewer.following': 'Stai già seguendo',
+ 'agentWorld.profileViewer.copyLink': 'Copia link',
+ 'agentWorld.profileViewer.linkCopied': 'Link copiato',
+ 'agentWorld.profileViewer.skills': 'Competenze',
+ 'agentWorld.profileViewer.verifiedAccounts': 'Account verificati',
+ 'agentWorld.profileViewer.handlesOwned': 'Handle posseduti',
+ 'agentWorld.profileViewer.followers': 'follower',
+ 'agentWorld.profileViewer.followingCount': 'seguiti',
+ 'agentWorld.profileViewer.joined': 'Iscritto',
+ 'agentWorld.profileViewer.ownProfile': 'Questo è il tuo profilo',
+ 'agentWorld.profileViewer.agentBadge': 'Agente',
+ 'agentWorld.profileViewer.humanBadge': 'Umano',
'agentWorld.ledger.loadMore': 'Carica altro',
'agentWorld.ledger.loadingMore': 'Caricamento…',
'agentWorld.ledger.loadMoreError': 'Impossibile caricare altre transazioni. Riprova.',
diff --git a/app/src/lib/i18n/ko.ts b/app/src/lib/i18n/ko.ts
index e45921d3c..6766de9b2 100644
--- a/app/src/lib/i18n/ko.ts
+++ b/app/src/lib/i18n/ko.ts
@@ -452,6 +452,25 @@ const messages: TranslationMap = {
'agentWorld.feed.loadingMore': '더 불러오는 중…',
'agentWorld.feed.loadMoreError': '게시물을 더 불러오지 못했습니다. 다시 시도하세요.',
'agentWorld.ledger': '원장',
+ 'agentWorld.profileViewer.description': '공개 프로필',
+ 'agentWorld.profileViewer.agentCard': '에이전트 카드',
+ 'agentWorld.profileViewer.loading': '프로필 불러오는 중…',
+ 'agentWorld.profileViewer.notFoundTitle': '프로필을 찾을 수 없음',
+ 'agentWorld.profileViewer.notFoundBody': '이 핸들에 대해 게시된 프로필이 아직 없습니다.',
+ 'agentWorld.profileViewer.errorTitle': '프로필을 불러오지 못했습니다',
+ 'agentWorld.profileViewer.follow': '팔로우',
+ 'agentWorld.profileViewer.following': '팔로잉',
+ 'agentWorld.profileViewer.copyLink': '링크 복사',
+ 'agentWorld.profileViewer.linkCopied': '링크 복사됨',
+ 'agentWorld.profileViewer.skills': '기술',
+ 'agentWorld.profileViewer.verifiedAccounts': '인증된 계정',
+ 'agentWorld.profileViewer.handlesOwned': '보유한 핸들',
+ 'agentWorld.profileViewer.followers': '팔로워',
+ 'agentWorld.profileViewer.followingCount': '팔로잉',
+ 'agentWorld.profileViewer.joined': '가입일',
+ 'agentWorld.profileViewer.ownProfile': '내 프로필입니다',
+ 'agentWorld.profileViewer.agentBadge': '에이전트',
+ 'agentWorld.profileViewer.humanBadge': '사람',
'agentWorld.ledger.loadMore': '더 보기',
'agentWorld.ledger.loadingMore': '더 불러오는 중…',
'agentWorld.ledger.loadMoreError': '거래를 더 불러오지 못했습니다. 다시 시도하세요.',
diff --git a/app/src/lib/i18n/pl.ts b/app/src/lib/i18n/pl.ts
index 79754df75..241a1b624 100644
--- a/app/src/lib/i18n/pl.ts
+++ b/app/src/lib/i18n/pl.ts
@@ -470,6 +470,26 @@ const messages: TranslationMap = {
'agentWorld.feed.loadingMore': 'Ładowanie…',
'agentWorld.feed.loadMoreError': 'Nie udało się załadować kolejnych postów. Spróbuj ponownie.',
'agentWorld.ledger': 'Księga',
+ 'agentWorld.profileViewer.description': 'Profil publiczny',
+ 'agentWorld.profileViewer.agentCard': 'Karta agenta',
+ 'agentWorld.profileViewer.loading': 'Ładowanie profilu…',
+ 'agentWorld.profileViewer.notFoundTitle': 'Nie znaleziono profilu',
+ 'agentWorld.profileViewer.notFoundBody':
+ 'Dla tej nazwy użytkownika nie ma jeszcze opublikowanego profilu.',
+ 'agentWorld.profileViewer.errorTitle': 'Nie udało się załadować profilu',
+ 'agentWorld.profileViewer.follow': 'Obserwuj',
+ 'agentWorld.profileViewer.following': 'Obserwujesz',
+ 'agentWorld.profileViewer.copyLink': 'Kopiuj link',
+ 'agentWorld.profileViewer.linkCopied': 'Link skopiowany',
+ 'agentWorld.profileViewer.skills': 'Umiejętności',
+ 'agentWorld.profileViewer.verifiedAccounts': 'Zweryfikowane konta',
+ 'agentWorld.profileViewer.handlesOwned': 'Posiadane nazwy użytkownika',
+ 'agentWorld.profileViewer.followers': 'obserwujący',
+ 'agentWorld.profileViewer.followingCount': 'obserwowani',
+ 'agentWorld.profileViewer.joined': 'Dołączono',
+ 'agentWorld.profileViewer.ownProfile': 'To jest Twój profil',
+ 'agentWorld.profileViewer.agentBadge': 'Agent',
+ 'agentWorld.profileViewer.humanBadge': 'Człowiek',
'agentWorld.ledger.loadMore': 'Załaduj więcej',
'agentWorld.ledger.loadingMore': 'Ładowanie…',
'agentWorld.ledger.loadMoreError':
diff --git a/app/src/lib/i18n/pt.ts b/app/src/lib/i18n/pt.ts
index fba1a7752..928d198ef 100644
--- a/app/src/lib/i18n/pt.ts
+++ b/app/src/lib/i18n/pt.ts
@@ -464,6 +464,26 @@ const messages: TranslationMap = {
'agentWorld.feed.loadingMore': 'Carregando mais…',
'agentWorld.feed.loadMoreError': 'Não foi possível carregar mais publicações. Tente novamente.',
'agentWorld.ledger': 'Livro-razão',
+ 'agentWorld.profileViewer.description': 'Perfil público',
+ 'agentWorld.profileViewer.agentCard': 'Cartão do agente',
+ 'agentWorld.profileViewer.loading': 'Carregando perfil…',
+ 'agentWorld.profileViewer.notFoundTitle': 'Perfil não encontrado',
+ 'agentWorld.profileViewer.notFoundBody':
+ 'Ainda não existe um perfil publicado para este identificador.',
+ 'agentWorld.profileViewer.errorTitle': 'Falha ao carregar o perfil',
+ 'agentWorld.profileViewer.follow': 'Seguir',
+ 'agentWorld.profileViewer.following': 'Seguindo',
+ 'agentWorld.profileViewer.copyLink': 'Copiar link',
+ 'agentWorld.profileViewer.linkCopied': 'Link copiado',
+ 'agentWorld.profileViewer.skills': 'Habilidades',
+ 'agentWorld.profileViewer.verifiedAccounts': 'Contas verificadas',
+ 'agentWorld.profileViewer.handlesOwned': 'Handles próprios',
+ 'agentWorld.profileViewer.followers': 'seguidores',
+ 'agentWorld.profileViewer.followingCount': 'seguindo',
+ 'agentWorld.profileViewer.joined': 'Entrou',
+ 'agentWorld.profileViewer.ownProfile': 'Este é o seu perfil',
+ 'agentWorld.profileViewer.agentBadge': 'Agente',
+ 'agentWorld.profileViewer.humanBadge': 'Humano',
'agentWorld.ledger.loadMore': 'Carregar mais',
'agentWorld.ledger.loadingMore': 'Carregando mais…',
'agentWorld.ledger.loadMoreError': 'Não foi possível carregar mais transações. Tente novamente.',
diff --git a/app/src/lib/i18n/ru.ts b/app/src/lib/i18n/ru.ts
index a0b89fbc4..9eb8ad70d 100644
--- a/app/src/lib/i18n/ru.ts
+++ b/app/src/lib/i18n/ru.ts
@@ -464,6 +464,26 @@ const messages: TranslationMap = {
'agentWorld.feed.loadingMore': 'Загрузка…',
'agentWorld.feed.loadMoreError': 'Не удалось загрузить больше публикаций. Попробуйте ещё раз.',
'agentWorld.ledger': 'Реестр',
+ 'agentWorld.profileViewer.description': 'Публичный профиль',
+ 'agentWorld.profileViewer.agentCard': 'Карточка агента',
+ 'agentWorld.profileViewer.loading': 'Загрузка профиля…',
+ 'agentWorld.profileViewer.notFoundTitle': 'Профиль не найден',
+ 'agentWorld.profileViewer.notFoundBody':
+ 'Для этого идентификатора пока нет опубликованного профиля.',
+ 'agentWorld.profileViewer.errorTitle': 'Не удалось загрузить профиль',
+ 'agentWorld.profileViewer.follow': 'Подписаться',
+ 'agentWorld.profileViewer.following': 'Вы подписаны',
+ 'agentWorld.profileViewer.copyLink': 'Скопировать ссылку',
+ 'agentWorld.profileViewer.linkCopied': 'Ссылка скопирована',
+ 'agentWorld.profileViewer.skills': 'Навыки',
+ 'agentWorld.profileViewer.verifiedAccounts': 'Подтверждённые аккаунты',
+ 'agentWorld.profileViewer.handlesOwned': 'Собственные хэндлы',
+ 'agentWorld.profileViewer.followers': 'подписчиков',
+ 'agentWorld.profileViewer.followingCount': 'подписок',
+ 'agentWorld.profileViewer.joined': 'Дата присоединения',
+ 'agentWorld.profileViewer.ownProfile': 'Это ваш профиль',
+ 'agentWorld.profileViewer.agentBadge': 'Агент',
+ 'agentWorld.profileViewer.humanBadge': 'Человек',
'agentWorld.ledger.loadMore': 'Загрузить ещё',
'agentWorld.ledger.loadingMore': 'Загрузка…',
'agentWorld.ledger.loadMoreError': 'Не удалось загрузить больше транзакций. Попробуйте ещё раз.',
diff --git a/app/src/lib/i18n/zh-CN.ts b/app/src/lib/i18n/zh-CN.ts
index 4d8a3ec63..eef3c3884 100644
--- a/app/src/lib/i18n/zh-CN.ts
+++ b/app/src/lib/i18n/zh-CN.ts
@@ -428,6 +428,25 @@ const messages: TranslationMap = {
'agentWorld.feed.loadingMore': '正在加载…',
'agentWorld.feed.loadMoreError': '无法加载更多帖子,请重试。',
'agentWorld.ledger': '账本',
+ 'agentWorld.profileViewer.description': '公开资料',
+ 'agentWorld.profileViewer.agentCard': '智能体卡片',
+ 'agentWorld.profileViewer.loading': '正在加载资料…',
+ 'agentWorld.profileViewer.notFoundTitle': '未找到资料',
+ 'agentWorld.profileViewer.notFoundBody': '此账号句柄尚未发布资料。',
+ 'agentWorld.profileViewer.errorTitle': '无法加载资料',
+ 'agentWorld.profileViewer.follow': '关注',
+ 'agentWorld.profileViewer.following': '已关注',
+ 'agentWorld.profileViewer.copyLink': '复制链接',
+ 'agentWorld.profileViewer.linkCopied': '链接已复制',
+ 'agentWorld.profileViewer.skills': '技能',
+ 'agentWorld.profileViewer.verifiedAccounts': '已验证账户',
+ 'agentWorld.profileViewer.handlesOwned': '拥有的句柄',
+ 'agentWorld.profileViewer.followers': '关注者',
+ 'agentWorld.profileViewer.followingCount': '正在关注',
+ 'agentWorld.profileViewer.joined': '加入于',
+ 'agentWorld.profileViewer.ownProfile': '这是你的资料',
+ 'agentWorld.profileViewer.agentBadge': '智能体',
+ 'agentWorld.profileViewer.humanBadge': '人类',
'agentWorld.ledger.loadMore': '加载更多',
'agentWorld.ledger.loadingMore': '正在加载…',
'agentWorld.ledger.loadMoreError': '无法加载更多交易,请重试。',