--- task_number: 91 status: complete priority: P2 owner: Michael created: 2026-04-04 --- task_number: 91 # Task: Fix Server Matrix Node Detection **Task ID:** #91 **Created:** April 4, 2026 **Status:** In Progress — waiting for Michael to get home (needs MobaXterm) **Priority:** High (blocking Holly's new servers from appearing) --- task_number: 91 ## Problem Holly added 6 new servers ~2 hours ago. They don't appear in Trinity Console Server Matrix. **Root Cause:** The matrix grouping logic filters servers by either: 1. Node name matching ("TX1", "NC1", "Node 2", "Node 3") 2. Server name containing "TX" or "NC" Servers that match NEITHER condition fall through and aren't displayed. **Affected Servers (not showing):** - Beyond Ascension - Wold's Vaults - Otherworld [Dungeons & Dragons] - DeceasedCraft - Submerged 2 - (1 more — 18 total, 12 showing) **Servers showing (have -TX or -NC suffix):** - Mythcraft 5 - NC - Create Plus - TX - Vanilla - TX - Beyond Depth - TX - (8 more) --- task_number: 91 ## The Fix ### Part 1: Update discovery.js **File:** `/home/claude/firefrost-services/services/arbiter-3.0/src/panel/discovery.js` **Change:** Add `nodeId` to the returned server object. ```javascript // Line 25-28, change from: }).map(server => ({ identifier: server.attributes.identifier, name: server.attributes.name })); // To: }).map(server => ({ identifier: server.attributes.identifier, name: server.attributes.name, nodeId: server.attributes.node })); ``` ### Part 2: Update servers.js grouping logic **File:** `/home/claude/firefrost-services/services/arbiter-3.0/src/routes/admin/servers.js` **Change:** Replace name-based filtering with node ID filtering. ```javascript // Line 47-48, change from: const txServers = enrichedServers.filter(s => s.node === 'TX1' || s.node === 'Node 3' || s.name.includes('TX')); const ncServers = enrichedServers.filter(s => s.node === 'NC1' || s.node === 'Node 2' || s.name.includes('NC')); // To (replace X and Y with actual node IDs): const TX_NODE_ID = X; // Get from Pterodactyl Admin → Nodes const NC_NODE_ID = Y; // Get from Pterodactyl Admin → Nodes const txServers = enrichedServers.filter(s => s.nodeId === TX_NODE_ID); const ncServers = enrichedServers.filter(s => s.nodeId === NC_NODE_ID); ``` --- task_number: 91 ## Information Needed Before implementing, get from Pterodactyl Admin → Nodes: - [ ] **TX1 (Dallas) Node ID:** ___ - [ ] **NC1 (Charlotte) Node ID:** ___ --- task_number: 91 ## Implementation Steps 1. SSH to Command Center (63.143.34.217) via MobaXterm 2. `cd /path/to/arbiter-3` (verify actual path) 3. Edit `src/panel/discovery.js` — add nodeId 4. Edit `src/routes/admin/servers.js` — update grouping logic with node IDs 5. Restart Arbiter: `sudo systemctl restart arbiter-3` 6. Verify all 18 servers appear in Trinity Console 7. Commit changes to Gitea --- task_number: 91 ## Future Consideration **Also discussed:** Removing the nest filter entirely for future expansion (Ark, Palworld, etc.) Current filter: `MINECRAFT_NEST_IDS=1,6,7` **Recommendation:** Consult Gemini before removing — may have downstream implications for whitelist sync trying to write to non-Minecraft servers. --- task_number: 91 ## Related Files - `services/arbiter-3.0/src/panel/discovery.js` - `services/arbiter-3.0/src/routes/admin/servers.js` - `.env` (MINECRAFT_NEST_IDS) --- task_number: 91 **Fire + Frost + Proper Node Detection** 🔥❄️