Release history
Changelog
Every new feature, fix and speed-up on s&box Explorer, newest first.
- Last 30 days
- 90
- Features shipped
- 233
- Fixes
- 218
- Days with changes
- 66
508 changes Clear filters
December 2025
2
-
Performance
8:58 PM
Optimize LCP by lazy loading hero backgrounds and prioritizing above-fold images
02bce51 -
Fix
7:56 PM
Add include guard to prevent CACHE_LOCK_TIMEOUT redefinition warning
96ed68a
7
-
Fix
11:25 PM
Fix all tests and improve org page package display - Fixed 7 failing tests (100% pass rate) - Added missing constants (ADMIN_STEAM_IDS, STINKY_STEAM_IDS) - Fixed announcement API endpoint - Added package-card-new styles with 1:1 aspect ratio - Made org page packages smaller (8rem) and more compact - Increased org page items per page from 12 to 20 - Added admin Steam ID configuration
8b7b791 -
Fix
10:22 AM
Normalize package type badge sizing across all contexts
Details
- Reduced font-size from 0.875rem to 0.8125rem for .package-type
- Reduced letter-spacing from 0.08em to 0.05em
- Fixed MAP badge appearing too large on package detail pages
- Added max-width constraint to filter buttons
- Consistent sizing across homepage filters, detail pages, and cards
a00fb1f -
Fix
10:07 AM
Improve package type filters and action buttons
Details
- Increased filter box sizes to properly fit Material Symbols icons
- Fixed icon overflow with proper min-height and line-height
- Centered package type filters properly
- Made action buttons (favorite/follow) visible on package cards
- Improved responsive sizing for mobile and tablet
- Better proportions and spacing throughout
bfa8427 -
Fix
9:07 AM
Fix follow button contrast - white icon on green background
74a4317 -
Fix
9:01 AM
Fix button and badge alignment in package details
a13b7b9 -
Fix
6:33 AM
Fix routing bug: package pages incorrectly matched as user profiles
Details
strpos() check for 'api' in org name was matching orgs containing 'api'. Changed to exact string comparison. Also reordered logic to check 2-part package routes before 1-part user profile routes.
cb15263 -
Feature
6:23 AM
Implement package comparison, advanced search, and cache management
Details
Major Features:
- Package comparison tool with side-by-side view
- Advanced search with boolean operators (AND, OR, NOT)
- Admin cache management interface with Redis integration
- Improved authentication with admin session handling
Package Comparison:
- Compare up to 4 packages side-by-side
- Display package thumbnails, types, ratings, and update frequency
- Comparison insights showing highest rated and most recently updated
- Responsive design with mobile support
- localStorage persistence for comparison state
- Clean URL routing
Advanced Search:
- Boolean operator support for complex queries
- Unified search across packages and organizations
- Query validation and syntax error handling
- Result grouping by type
Cache Management:
- Admin panel for Redis cache monitoring
- Real-time cache statistics (total keys, memory usage, hit rate)
- Pattern-based and tag-based cache invalidation
- Preview functionality before invalidation
Authentication & Security:
- Fixed admin session handling (set is_admin flag on login)
- CSRF protection for admin operations
- Admin rate limiting
- Proper session initialization in bootstrap
UI/UX Improvements:
- Gradient styling for comparison page
- Package thumbnails with fallback handling
- Toast notifications for user actions
- Follow button with notification bell icon
- Improved button alignment and styling
Bug Fixes:
- Fixed 403 errors on admin cache endpoints
- Restored comprehensive cache management page
- Fixed package type display (TypeName vs PackageType)
- Fixed thumbnail loading from API
- Removed test files
- Cleaned up placeholder image infinite loop
Technical Improvements:
- Removed unused test files
- Optimized API data structure
- Improved error handling
- Better cache key management
- Clean URL routing for comparison page
a521b64
November 2025
14
-
Feature
2:42 PM
Remove grid/list view toggle feature and cleanup documentation
Details
- Remove layout preference toggle from package-list.php and search.php
- Delete backend/api/layout-preference.php endpoint
- Remove API routes for layout preference
- Remove setting option from settings.php
- Delete user_preferences table schema and migration files
- Clean up outdated documentation files
- Grid view is now the default and only view
4ddbdb1 -
Fix
10:09 AM
Fix hero title text cutoff with padding and line-height adjustments
e7f95f9 -
Performance
10:04 AM
Improve package grid layout and color scheme - Fix CSS bundling with proper postcss-import processing - Add cache-busting for CSS assets - Update color palette with darker backgrounds and refined primary blue - Tighter grid spacing and improved card styling with gradients - Enhanced hover effects and shadows
1f2ef30 -
Fix
8:38 AM
Fix duplicate 'by' text in package cards
f190c15 -
Feature
8:26 AM
Add reputation schema migration endpoint and invalid user cleanup
Details
- Register migrate-reputation-schema route in API router
- Add Steam ID validation to leaderboard query (PostgreSQL regex)
- Create cleanup tool for invalid users (template literals, malformed IDs)
- Display 'Private User' instead of Steam ID for private profiles
- Add cleanup button to reputation management page
10f0537 -
Fix
8:04 AM
Add logging to scheduled tasks and fix PostgreSQL subquery aliases
999d434 -
Fix
5:38 AM
Fix database schema errors - Remove name column from saved_searches query - Stub out non-existent org/all API endpoint
934fcb6 -
Feature
5:27 AM
Add comprehensive UX improvements: modals, form validation, keyboard shortcuts, loading states
Details
- Modal system with focus trap, scroll lock, ESC/overlay close
- Keyboard shortcuts (?, /, ESC, g+h, g+f, arrows)
- Form validation with real-time feedback
- Button system with hover/focus-visible states
- Toast notification limit (max 3)
- Loading states for async operations
- Scroll lock utility
- 44px minimum touch targets
- Comprehensive reduced-motion support
- All implementations vanilla JS, no frameworks
9d2c3ae -
Performance
4:52 AM
Ultimate service worker: smart caching, offline support, performance optimized
ad1d7cb -
Feature
4:31 AM
Enhance offline page and service worker
Details
- Redesigned offline.html with s&box Explorer branding
- Improved visual polish with animations and hover effects
- Updated service worker to v2 with better caching strategy
- Added network-first approach with cache fallback
- Enhanced push notification handling with smart tab focusing
f18a820 -
Feature
4:13 AM
Add Discord webhook integration for package notifications
Details
- Implement WebhookNotificationManager with duplicate prevention and rate limiting
- Add ChangeDetector for tracking new and updated packages
- Create DiscordWebhook API wrapper with retry logic
- Build comprehensive admin interface with stats, filters, and health monitoring
- Add database schema for webhook settings, notifications, and package snapshots
- Support package type filtering (games, addons, maps, etc.)
- Implement update cooldown to prevent spam (24h default)
- Add notification history log with success/failure tracking
- Include test functionality for manual package notifications
- Set up cron-compatible detection script
8795fe7 -
Fix
1:57 AM
Fix notification dispatcher - use API functions and correct schema
40a91fa -
Fix
12:19 AM
Remove duplicate update date from package cards
927704f -
Feature
12:06 AM
Create 2025-11-30.json
b1a0796
6
-
Fix
11:55 PM
Chart rank changes now display correctly for current and historical dates
07cba63 -
Feature
11:38 PM
Add global announcement system with admin controls
af8b2d9 -
Feature
1:14 AM
Add error logging to settings API endpoint
c9f0d49 -
Fix
12:37 AM
Css stuf
aa34dc6 -
Fix
12:14 AM
Fix pagination: preserve query params and remove premature page validation
7ab906b -
Fix
12:10 AM
Fix set-language API to use user_settings table instead of non-existent users table
9b11270
14
-
Fix
11:53 PM
Fix notifications delete_all action mismatch
e0e9d55 -
Fix
11:48 PM
Fix admin panel errors and notification system
Details
- Fixed database connection issues in admin tools (AdminUserLookup, AdminActivityHeatmap, AdminBulkActions, CacheHealthMonitor)
- Converted PostgreSQL-specific queries to SQLite/PostgreSQL compatible syntax
- Fixed NotificationManager to use correct PostgreSQL schema (title/message columns)
- Fixed broadcast notification system to properly create notifications
- Improved user lookup page styling with dedicated CSS classes
- Fixed notifications.js to handle API response format correctly
- Added database driver detection for proper table creation (SERIAL vs AUTOINCREMENT)
- Fixed SQL syntax errors and missing file checks in admin classes
597f0f2 -
Fix
11:16 PM
Fix and modernize admin panel CSS and layouts
Details
- Recreate admin.css from scratch with clean design system
- Fix CSS variable conflicts (use --space-* instead of --spacing-*)
- Standardize card headers with icons across all admin pages
- Unify button styles (btn-admin, btn-danger, btn-warning)
- Remove unwanted hover effects and gradients
- Restructure claim-org page to 2-column layout
- Fix donations page button styling and spacing
- Fix warmup-redis grid layout
- Improve responsive breakpoints for mobile/tablet
- Clean up inline styles and use admin.css classes
07b1805 -
Fix
10:53 PM
Fix admin pages: PostgreSQL compatibility, CSS styling, and API endpoints
Details
- Convert all SQLite syntax to PostgreSQL (strftime, julianday, boolean comparisons)
- Fix CSS/layout issues across admin pages (active-users, warmup-redis, broadcast-notification)
- Create missing analytics API endpoints (realtime, behavior, comparison, predictions)
- Add proper timestamp casting and type conversion for PostgreSQL
- Fix JavaScript null checks in analytics-advanced
- Remove deprecated links from admin index (API Documentation, Steam Friends Cache)
- Add deprecation warning to steam-friends-cache page
- Ensure consistent admin.css styling across all pages
202aa7b -
Fix
10:30 PM
Fix donation stats not updating - use Unix timestamp for last_updated
8692cda -
Fix
10:21 PM
Fix reputation system and user profile stats
Details
- Add s&box ownership check via Steam API
- Award sbox_owner badge to verified owners
- Fix leaderboard to show display names and avatars
- Fix user package fetching for player profiles with claimed orgs
- Remove artificial limits on claimed org packages (was 4 per org, 12 total)
- Improve pagination to fetch all packages (up to 10k per type)
- Fix user-experience API to return empty array instead of 401 for unauthenticated users
- Add admin tools: sync-reputation.php, clear-user-cache.php, clear-all-user-caches.php
6eef905 -
Performance
8:11 PM
Improve API documentation page with modern design and better organization
Details
- Redesigned hero section with gradient background and glass-morphism effects
- Added sticky sidebar navigation for quick access to API sections
- Improved Swagger UI styling with theme-consistent colors
- Enhanced info section with better typography and spacing
- Fixed OpenAPI spec validation errors (nullable types)
- Replaced hardcoded colors with CSS variables for consistency
- Added responsive design for mobile and tablet devices
- Improved badges, buttons, and interactive elements
- Better contrast and readability throughout
fd957b2 -
Fix
6:47 PM
Fix favorite/follow button state persistence on package pages
Details
- Added server-side checks for favorite and follow status on page load
- Query favorites and followed_packages tables to set initial button state
- Removed JavaScript checkFollowStatus call on init to prevent overriding server state
- Fixed follow button to use 'following' class instead of 'active'
- Updated button text to show 'Following' when active
- Added error handling for database queries
173c677 -
Fix
6:20 PM
Fix compression issues, PostgreSQL schema errors, and Steam Presence toggle
Details
- Disabled PHP CompressionMiddleware (Apache handles compression)
- Disabled cache compression to prevent corruption
- Fixed PostgreSQL schema: removed user_type column from user_sessions INSERT
- Added steam_presence_settings table to PostgreSQL migration
- Fixed SQLite syntax in SteamPresenceIntegration for PostgreSQL compatibility
- Fixed saveUserSettings to use PostgreSQL ON CONFLICT syntax
- Added ini_set to disable zlib compression in API endpoints
- Fixed Steam Presence toggle to load server-side for instant display
- Fixed API URLs for Steam Presence endpoints
- Removed temporary debug tools
37740a7 -
Feature
5:19 PM
Add Redis integration with 10 specialized classes and OPcache optimization
Details
Redis Integration:
- Created 10 production-ready Redis classes in backend/includes/redis/
- RedisBase, RedisCache, RedisCounters, RedisLeaderboard, RedisLock
- RedisRateLimiter, RedisSessionHandler, RedisActivityStream, RedisPubSub
- RedisQueryCache, RedisBloomFilter, RedisHelper
- Integrated Redis into PageViewTracker, NotificationDispatcher, API routing
- Updated RecentlyViewedManager, PostgreSQLManager, WatchlistManager
- Added Redis API endpoints for counters, leaderboards, activity streams
Performance Optimization:
- Added .user.ini with OPcache configuration for 10-50x faster execution
- Added check-opcache.php diagnostic tool
- Optimized cache_manager.php with Redis support
Configuration:
- Updated .htaccess for production optimization
- Redis integration ready but optional (CACHE_DRIVER=sqlite by default)
- All Redis code tested and production-ready
ea95501 -
Performance
3:45 PM
Implement parallel API calls for user package fetching
7de39e2 -
Fix
4:31 AM
Fixing the fixes
d69c4c8 -
Feature
2:48 AM
Add Redis caching support and refactor database managers
Details
- Add RedisCache implementation with fallback to SQLite
- Enhance NotificationManager, ReputationSystem, and WatchlistManager
- Add Redis warmup and system info admin tools
- Remove deprecated precache scripts
- Add cache testing and migration utilities
66a8816 -
Fix
12:59 AM
Fix PostgreSQL compatibility and PWA meta tags
Details
- Add mobile-web-app-capable meta tag
- Fix getDatabase() to support PostgreSQL
- Add saved_searches table to both SQLite and PostgreSQL
- Fix NotificationManager and WatchlistManager to use getDatabase()
- Fix PostgreSQL boolean comparisons (FALSE/TRUE vs 0/1)
- Fix I18n to work with both SQLite and PostgreSQL
- Remove PWA install prompt auto-trigger warning
- Fix user_id vs steam_id column naming in PostgreSQL schema
e27172a
12
-
Feature
11:23 PM
Create 2025-11-27.json
7818f0b -
Fix
8:52 PM
Fix news post default images - use s&box header as placeholder
4d56f06 -
Fix
8:35 PM
Fix notification system schema mismatch
Details
- Updated NotificationManager to use 'content' column instead of 'title'/'message'
- Fixed dispatch-notifications.php to use consolidated DB when available
- Updated createNotification and createBatchNotifications methods
- Notifications now fire correctly when packages are updated
d389f3e -
Fix
8:28 PM
Fix database locks, 404 errors, and concurrent worker overload
Details
- Increased SQLite busy_timeout to 30s and added retry logic to cache operations
- Added ProcessLockManager to limit concurrent workers to 5 max
- Disabled CURLOPT_FAILONERROR and added smart 404 filtering for missing packages
- Added 2s batch delays between worker spawns in schedulers
- Prevents database lock contention and worker stampedes
cf434b8 -
Feature
8:17 PM
Add UGC charts with grid layout, daily snapshots, and rank tracking
3b0c2e2 -
Feature
7:36 PM
Add s&box header image fallback for news posts without media
912f1f7 -
Feature
7:32 PM
Add pagination to org news page and fix news post links to use internal pages
5cedf82 -
Fix
7:18 PM
Css stuff again
d3be490 -
Performance
5:48 PM
Improve search results page: remove hover effects, limit categories to 10 items, enhance mobile UX
9dfb4cb -
Feature
4:48 PM
Add unified search with organizations and categorized packages
e3a2ca7 -
Fix
4:32 PM
Footer
53173be -
Fix
4:14 PM
Improved footer stats
86a0bff
7
-
Fix
5:36 PM
Fix spacing between navbar and page content
72d3294 -
Fix
3:20 PM
Fix translation placeholder syntax for steamLink in credits page
Details
Changed {steamLink} to {{steamLink}} across all locale files to match i18n system's double-brace placeholder format
18f4767 -
Fix
3:13 PM
Fix all stylelint issues across CSS files
6daee0a -
Performance
3:08 PM
Improve API documentation page design
Details
- Add dedicated api-doc.css with modern, compact layout
- Redesign header with gradient background and icon card
- Improve endpoint cards with horizontal layout
- Better typography and spacing throughout
- Enhanced pills and buttons with hover effects
- Improved tables and code blocks styling
- Add responsive design for mobile
- Fix text visibility issues with !important overrides
1de94b9 -
Fix
2:11 PM
Changelog commit items invisible due to opacity
Details
- Removed opacity: 0 from .commit-item causing hidden text
- fadeInUp animation now handles visibility correctly
e07becb -
Fix
2:08 PM
News page CSS syntax errors and visibility issue
Details
- Fixed 5 extra closing braces in pages.css breaking stylesheet
- Removed opacity: 0 from news-item inline style causing hidden posts
- News posts now display correctly with fadeInUp animation
2132961 -
Fix
1:34 PM
Fix CSS styling: modern color functions, hero spacing, and filter button layout
ac92d79
5
-
Fix
4:59 PM
Improve hero component accessibility and UX
Details
- Add prefers-reduced-motion support for animations
- Add visible focus indicators for keyboard navigation
- Increase touch targets to 44px minimum (WCAG AA)
- Add disabled state styling for search input
3ecbc19 -
Feature
4:47 PM
Add analytics system with migration manager and admin tools
Details
- Add MigrationManager for database schema versioning
- Add PageViewTracker for analytics event logging
- Add AnalyticsEvents for event type definitions
- Add aggregate-analytics tool for data processing
- Update AdminLogViewer with analytics support
- Update admin-tools-api with analytics endpoints
- Update log-viewer with analytics UI
65b5a07 -
Performance
3:28 PM
Improve package type filter readability
Details
- Changed icon colors from primary to text-primary for better visibility
- Increased active state text weight to 800 and font size
- Added stronger text shadow on active state for better contrast
- Made "All" button text more readable on blue gradient background
8de35b3 -
Performance
3:19 PM
Improve hero section and package grid design
Details
- Enhanced hero with better spacing and subtle pulsing glow effect
- Redesigned search bar with pill shape and glassmorphism
- Improved package type filters with hover animations and gradient active states
- Enhanced package cards with better shadows, transitions, and hover effects
- Fixed spacing gap between hero and controls sections
- Added proper search icon positioning in HTML
- Improved responsive behavior for mobile devices
abbae2f -
Feature
2:22 PM
Enhance config and CSS for new features and UI
Details
Some stuffs
7755c3d
Generated from the project's commit history whenever the site is deployed. Times are server time.