diff --git a/components/ForgeUI.tsx b/components/ForgeUI.tsx index aeb3dd6..6b15a01 100644 --- a/components/ForgeUI.tsx +++ b/components/ForgeUI.tsx @@ -27,13 +27,15 @@ export default function ForgeUI({ project }: { project: ForgeProject }) { {project.engine} -
- - - - - ACTIVE STREAM -
+ {project.isRecent && ( +
+ + + + + ACTIVE STREAM +
+ )} diff --git a/data/forge.ts b/data/forge.ts index ae947d7..81f458c 100644 --- a/data/forge.ts +++ b/data/forge.ts @@ -16,6 +16,6 @@ export const FORGE_PROJECTS: ForgeProjectMetadata[] = [ "Real-time Firebase Sync", "Turn-based Battle Engine", ], - externalLink: "https://pixelpals.app", + // externalLink: "https://pixelpals.app", }, ]; diff --git a/lib/git.ts b/lib/git.ts index 95ab0d4..302de61 100644 --- a/lib/git.ts +++ b/lib/git.ts @@ -3,17 +3,26 @@ import { ChangelogEntry, ForgeProject } from "@/types"; import "server-only"; export async function getAllForgeProjects(): Promise { - // We use Promise.all to fetch all changelogs in parallel for speed + const thirtyDaysAgo = new Date(); + thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30); + return Promise.all( FORGE_PROJECTS.map(async (metadata) => { const changelog = await getPrivateChangelog(metadata.repoName); - const latestVersion = - changelog.length > 0 ? changelog[0].version : "0.0.0"; + + // Determine if the latest entry happened in the last 30 days + const latestDate = + changelog.length > 0 ? new Date(changelog[0].date) : null; + const isRecent = latestDate ? latestDate >= thirtyDaysAgo : false; return { ...metadata, - currentVersion: `${latestVersion}_${metadata.status}`, - changelog: changelog, + currentVersion: + changelog.length > 0 + ? `${changelog[0].version}_${metadata.status}` + : `v0.0.0_${metadata.status}`, + isRecent, // This is the new conditional flag + changelog: changelog.slice(0, 3), }; }), ); diff --git a/types/index.ts b/types/index.ts index 496e741..8416120 100644 --- a/types/index.ts +++ b/types/index.ts @@ -57,8 +57,9 @@ export interface ForgeProject { highlights: string[]; externalLink?: string; projectName: string; - currentVersion: string; // Dynamically parsed - changelog: ChangelogEntry[]; // Dynamically fetched + isRecent: boolean; + currentVersion: string; + changelog: ChangelogEntry[]; } export interface ForgeProjectMetadata {