This repository has no description
0

Configure Feed

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

Merge branch 'master' into testing

+31 -32
+4
.github/FUNDING.yml
··· 1 + # These are supported funding model platforms 2 + 3 + patreon: dameis 4 + ko_fi: dameis
+18 -26
src/accountData.js
··· 434 434 altTextPercentage = 0, 435 435 postsPerDay = 0, 436 436 } = stats; 437 + 438 + // Check for lurker first 437 439 if (postsPerDay < 0.1 && stats.totalBskyRecordsPerDay > 0.3) { 438 440 return "Lurker"; 439 441 } 440 - if (onlyPostsPerDay > 0.8 && replyOtherPercentage >= 0.3) { 441 - if (textPercentage > linkPercentage && textPercentage > imagePercentage && textPercentage > videoPercentage) { 442 - return "Engaged Text Poster"; 443 - } 444 - if (imagePercentage > linkPercentage && imagePercentage > textPercentage && imagePercentage > videoPercentage) { 445 - return altTextPercentage <= 0.3 ? "Engaged Image Poster who should use more alt text" : "Engaged Image Poster"; 446 - } 447 - if (linkPercentage > imagePercentage && linkPercentage > textPercentage && linkPercentage > videoPercentage) { 448 - return "Engaged Link Poster"; 449 - } 450 - if (videoPercentage > imagePercentage && videoPercentage > textPercentage && videoPercentage > linkPercentage) { 451 - return "Engaged Video Poster"; 452 - } 453 - return "Engaged Poster"; 454 - } else if (onlyPostsPerDay > 0.8 && replyOtherPercentage < 0.3) { 442 + 443 + // If posting regularly (removed engagement check) 444 + if (onlyPostsPerDay > 0.8) { 455 445 if (textPercentage > linkPercentage && textPercentage > imagePercentage && textPercentage > videoPercentage) { 456 - return "Unengaged Text Poster"; 446 + return "Text Poster"; 457 447 } 458 448 if (imagePercentage > linkPercentage && imagePercentage > textPercentage && imagePercentage > videoPercentage) { 459 - return altTextPercentage <= 0.3 ? "Unengaged Image Poster who is inconsistent with alt text" : "Unengaged Image Poster"; 449 + return altTextPercentage <= 0.3 ? "Image Poster whose working on using alt text" : "Image Poster"; 460 450 } 461 451 if (linkPercentage > imagePercentage && linkPercentage > textPercentage && linkPercentage > videoPercentage) { 462 - return "Unengaged Link Poster"; 452 + return "Link Poster"; 463 453 } 464 454 if (videoPercentage > imagePercentage && videoPercentage > textPercentage && videoPercentage > linkPercentage) { 465 - return "Unengaged Video Poster"; 455 + return "Video Poster"; 466 456 } 467 - return "Unengaged Poster"; 457 + return "Mixed Content Poster"; 468 458 } 459 + 460 + // Special interaction types 469 461 if (replyOtherPercentage >= 0.5) return "Reply Guy"; 470 462 if (stats.quoteOtherPercentage >= 0.5) return "Quote Guy"; 471 463 if (stats.repostOtherPercentage >= 0.5) return "Repost Guy"; 464 + 472 465 return "Unknown"; 473 - 474 466 } 475 467 476 468 // 1. First, add this new function to calculate engagement rate ··· 526 518 527 519 // Add engagement qualifier for all status levels 528 520 if (engagementRate <= ENGAGEMENT_THRESHOLDS.low) { 529 - return `Unengaging ${baseStatus}`; 521 + return `${baseStatus}`; 530 522 } else if (engagementRate <= ENGAGEMENT_THRESHOLDS.moderate) { 531 - return `Moderately Engaging ${baseStatus}`; 523 + return `Engaging ${baseStatus}`; 532 524 } else if (engagementRate >= ENGAGEMENT_THRESHOLDS.high) { 533 525 return `Highly Engaging ${baseStatus}`; 534 526 } ··· 1072 1064 if (engagementRate > 0.03) { 1073 1065 engagementPhrase = "with exceptionally high engagement"; 1074 1066 } else if (engagementRate > 0.01) { 1075 - engagementPhrase = "with strong engagement"; 1067 + engagementPhrase = "with very high engagement"; 1076 1068 } else if (engagementRate > 0.005) { 1077 - engagementPhrase = "with moderate engagement"; 1069 + engagementPhrase = "with high engagement"; 1078 1070 } else { 1079 - engagementPhrase = "with relatively low engagement"; 1071 + engagementPhrase = "with normal engagement"; 1080 1072 } 1081 1073 1082 1074 const narrative3 =
+9 -6
src/components/Leaderboard/Leaderboard.css
··· 7 7 8 8 .leaderboard-card { 9 9 background: var(--navbar-bg); 10 - border-radius: 8px; 10 + border-radius: 12px; 11 11 border: 5px solid var(--card-border); 12 - padding: 1.5rem; 12 + padding: 1.7rem; 13 13 transition: background-color 0.3s ease, border-color 0.3s ease; 14 14 } 15 15 ··· 37 37 38 38 .filter-button { 39 39 padding: 0.5rem 1rem; 40 - border-radius: 9999px; 40 + border-radius: 6px; 41 41 border: none; 42 42 cursor: pointer; 43 43 transition: all 0.2s ease; ··· 74 74 75 75 .table-container { 76 76 overflow-x: auto; 77 - padding-bottom: 20px; /* Space for the scrollbar */ 78 77 } 79 78 80 79 /* Webkit scrollbar styles */ ··· 115 114 .leaderboard-table th, 116 115 .leaderboard-table td { 117 116 padding: 0.75rem 1rem; 118 - text-align: left; 117 + text-align: center; 119 118 color: var(--text); 120 119 transition: color 0.3s ease; 121 120 } ··· 131 130 } 132 131 133 132 .leaderboard-table tr:hover { 134 - background: var(--card-border); 133 + background: #b6b6b6; 134 + } 135 + 136 + .dark-mode .leaderboard-table tr:hover { 137 + background: #151515; 135 138 } 136 139 137 140 /* Runner-up styling */