Change version selector from dropdown to text input

Benefits:
- More flexible - can enter any version (14.0.2, 13.5.1, etc.)
- Future-proof - not limited to predefined versions
- Supports auto-detection in ZIP upload (leave blank)
- Regex validation: MAJOR.MINOR.PATCH or 'universal'

Single upload: Required field with placeholder examples
ZIP upload: Optional field (detects from manifest.json if blank)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
2026-02-20 10:01:59 -08:00
parent 7033a33795
commit ac897cd1e9
15 changed files with 16 additions and 34 deletions

View File

@@ -138,20 +138,11 @@
<div class="col-md-4">
<div class="mb-3">
<label for="gameVersion" class="form-label">Game Version</label>
<select class="form-select" id="gameVersion" name="gameVersion" required>
<option value="">Select version...</option>
<option value="15.0.0">15.0.0 (Community Latest)</option>
<option value="14.0.1">14.0.1 (EA Latest)</option>
<option value="14.0.0">14.0.0</option>
<option value="13.0.0">13.0.0</option>
<option value="12.0.0">12.0.0</option>
<option value="11.0.0">11.0.0</option>
<option value="10.0.0">10.0.0</option>
<option value="9.0.0">9.0.0</option>
<option value="8.0.0">8.0.0</option>
<option value="universal">Universal (All Versions)</option>
</select>
<small class="text-muted">Patch-compatible: 14.0.x works with 14.0.0</small>
<input type="text" class="form-control" id="gameVersion" name="gameVersion"
placeholder="e.g., 15.0.0, 14.0.1, universal" required
pattern="^(\d+\.\d+\.\d+|universal)$"
title="Use format: MAJOR.MINOR.PATCH (e.g., 14.0.1) or 'universal'">
<small class="text-muted">15.0.0 (Community), 14.0.1 (EA Latest), or universal</small>
</div>
</div>
</div>
@@ -196,20 +187,11 @@
<div class="col-md-4">
<div class="mb-3">
<label for="zipGameVersion" class="form-label">Game Version</label>
<select class="form-select" id="zipGameVersion" name="gameVersion" required>
<option value="">Detect from manifest...</option>
<option value="15.0.0">15.0.0 (Community)</option>
<option value="14.0.1">14.0.1 (EA Latest)</option>
<option value="14.0.0">14.0.0</option>
<option value="13.0.0">13.0.0</option>
<option value="12.0.0">12.0.0</option>
<option value="11.0.0">11.0.0</option>
<option value="10.0.0">10.0.0</option>
<option value="9.0.0">9.0.0</option>
<option value="8.0.0">8.0.0</option>
<option value="universal">Universal</option>
</select>
<small class="text-muted">Or specify in manifest.json</small>
<input type="text" class="form-control" id="zipGameVersion" name="gameVersion"
placeholder="auto-detect or type version..."
pattern="^(\d+\.\d+\.\d+|universal)?$"
title="Use format: MAJOR.MINOR.PATCH (e.g., 14.0.1) or 'universal'">
<small class="text-muted">Leave blank to detect from manifest.json</small>
</div>
</div>
<div class="col-md-4">

View File

@@ -13,7 +13,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("RR3CommunityServer")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+dd2c23000fafcdf8851d301c96d67c1cfde1c184")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+7033a33795722d59916df3e48111b1140e9153df")]
[assembly: System.Reflection.AssemblyProductAttribute("RR3CommunityServer")]
[assembly: System.Reflection.AssemblyTitleAttribute("RR3CommunityServer")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]

View File

@@ -1 +1 @@
0352abc639b90fe518848a2763bda2f8582ec6084d3cf7e10b53faccc0e3b3de
903732cc11e8077590223f25be77aa64d4512cbfb3cd029449c3cf21e3a7f6b3

View File

