From ae4c7476dfd9613a4d3234ae9ba6a49aaae6ca69 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 13 Apr 2026 04:34:28 +0000 Subject: [PATCH] docs: Add Gemini response + Michael feedback to UX overhaul consultation --- ...i-modpackchecker-ux-overhaul-2026-04-12.md | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/docs/consultations/gemini-modpackchecker-ux-overhaul-2026-04-12.md b/docs/consultations/gemini-modpackchecker-ux-overhaul-2026-04-12.md index 5fb2727..c4cebc1 100644 --- a/docs/consultations/gemini-modpackchecker-ux-overhaul-2026-04-12.md +++ b/docs/consultations/gemini-modpackchecker-ux-overhaul-2026-04-12.md @@ -288,3 +288,78 @@ Thanks Gemini! This one's a meaty one and we appreciate you. 🔥❄️ — Michael (The Wizard) + Claude (Chronicler #84 — The Meridian) **Firefrost Gaming | Fire + Frost + Foundation = Where Love Builds Legacy** 💙🔥❄️ + +--- + +## Gemini's Response (April 13, 2026) + +**Summary:** Stop comparing strings — use File IDs. Use date-time heuristic for seeding. Zero-click cached widget with Recalibrate dropdown. Log sideloading via Pterodactyl websocket is wild but viable. + +### Key Decisions from Gemini + +**1. Core Paradigm Shift: File ID Comparison** +Stop comparing display names. Use sequential File IDs from CurseForge/Modrinth. +- Add `current_file_id` and `latest_file_id` to `modpackchecker_servers` +- If `latest_file_id > current_file_id` → update available. Clean, reliable. +- Version strings become cosmetic only. + +**2. Seeding Heuristic: Use modpack_installations.created_at** +On first detection, query the platform API for file history. Find the release date closest to (but not after) the installation timestamp. That's the assumed current version. Much better than "assume current = latest." + +```php +$installDate = $installationRecord->created_at; +$releases = $platformApi->getModpackFiles($modpackId); +$assumedCurrentFile = collect($releases) + ->where('releaseDate', '<=', $installDate) + ->sortByDesc('releaseDate') + ->first(); +``` + +**3. Zero-Click Widget with Recalibrate** +- `useEffect` loads cached DB state on mount — no click required +- Shows: platform icon | current version → latest version +- "Calibrate" button opens dropdown showing last 5 releases +- Admin clicks to set current version manually +- New GET endpoint: `/api/client/extensions/modpackchecker/servers/{uuid}/status` + +**4. Not-a-Modpack Handling** +- Nest ID filtering ❌ — Michael's eggs span multiple nests, doesn't work +- `is_ignored` boolean in `modpackchecker_servers` ✅ — manual "Hide" button in widget +- Widget unmounts permanently for ignored servers, cron skips them + +**5. Log Sideloading — Investigated in Live Testing** + +Tested on Mythcraft 5 restart log. Findings: +- `latest.log` IS readable via Wings ✅ +- `BetterCompatibilityChecker` mod prints `Modpack: X | Version: Y` on startup — but only Mythcraft has it, and it's unconfigured (`CHANGE_ME`) +- Most packs (ATM10, etc.) have no startup version declaration +- Log rolls over — only useful if server recently restarted + +**Verdict:** Log parsing via Wings file read is viable as an OPTIONAL detection signal. If BCC is present and configured, parse it. Not reliable enough to be primary. Gemini's websocket approach (tapping live console stream) would be better but more complex. + +### Michael's Feedback on Wild Ideas + +| Idea | Verdict | +|------|---------| +| Trinity Core notifications | Good for Firefrost internally, not for commercial product | +| Multi-panel HQ | Great idea — get v1.0.0 working first | +| One-click updates | Deep concerns to discuss separately — complex lifecycle issues | +| Log sideloading | Excellent — if BCC configured, easy to document "restart required for detection" | + +--- + +## Conclusion + +**v1.1.0 priorities confirmed:** +1. File ID comparison (foundational fix) +2. Date-time seeding heuristic (solves false "up to date") +3. Zero-click widget with Recalibrate dropdown (UX overhaul) +4. `is_ignored` flag (clean up non-modpack servers) +5. BCC log parsing as optional detection signal + +**Next Steps:** +1. Dispatch full plan to Code +2. Implement File ID schema migration +3. Build new GET status endpoint for zero-click widget +4. Redesign ModpackVersionCard.tsx +5. Add Recalibrate dropdown with last-5-releases API call