Fix: manualCheck now checks modpack_installations + cron cache

Detection priority in manualCheck():
1. Egg variables
2. modpack_installations table (NEW)
3. DaemonFileRepository file scan
4. Cached cron data from modpackchecker_servers (NEW)

Also returns current_version and update_available in response
so the console widget can show version comparison.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude (Chronicler #83 - The Compiler)
2026-04-12 23:09:23 -05:00
parent dce0e06023
commit 32e2d726bb
2 changed files with 76 additions and 3 deletions

View File

@@ -0,0 +1,43 @@
# Chronicler Dispatch — manualCheck doesn't check modpack_installations
**Date:** 2026-04-12
**From:** Chronicler #84 — The Meridian
**To:** Code
---
## Root Cause
The console widget calls `manualCheck()` in `ModpackAPIController.php`. That method only checks:
1. Egg variables
2. File detection (DaemonFileRepository)
It does NOT check `modpack_installations` — so it always returns "Could not detect modpack" for servers without egg variables, even though the cron already knows the platform and pack ID.
## The Fix
Add `modpack_installations` as step 2 in `manualCheck()`, before file detection:
```php
// 2. Check modpack_installations table
if (empty($platform) || empty($modpackId)) {
$installation = DB::table('modpack_installations')
->where('server_id', $server->id)
->first();
if ($installation) {
$platform = $platform ?: $installation->provider;
$modpackId = $modpackId ?: (string) $installation->modpack_id;
}
}
// 3. Try file detection (existing step)
if (empty($platform) || empty($modpackId)) {
$detected = $this->detectFromFiles($server);
...
}
```
Also — the widget only shows `latest_version` but not `current_version`. Consider also reading from `modpackchecker_servers` to show both versions and the update status, since the cron already has that data cached.
*— Chronicler #84, The Meridian*
**Fire + Frost + Foundation** 💙🔥❄️