{"kind":1640,"pubkey":"573634b648634cbad10f2451776089ea21090d9407f715e83c577b4611ae6edc","created_at":1771690183,"tags":[["author","Silberengel","silberengel7@protonmail.com"],["message","get rid of tabs on repo page"]],"content":"Signed commit: get rid of tabs on repo page","id":"d34fb23385a23f479c683e76f5676356a11d63bcd0ecf71d25f1b85dbb0cfe57","sig":"1f6454f9961b9245d1e32f4a903ee9636201670491145d0185e95e7b7d33bf1027ac5b8e370070640e103740ab19e9915baa7755c6008fd32fe41e9cb86d33b8"}
{"kind":1640,"pubkey":"573634b648634cbad10f2451776089ea21090d9407f715e83c577b4611ae6edc","created_at":1771690183,"tags":[["author","Silberengel","silberengel7@protonmail.com"],["message","get rid of tabs on repo page"]],"content":"Signed commit: get rid of tabs on repo page","id":"d34fb23385a23f479c683e76f5676356a11d63bcd0ecf71d25f1b85dbb0cfe57","sig":"1f6454f9961b9245d1e32f4a903ee9636201670491145d0185e95e7b7d33bf1027ac5b8e370070640e103740ab19e9915baa7755c6008fd32fe41e9cb86d33b8"}
logger.warn({userPubkeyHex: userPubkeyHex.slice(0,16)+'...',error: verification.error},'Relays down and no cached unlimited access');
throwerror(503,'Relays are temporarily unavailable and no cached access level found. Please verify your access level first by visiting your profile page.');
}
}else{
// Verification failed - user doesn't have write access
logger.warn({userPubkeyHex: userPubkeyHex.slice(0,16)+'...',error: verification.error},'User does not have unlimited access');
throwerror(403,`Only users with unlimited access can clone repositories to the server. ${verification.error||'Please verify you can write to at least one default Nostr relay.'}`);
}
}
}catch(err){
// If it's already an error response, re-throw it
if(err&&typeoferr==='object'&&'status'inerr){
throwerr;
}
logger.error({error: err,userPubkeyHex: userPubkeyHex.slice(0,16)+'...'},'Error verifying user level');
// Fall through to check cache one more time
userLevel=getCachedUserLevel(userPubkeyHex);
}
}else{
// No proof event or auth header - check if we have any cached level
if(!userLevel){
logger.warn({userPubkeyHex: userPubkeyHex.slice(0,16)+'...'},'No cached user level and no proof event or NIP-98 auth header');
throwerror(403,'Only users with unlimited access can clone repositories to the server. Please verify your access level first by visiting your profile page or ensuring you can write to at least one default Nostr relay.');
throwerror(403,'Only users with unlimited access can clone repositories to the server. Please verify you can write to at least one default Nostr relay.');
},'Repository announcement not found in Nostr (case-insensitive search)');
consterrorMessage=authorAnnouncements.length>0
?`Repository announcement not found in Nostr for ${npub}/${repo}. Found ${authorAnnouncements.length} other repository announcement(s) by this author. Please verify the repository name is correct.`
:`Repository announcement not found in Nostr for ${npub}/${repo}. Please verify that the repository exists and has been announced on Nostr relays.`;