@@ -1 +1 @@
{"documents":{"E:\\rr3\\RR3CommunityServer\\*":"https://raw.githubusercontent.com/ssfdre38/rr3-server/dd2c23000fafcdf8851d301c96d67c1cfde1c184/*"}}
{"documents":{"E:\\rr3\\RR3CommunityServer\\*":"https://raw.githubusercontent.com/ssfdre38/rr3-server/7033a33795722d59916df3e48111b1140e9153df/*"}}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
{"GlobalPropertiesHash":"gdYA/PLOQysRMD9wt3+IrqBqQw0g/GZFOcojepf8P6w=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["7Gcs8uTS1W2TjgmuuoBwaL/zy\u002B2wcKht3msEI7xtxEM=","UWedSjPPgrw4tts2Bk2ce0nYJfnBV9zMYOAjYg0PED8=","GecKXPxV0EAagvAtrRNTytwMtFCxZmgKm9sjLyEe8oI=","uK0L4V5Ua8IuF7M0mWnYvXhKl8jHiNdVC16Frcplmkw=","hnhSRoeFpk3C6XWICUlX/lNip6TfbZWFYZv4weSCyrw=","fVR30KYkDSf6Wvsw9TujzlqruhwIMbw1wHxa1z/mksA=","bGtvAdvcs6Zz1qOTjdKz5gd/5jOpXDLvMjTZye3i/QI=","EoVh8vBcGohUnEMEoZuTXrpZ9uBDHT19VmDHc/D\u002Bm0I=","7gMXO5\u002Bhli7od21x4gC/qf3G6ddyyMyoSF6YFX9IaKg=","IdEjAFCVk3xZYjiEMESONot/jkvTj/gnwS5nnpGaIMc=","JVRe\u002Be2d47FunIfxVYRpqRFtljZ8gqrK3xMRy6TCd\u002BQ=","DQG0T8n9f5ohwv9akihU55D4/3WR7\u002BlDnvkdsAHHSgc=","VxDQNRQXYUU41o9SG4HrkKWR59FJIv8lmnwBolB/wE0=","x88k5Bg2fv\u002Bie1eIqFd4doOTQY0lwCNPv/5eJfhIK\u002Bw=","0Slg2/xnc5E9nXprYyph/57wQou\u002BhGSGgKchbo4aNOg="],"CachedAssets":{},"CachedCopyCandidates":{}}
{"GlobalPropertiesHash":"gdYA/PLOQysRMD9wt3+IrqBqQw0g/GZFOcojepf8P6w=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["7Gcs8uTS1W2TjgmuuoBwaL/zy\u002B2wcKht3msEI7xtxEM=","UWedSjPPgrw4tts2Bk2ce0nYJfnBV9zMYOAjYg0PED8=","GecKXPxV0EAagvAtrRNTytwMtFCxZmgKm9sjLyEe8oI=","ORNyAfx/wyfOaBHn1RQCvVUhfXN9r\u002BeVJxHg2zLwBug=","hnhSRoeFpk3C6XWICUlX/lNip6TfbZWFYZv4weSCyrw=","fVR30KYkDSf6Wvsw9TujzlqruhwIMbw1wHxa1z/mksA=","bGtvAdvcs6Zz1qOTjdKz5gd/5jOpXDLvMjTZye3i/QI=","EoVh8vBcGohUnEMEoZuTXrpZ9uBDHT19VmDHc/D\u002Bm0I=","7gMXO5\u002Bhli7od21x4gC/qf3G6ddyyMyoSF6YFX9IaKg=","IdEjAFCVk3xZYjiEMESONot/jkvTj/gnwS5nnpGaIMc=","JVRe\u002Be2d47FunIfxVYRpqRFtljZ8gqrK3xMRy6TCd\u002BQ=","DQG0T8n9f5ohwv9akihU55D4/3WR7\u002BlDnvkdsAHHSgc=","VxDQNRQXYUU41o9SG4HrkKWR59FJIv8lmnwBolB/wE0=","x88k5Bg2fv\u002Bie1eIqFd4doOTQY0lwCNPv/5eJfhIK\u002Bw=","0Slg2/xnc5E9nXprYyph/57wQou\u002BhGSGgKchbo4aNOg="],"CachedAssets":{},"CachedCopyCandidates":{}}