diff --git a/api/data/changelog.json b/api/data/changelog.json index 90f3f60..a693b94 100644 --- a/api/data/changelog.json +++ b/api/data/changelog.json @@ -1,6 +1,45 @@ { "site": "jaeswift.xyz", "entries": [ + { + "version": "1.25.0", + "date": "16/04/2026", + "title": "Changelog Fix — Date Format & Missing Entries", + "category": "fix", + "changes": [ + "Fixed NaN/NaN/NaN date display bug in changelog renderer", + "Updated formatDate() to handle both DD/MM/YYYY and ISO formats", + "Dates now render as human-readable format (e.g. 16th April 2026)", + "Standardised all changelog dates to UK DD/MM/YYYY format", + "Added all missing changelog entries from recent updates" + ] + }, + { + "version": "1.24.0", + "date": "16/04/2026", + "title": "MKUltra Documents Fixed", + "category": "fix", + "changes": [ + "Replaced encrypted/unreadable MKUltra PDF with two working documents", + "Added CIA Inspector General Report (1963) — 48-page TOP SECRET internal review", + "Added Senate Hearing transcript (1977) — 171-page Congressional testimony exposing 149 sub-projects" + ] + }, + { + "version": "1.23.0", + "date": "16/04/2026", + "title": "PROPAGANDA → UNREDACTED Rename + Nav Animation + CRIME SCENE", + "category": "feature", + "changes": [ + "Renamed PROPAGANDA section to UNREDACTED across all pages, nav, API, and URLs", + "Built block-reveal animation on UNREDACTED nav item (██████████ → UNREDACTED → reverse → loop)", + "Added global document search across all UNREDACTED categories, titles, and descriptions", + "Built new CRIME SCENE section at /depot/crimescene with red CRT theme", + "Four crime categories: Unsolved Murders, Serial Killers, Court Transcripts, Cold Cases", + "PDF viewer with search functionality for crime documents", + "New Flask API endpoint /api/crimescene" + ] + }, { "version": "1.22.0", "date": "15/04/2026", @@ -13,7 +52,7 @@ "Added 3 cipher PDFs: Z408 three-part cipher (solved 1969), Z340 cipher (solved 2020), Z32 map code cipher (unsolved)", "Added Z340 Solution academic paper by Oranchak, Blake & Van Eycke (2024, 38 pages) from arXiv", "Each of the 21 new documents has a unique historical description with contextual detail", - "Subcollection accordion UI with expand/collapse rendering (JS/CSS already supported)", + "Subcollection accordion UI with expand/collapse rendering", "Total Zodiac archive: 4 subcollections, 21 documents, ~52MB", "Police Reports subcollection created as placeholder for future expansion" ] @@ -32,9 +71,25 @@ "First collection populating the Serial Killers category under United States" ] }, + { + "version": "1.20.1", + "date": "15/04/2026", + "title": "UNREDACTED: Document Expansion & PDF Search", + "category": "feature", + "changes": [ + "Added PDF text search to document viewer (Ctrl+F, green/amber highlights, match counter, case toggle)", + "Text layer enabled — select and copy text from PDFs", + "Added unique descriptions to all 113 UK MOD UFO documents sourced from National Archives highlights guides", + "Added Project Condign (250MB, 460pp SECRET UK EYES ONLY) — the classified DI55 UAP study", + "Downloaded US documents: Project Blue Book, CIA UFO Collection, NSA UFO Documents, Pentagon UAP Report", + "Downloaded Covert Ops: MKUltra, Stargate Program, Operation Northwoods", + "Downloaded Government: JFK Warren Commission, Pentagon Papers, CIA Torture Report", + "Total UNREDACTED archive: 116+ PDFs across 3 categories and 2 countries" + ] + }, { "version": "1.20.0", - "date": "2026-04-06", + "date": "06/04/2026", "title": "Bug Fixes & Polish", "category": "fix", "changes": [ @@ -46,7 +101,7 @@ }, { "version": "1.19.0", - "date": "2026-04-06", + "date": "06/04/2026", "title": "Admin Panel Overhaul", "category": "feature", "changes": [ @@ -61,7 +116,7 @@ }, { "version": "1.18.0", - "date": "2026-04-06", + "date": "06/04/2026", "title": "SITREP — Daily AI Briefing System", "category": "feature", "changes": [ @@ -75,7 +130,7 @@ }, { "version": "1.17.0", - "date": "2026-04-06", + "date": "06/04/2026", "title": "TOKEN FORGE — SPL Token Launcher", "category": "feature", "changes": [ @@ -89,7 +144,7 @@ }, { "version": "1.16.0", - "date": "2026-04-05", + "date": "05/04/2026", "title": ".SOL Domain Registration", "category": "feature", "changes": [ @@ -102,7 +157,7 @@ }, { "version": "1.15.0", - "date": "2026-04-05", + "date": "05/04/2026", "title": "SOL Price Ticker", "category": "feature", "changes": [ @@ -114,7 +169,7 @@ }, { "version": "1.14.0", - "date": "2026-04-05", + "date": "05/04/2026", "title": "Sitewide Solana Wallet Connect", "category": "feature", "changes": [ @@ -128,7 +183,7 @@ }, { "version": "1.13.0", - "date": "2026-04-05", + "date": "05/04/2026", "title": "RADAR — Live Tech News Feed", "category": "feature", "changes": [ @@ -141,7 +196,7 @@ }, { "version": "1.12.0", - "date": "2026-04-04", + "date": "04/04/2026", "title": "Nav Dropdown Descriptions", "category": "feature", "changes": [ @@ -151,7 +206,7 @@ }, { "version": "1.11.0", - "date": "2026-04-04", + "date": "04/04/2026", "title": "RECON — Site Restructure & Accordion Navigation", "category": "feature", "changes": [ @@ -164,7 +219,7 @@ }, { "version": "1.10.0", - "date": "2026-04-04", + "date": "04/04/2026", "title": "RECON — Curated Lists Rebuild", "category": "feature", "changes": [ @@ -176,7 +231,7 @@ }, { "version": "1.9.0", - "date": "2026-04-04", + "date": "04/04/2026", "title": "RECON — Curated Lists Database", "category": "feature", "changes": [ @@ -189,7 +244,7 @@ }, { "version": "1.8.0", - "date": "2026-04-03", + "date": "03/04/2026", "title": "CONTRABAND Auto-Sync & Grid Overhaul", "category": "feature", "changes": [ @@ -202,7 +257,7 @@ }, { "version": "1.7.0", - "date": "2026-04-03", + "date": "03/04/2026", "title": "Sitewide Visual Overhaul", "category": "fix", "changes": [ @@ -214,7 +269,7 @@ }, { "version": "1.6.0", - "date": "2026-04-03", + "date": "03/04/2026", "title": "CONTRABAND — Classified Resource Index", "category": "feature", "changes": [ @@ -228,7 +283,7 @@ }, { "version": "1.5.1", - "date": "2026-04-03", + "date": "03/04/2026", "title": "Navbar Dropdown Fix", "category": "fix", "changes": [ @@ -239,7 +294,7 @@ }, { "version": "1.5.0", - "date": "2026-04-02", + "date": "02/04/2026", "title": "Globe & Chat AI Admin Panels", "category": "feature", "changes": [ @@ -252,7 +307,7 @@ }, { "version": "1.4.0", - "date": "2026-04-01", + "date": "01/04/2026", "title": "Interactive 3D Globe", "category": "feature", "changes": [ @@ -265,7 +320,7 @@ }, { "version": "1.3.0", - "date": "2026-03-31", + "date": "31/03/2026", "title": "Blog & Transmissions System", "category": "feature", "changes": [ @@ -278,7 +333,7 @@ }, { "version": "1.2.0", - "date": "2026-03-30", + "date": "30/03/2026", "title": "Admin Panel & Authentication", "category": "feature", "changes": [ @@ -291,7 +346,7 @@ }, { "version": "1.1.0", - "date": "2026-03-29", + "date": "29/03/2026", "title": "HQ & Section Pages", "category": "feature", "changes": [ @@ -304,7 +359,7 @@ }, { "version": "1.0.0", - "date": "2026-03-28", + "date": "28/03/2026", "title": "Initial Launch", "category": "release", "changes": [ @@ -317,4 +372,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/js/changelog.js b/js/changelog.js index 936faeb..c4ab57b 100644 --- a/js/changelog.js +++ b/js/changelog.js @@ -15,11 +15,18 @@ } function formatDate(dateStr) { - const d = new Date(dateStr + 'T00:00:00'); - const day = d.getDate().toString().padStart(2, '0'); - const month = (d.getMonth() + 1).toString().padStart(2, '0'); - const year = d.getFullYear(); - return `${day}/${month}/${year}`; + // Handle both DD/MM/YYYY and YYYY-MM-DD formats + let d; + if (dateStr.includes('/')) { + const parts = dateStr.split('/'); + d = new Date(parts[2], parts[1] - 1, parts[0]); + } else { + d = new Date(dateStr + 'T00:00:00'); + } + const day = d.getDate(); + const months = ['January','February','March','April','May','June','July','August','September','October','November','December']; + const suffix = (day === 1 || day === 21 || day === 31) ? 'st' : (day === 2 || day === 22) ? 'nd' : (day === 3 || day === 23) ? 'rd' : 'th'; + return `${day}${suffix} ${months[d.getMonth()]} ${d.getFullYear()}`; } function render(data) {