182
Total Completed
80
This Month
8
Projects
Silent Failures panel now cross-references prop_history and backfill runs — dates with closing line data from backfills no longer show as failures
Added a new Research navigation dropdown with a Venue Stats page showing aggregated batting and pitching stats by MLB ballpark with sortable columns and totals/per-game toggle
Added a Player Props Stats page showing player season stats alongside their prop lines for any date, with historical and today-line hit rate calculations
Added min/max under odds range filter to the Top Unders page. Props outside the configured odds range are excluded from results.
Added a pre-computed table tracking each player's most frequent batting order position per season. Integrated into No Run Score and Under .5 Runs systems so they no longer depend on lineup cards being published.
Added historical batting order position as a 6th qualifying check to the Under .5 Runs system. Players must most frequently bat in the 6th spot or lower to qualify, filtering out top-of-the-order hitters who are more likely to score.
Replaced the live lineups table lookup with historical mode batting order position from player_batting_order_history for the lineup position factor. Improves scoring stability before game-day lineups are confirmed.
Created player_batting_order_history table to store the mode batting order position per player per season. Backfilled 2026 season data from existing game stats (433 player records). Added batting_order_min config param to the Under .5 Runs system.
Admin system detail pages now show a Filtered Out stat in the Live Preview summary, matching the metric shown on public system pages for easier comparison.
Added VS Team hit rate (performance against today's prop line in games vs the opponent) and full-season closing-line percentage to prop cards on the MLB dashboard.
Rewrote team season stats sync script to use MLB Stats API instead of deprecated BDL API. Includes team batting, pitching, and fielding stats synced daily.
New evaluation system that identifies players likely to go under 0.5 runs scored by combining team offensive weakness (bottom N in runs scored), opponent pitching strength (top N in ERA), individual run drought indicators, and sportsbook odds filtering. Includes admin-configurable parameters and team rankings display.
Created team_season_stats table and rewrote sync script to use MLB Stats API instead of deprecated BDL API. Populates hitting, pitching, and fielding stats for all 30 teams.
Added early morning prop sync so player props are available before the first pitch.
Fixed timestamp format issue causing closing lines to fail since April 12. Backfilled missing data.
Admin-controlled prop sync schedule with per-slot toggles. Added 5:30 PM and 7:00 PM CT sync windows for better pre-game line coverage. Six total daily sync runs, each controllable from the Odds API admin page.
Added real-time API quota tracking with burn rate projections, daily usage chart, and per-sync-job breakdown. Fixed broken admin page that was showing empty status data.
Added info tooltips to each check in the Failed Check Impact table across all history pages. Applied the new scorecard design to No Run Score history with backfilled prediction data.
Replaced the confusing Check Effectiveness table on HRR Overs and Unders history pages with a Failed Check Impact scorecard. Now clearly shows which checks matter most by tracking hit rate when each check is the one that fails on near-miss predictions.
Fixed a bug where HRR Overs and HRR Unders predictions were never being locked due to a missing function dependency in the sync script. Backfilled historical predictions so history pages now show tracked results.
New scoring system that calculates probability of a player not scoring a run using 12 weighted factors (OBP, lineup position, opposing starter, platoon, park factor, etc.). Compares model probability against sportsbook odds to detect value betting opportunities. Includes admin configuration, prediction tracking, and history page.
Added date-navigable schedule page and rebuilt game detail as a player-first prop breakdown with closing-line history, top-performer/top-under badges, and collapsible box score sections.
Admin dashboard now shows prop history gaps and silent sync failures, so missing data is immediately visible.
Fixed a bug where the closing lines sync was calling the live events API instead of the historical events API, causing games from past dates to not match. Backfilled March 26-29 prop history data.
Top Performers now compares players against their actual historical closing lines from sportsbooks instead of applying today's line retroactively. Also shows a secondary vs-today's-line badge per prop.
New page that surfaces players with high under hit rates using historical closing lines from sportsbooks. Compares against actual past prop lines and today's line. Admin-configurable thresholds and market toggles.
Fixed a bug where props with odds outside the configured Min/Max Odds filter range could still appear on the dashboard. Each side (over/under) is now checked independently against the filter.
Added a help icon to the Heavy Home Favorites page explaining the bridge system, all five checks, the moneyline override feature, and how to read qualifying vs near miss results.
Added a help icon to the Parlay Builder page explaining how to build a parlay, what each field means, how to read results, and the difference from Auto Parlay.
Added a help_content table to track when each page's help modal was last updated. Admin dashboard now shows help content age with color-coded freshness indicators. CLAUDE.md documents the help modal pattern for consistent implementation.
Added a help icon to the Prop Hit Rate Analyzer page explaining filters, column meanings, and usage tips.
Added a help icon to the Team Top Performers page showing current settings, enabled markets with directions, and how to use the page.
Added a help icon to the Top Performers page that shows current settings (min hit rate, min games), which markets are enabled and their direction, and how to read the results.
Added help icons to HRR Overs and HRR Unders pages that open a modal explaining how the system works, what each check means, and how to read the results.
Auto Parlay now backtests against real closing prop lines from prop_history instead of applying today's line retroactively. Hit rates now reflect whether the player actually beat the line that was set for each game.
Auto Parlay now ensures the same player cannot appear in multiple legs of the same parlay, preventing correlated parlays that sportsbooks penalize with reduced payouts.
Fixed check effectiveness tables showing all zeros due to MariaDB JSON_VALUE boolean comparison. Added full-criteria vs near-miss badges to daily breakdown. Adjusted HRR Unders min-games offset for early season.
Auto Parlay cards now show each players game matchup and start time
Added Min Odds and Max Odds filter fields to the Auto Parlay page, filtering out props whose odds for the chosen direction fall outside the range
New page that automatically discovers and ranks the best parlay combinations from todays props based on historical hit rates. Includes admin settings for per-leg hit rate threshold and per-market minimum lines.
Added a sportsbook dropdown to the Top Performers page, allowing users to filter results by a specific sportsbook
Fixed game times on HRR Overs, HRR Unders, Hits Over, and Home Favorites pages that were displaying UTC times instead of Central Time
Added Min Line and Max Line filter fields to the MLB dashboard toolbar, allowing users to filter props by line value range
New evaluation system for H+R+RBI prop under opportunities. Identifies batters in unfavorable offensive situations using 7 checks: under hit rate, bottom-of-lineup batting order, low pitcher WHIP, low team implied runs, venue filtering, platoon disadvantage, and min games played. Includes admin configuration, prediction tracking, and history page.
Min games parameter now auto-calculates from max team games played this season plus a configurable offset. Applied in admin dashboard, public API, and prediction lock script.
Added prediction tracking infrastructure — locks HRR Overs predictions ~1hr before games, grades postgame, and provides history page with accuracy breakdown by confidence level and individual check effectiveness
Added a cron sync script that snapshots qualifying and near-miss HRR Overs predictions approximately 1 hour before each game, storing locked predictions in system_predictions for grading and hit-rate tracking.
Renamed the H+R+RBI Advantage system to HRR Overs for clarity — updated all file names, URLs, routes, DB slug, and navigation links
Dashboard now auto-calculates minimum games based on season progress and market type. Added odds range filter to control which prop lines are displayed. All defaults are configurable from the admin panel.
Added us2 region to The Odds API integration to include Hard Rock Bet odds in player prop displays.
Odds API sync script now auto-discovers and upserts sportsbooks encountered during each run into odds_api_sportsbooks, mirroring the existing market auto-discovery pattern.
Added active-sportsbook filtering to all five prop API endpoints so disabling a sportsbook in the admin panel immediately removes it from all prop results across the site.
Added POST /api/odds-api-sportsbook-toggle endpoint to enable or disable individual sportsbooks, controlling which books are included in odds API responses.
Added odds_api_sportsbooks reference table to control which sportsbooks appear in front-end props displays. Seeded from existing sportsbook data in player_props.
Changed admin gear icon color from white to black for visibility on light navbar
Under toggle on the dashboard now properly recalculates hit rates instead of only switching displayed odds
New evaluation system that identifies batters with high Hits+Runs+RBIs prop hit rates in favorable matchup conditions including batting order, opposing pitcher WHIP, team implied runs, venue, and platoon advantage. Includes Over/Under toggle and admin dashboard with configurable venue toggles for all 30 MLB parks.
Fixed player team assignments showing previous season teams instead of current rosters on the Prop Analyzer page
Player headshots now display correctly on Top Performers and Team Top Performers pages using the MLB CDN.
Added a team-filtered Top Performers page where users can select a team and see which players are hitting prop lines at the highest rates.
Top Performers prop markets are now configurable from the admin dashboard. Each market can be set to Over, Under, or Off with a visual toggle. Removed irrelevant props like stolen bases, singles, and doubles by default.
New page under Prop Analysis that surfaces players hitting their prop lines at a high rate. Shows player cards with position badges, game info, and all qualifying prop lines with hit rates. Admin-configurable thresholds.
Multi-leg parlay analyzer that lets you build 2-6 player prop combinations and see historical hit rates, matching days, and near misses across the season.
Added a team game stats aggregation pipeline and Hits Over evaluation system. Users enter a hits threshold and direction (over/under) to find teams whose rolling batting average vs opponent pitching suggests they will hit over or under that number.
Added a systems overview page that lists all evaluation systems with today qualifying game highlights and per-system stats
Disambiguated Strikeouts and Walks labels so pitcher and batter versions are clearly distinguished in dropdowns.
Added a configurable minimum games filter to the dashboard prop cards view. Defaults to 3 games to filter out small-sample noise early in the season.
Dashboard prop cards now tiebreak by total games when hit rates match, and L5/L10 labels show game count for small samples to reduce misleading 100% displays early in the season.
Switched entire site from Eastern Time to Central Time (America/Chicago). Added formatGameTime() helper for consistent UTC-to-CT conversion. Fixed broken game times on dashboard that displayed as year values (e.g. 2014:05 PM).
Resolved silent cron failure where the props sync script could not write to a missing log directory. Created /var/log/gamedayanalytics and fixed file ownership for the sync scripts.
Added configurable Systems section to MLB Admin with live preview for Heavy Home Favorites system parameters (moneyline range, starter tiers, bullpen LOB%, reliever risk mode, sweep detection).
Fixed player photos to use MLB CDN, corrected market type mapping for props queries, and added fallback market list for the dropdown.
Fixed broken daily-props API that referenced non-existent table columns, preventing the props dashboard from loading.
Created a standalone admin dashboard for MLB-specific tools with password authentication, sync monitoring, and data overview. Admin pages are now protected behind login.
Grouped closing line history by game date with collapsible accordion UI showing matchup and O/U summary per game.
Fixed column name mismatches and missing table reference in the prop grading script that prevented closing line history from showing results beyond March 30.
Game times on Bridge Builder page now display in Central Time (America/Chicago) instead of Eastern
Added admin dashboard for manual pitcher tier/reliever role assignments and Bridge Builder page that filters today's MLB slate for qualifying heavy-favorite home bets using a 5-point validation system
Backfilled Opening Day game stats and updated cron scripts to use rolling date windows, preventing data gaps at season start.
Rewrote player-detail.php and player-stats API to use the actual server DB schema: batters/pitchers tables, correct game_pk/game_date column names, base_on_balls/strike_outs/pitches_thrown in game stats, avg/obp/slg/ops in season stats. Added Closing Line History section with O/U trend dots from prop_history table.
Built a hit rate analyzer that grades player props against historical closing lines (15 min before first pitch). Captures consensus lines from The Odds API Historical endpoint, grades against actual stats, and surfaces CL10 hit rates with O/U trend indicators on dashboard cards.
Replaced Ball Don't Lie with The Odds API for live player prop lines. Built a 4-layer name matching engine (alias, exact, normalized, fuzzy), admin dashboard for market management and unmatched player resolution, and automated sync schedule at 6 AM and 1 PM ET.
Fixed pitcher-matchup API to work with new MLB Stats API schema. Click any pitcher on the matchup page to see the opposing lineup with K% breakdown: Season, L5, L10 plate appearances, and Career vs that specific pitcher.
Built complete data pipeline: game stats (373K+ lines), lineups (235K), umpires (122), standings, and injuries — all synced from MLB Stats API with rate limiting, retry logic, and comprehensive sync logging. Automated via cron: 6 AM daily, every 10 min during games, 1:30 AM postgame sweep.
Added ESPN-style leaderboard validation page to admin dashboard. Shows batting leaders (AVG, HR, RBI, OPS, Hits, SB) and pitching leaders (W, ERA, SV, K, WHIP, K/9) for quick comparison against ESPN. Includes database health checks, season breakdown, and sync activity log.
Added player_game_stats table storing individual game batting and pitching lines for every player in every game. Enables L5, L10, and over/under calculations for prop analysis.
Lineup data with batting order and positions synced from MLB boxscores for every game.
Umpire registry and per-game assignments synced from MLB boxscores. Home plate umpire impacts scoring environment.
Full standings data from MLB Stats API including splits (home/away, day/night, L10, extra-inning, one-run games).
Current injured list status synced from team depth chart rosters. Rebuilt fresh each sync run.
Three cron jobs: daily pre-game sync (6 AM ET), live score updates every 10 min with instant stats on game completion, final postgame sweep (1:30 AM ET).
Backfilling per-game player stats, lineups, and umpires for all regular season games from 2020 to 2025 (~14,000+ games).
Replaced Ball Don't Lie API with the official MLB Stats API for all game schedules, pitcher stats, and batter stats. New database schema uses MLB personIds and game_pk as primary keys for direct API compatibility.
The Prop Hit Rate Analyzer now returns all players meeting the games and hit rate thresholds, not just those with a prop listed today. Players without a game today show a dash in the Game column.
The prop analyzer now shows each player's today's matchup (opponent and game time) in a dedicated Game column. Hidden on mobile for readability.
Completed games and their props are now filtered out of the daily props dashboard, keeping focus on upcoming and in-progress games.
Fixed an issue where game tabs on the daily props dashboard were repeated multiple times due to a database join producing duplicate rows.
Fixed a data type mismatch in the lineup sync where empty string values from the API caused database insert errors for the is_probable_pitcher field.
Player stats, prop results, and lineups now process within ~10 minutes of a game ending instead of waiting until 1:30 AM. Play-by-play and Statcast data still sync overnight.
Player profile game log now excludes spring training games, showing only regular season data.
Complete mirror of all 19 BDL MLB API endpoints into local database. Includes Statcast pitch-by-pitch data, play-by-play, standings, lineups, player splits, injuries, and batter-vs-pitcher matchups. Comprehensive logging with verbose/debug/dry-run modes. Nightly automated sync with historical backfill for 2022-2025.
New page showing today's starting pitchers grouped by game with expandable head-to-head matchup panels showing opposing lineup strikeout rates via the MLB Stats API.
Reorganized MLB site navigation into grouped dropdowns: Stats, Prop Analysis, and Umpire Analysis. Cleaner layout with desktop hover and mobile accordion behavior.
New cross-player discovery tool that finds players with consistent hit rates against their current prop lines. Includes all 16 MLB player prop types, over/under direction filtering, configurable thresholds, and sortable results with L5/L10 trend data.
Added per-season O/U hit rate breakdown on the Umpire Game Preview page for both umpire vs line and pitcher combo data. Fixed betting odds sync to correctly map BDL API field names. Also fixed game stats sync pagination bug and NULL season values.
Renamed Accuracy to Hit Rate on props cards and fixed hit rate data showing N/A by falling back to the most recent season with game stats data when the current season has no completed games yet.
Password-protected admin panel with ship CRUD, data quality monitoring, fleet coverage checker, and database maintenance tools.
Fixed Wikidata QID names, removed non-target cruise lines, retired vessels, and standardized ship name prefixes across the database.
Browse 175 active cruise ships from 12 major lines with grid and table views, filtering by cruise line, sorting by tonnage/passengers/year, and detailed spec panels.
Compare up to 4 ships side-by-side with specification tables, best/worst highlighting, and bar visualizations for key metrics.
Browse cruise lines with fleet statistics and expandable ship lists per line.
Fleet-wide analytics with overview stats, top 10 rankings, and Chart.js distribution charts (by decade, tonnage bracket, cruise line, scatter plot).
Automated data import from Wikidata SPARQL and Wikipedia API with monthly cron resync. 175 ships across 12 cruise lines.
Full JARVIS/SCDB HUD aesthetic with Orbitron/Rajdhani/Share Tech Mono typography, glassmorphism panels, and scanline overlays.
Redesigned the MLB home page with a card-based player props view featuring prop type selector, game filters, sportsbook filter, sort options, and hit rate trending metrics.
Date-selectable page showing home plate umpire O/U hit rates with threshold grids and starting pitcher combo analysis for daily MLB games.
Add a timeline of past incidents below the current status showing what went down, when, and how it was resolved. Uses existing health_log data to auto-generate incident reports.
Health cron now automatically creates and resolves incidents when services go down or recover. Includes duplicate prevention, severity classification, and recovery notes.
Added a live server monitoring dashboard to the admin panel showing CPU load, memory usage, disk space, temperatures, system uptime, running services, and more. Data auto-refreshes every 10 seconds with animated SVG gauges.
Added a safeguard to prevent games from showing a LIVE badge if they started more than 6 hours ago. This handles cases where the API is slow to update game status from in_progress to final.
Updated the Today's Games section on the dashboard to display team logos instead of plain text abbreviations. Logos are sourced from ESPN CDN.
Added season filter checkboxes to the Umpires listing page, allowing users to filter umpire stats by specific seasons. The umpire filter API now accepts season parameters for targeted analysis.
Fixed umpire stats pages and cache to exclude spring training games. All umpire queries (listing, detail, analysis, filter API, and stats cache) now only include regular season games, matching industry-standard sources like OddShark.
Fixed market_hash_name collision issue where multiple workshop skins with the same name were incorrectly linked to the same Steam Market listing. Added Phase 2b verification using GetAssetClassInfo API to resolve the correct workshop_id for each market item. Resolved 275 collisions, unlinked 379 wrong entries, and correctly relinked 2,436 items including cases where the market name differs from the workshop name. Market-accepted skins increased from ~2,600 to 4,441.
Refactored admin panel CSS from hardcoded JARVIS styling into a base layout layer plus per-theme color overrides using CSS custom properties. Admin dashboard now automatically matches the active frontend theme.
Added Wipeout theme — a dark navy design with teal accents, clean Inter/Space Grotesk typography, and rounded modern UI elements. Inspired by competitive Rust server trackers. Includes both frontend and admin styling.
Upgraded server cards across all themes with rank badges, player population fill bars, a 2x2 details grid (map, size, pop%, wipe cycle), and SVG circular wipe progress indicators. Each theme styles the new elements in its own visual language.
Expanded from 3 to 4 themes: JARVIS (sci-fi HUD), Signal (light/clean), Default (dark purple), and Wipeout (navy/teal). All themes support both frontend and admin dashboard styling.
Fixed sync_log enum causing all price syncs to fail. Optimized batch queries to use distinct market_hash_names, avoiding duplicate API calls. Added price propagation for skins sharing the same market name. Tuned rate limits to stay within Steam guidelines.
Skins with no price yet no longer show /usr/bin/bash.00. Cards hide the price badge, detail modals show Checking instead, and the Buy button omits the price until one is available.
Added a third theme matching the freaklabs.dev design language: dark navy background, cyan accents, Orbitron headings, scan line overlay, grid background, HUD corner brackets on stat cards, and blur-backdrop navigation. Includes dark admin dashboard styling.
New HUD theme matching the freaklabs.dev design language. Features dark navy palette, cyan accents, Orbitron typography, scan line overlays, grid backgrounds, and HUD corner bracket decorations on cards.
Added release_date column to valorant_skins table and populated dates for all 1,267 skins from external sources. Newest-first sorting now shows skins in correct chronological order by bundle release date.
New sleek modern theme with cool slate-gray palette, indigo accents, rounded corners, and subtle shadows. Includes matching admin dashboard styling via theme-aware CSS override system.
Rewrote the Steam Market price sync to use chunk-based processing (100 skins per batch), prioritize skins with missing prices first, and gracefully handle Steam rate limits instead of retrying indefinitely. Runs every 30 minutes for steady price coverage.
Added drag-and-drop reordering to the admin Projects page using SortableJS. Projects can now be visually reordered by dragging their grip handles, with changes saved instantly via AJAX.
Built WordPress-like theme system supporting full layout overrides, template fallback, and per-theme CSS/JS/assets. Includes front controller with clean URLs via mod_rewrite.
Implemented default theme matching the GameDay Analytics design language — warm beige backgrounds, rust-red accents, Space Grotesk/Inter/JetBrains Mono fonts, 2px border-radius.
Full pagination through 177,000+ Rust Workshop submissions. Extracts skin name, item type, preview image, vote score, and favorites count.
Matches Workshop skins against Steam Market listings and fetches live pricing via the priceoverview API with rate limiting.
Syncs all weapon skins, content tiers, themes, and video preview URLs from the valorant-api.com endpoints.
Searchable, filterable grid of Rust skins with source toggle (All/Market/Workshop), item type dropdown, sort options, pagination, and skeleton loading states.
Searchable grid with weapon type, collection, and rarity filters. Rarity badges color-coded to match Valorant tier colors. Video preview modal with autoplay.
Admin dashboard showing skin counts, sync verification (expected vs actual), last sync times, quick action buttons, and system health info.
Admin page listing installed themes with activate button. Active theme stored in site_settings table.
File-based logger with daily rotation, sync_log database table, admin log viewer with filtering by job/status/date.
Nightly Rust full sync at 3AM, Valorant sync at 4AM, hourly price refresh at :30.
New Umpire Analysis page for analyzing home plate umpire tendencies with custom over/under thresholds. Supports Total Runs, Strikeouts, Walks, Home Runs, and Hits stat types with season filtering, hit rate summary cards, common threshold grid, and full game history table.
Scheduled games now show their start time (ET) instead of just a generic Scheduled badge. Game times are synced from the BDL API and displayed on the dashboard, games today page, and game detail pages.
Added interactive filters to the Umpires page — set minimum HP games, enter a custom O/U line threshold, and toggle between Over and Under to see hit rates. Includes sortable columns and historical vs. actual betting line tracking.
Redesigned the entire site with the Hardball theme: dark header/footer with warm body sections, rust-red accent color, Space Grotesk display font, JetBrains Mono for stats, sharp 2px corners, and square player photos. Applied across the landing page, MLB app, and admin dashboard.
Full player profiles with season stats, game logs, batting and pitching leaderboards, and headshot photos from MLB Stats API.
Automated sync of player props and game betting odds with historical result tracking and hit-rate analysis.
Admin panel with manual sync triggers, data audit tools, season backfill, and changelog management.
Cron-based sync for teams, players, games, season stats, game stats, props, odds, and prop results with real-time live score updates.
Added 90-day uptime history bars to the public status page. Each subdomain now shows a visual timeline of daily uptime with hover tooltips showing the date and status for each day.
Fixed health checks showing services as down due to incomplete SSL certificate chain. Apache vhost configs for several subdomains were missing the intermediate certificate, causing server-side SSL verification to fail while browsers worked fine.
Built 7 PHP API proxy endpoints that fetch data from the Star Citizen Wiki API v2 with server-side caching, search filtering, and security headers. Endpoints cover ships, weapons, vehicle comparison, and loadout management.
Created ships.php (paginated listing with search by name/manufacturer/role) and ship.php (single vehicle detail by slug) proxy endpoints.
Created weapons.php (paginated listing filtered by type: WeaponGun, WeaponMissile, WeaponTorpedo, WeaponEMP, MissileLauncher with search) and weapon.php (single item detail by UUID).
Built compare.php endpoint that accepts 2-4 comma-separated vehicle slugs and returns their full data side-by-side for comparison.
Created loadout.php endpoint supporting GET (load by ID) and POST (save new). Includes rate limiting at 10 saves per IP per hour via the cache table, random 12-char hex IDs, and shareable URLs.
Built sync.php for full pre-cache sync of all vehicles and weapon items. Protected by X-Sync-Key header, outputs plain-text progress for cron logging, and paginates through all API pages.
Added .htaccess rules for the api/ directory: disabled directory listing, restricted HTTP methods, disabled error display, and added security headers.
Added 10 curated NFL feeds including ESPN, Pro Football Talk, CBS Sports, PFF, Pro Football Rumors, The Athletic, Yahoo Sports, WalterFootball, NFL Trade Rumors, and NFL Transactions.
Added HUD theme matching the freaklabs.dev visual identity — dark navy backgrounds, cyan accents, Orbitron and Rajdhani fonts, scan lines, glassmorphism. Works across public pages, admin dashboard, user dashboard, and auth pages.
Launched starcitizen.freaklabs.dev — a full-featured Star Citizen Database with 300+ ships, weapon stats, side-by-side vehicle comparison, and an interactive loadout builder. Built on a PHP API proxy/cache layer connecting to the Star Citizen Wiki API v2, with a JARVIS HUD tactical interface theme matching the freaklabs.dev design language.
Browse the full Star Citizen fleet — over 300 ships and ground vehicles with detailed specs including manufacturer, role, crew size, cargo capacity, speed, weapons, and components. Paginated listing with real-time search by name, manufacturer, or role.
Complete weapon catalog covering guns, missiles, torpedoes, EMP devices, and missile launchers. Filter by weapon type, search by name, and view full stats including damage, fire rate, range, and ammo.
Compare 2 to 4 ships or vehicles side-by-side with full spec breakdowns. Highlights differences across dimensions, speed, weapons, shields, and components to help with purchase and loadout decisions.
Build and share custom ship loadouts — swap weapons, shields, and components, then save with a shareable URL. Rate-limited save endpoint with unique hex IDs for bookmarking and sharing builds.
Full JARVIS-inspired heads-up display theme with Orbitron and Rajdhani fonts, cyan accent palette, glassmorphism panels, scan-line overlays, and animated UI elements — matching the freaklabs.dev design language across all pages.
New public changelog showing completed work across all projects, grouped by month.
Services that are intentionally offline (like idle game servers) now show as amber instead of red, so the status page only alerts on real outages.
Added a flexible theme engine that lets the site switch between different visual styles with one click from the admin panel.
The status monitor now tracks game server availability alongside web services, with support for both TCP and UDP servers.
Resolved issues where stopped game servers appeared as online due to UDP detection and timezone bugs.
Nightly backups of all databases and site files to Backblaze B2 with weekly snapshots and 30-day version history.
Cause: The dedup logic keyed only on resolution (e.g., "360p"). The adaptive video-only format (itag 134, 360p) was processed first and blocked the combined format (itag 18, 360p with audio) from appearing. Fix: Changed the dedup key to include the audio type: resolution + '_av' or '_vo'. Added "(video only)" labels to video-only formats. Sorted combined formats first so users see the audio+video option at the top of the quality dropdown.
Cause: The page-scraped YouTube streaming URLs contain an n (throttle) parameter that requires JavaScript-based deciphering. Without transforming n, YouTube returns HTTP 403 on the actual video URL. The old streaming proxy (CURLOPT_WRITEFUNCTION) silently produced an empty response. Fix: Rewrote proxy_download() to download to a temp file first, then serve it via serve_file(). Added proper error reporting that surfaces the upstream HTTP status code (e.g., "HTTP 403") instead of silently failing.
Cause: The server has shell_exec in PHP's disable_functions. On PHP 8+, calling a disabled function throws an uncaught Error exception that the @ suppression operator doesn't catch. Line 66: @shell_exec('which ffmpeg 2>/dev/null') crashed the entire script. Fix: Added a can_exec() guard check before calling shell_exec, plus a try/catch (\Throwable) for safety. Also added @ to set_time_limit() as a precaution.
Cause: The IOS InnerTube client (clientName: IOS) is blocked by YouTube's bot detection when requests come from data center IPs. Fix: Switched primary YouTube client to ANDROID (clientName: ANDROID, version 19.30.36). This client returns direct, unthrottled streaming URLs and isn't currently blocked from the server's IP. Kept embedded player and IOS as fallback strategies.