Skip to content

Latest commit

 

History

History
116 lines (102 loc) · 5.18 KB

File metadata and controls

116 lines (102 loc) · 5.18 KB
layout default
title Releases & Changelog
description Latest updates across ABC mods, packs, and resources.
permalink /changelog/

Releases

Changelog

Track the freshest updates across ABC mods, modpacks, resource packs, and datapacks.

Sorted by latest update time

No releases found yet. Add entries to data/mods.json or data/modpacks.json.
<script> document.addEventListener('DOMContentLoaded', () => { const listEl = document.getElementById('changelog-list'); const countEl = document.getElementById('changelog-count'); const emptyEl = document.getElementById('changelog-empty'); function formatDate(value) { if (!value) return 'N/A'; const date = new Date(value); return isNaN(date.getTime()) ? 'N/A' : date.toLocaleDateString(); } function renderCard(item) { const versions = (item.game_versions || []).slice(0, 4).map(v => `${v}`).join(''); const categories = (item.categories || []).slice(0, 3).map(cat => `${cat}`).join(''); const updated = formatDate(item.updated || item.date_modified || item.published); const typeLabel = (item.project_type || item.type || 'mod').replace(/_/g, ' '); return `
${item.icon_url ? `${item.name}` : '
'}

${typeLabel}

${item.title || item.name}

${item.short_description || item.description || 'No description available.'}

${versions || 'All versions'}
${categories}
Updated ${updated} ${(item.downloads || 0).toLocaleString()} downloads ${(item.followers || 0).toLocaleString()} followers
${item.download ? ` View Project` : ''} ${item.source_url ? ` Source` : ''}
`; } async function fetchJson(url) { try { const res = await fetch(url); if (!res.ok) throw new Error(`Request failed: ${res.status}`); return await res.json(); } catch (err) { console.warn('Changelog fetch failed', err); return []; } } async function loadChangelog() { const [mods, modpacks] = await Promise.all([ fetchJson('{{ '/data/mods.json' | relative_url }}'), fetchJson('{{ '/data/modpacks.json' | relative_url }}') ]); const items = [...mods, ...modpacks].map(item => ({ ...item, updated: item.updated || item.date_modified || item.published || null, })).filter(item => item); if (!items.length) { emptyEl.style.display = 'block'; countEl.textContent = ''; return; } items.sort((a, b) => { const dateA = new Date(a.updated || 0).getTime(); const dateB = new Date(b.updated || 0).getTime(); return dateB - dateA; }); listEl.innerHTML = items.map(renderCard).join(''); countEl.textContent = `${items.length} releases`; } loadChangelog(); }); </script>