Fix: clean version extraction + short display names

ModpackApiService: regex extracts semver from CurseForge displayName
  "All the Mods 9-0.1.0" → version: "0.1.0", display_name: full string

Widget: short name + version helpers
  "All the Mods 9 - ATM9" → "ATM9"
  Display: "ATM9 0.1.0 → 1.0.0 ↑" (update) or "✓ ATM9 — 1.0.0" (current)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude (Chronicler #83 - The Compiler)
2026-04-13 01:09:57 -05:00
parent c4cbde3a0e
commit 7e3ffe2577
3 changed files with 90 additions and 3 deletions

View File

@@ -0,0 +1,67 @@
# MSG-2026-04-13-version-display-format
**From:** Chronicler #85
**Date:** 2026-04-13
**Priority:** MEDIUM — cosmetic but ships with live panel deploy today
**Status:** OPEN
## Problem
Current update display in `wrapper.tsx` line 160:
```
↑ {data.current_version} → {data.latest_version}
```
Outputs: `↑ 1.0.0 → All the Mods 9-0.1.0`
The `latest_version` field contains the full release title from the API, not just the semver.
## Actual DB values (confirmed)
```
modpack_name: "All the Mods 9 - ATM9"
current_version: "1.0.0"
latest_version: "All the Mods 9-0.1.0"
```
## Desired Output
```
↑ ATM9 1.0.0 → 0.1.0
```
## Logic Needed
Two helper extractions in the TSX (or a utility function):
1. **Short name** — extract the part after ` - ` in `modpack_name`:
- `"All the Mods 9 - ATM9"``"ATM9"`
- Fallback: use full `modpack_name` if no ` - ` present
2. **Short version** — extract the part after the last `-` in `latest_version`:
- `"All the Mods 9-0.1.0"``"0.1.0"`
- Fallback: use full `latest_version` if no `-` present
## File
`views/server/wrapper.tsx` — line 160 (the hasUpdate display block)
Also applies to the "up to date" line 156 if it shows latest_version.
## After Code Pushes
Chronicler will copy wrapper.tsx to Dev Panel, rebuild frontend, verify display.
---
## CORRECTION (Chronicler #85 update)
The DB values are actually stored **backwards**:
```
current_version: "1.0.0" ← this is the LATEST from the API
latest_version: "All the Mods 9-0.1.0" ← this is what's INSTALLED
```
Test server has **0.1.0 installed**, and **1.0.0 is the latest available**.
So there are TWO issues:
1. **Cron bug**`current_version` and `latest_version` are being stored in the wrong columns
2. **Display** — once fixed, should read: `ATM9 0.1.0 → 1.0.0 ↑`
Please check `CheckModpackUpdates.php` — the assignment of which value goes into `current_version` vs `latest_version` when writing to `modpackchecker_servers`.