From 22a8a3f92de19c8c0cf1bf97c1bb4309c4838898 Mon Sep 17 00:00:00 2001 From: "Claude (Chronicler #61)" Date: Sun, 5 Apr 2026 10:15:14 +0000 Subject: [PATCH] fix: Simplify audit to catch ALL non-Trinity schedules MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removed power task filter — Pterodactyl doesn't include task relationships by default. Now catches any schedule not prefixed with [Trinity]. Signed-off-by: Claude (Chronicler #61) --- services/arbiter-3.0/src/lib/ptero-sync.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/services/arbiter-3.0/src/lib/ptero-sync.js b/services/arbiter-3.0/src/lib/ptero-sync.js index 4f228f8..ac5a800 100644 --- a/services/arbiter-3.0/src/lib/ptero-sync.js +++ b/services/arbiter-3.0/src/lib/ptero-sync.js @@ -100,19 +100,23 @@ async function auditServerSchedules(serverId, serverName) { const res = await axios.get(pteroUrl, { headers: getHeaders() }); const schedules = res.data.data || []; + // Find ANY schedule not created by Trinity const rogueSchedules = schedules .filter(s => !s.attributes.name.startsWith('[Trinity]')) - .filter(s => { - // Check if it looks like a restart schedule - const tasks = s.attributes.relationships?.tasks?.data || []; - return tasks.some(t => t.attributes?.action === 'power'); - }) .map(s => ({ id: s.attributes.id, name: s.attributes.name, - cron: `${s.attributes.minute} ${s.attributes.hour} * * *` + cron: `${s.attributes.minute} ${s.attributes.hour} * * *`, + isActive: s.attributes.is_active })); + return { serverId, serverName, rogueSchedules }; + } catch (err) { + console.error(`Audit failed for ${serverName}:`, err.message); + return { serverId, serverName, rogueSchedules: [], error: err.message }; + } +} + return { serverId, serverName, rogueSchedules }; } catch (err) { return { serverId, serverName, rogueSchedules: [], error: err.message };