TRINITY CONSOLE IS LIVE at https://discord-bot.firefrostgaming.com/admin Deployment Status: 95% Complete - LAUNCHED Deployed by: Chronicler #51 Server: Command Center (63.143.34.217) WHAT WAS DEPLOYED: ================== ✅ All 7 modules functional (Dashboard, Servers, Players, Financials*, Grace Period, Audit Log, Role Audit) ✅ Database migration applied (3 tables, 6 columns, 7 indexes) ✅ CSRF security protection ✅ Trinity-only access control verified ✅ Fire/Frost branding throughout ✅ Dark mode working *Financials is placeholder - full implementation in Phase 2 CRITICAL FIXES APPLIED: ======================= 1. layout.ejs - Fixed DOMContentLoaded wrapper for CSRF htmx config - Prevented 'addEventListener on null' error - CSRF token now loads after body element exists 2. constants.js - Added Admin tier (1000) for Trinity members - Michael, Meg, Holly now show as 'Admin' not 'Sovereign' - Lifetime tier with $0 MRR 3. players/_table_body.ejs - Fixed Minecraft skin rendering - Changed from Crafatar to mc-heads.net (more reliable) - Added fallback to Steve skin on error - Fixed skin not displaying issue 4. financials/index.ejs - Created placeholder to unblock launch - Original template had nested EJS causing parse errors - Temporary placeholder deployed - Full implementation queued for Phase 2 (45-60 min) PHASE 2 WORK (Later Today): ============================ Priority 1: Full Financials implementation (45-60 min) - Real MRR calculations from database - Fire vs Frost path breakdown - Tier-by-tier revenue analytics - At-risk MRR tracking - Lifetime revenue from Sovereign Priority 2: Players Edit functionality (30 min) - Tier change dropdown - Discord role sync - Audit log integration AUTHORIZED USERS: ================= - Holly (unicorn20089): 269225344572063754 - Michael (Frostystyle): 219309716021444609 - Meg (Gingerfury66): 669981568059703316 TESTING STATUS: =============== ✅ All modules load without errors ✅ Navigation functional ✅ Access control verified ✅ Service running stable ⏳ Trinity user testing pending ⏳ Mobile/cellular testing pending DOCUMENTATION: ============== Complete deployment guide: TRINITY-CONSOLE-DEPLOYMENT-2026-04-01.md Includes: deployment steps, rollback plan, testing checklist, technical notes, Phase 2 roadmap FILES CHANGED: ============== - services/arbiter-3.0/src/views/layout.ejs - services/arbiter-3.0/src/views/admin/players/_table_body.ejs - services/arbiter-3.0/src/views/admin/financials/index.ejs - services/arbiter-3.0/src/routes/admin/constants.js - TRINITY-CONSOLE-DEPLOYMENT-2026-04-01.md (new) PRODUCTION DEPLOYMENT COMPLETE ✅ Fire + Frost + Foundation = Where Love Builds Legacy 🔥❄️💙 Built by Zephyr (Chronicler #50), Deployed by Chronicler #51 For The Trinity: Michael, Meg, Holly Signed-off-by: Claude (Chronicler #51) <claude@firefrostgaming.com>
44 lines
2.4 KiB
Plaintext
44 lines
2.4 KiB
Plaintext
<% if (players.length === 0) { %>
|
|
<tr><td colspan="5" class="px-6 py-8 text-center text-gray-500">No players found.</td></tr>
|
|
<% } %>
|
|
<% players.forEach(player => { %>
|
|
<tr class="border-b border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-800/50">
|
|
<td class="px-6 py-4 font-mono text-xs"><%= player.discord_id %></td>
|
|
<td class="px-6 py-4">
|
|
<div class="flex items-center gap-3">
|
|
<img src="https://mc-heads.net/avatar/<%= player.minecraft_uuid %>/32" class="w-8 h-8 rounded" alt="<%= player.minecraft_username %>" onerror="this.src='https://mc-heads.net/avatar/steve/32'">
|
|
<div>
|
|
<div class="font-medium"><%= player.minecraft_username || 'Unlinked' %></div>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
<td class="px-6 py-4">
|
|
<% const tier = TIER_INFO[player.tier_level] || { name: 'None', path: 'universal' }; %>
|
|
<span class="px-2.5 py-1 text-xs rounded-full font-medium border
|
|
<%= tier.path === 'fire' ? 'bg-orange-100 text-orange-700 border-orange-200 dark:bg-orange-900/30 dark:text-orange-400 dark:border-orange-800/50' :
|
|
tier.path === 'frost' ? 'bg-cyan-100 text-cyan-700 border-cyan-200 dark:bg-cyan-900/30 dark:text-cyan-400 dark:border-cyan-800/50' :
|
|
'bg-purple-100 text-purple-700 border-purple-200 dark:bg-purple-900/30 dark:text-purple-400 dark:border-purple-800/50' %>">
|
|
<%= tier.name %>
|
|
</span>
|
|
</td>
|
|
<td class="px-6 py-4">
|
|
<span class="inline-flex items-center gap-1.5">
|
|
<span class="w-2 h-2 rounded-full <%= player.status === 'active' || player.status === 'lifetime' ? 'bg-green-500' : player.status === 'grace_period' ? 'bg-yellow-500' : 'bg-red-500' %>"></span>
|
|
<%= player.status || 'Unknown' %>
|
|
</span>
|
|
</td>
|
|
<td class="px-6 py-4 text-right">
|
|
<span class="text-gray-400 text-sm">(Coming Soon)</span>
|
|
</td>
|
|
</tr>
|
|
<% }) %>
|
|
<tr class="bg-gray-50 dark:bg-gray-800/50">
|
|
<td colspan="5" class="px-6 py-3 text-center">
|
|
<button hx-get="/admin/players/table?page=<%= page + 1 %>&search=<%= search %>"
|
|
hx-target="#player-table-body"
|
|
class="text-sm font-medium text-gray-500 hover:text-gray-700 dark:hover:text-gray-300">
|
|
Load More Players ↓
|
|
</button>
|
|
</td>
|
|
</tr>
|