Files
firefrost-services/services/arbiter-3.0/migrations/145_mc_versions.sql
Claude Code e891a304e0 MC versioning overhaul: calendar scheme + DB-backed versions (REQ-2026-04-16-mc-versioning)
Migration 145: mc_versions table with java_version, paper/forge/neoforge/fabric
support flags, seeded with 11 known versions for immediate use.

New: src/services/mcVersionSync.js
- javaVersionForMC() handles both 1.x.y legacy and 26.x.y calendar schemes
- Daily 3AM pg-boss cron fetches Paper API + Modrinth /tag/game_version, upserts
  mc_versions with correct loader flags and Java version mapping
- getVersions(filter) for DB-backed lookups with loader filtering
- semver.rcompare for proper version sorting across both schemes

Routes: GET /admin/modpack-installer/mc-versions — JSON endpoint for dynamic
version dropdowns, filterable by loader (paper/forge/neoforge/fabric), with
hardcoded fallback if DB is unavailable.

Views updated:
- _vanilla_form.ejs: MC version dropdown loaded dynamically (Paper-only filter),
  Java auto-select reads java_version from DB row
- index.ejs: search filter version dropdown loaded dynamically from mc_versions
- _pack_details.ejs: client-side Java logic handles major >= 26

index.js: registers mc-version-sync cron via pg-boss after queue init.
package.json: added semver ^7.6.3.
ACTIVE_CONTEXT updated.
2026-04-16 02:40:50 -05:00

29 lines
1.2 KiB
SQL

-- Migration 145: mc_versions table (REQ-2026-04-16-mc-versioning)
-- Caches available MC versions with loader support flags.
-- Refreshed daily at 3AM via pg-boss cron job.
CREATE TABLE IF NOT EXISTS mc_versions (
version VARCHAR(20) PRIMARY KEY,
java_version INT NOT NULL DEFAULT 21,
paper_supported BOOLEAN DEFAULT FALSE,
forge_supported BOOLEAN DEFAULT FALSE,
neoforge_supported BOOLEAN DEFAULT FALSE,
fabric_supported BOOLEAN DEFAULT FALSE,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Seed with known versions so installer works before first cron run
INSERT INTO mc_versions (version, java_version, paper_supported, forge_supported, neoforge_supported, fabric_supported) VALUES
('26.1.2', 21, true, false, true, true),
('26.1.1', 21, true, false, true, true),
('26.1', 21, true, false, true, true),
('1.21.4', 21, true, false, true, true),
('1.21.1', 21, true, true, true, true),
('1.20.4', 17, true, true, false, true),
('1.20.1', 17, true, true, false, true),
('1.19.4', 17, true, true, false, true),
('1.19.2', 17, true, true, false, true),
('1.18.2', 17, true, true, false, true),
('1.16.5', 8, true, true, false, true)
ON CONFLICT (version) DO NOTHING;