{ "site": "jaeswift.xyz", "entries": [ { "version": "1.38.0", "date": "20/04/2026", "category": "FEATURE", "title": "Globe — Live Traffic Arcs from Real Visitors", "changes": [ "Homepage 3D globe (globe.gl) now draws glowing arcs from real visitor country centroids into Manchester HQ (53.48°N, -2.24°W) instead of random fake cities", "Data sourced live from /api/visitor/recent-arcs — tails last 20k lines of nginx access.log, GeoIPs unique IPs, maps country_code → centroid (130+ countries in api/data/country_centroids.json)", "Frontend polls endpoint every 30s; tactical green arcs (rgba(0,255,60,.85)) fade to turquoise Solana (#14F195) tail for depth, 2.2s dash animation, 0.38 altitude auto-scale", "Per-arc interactive labels on hover: \"COUNTRY → MCR · Xm ago · /page_path\"", "New ARCS LIVE counter badge added to globe overlay HUD (turquoise accent), updates with each refresh", "Sub-degree lat/lon jitter applied so multiple visitors from same country no longer stack on a single line", "Graceful fallback: if endpoint returns empty/errors, shows 8 demo city arcs (New York/Tokyo/Paris/Sydney/Moscow/Singapore/Berlin/LA) so the globe is never bare", "Timestamp parser handles nginx common-log format (DD/Mon/YYYY:HH:MM:SS ±ZZZZ) for accurate relative times", "Backend endpoint cache: 5-min TTL, deduped by IP, capped at 50 most-recent unique visitors" ] }, { "version": "1.37.2", "date": "20/04/2026", "category": "FEATURE", "title": "LEADERBOARDS — Live Operational Rankings", "changes": [ "New page /hq/leaderboards with 6-panel grid showing real-time traffic intelligence pulled from nginx access logs", "TOP COUNTRIES (24h): GeoIP-resolved top 15 origins with auto-generated flag emojis and animated ranked bars", "TOP PAGES (24h): most-hit routes (API/CSS/JS/favicons filtered out), top 20 with green-code path display", "TOP REFERRERS (7d): inbound link sources filtered for own domain — graceful empty state for direct-traffic sites", "PEAK HOURS (24h UTC): 24-bar hourly chart with amber-highlighted peak column, hover tooltips, auto-summary showing peak hour + total req/24h", "BROWSER BREAKDOWN (24h): top 10 UA families with per-browser emoji (🟢 Chrome / 🦊 Firefox / 🧭 Safari / 🌀 Edge / 🤖 Bot)", "OPERATOR LEADERBOARD (7d): top 10 most-active IPs (privacy-masked first/last octet), request counts, last-seen relative timestamps — self-IP highlighted with amber (YOU) badge", "Gold/silver/bronze rank styling for top-3 rows across all panels; #01–#NN zero-padded ranks elsewhere", "60s auto-refresh + manual refresh button + live LAST UPDATED counter (ticks per second)", "Backend /api/leaderboards endpoint returns JSON aggregating countries, pages, referrers, peak_hours, browsers, top_operators — 60s in-memory cache", "New files: hq/leaderboards.html · css/leaderboards.css · js/leaderboards.js", "Nav updated: HQ menu now includes LEADERBOARDS link with description \"Live traffic rankings & operator stats\"", "Fully mobile responsive (768px stack / 420px compact) with scanlines + grid-bg matching site theme" ] }, { "version": "1.37.1", "date": "20/04/2026", "category": "FEATURE", "title": "JAE-AI CLI Easter Egg — Local Pseudo-Shell", "changes": [ "JAE-AI chat now detects messages starting with / and handles them locally as a fake CLI shell — never hits the Venice API, all 100% client-side JavaScript", "New js/chat-cli.js + css/chat-cli.css — 17 built-in commands: /help /ls /cat /whoami /uptime /uname -a /date /ping /sudo /rm -rf / /hack /matrix /clear /exit /fortune /history /neofetch", "Virtual filesystem: /cat about.md|projects.json|skills.md|secrets.enc|mascot.txt|whoami.txt — with glitchy ASCII art ACCESS DENIED screen on secrets.enc", "/whoami pulls real data from /api/visitor/scan; /uptime pulls from /api/telemetry/overview; /neofetch shows ASCII dragon with browser/OS/screen data", "/matrix toggles a full-screen green Katakana matrix-rain canvas overlay (opacity 18%, 16px JetBrains Mono, var(--status-green))", "/hack runs hollywood-style fake progress bars with payload injection drama before revealing it was all fake", "/rm -rf / shows an ASCII destruction sequence then restores from backup with a cheeky message", "Unknown commands route to: command not found: /. Type /help for available commands.", "Persistent /history ring-buffer (50 entries) stored in localStorage.jaeCliHist", "BONUS: Konami code (↑↑↓↓←→←→BA) unlocks DEVELOPER MODE — amber badge top-right + extra commands: /api (list real endpoints), /curl (actually fetch public URLs, 2KB truncated), /geo (pull live 24h country breakdown from telemetry)", "chat.js sendMessage() patched to intercept /-prefix messages before hitting /api/chat — user bubble gets $ shell prompt, response styled in terminal-green monospace" ] }, { "version": "1.37.0", "date": "20/04/2026", "category": "FEATURE", "title": "SCAN THE VISITOR — Typewriter Operator Recon Overlay", "changes": [ "New homepage overlay greets every visitor with a dramatic typewriter-animated recon scan (~22ms/char): geolocation via GeoLite2, reverse-DNS-derived ISP, user-agent parsing (browser/OS/device) via user-agents pip package, masked IP (X.***.***.Y), screen/language/timezone/connection fingerprinting, plus GREEN/AMBER/RED threat-level status bar", "Backend: new api/visitor_routes.py Flask blueprint with /api/visitor/scan endpoint — in-memory per-IP rate limiting (1 req / 10s), lazy GeoIP reader (country + city when available), 1s-timeout reverse DNS hostname lookup with ISP dictionary (BT/Virgin/Sky/AWS/Cloudflare/Hetzner etc.), country-flag emoji auto-generation, TOR exit-node heuristic", "Frontend: js/scan-visitor.js + css/scan-visitor.css — 720px CRT-scanline overlay with blur backdrop, monospace green typewriter output, blink cursor, three action buttons (CLOSE / DISMISS 7D / ACKNOWLEDGE), ESC-to-close, collapses into a persistent bottom-right OPERATOR ID badge on close, click badge to re-run scan", "localStorage persistence: scanDismissed (7-day auto-expiry so returning operators only see the badge), scanBadgeHidden (× on badge hides it permanently)", "Fully mobile responsive: panel narrows to 96vw at <600px, reduces typography, adjusts badge position above bottom HUD bar", "Bundled api/data/country_centroids.json (130+ ISO-3166 country lat/lon centroids) to power upcoming 3D globe traffic-arc feature", "Exposed window.__jaeScan.run() / window.__jaeScan.reset() for debug re-triggering" ] }, { "version": "1.36.2", "date": "20/04/2026", "category": "FIX", "title": "Telemetry Polish — GeoIP Live, Service Watchlist Cleanup, Git Hygiene", "changes": [ "GEO INTEL panel now LIVE — installed DB-IP Country Lite mmdb (8.4MB, April 2026) at /usr/share/GeoIP/GeoLite2-Country.mmdb on VPS plus geoip2==5.2.0 Python package; telemetry dashboard now shows per-country traffic bars (US/GB/RU/CN/SG/DE/AD/UA currently top)", "Monthly GeoIP auto-refresh: new /usr/local/bin/update-geoip.sh bash script + cron '0 4 2 * *' fetches fresh DB-IP mmdb on 2nd of each month, gunzips, restarts jaeswift-api.service, logs to /var/log/geoip-update.log", "Service watchlist cleaned — removed matty-lol, caddy, n8n from SYSTEMD_SERVICES in telemetry_routes.py (they were generating false SERVICE DOWN alerts; matty-lol runs on PM2, caddy+n8n unused)", "Git DIRTY flag cleared — added runtime-generated files to .gitignore: api/data/telemetry_history.json, api/data/telemetry_netstate.json, api/govdomains-source/ (these are written by cron jobs, not source code)", "Repos panel now reports CLEAN instead of DIRTY for jaeswift-homepage" ] }, { "version": "1.36.1", "date": "20/04/2026", "category": "FIX", "title": "Cron Log Path Corrections", "changes": [ "Fixed CRON_JOBS definitions in telemetry_routes.py — contraband/awesomelist/govdomains logs use hyphens not underscores on VPS (contraband-sync.log not contraband_sync.log)", "Corrected govdomains_sync schedule from Sunday 05:00 to every 12 hours (0 */12 * * *) — matches actual crontab", "All 5 crons now report OK status on telemetry dashboard instead of UNKNOWN" ] }, { "version": "1.36.0", "date": "19/04/2026", "category": "FEATURE", "title": "TELEMETRY Dashboard — Live Ops Command Centre", "changes": [ "New /hq/telemetry page replacing placeholder — full live ops dashboard with boot sequence animation, CRT aesthetic, real-time metrics", "Backend blueprint api/telemetry_routes.py — 6 new endpoints: /api/telemetry/overview, /history, /nginx-tail, /geo, /alerts, /visitors, /commits", "System metrics: CPU gauge + 24h sparkline, memory gauge + sparkline, per-mount disk ASCII bars, network RX/TX rates + history graph, uptime, load avg, kernel", "Services panel: systemctl state for jaeswift-api, matty-lol, nginx, filebrowser, caddy, n8n, docker, ssh — plus PM2 processes — with uptime, mem, CPU per service", "Cron tracker: schedule + last run + status (ok/fail/unknown) for contraband_sync, awesomelist_sync, govdomains_sync, sitrep, telemetry_snapshot — expandable log tails", "Nginx 24h analytics: total requests, bandwidth, avg RPM, top 10 pages, top 10 IPs (masked), 4xx/5xx counts, avg response time — 60s cache", "Security panel: fail2ban jails + ban counts, UFW rules, SSH bruteforce attempts 24h, last reboot timestamp", "SSL expiry tracker: per-domain days-remaining with colour coding (red <14d, amber <30d, green otherwise) for jaeswift.xyz, git, files, plex, agentzero", "Stack inventory: auto-detected versions of Python, Node, nginx, Docker, ffmpeg, kernel, OS — cached at startup", "Git activity panel: repo name, last commit SHA, message, timestamp, dirty flag for /var/www/jaeswift-homepage", "Geo-distribution: parses nginx IPs through GeoLite2 mmdb (if installed) — horizontal bar chart of top 15 countries by traffic, graceful empty state if mmdb missing", "Live nginx tail widget: last 20 requests auto-scrolling every 5s with fade-in animation, colour-coded status codes, masked IPs", "Alert engine: real-time /api/telemetry/alerts computes CPU/mem/disk/service/cron/5xx/SSL/SSH thresholds — red/amber/info levels — scrolling marquee banner on page", "Visitor counter: active unique IPs in last 5min + req/min — animated ONLINE NOW strong number", "Burn rate panel: free disk GB, 24h bandwidth totals (↑/↓), load avg breakdown, kernel@hostname", "Deployment ticker: horizontal marquee of last 10 git commits (SHA + message + ago)", "Boot animation: 1.5s cinematic sequence — INITIALISING → SECURE CHANNEL → DECRYPTING → AUTHORISED — with progress bar, fades out to reveal grid", "Alarm sound toggle: Web Audio API generates beep on new alert (urgent=880Hz for red, 440Hz for amber), default OFF, speaker icon top-right", "Blinking LIVE indicator showing last-sync seconds, dot colour shifts green→amber→red as staleness grows", "Mobile responsive — all 7 rows stack to single column below 768px, alerts shrink, grid reflows", "New api/telemetry_snapshot.py ring-buffer cron (every 5min) appends CPU/mem/net to api/data/telemetry_history.json (288 points = 24h)", "New styles: css/telemetry.css (~620 lines) with full dashboard grid, canvas gauges, ASCII disk bars, terminal tail, geo chart, marquee banners — all theming existing var(--tm-green/amber/red/sol) CRT scheme" ] }, { "version": "1.35.0", "date": "19/04/2026", "category": "UI", "title": "Homepage Panel Layout Swap", "changes": [ "Moved POWER and CONTAINERS panels from right column to below JAE-AI chat", "Moved NOW PLAYING panel from below chat to right column (above Network Graph)", "Maintains two-panel horizontal layout below chat (POWER/CONTAINERS + SERVER TIME)" ] }, { "version": "1.34.0", "date": "19/04/2026", "category": "FEATURE", "title": "JAE AI Memory System (Memoria-style)", "changes": [ "Browser-local persistent memory for JAE-AI chat via localStorage (key jae-ai-memory-v1, max 100 entries, auto-pruned by importance)", "Auto memory extraction every 4 user messages via new /api/chat/extract-memories endpoint (Venice gemma-4-uncensored)", "Relevance-ranked memory injection: top 5 keyword-matched + top 3 recent memories prepended as [REMEMBERED FACTS] block in system prompt per message", "Chat history persistence across page reloads (last 50 messages in localStorage key jae-ai-history-v1, auto-restored with RESTORED FROM MEMORY divider)", "Memory Vault modal UI: military/terminal themed, grouped by category (identity/preference/project/skill/goal/relationship/other) with per-entry delete, importance/timestamp display", "Modal controls: EXPORT JSON (download backup), FORCE EXTRACT (manual trigger), CLEAR HISTORY (wipes conversation), CLEAR ALL MEMORIES (with confirm)", "Memory button in chat header with live count badge + privacy info tooltip (ℹ) explaining local-only storage", "Fuzzy dedup: new memories >80% similar to existing are merged (importance boosted) instead of duplicated", "Privacy-first design: all memories stay in the user’s browser; only current query + small relevant subset sent to Venice per message", "Graceful degradation: missing localStorage or extraction failures never break the chat loop" ] }, { "version": "1.33.0", "date": "19/04/2026", "category": "FEATURE", "title": "Homepage SERVER METRICS — Real Live Data", "changes": [ "SERVER METRICS panel now shows real VPS metrics via /api/stats", "CPU LOAD bar: real load_avg / nproc percentage", "MEMORY bar: real used/total memory percentage", "DISK I/O bar: real root filesystem usage percentage", "BANDWIDTH bar: real Mbps delta computed from network_rx_bytes + network_tx_bytes, scaled against 1 Gbps link", "NETWORK TRAFFIC graph: real-time line chart of download/upload Mbps with auto-scaling peak", "DOWNLOAD/UPLOAD readouts: auto-format Kbps/Mbps/Gbps based on actual traffic", "PACKETS readout replaced with real active TCP connections count", "POWER panel: reliability % derived from real CPU load", "CONTAINERS panel: real docker ps running/total counts with progress bar", "UPTIME: real /proc/uptime days/hours/minutes", "SERVER HEALTH: weighted score from real CPU/memory/disk", "Refresh interval: 5 seconds (was 10)", "All fake random-data generators for these metrics disabled" ] }, { "version": "1.32.0", "date": "19/04/2026", "category": "SECURITY", "title": "Critical API Key Exposure Patched", "changes": [ "Removed api/data/apikeys.json from git tracking", "Added apikeys.json to .gitignore permanently", "Purged file from entire git history via git-filter-repo (all 120 commits rewritten)", "Force-pushed cleaned history to Gitea (old commits garbage-collected)", "Created apikeys.example.json template for future contributors", "Rotated Venice API key — old key revoked by user", "VPS file permissions hardened: chmod 600 api/data/apikeys.json", "Verified raw URL git.jaeswift.xyz/.../apikeys.json now returns HTTP 404", "Audit confirmed: zero occurrences of any API key in git history across all branches" ] }, { "version": "1.31.0", "date": "19/04/2026", "category": "AI", "title": "AI Model Switch — Gemma-4-Uncensored", "changes": [ "Switched JAE AI chat model from olafangensan-glm-4.7-flash-heretic to gemma-4-uncensored", "Switched SITREP daily briefing generator to same model for consistency", "Updated admin panel chat defaults: model + header tag now reflect GEMMA-4-UNCENSORED", "API restarted and verified live — chat now returns tighter, more natural replies" ] }, { "version": "v1.30.0", "date": "18/04/2026", "title": "ARMOURY: Wallet X-Ray — Solana Wallet Analyser", "category": "ARMOURY", "changes": [ "New tool: Wallet X-Ray — deep scan any Solana wallet address or connect your own wallet", "Overview panel: SOL balance with live USD value, total portfolio value, wallet age, transaction count, and activity rating", "Token Holdings: full SPL token table with logos, balances, live prices via Jupiter Price API, and USD values sorted by value", "NFT Detection: identifies NFTs (0-decimal single-supply tokens) with image grid and Solscan links", "Recent Transactions: last 20 transactions with signatures linked to Solscan, status indicators, and timestamps", "Wallet Score: composite grading system (A+ to F) based on age, activity, diversity, and portfolio scores with colour-coded progress bars", "Supports Token-2022 programme accounts alongside standard SPL Token programme", "Rate-limit resilient: automatic RPC failover to backup endpoint with exponential backoff", "Jupiter token list cached in sessionStorage for faster repeat scans", "URL parameter support: ?address=... for direct wallet scanning via shared links", "Wallet X-Ray card added to LAB page with cyan/turquoise theme", "Military radar sweep loading animation during wallet scan", "Fully responsive design — works on mobile and desktop" ] }, { "version": "v1.29.0", "date": "18/04/2026", "title": "UNREDACTED: International UFO Files + Government Scandal Documents", "category": "UNREDACTED", "changes": [ "Added 9 new collections across UFO/UAP, Covert Operations, and Government categories with 15 indexed documents", "COMETA Report (France, 1999): 2 English translations of landmark French military UFO assessment — 163 pages total", "RAAF UFO Files (Australia): Declassified Royal Australian Air Force intelligence file — 18 pages", "Project Magnet (Canada, 1950-54): Official Canadian government UFO research programme documents — 6 pages", "NZDF UFO/UAP Files (New Zealand, 1984-2024): 3 documents including Cold War sighting reports and modern OIA responses — 136 pages", "Operação Prato (Brazil, 1977): Secret Brazilian Air Force UFO investigation in the Amazon — 58 pages", "COINTELPRO: 758-page FBI surveillance programme compilation plus analytical examination added to existing collection", "Operation Paperclip (1945-59): Declassified CIA documents on Nazi scientist recruitment programme — 11 pages", "Watergate Scandal (1972-74): Ford Presidential Library documents on the constitutional crisis — 35 pages", "Iran-Contra Affair (1985-87): Complete 506-page Congressional investigation report", "New countries added to UFO/UAP category: France, Australia, Canada, New Zealand, Brazil" ] }, { "version": "v1.28.0", "date": "18/04/2026", "title": "CRIME SCENE: Major International Case Expansion", "category": "CRIME SCENE", "changes": [ "Added 6 new crime case collections across cold-cases, serial-killers, and landmark-cases with 11 indexed documents", "D.B. Cooper Hijacking (1971): FBI investigation files — 162 pages on America's only unsolved aircraft hijacking", "JonBenét Ramsey Murder (1996): Autopsy report, unsealed grand jury indictment, and analytical case study — 19 pages", "Black Dahlia / Elizabeth Short (1947): Complete FBI investigation file — 204 pages on LA's most famous unsolved murder", "Delphi Murders (2017): Probable cause affidavit and court documents from the Richard Allen prosecution — 95 pages", "Harold Shipman (1975-98): First three reports of the Shipman Inquiry (Dame Janet Smith) — 1,162 pages on Britain's worst serial killer", "Moors Murders — Brady & Hindley (1963-65): Mental Health Review Tribunal academic paper — 22 pages", "New landmark-cases/US subcategory with Delphi Murders as first entry", "Total new document pages added: 1,664 across all crime scene collections" ] }, { "version": "v1.27.0", "date": "18/04/2026", "title": "CRIME SCENE: UK Murder Cases — Mass Upload", "category": "CRIME SCENE", "changes": [ "Added 11 UK murder case collections across 4 categories with 57 indexed documents", "New 'Landmark Cases' category for cases that changed British law and policing", "Daniel Morgan (1987): 3-volume Independent Panel Report — 1,276 pages on Met Police corruption", "Claudia Lawrence (2009): ICO FOI audit of North Yorkshire Police practices", "Jill Dando (1999): Barry George appeal judgment and CCRC referral decision", "Suzy Lamplugh (1986): Suzy Lamplugh Trust safety resources and case documentation", "Stephen Lawrence (1993): Complete Macpherson Report — 389 pages, coined 'institutional racism'", "James Bulger (1993): ECHR Grand Chamber judgments, anonymity injunction, minimum term review", "Damilola Taylor (2000): Sentamu Oversight Panel investigation review — 56 pages", "Lee Rigby (2013): ISC intelligence report (200 pages), Government response, sentencing remarks", "Lord Lucan (1974): Presumption of Death Act legal analysis for Sandra Rivett murder", "Madeleine McCann (2007): PJ Police Report translation (57 pages), Jane Tanner statements (4 parts)", "Jack the Ripper (1888): Macnaghten Memoranda (1894) plus 7 victim inquest transcripts", "23 verified PDFs, 95 total files deployed (28.2 MB) across all 11 cases" ] }, { "version": "1.26.0", "date": "17/04/2026", "title": "Zodiac Killer Police Reports & Crime Scene Documents", "category": "CRIME SCENE", "changes": [ "Populated the Police Reports subcollection for the Zodiac Killer with 5 documents (207 pages, 26.4 MB)", "Added Lake Herman Road police reports — Benicia PD & Solano County Sheriff (60 pages, 5.6 MB)", "Added Blue Rock Springs police reports — Vallejo PD (75 pages, 10.3 MB)", "Added Lake Berryessa police reports — Napa County Sheriff's Office (35 pages, 5.1 MB)", "Added Presidio Heights / Paul Stine police reports — SFPD (2 pages, 0.4 MB)", "Added California Department of Justice investigation report (35 pages, 5.0 MB)", "Zodiac Killer collection now contains 26 documents across 4 subcollections totalling approximately 78 MB", "All documents sourced from zodiackiller.com's authenticated police report archive" ] }, { "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", "title": "CRIME SCENE: Zodiac Killer Expanded — Letters, Ciphers & Subcollections", "category": "CRIME SCENE", "changes": [ "Fixed PDF path bug: document URLs now correctly include country code (US) via subcollection routing", "Restructured Zodiac Killer into 4 subcollections: FBI Investigation Files, Zodiac Letters & Cards, The Zodiac Ciphers, Police Reports & Crime Scene Documents", "Added 11 original Zodiac letter PDFs (1969–1974) from zodiackiller.com: Chronicle/Examiner cipher letters, Debut letter, Stine bloody shirt letter, Bus Bomb letter, Belli letter, Dragon card, Phillips 66 map letter, Little List/Mikado letter, Exorcist letter, Citizen card", "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", "Total Zodiac archive: 4 subcollections, 21 documents, ~52MB", "Police Reports subcollection created as placeholder for future expansion" ] }, { "version": "1.21.0", "date": "15/04/2026", "title": "CRIME SCENE: Zodiac Killer FBI Files", "category": "CRIME SCENE", "changes": [ "Added complete FBI Zodiac Killer investigation files (6 parts, 1,116 pages, 34MB)", "Files sourced from FBI Vault via Archive.org — declassified FOIA release", "Each document includes unique summary describing specific contents", "Covers: Arthur Leigh Allen suspect investigation, cipher analysis, forensic lab reports, fingerprint comparisons, decades of tips and suspect referrals", "PDFs served from /crimescene/docs/serial-killers/US/zodiac-killer/", "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": "06/04/2026", "title": "Bug Fixes & Polish", "category": "fix", "changes": [ "Fixed dispatches post pages crashing (mood type error + fallback path)", "SOL price ticker fixed — switched to Binance API (CORS-friendly)", "Tightened navbar spacing between SOL price and wallet connect", "Converted all post mood values from integers to proper strings" ] }, { "version": "1.19.0", "date": "06/04/2026", "title": "Admin Panel Overhaul", "category": "feature", "changes": [ "Fixed broken Editor section — full post editing with live preview", "Fixed broken Backups section — export/import site data as ZIP", "Added SITREP admin section — generate reports, view archive", "Added Data Sync section — trigger Contraband/RECON syncs, view stats", "Added Changelog admin section — CRUD for maintenance log entries", "Added Cron Jobs section — view/toggle all scheduled tasks", "Reorganised sidebar into grouped sections" ] }, { "version": "1.18.0", "date": "06/04/2026", "title": "SITREP — Daily AI Briefing System", "category": "feature", "changes": [ "Built automated daily intelligence briefing at /transmissions/sitrep", "Venice AI generates military-formatted summaries from 5 RSS sources + crypto data", "Sectors: ALPHA (technology), BRAVO (cybersecurity), CHARLIE (crypto markets)", "Daily cron job at 0700 UTC with archive navigation", "Source links included for every story", "API endpoints: /api/sitrep, /api/sitrep/list, /api/sitrep/generate" ] }, { "version": "1.17.0", "date": "06/04/2026", "title": "TOKEN FORGE — SPL Token Launcher", "category": "feature", "changes": [ "Built token launcher at /tokenlauncher with full SPL token creation", "Set name, symbol, supply, decimals, image, description", "Optional mint/freeze authority revocation", "Single transaction deployment with confirmation modal", "0.1 SOL service fee per launch", "Added TOKEN FORGE card to /armoury/lab (amber accent)" ] }, { "version": "1.16.0", "date": "05/04/2026", "title": ".SOL Domain Registration", "category": "feature", "changes": [ "Built .SOL domain search and registration at /soldomains", "Bonfida SNS integration for availability checking and registration", "Reverse lookup and My Domains tabs", "Multi-wallet support (Phantom, Solflare, Backpack, Jupiter, MetaMask)", "Added card to /armoury/lab (turquoise accent)" ] }, { "version": "1.15.0", "date": "05/04/2026", "title": "SOL Price Ticker", "category": "feature", "changes": [ "Live Solana price in navbar with 24hr change indicator", "Binance API primary, CoinGecko fallback", "Auto-refreshes every 30 seconds", "Purple Solana-branded styling" ] }, { "version": "1.14.0", "date": "05/04/2026", "title": "Sitewide Solana Wallet Connect", "category": "feature", "changes": [ "Global wallet connect button in navbar across all 28 pages", "Multi-wallet support: Phantom, Solflare, Backpack, Coinbase, Trust, MetaMask, Jupiter", "Persistent connection via localStorage — survives page navigation", "Connected dropdown with address copy, Solscan link, disconnect", "Global window.solWallet API for all Solana features", "Refactored soldomains.js to use shared wallet (removed 146 lines)" ] }, { "version": "1.13.0", "date": "05/04/2026", "title": "RADAR — Live Tech News Feed", "category": "feature", "changes": [ "Built live tech news aggregator at /transmissions/radar", "Pulls from Hacker News, Reddit (r/technology, r/programming, r/netsec), Lobsters", "Search, source filters, and auto-refresh", "Military-themed CRT styling with scanlines", "Flask API with caching at /api/radar" ] }, { "version": "1.12.0", "date": "04/04/2026", "title": "Nav Dropdown Descriptions", "category": "feature", "changes": [ "Added descriptive subtitles beneath every nav dropdown item", "Updated navigation API with description field support" ] }, { "version": "1.11.0", "date": "04/04/2026", "title": "RECON — Site Restructure & Accordion Navigation", "category": "feature", "changes": [ "Moved RECON to /depot/recon for consistency with other depot pages", "Subcategories now collapsible accordion sections with toggle arrows", "Fixed navigation click bug that caused page reset", "Fixed white flash on page load", "Added cache-busting version tags to assets" ] }, { "version": "1.10.0", "date": "04/04/2026", "title": "RECON — Curated Lists Rebuild", "category": "feature", "changes": [ "Flattened 4-level navigation to 2-level (sector > list > entries)", "Grouped entries by source list instead of duplicate subcategory cards", "Stripped 'Awesome' prefix from all 660 list names", "Reused CONTRABAND CSS for consistent styling across depot pages" ] }, { "version": "1.9.0", "date": "04/04/2026", "title": "RECON — Curated Lists Database", "category": "feature", "changes": [ "Parsed 660 curated lists into 28 themed sectors", "135,179 total entries across all sectors", "Built Flask API endpoints for index, sector detail, and search", "Weekly auto-sync cron job (Sundays 4am) to pull latest data", "Full-text search across all 135k entries" ] }, { "version": "1.8.0", "date": "03/04/2026", "title": "CONTRABAND Auto-Sync & Grid Overhaul", "category": "feature", "changes": [ "Subcategories now display as 2-column card grid with expandable detail panels", "Added weekly auto-sync — resource database updates every Sunday at 03:00", "Click any subcategory card to expand/collapse its entries below", "Active card highlighting with amber glow", "Responsive grid: 2-col desktop, 1-col mobile" ] }, { "version": "1.7.0", "date": "03/04/2026", "title": "Sitewide Visual Overhaul", "category": "fix", "changes": [ "Bumped 64 font sizes sitewide — no more microscopic text", "Brightened all text colours: primary #c0c0c0→#d8d8d8, secondary #707070→#999999, muted #3a3a3a→#666666", "CONTRABAND page: 4-column category grid with responsive breakpoints", "Purged all third-party attribution references from entire codebase" ] }, { "version": "1.6.0", "date": "03/04/2026", "title": "CONTRABAND — Classified Resource Index", "category": "feature", "changes": [ "Launched CONTRABAND page at /depot/contraband with 15,800+ indexed assets", "24 categories with military codenames (CRT-001 through CRT-024)", "Full-text search across all entries via API", "Starred/top-pick filter system with ⭐ indicators", "Collapsible subcategories with item counts", "Flask API endpoints: /api/contraband, /api/contraband/, /api/contraband/search" ] }, { "version": "1.5.1", "date": "03/04/2026", "title": "Navbar Dropdown Fix", "category": "fix", "changes": [ "Fixed dropdown menus disappearing on all subpages", "Root cause: 25 subpages used class 'navbar' instead of 'nav-main'", "All pages now use correct nav class with proper positioning and z-index" ] }, { "version": "1.5.0", "date": "02/04/2026", "title": "Globe & Chat AI Admin Panels", "category": "feature", "changes": [ "Admin panel: Globe management section — server location, rotation speed, arc cities, colours", "Admin panel: Chat AI configuration — model selection, system prompt, greeting toggle", "New API endpoints: /api/globe, /api/chat-config with auth-protected GET/POST", "Interactive colour picker and slider controls for globe parameters", "Arc cities table with add/remove functionality" ] }, { "version": "1.4.0", "date": "01/04/2026", "title": "Interactive 3D Globe", "category": "feature", "changes": [ "Added interactive 3D globe to homepage using globe.gl", "Animated arcs connecting server location to cities worldwide", "Hex polygon layer with customisable opacity and colour", "Atmosphere glow effect with configurable altitude", "Auto-rotation with adjustable speed" ] }, { "version": "1.3.0", "date": "31/03/2026", "title": "Blog & Transmissions System", "category": "feature", "changes": [ "Built blog system with markdown-to-HTML rendering", "Blog index page with post cards, dates, and categories", "Individual post pages with full content rendering", "Transmissions section: SITREP, RADAR, DISPATCHES pages", "Admin panel: blog post management with create/edit/delete" ] }, { "version": "1.2.0", "date": "30/03/2026", "title": "Admin Panel & Authentication", "category": "feature", "changes": [ "Built admin panel at /admin with session-based authentication", "Dashboard with real-time server stats and process monitoring", "Navigation management: add, edit, reorder, delete menu items", "Blog post editor with live preview", "Password-protected API endpoints with cookie auth" ] }, { "version": "1.1.0", "date": "29/03/2026", "title": "HQ & Section Pages", "category": "feature", "changes": [ "Created full site navigation structure with dropdown menus", "HQ section: Telemetry, Logs, Profile, Briefing pages", "DEPOT section: index, Propaganda, Recon, Exfil pages", "ARMOURY section: Lab, Field Manuals, Deployments, Debrief pages", "COMMS section: Open Channels, Encrypted Line, Backup Relay pages" ] }, { "version": "1.0.0", "date": "28/03/2026", "title": "Initial Launch", "category": "release", "changes": [ "Launched jaeswift.xyz with sci-fi military dashboard theme", "Homepage with system stats, process monitor, clock, and typing effect", "Dark theme with scanline overlay and monospace typography", "Flask API backend for real-time server data", "Responsive design across all screen sizes", "Gitea repository setup at git.jaeswift.xyz" ] } ] }