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
65 changes in May 2026 Clear filters
May 2026
3
-
Maintenance
1:59 PM
Delete .agents directory
afd18bd -
Maintenance
1:38 PM
Production readiness audit and cleanup (#17)
Details
- fix: resolve CSS build error and remove dead/debug files
- Fix stray closing brace in profiles.css that broke PostCSS build
- Remove debug_cache.php and upgrade_gradients.py from project root
- Remove frontend/test-features.php and its route from router.php
- Remove 7 SQLite-based migration/schema scripts from backend/api/
- Add built CSS bundle (frontend/css/dist/bundle.min.css)
- chore: mark FEAT-001 as completed
- refactor: clean up production code quality issues
- Rename STINKY_STEAM_IDS to BLOCKED_STEAM_IDS across all PHP files
- Rename is_stinky user property to is_blocked
- Remove debug output and ?debug=1 handling from frontend/orgnews.php
- Remove console.error calls from frontend/js/main.js search handler
- Remove TEMP comment from phpstan.neon ignore list
- Delete deprecated frontend/api-doc-legacy.php
- Delete frontend/css/pages/api-legacy.css and its @import
- refactor: consolidate duplicate and legacy backend code
- Remove unused backend/controllers/ directory (AdminController, BaseController, PackageController, UserController) - superseded by backend/api/Controllers/
- Add documentation headers to analytics-advanced.php, analytics-advanced2.php, and analytics-advanced3.php clarifying their roles as function libraries required by analytics-api.php
- Add docblock to legacy-rate-limiter.php explaining its purpose for standalone API endpoints not routed through the modern api.php entry point
- fix: remove redundant console statements from frontend JS for production
- chore: final cleanup pass - remove dev .bat files, fix gitignore, harden htaccess
- Remove bundle-css.bat, dev-server.bat, lint.bat (duplicate npm scripts)
- Remove .phpunit.result.cache (test runner cache)
- Add .phpunit.result.cache to .gitignore
- Update index.php maintenance message to be generic
- Add security rules to .htaccess blocking sensitive dirs and dotfiles
- fix: address review findings - rename env var, remove dead code, fix htaccess ordering
- Rename STINKY_STEAM_IDS to BLOCKED_STEAM_IDS in .env.example
- Remove dead $debugInfo array and all assignments from frontend/orgnews.php
- Move directory-blocking RewriteRules before the front-controller catch-all in .htaccess
- chore: complete environment setup - verify deps and build pipeline
- feat: create centralized API utility module and replace all raw fetch() calls
- Create frontend/js/api.js as IIFE exposing window.API with get, post, put, delete, and request methods
- Includes CSRF token injection from meta tag, retry logic with exponential backoff, request deduplication, in-memory GET cache with TTL, AbortController timeout support, and global error toasts
- Add <meta name="csrf-token"> tag in backend/includes/header.php
- Add api.js script tag after toast-manager.js in header.php
- Replace raw fetch() calls across 37 frontend JS files with API module
- Add 'API' to ESLint globals in eslint.config.js
- Preserve existing error handling behavior in all modified files
- chore: mark FEAT-002 as completed
- feat: standardize API responses using apiSuccess/apiError/apiPaginated helpers
Migrate 48 standalone PHP API files to use the centralized api-response-formatter.php helpers instead of raw json_encode().
All responses now follow the standard format: {success: bool, data: ..., error: string|null, meta: {timestamp, api_version}}
- Add require_once for api-response-formatter.php in each file
- Replace raw json_encode success responses with apiSuccess()
- Replace raw json_encode error responses with apiError()
- Ensure proper HTTP status codes (401/403/404/400/500/503)
- Preserve all existing business logic unchanged
- Skip health.php and kofi-webhook.php (special formats)
- 41+ files now use the standardized response helpers
- chore: mark FEAT-003 as completed
- feat: add HTTP caching headers, security hardening, and input sanitization
- Create CacheHeaderMiddleware with publicCache, privateCache, noStore methods
- Add HSTS header and expanded Permissions-Policy to SecurityMiddleware
- Apply Cache-Control: public headers to read-only API endpoints
- Apply Cache-Control: no-store to authenticated/admin API endpoints
- Add CacheHeaderMiddleware to PackageController list/search methods
- Create AuthRateLimitMiddleware (10 req/min) for auth endpoints
- Update CSRFProtection to accept X-CSRF-Token header
- Create InputSanitizer utility class with sanitize methods
- feat: enhanced service worker with API caching, stale-while-revalidate, pre-caching, and background sync
- feat: optimize database queries in CacheManager with LIMIT clauses, indexes, and Redis-only fast path
- feat: add esbuild JS minification, jsAsset helper, defer attributes, and preload hints
- Install esbuild and add tools/build-js.js for individual file minification
- Add js:build and unified build scripts to package.json
- Add jsAsset() helper in helpers.php for environment-aware script paths
- Update header.php with jsAsset() calls and preload hints for critical assets
- Update footer.php script tags to use jsAsset() helper
- Add defer attribute to all external script tags across PHP templates
- Add frontend/js/dist/*.js to .gitignore (build artifacts)
- feat: add structured logging with request ID tracking and client error reporting
- Create Logger class with JSON-formatted output, daily log rotation, and severity filtering
- Add client-errors.php endpoint for frontend error reporting with rate limiting
- Generate UUID v4 request ID per page load in api.js, sent via X-Request-ID header
- Echo X-Request-ID in SecurityMiddleware response headers for correlation
- Add unhandledrejection and error event listeners with debounced reporting (max 5/page)
- Log API requests in api.php with duration tracking
- feat: add asset optimization with fingerprinting, preload hints, and image lazy loading
- Create AssetManager.php with content-hash based cache busting and manifest support
- Create tools/generate-asset-manifest.js for build-time hash manifest generation
- Update js:build script to generate manifest.json after minification
- Replace time()-based cache busting in newspost.php and notifications.php with AssetManager
- Update header.php preload hints to use AssetManager::preloadTag()
- Add loading=lazy to images in compare.php, newspost.php, latest-news.php, skins-item.php
- Add manifest.json and generate-asset-manifest.js to .gitignore rules
- feat: add unit tests for frontend API module and backend classes
- tests/api.test.js: 10 Vitest tests for window.API (headers, CSRF, retry, deduplication, caching, abort, error toast, request body)
- tests/Unit/LoggerTest.php: 4 Pest tests for Logger class
- tests/Unit/InputSanitizerTest.php: 6 Pest tests for InputSanitizer
- tests/Unit/AssetManagerTest.php: 4 Pest tests for AssetManager
- tests/Unit/CacheHeaderMiddlewareTest.php: 5 Pest tests for middleware
- Install jsdom devDependency for Vitest browser environment
- Update vitest.config.js to use jsdom environment
- fix: address code review security and reliability issues
- Replace mt_rand with random_bytes for UUID v4 generation in Logger
- Add data: and vbscript: scheme rejection to InputSanitizer::sanitizeUrl
- Fix service worker pre-cache path mismatch by adding dist paths and stripping query params when matching static assets in cache
- Add missing exit statements after apiError calls in profile-layout.php, settings.php, announcement-api.php, and featured-badges.php
- Remove exception details leak in settings.php delete-account error path
- Complete migration from errorHandler.fetchWithRetry to API.get/post in cache-management.js and advanced-search.js
- fix: remove preload tags with mismatched versioned URLs
The preload tags in header.php used AssetManager::asset() which generates content-hash versioned URLs, but the actual resource loads used different versioning strategies:
- CSS bundle: loaded via filemtime() in head.php (different version string)
- main.js: loaded with bare path (no version) in body-scripts.php
- api.js: loaded via jsAsset() which may resolve to a different path (frontend/js/dist/) or compute a different hash than the manifest
This caused browser console warnings: 'was preloaded but not used' because the browser couldn't match the preloaded URL to the actual request URL.
- fix: resolve admin panel JS errors from defer loading and response wrapping
- Remove 'defer' from admin.js script tag in admin-layout.php so utility functions (formatNumber, debounce, escapeHtml, formatBytes, formatTimeAgo) and the fetch monkey-patch for CSRF tokens are available before inline scripts execute. Fixes 403 Forbidden on POST requests, ReferenceError for debounce in log-viewer, and ReferenceError for formatNumber in analytics.
- Fix sendResponse() in admin-tools-api.php to output JSON directly instead of double-wrapping through apiSuccess(). The function was passing already- structured data (with 'success', 'metrics', etc.) into apiSuccess() which wrapped it again as {success: true, data: {success: true, metrics: {...}}}. Admin pages expect the flat structure at the top level.
- Unwrap .data property in analytics-advanced.php fetch calls for realtime, predictions, behavior, and comparison endpoints that use apiSuccess() wrapper, using 'json.data || json' for backwards compatibility.
- Unwrap .data property in analytics.php fetchSection() for the same reason.
- fix: improve analytics behavior layout and add null checks in sync-reputation
- Wrap Churn Analysis and Lifetime Value cards in a 2-column grid container in renderBehavior(), keeping User Segmentation full-width
- Fix undefined churn.at_risk_rate reference by calculating inline
- Add null/error checks for fetchPlayerData, fetchUserPackages, getUserClaimedOrgs in sync-reputation to prevent 500 errors
- Add explicit int casts for player data fields
- Improve error message in catch block with steam ID context
- fix: redesign User Behavior tab to multi-column dashboard layout
Replace single-column stacking layout with proper multi-column dashboard:
- Top row: 4 segment cards in fixed repeat(4, 1fr) grid
- Middle row: Churn Analysis and Lifetime Value side-by-side (1fr 1fr)
- Bottom row: Full-width Overall Health summary with 4 key metrics
- Use flexbox (flex: 1) inside cards for robust internal layouts
- Remove redundant segment bar visualization
- Use formatNumber() for numeric display
- Normalize line endings to LF per .editorconfig
- chore: add batch files for linting, building, and dev server
- fix: add cd to project root in bat files for correct path resolution
- fix: language switching now writes to user_settings table and returns redirect URL
Problem 1: The /set-language route wrote to the users table but i18n read the preference from user_settings. Now writes to both tables with an UPSERT on user_settings as the primary store.
Problem 2: The API returned no redirect URL, causing the page to reload without a language prefix. Now computes and returns the correct language-prefixed redirect path.
Also adds validation against available languages to reject unsupported language codes.
- fix: use fetch() instead of API wrapper in i18n-client to avoid load order dependency
---------
eb28097 -
Maintenance
8:20 AM
Delete .agents/tasks directory
37c160c
1
-
Docs
8:49 PM
Rewrite README to reflect current codebase state
Details
- Update PHP version requirement from 8.1+ to 8.4+
- Document consolidated MCP architecture (5 tools with actions)
- List all 24 available themes (was 7)
- Add testing section (Pest, Vitest, PHPStan)
- Add linting section (ESLint, Stylelint, PHP-CS-Fixer)
- Add build system section (PostCSS pipeline)
- Correct cache TTLs to match config/constants.php
- Expand maintenance tools listing (50+ scripts)
- Document backend API architecture (Controllers, Middleware, etc.)
- Add additional features (command palette, steam presence, etc.)
- Update project structure to include all top-level files
- Add config directory documentation
- Include npm install in setup and deployment steps
9a00d8d
5
-
Style
5:39 PM
Visual & UX overhaul: flat design, navigation redesign, consistency pass (#12)
Details
- feat: overhaul design system foundation - flatten UI, normalize radii, remove glow effects
- Normalize border radii: --radius-md/lg/xl/2xl all set to 4px
- Remove --glow-primary and --glow-secondary CSS variables from :root
- Remove text gradient (background-clip: text) from MCP hero title
- Simplify body background to flat var(--bg-primary) without radial gradients
- Flatten .btn-primary: solid background instead of linear-gradient, no glow shadows
- Flatten .card: solid background, no backdrop-filter or gradient
- Remove .glass, .glass-strong, .glass-card, .shine-effect from design-system
- Remove backdrop-filter from .surface class
- Remove inset box-shadow highlights from .brand-icon
- Update --shadow-primary to use subtle 20% opacity
- Replace glow references in homepage feature CSS with shadow-md
- chore: mark FEAT-001 as completed
- feat: redesign navigation - replace hamburger with Material Symbols, simplify brand, clean styling
- Replace hamburger span lines with Material Symbols menu/menu_open icon
- Remove brand-icon-glow and brand-icon-wrapper from header
- Remove initBrandAnimation() from navigation.js
- Simplify .site-nav (remove ::before gradient line)
- Redesign .nav-container with proper gap and shorter padding
- Simplify .brand-icon to flat 32px square, no glow/gradient/shadow
- Clean .nav-link: no pseudo-elements, simple color/bg transitions
- Redesign .nav-toggle as 36px icon button
- Clean .user-menu-trigger with border and 4px radius
- Remove ::before arrow from .user-dropdown, flat bg-secondary
- Simplify .user-dropdown-item styling
- Mobile menu uses translateX instead of opacity for reveal
- Clean .btn-steam-login: remove shimmer, use border/color transitions
- Remove brand-letter animation CSS from components.css
- Consistent focus-visible: outline 2px solid var(--primary), offset 2px
- chore: mark FEAT-002 as completed
- feat: clean up component styles - remove gradients, excessive transforms, decorative animations
- buttons.css: remove filter:brightness, inset box-shadows, reduce hover translateY from -2px to -1px, use flat backgrounds
- base.css: flatten .card hover (no translateY), simplify .btn-enhanced, update input focus ring to 2px, use border-radius: var(--radius-sm)
- design-system.css: remove .hover-lift translateY, .hover-scale excessive scale, .interactive translateY, .page-hero radial gradients, fix .callout border-radius to 4px
- hero.css: remove ::before/::after radial gradient blurs, hero-title drop-shadow, simplify search-input to solid background
- homepage-hero.css: remove hp-hero__title drop-shadow
- navigation.css: remove pagination ::before gradient overlay, hover translateY, ::after shine animation, will-change, stagger delays, pagination-wrapper decorative line
- layout.css footer: remove footer-shimmer, footer-float, glow-pulse keyframes, shimmer-track, glow-top, brand-icon animation/gradient, social link gradient/excessive transforms, stat-card gradient/transforms, support-link gradient
- chore: mark FEAT-003 as completed
- feat: improve responsive design, typography, accessibility, and replace hard-coded footer colors
- chore: mark FEAT-004 as completed
- fix: replace -webkit-text-fill-color with standard color property in non-theme CSS
- fix: address review findings - reduce hover lifts, remove dead CSS, fix radius inconsistency
- feat: restore footer blue glow ambient effect
- feat: enhance design tokens, depth system, and micro-interactions
- Add --shadow-xs, --shadow-card-hover, --surface-elevated-1/2 tokens
- Add --transition-micro for snappy micro-interaction timing
- Refine .card with surface elevation shadows and border tint on hover
- Improve button hover shadow layering and scale(0.98) active state
- Soften input focus ring to 3px with inset shadow
- Add translateY(-1px) and subtle shadow to .tag hover
- Refine .interactive with explicit transition properties and hover lift
- Improve .hover-lift with translateY(-2px) and ease-out-quart curve
- Add box-shadow depth to .surface and .surface-elevated
- Add .press-feedback utility class for physical button feel
- Enhance .pill hover with translateY and subtle shadow
- chore: mark FEAT-001 as completed
- feat: refine nav, footer, modals, toasts, type-filters, and cards for premium polish
- chore: mark FEAT-002 as completed
- fix: address review findings - remove dead tokens, refine footer glow, fix toast transition
- chore: update task state with review and verification metadata
- fix: correct text color hierarchy - make --text-muted properly dimmer than --text-secondary
- feat: global CSS foundations - spacing tokens, card unification, section rhythm, interactive consistency, selection color
- Add --space-between (0.75rem) and --section-gap tokens to :root
- Add .card-surface foundation class in design-system.css
- Update homepage-layout to use --section-gap for vertical rhythm
- Replace transition: all with enumerated properties in charts.css, api-doc.css, community.css, favorites.css
- Standardize hover lifts to max -2px (except -3px for hp-card large cards)
- Change carousel-nav border-radius from radius-full to radius-sm
- Remove Inter from --font-sans (only Poppins is actually loaded)
- Add ::selection and ::-moz-selection styles with primary-tinted background
- Replace hardcoded 0.75rem/1.25rem spacing with tokens in navigation, favorites, community, media CSS
- Unify card border opacity (6%), shadow, and inset highlight pattern
- chore: mark FEAT-001 as completed
- feat: mobile nav staggered animation and empty state unification
- Add staggered entrance animation for mobile nav links with subtle translateX and increasing delays per child
- Add @keyframes nav-link-enter for the stagger effect
- Respect prefers-reduced-motion by disabling animation
- Remove conflicting .empty-state overrides from favorites.css and community.css (canonical definition in design-system.css)
- Update .no-badges in community.css to match unified empty state pattern
- Update .no-packages-state in layout.css with token-based padding, dashed border, and rounded corners
- Update .activity-empty-icon to use 2.5rem size and color token
- chore: mark FEAT-002 as completed
- fix: remove deprecated -moz-selection, add empty-state h2/icon fallback selectors
---------
a2beae7 -
Maintenance
6:09 AM
Remove decorative section divider comments
75ea436 -
Maintenance
6:07 AM
Remove inline comments
5618984 -
Style
3:59 AM
Align base theme with official sbox.game design system (#7)
Details
- chore: rebuild CSS bundle and update lockfile after npm install
- chore: add missing vendor/tippy.css required for CSS build
- feat: align base CSS theme with sbox.game design system
- Add --tint/--scrim RGB triplet variables for composable overlays
- Add --surface-bg, --surface-bg-hover, --surface-line, --surface-bg-fade
- Update --text-muted to #b2bed4, --warning to #f59e0b
- Add --accent-bright, --highlight-gold, --text-strong, --text-faint
- Add --input-* form variables and update form styles to use them
- Add --code-* syntax highlighting variables with .hljs token classes
- Add --menu-background, --menu-border, --btn-highlight-* variables
- Add --container-max-width, --site-background-color(-dark)
- Update shadows to use stronger --scrim-based values
- Replace scrollbar styles with sbox.game pattern (transparent track)
- Add table styles with tint/scrim composable pattern
- Add pre/code block and highlight.js syntax highlighting styles
- Add fallbacks in color-mix-fallbacks.css for older browsers
- fix: address 5 CSS review issues in base theme
- Replace rgb(from var(...)) relative color syntax with compatible rgb(var(--color-primary-rgb) / N%) in input-focus-ring, tr:hover, and thead tr for cross-browser support
- Update --color-warning-rgb to 245, 158, 11 and --color-warning-solid to #f59e0b to match the --warning value
- Restore Firefox scrollbar support with scrollbar-width: thin and scrollbar-color on html element
- Scope table element selectors under .content to prevent style leakage into admin panels and third-party widgets
- Fix tippy.css light theme to use --bg-secondary and --border instead of undefined --bg-elevated and --border-color variables
- Add --input-focus-ring fallback in color-mix-fallbacks.css
- feat: enhance buttons, links, cards, animations, menus, callouts, and badges with sbox.game design patterns
- fix: address 5 CSS review issues from theme refinements
- Remove duplicate .btn.disabled rule, add button.disabled to existing selector
- Fix slideUp default from 20px back to 100% to avoid breaking existing consumers
- Add explicit content: none to .callout::before base rule
- Replace hardcoded border-radius: 10px on .card with var(--radius-2xl) token
- Update --radius-2xl from 8px to 10px to match card design intent
- Narrow .menu-option transition from 'all' to 'color, background-color'
- chore: verify existing CSS build passes (FEAT-001)
- feat: complete rewrite of responsive.css with comprehensive mobile-first overhaul
- Section 1: body.menu-open state preserved
- Section 2: tablet adjustments (1024px) for nav and container padding
- Section 3: primary mobile breakpoint (768px) covering navigation overlay with backdrop blur, touch targets (48px min), content layout, typography scaling, hero, footer collapse, modals as bottom sheets, forms, package detail stacking, scrollable tab bars, and performance optimizations
- Section 4: small phone (480px) with brand text hidden, single-column grids, tighter padding, and modal max-height adjustments
- Section 5: touch device overrides disabling hover transforms, adding active scale feedback, and ensuring 44px minimum touch targets
- Section 6: prefers-reduced-motion with universal animation/transition disable
- Section 7: safe area support via @supports for footer, nav actions, and modals
- Section 8: performance included within 768px block (reduced backdrop-filter, simplified shadows, removed will-change)
- chore: mark FEAT-002 as completed
- fix: address CSS review issues - replace greedy tab selectors, remove duplicate reduced-motion, restore focus-visible
- feat: redesign user menu to match sbox.game session button pattern
Desktop:
- Trigger is now a clean circular avatar with subtle border ring
- Avatar size increased to 36px, username/arrow hidden
- Hover shows border brightening + glow effect
- Dropdown uses design system variables (--menu-background, --menu-border)
- Dropdown has 10px border-radius, 220px min-width, top notch arrow
- Items use --menu-option-text/bg variables with proper transitions
Mobile (768px):
- Trigger stays compact (avatar only, no text/arrow)
- Dropdown is a bottom sheet (slides up from bottom)
- Rounded top corners (16px), max-height 70dvh
- Drag handle pill indicator at top
- Backdrop overlay with scrim when open
- Safe area padding at bottom
- Stronger backdrop-filter blur (24px)
- refactor: restructure navbar to fix mobile layout - remove .nav-actions
- Restructure header.php: user-menu/login now in .nav-right wrapper alongside .nav-toggle, always visible in header bar
- Move .nav-links outside .nav-container as direct child of .site-nav so it can become a full-screen overlay without being constrained
- Remove .nav-actions from HTML, CSS (layout.css, responsive.css, nav-auth.css), and JS (navigation.js)
- Mobile nav overlay now uses solid var(--bg-primary) background
- Add z-index layering: .nav-container at 1002 above .nav-links at 1001
- Clean up navigation.js: remove all navActions references from initMobileMenu, initFocusTrap, and handleOutsideClick
- chore: mark FEAT-001 as completed
- fix: remove stale mobile nav-links rules and redundant margin-left from layout.css
- Remove conflicting .nav-links mobile rules (transform, max-height, top, border-top, transition) from the 768px media query in layout.css that clashed with the new responsive.css overlay approach
- Remove .nav-links.active translateX(0) rule superseded by opacity transition
- Remove redundant margin-left: auto from .nav-right since .nav-container already uses justify-content: space-between
- chore: mark FEAT-002 as completed
- chore: rebuild CSS bundle with all nav refactor and theme changes
- fix: use position:fixed for user dropdown so it always opens below header, never off-canvas
- fix: revert dropdown to position:absolute - backdrop-filter on site-nav traps fixed positioning
- refactor: rewrite nav from scratch to fix backdrop-filter containing block bug
- Remove backdrop-filter, transform, and filter from .site-nav
- Use solid background: var(--site-header-color) instead
- Move .nav-links inside .nav-container (between brand and nav-right)
- Change .site-nav from position:relative to position:sticky
- Merge scroll behavior (.scrolled, .nav-hidden) into main nav section
- Remove duplicate .nav-toggle and .site-nav blocks from bottom of layout.css
- Remove bottom-sheet mobile dropdown pattern (use normal absolute dropdown)
- Remove backdrop-filter from responsive.css performance section
- User dropdown now escapes containing block correctly (position:absolute in position:relative .user-menu)
- chore: mark FEAT-001 as completed
- fix: address nav CSS review issues - duplicate rule, fixed positioning, reduced motion
- Remove duplicate .nav-right base rule from nav-auth.css (layout.css is the single source of truth)
- Remove position:fixed from body.menu-open in responsive.css to prevent sticky nav breakage on iOS Safari; overflow:hidden alone prevents scroll
- Add prefers-reduced-motion:reduce block for .nav-links and .user-dropdown to disable opacity/transform transitions for motion-sensitive users
- chore: record review fix findings in task state
- fix: brand icon uses 4px border-radius squircle
- fix: user avatar uses 4px squircle border-radius, not circle
- chore: gitignore bundle.min.css - generated file should not be tracked
---------
6383437 -
Refactor
1:17 AM
Admin panel visual overhaul — unified CSS & accessibility (#4)
Details
Shared CSS (admin-components.css):
- Add missing button variants: .btn-secondary, .btn-warning, .btn-text, .btn-admin
- Add :focus-visible states for all interactive elements (buttons, nav, tabs, forms)
- Add shared components: .admin-grid, .admin-card, .admin-table, .admin-tabs, .progress-bar-container/.progress-bar, .health-indicator, .checkbox-grid, .checkbox-label, .form-grid, .form-row, .info-box, .warning-box, .action-grid, .result-item, .admin-badge variants
- Add utility classes: .gap-lg, .text-primary, .text-secondary, .truncate, .w-full, .hidden
Layout (admin-layout.css):
- Add mobile sidebar backdrop overlay (.sidebar-backdrop) for better mobile UX
JavaScript (admin.js):
- Add sidebar backdrop toggle with proper open/close functions
- Add aria-current=page on active nav items
- Add role=alert + aria-live=polite on toast notifications
- Add role=dialog + aria-modal=true on modals with auto-focus
- Add role=tablist/tab/tabpanel with aria-selected on tab groups
- Add formatDate utility function
- Replace plain close-on-outside-click with backdrop-aware logic
Page refactors:
- webhook-settings.php: Replace ~120 lines inline CSS with shared components (.metrics-grid, .metric-card, .card, .health-indicator, .checkbox-grid, .form-grid)
- bulk-actions.php: Replace ~170 lines inline CSS with shared components (.action-grid, .card, .info-box, .warning-box, .progress-bar, .result-item) Fix: material-symbols-outlined → rounded (consistency) Fix: custom .notification → shared adminToast() (no more duplicate toast system)
- mcp-knowledge.php: Extract 250 lines inline CSS → admin-knowledge.css (page-specific design kept intact, just externalized for cacheability)
c62f915
2
-
Change
8:59 AM
MCP admin stuff
df45757 -
Maintenance
12:18 AM
Auto-fix code (+)
45f675f
15
-
Maintenance
10:34 AM
Auto-fix code (+)
46902cb -
Change
10:31 AM
Org follow fixes
c244a1e -
Change
9:00 AM
About page update
647ef8a -
Maintenance
8:22 AM
Rebuild frontend CSS bundle
Details
Rebuild the minified frontend CSS bundle to include recent style updates. Updates frontend/css/dist/bundle.min.css (regenerated) to pick up changes from frontend/css/features/packages.css and frontend/css/pages/pages.css, including updated font imports and minor styling tweaks.
e82efd1 -
Maintenance
8:12 AM
Auto-fix code (+)
ca54e47 -
Maintenance
8:10 AM
Remove deprecated pages and UI tweaks
Details
Remove multiple old/debug admin pages and helpers, tighten navigation, and polish admin UI. Deleted unused admin pages (cache-stats, clear-all-user-caches, clear-user-cache, csrf-helper, debug-*, init-org-claims, and related files). Updated admin/includes/admin-layout.php to remove links to deleted pages and point Org Claims to org-claims-full. Enhanced admin/index.php to show counts for pending org claims, pending MCP contributions, and active announcements with a new "Needs Attention" card. Added CSRF validation and token field to cleanup-invalid-users.php POST flow. Cleaned up admin CSS (admin-components.css and admin-layout.css): removed extra whitespace, streamlined rules, and added utility classes/styles. Also removed redundant meta charset/viewport tags from several admin pages.
fb87df6 -
Maintenance
7:08 AM
Remove legacy API and adjust routing/queries
Details
Remove the monolithic legacy API and related legacy helpers, and update routing/cache logic and frontend views for compatibility. Deleted backend/api/api-legacy.php, backend/includes/MySQLManager.php and redis integration examples. Fixed profile-analytics SQL in backend/api/Routes/legacy-compat.php to use a parameterized interval and pass the days parameter. Updated cache_manager, routing_logic and router.php along with multiple frontend includes and pages to align with the cleaned-up backend. Also added a new chart history data file (data/chart_history/map/2026-05-09.json). This is a cleanup/migration change to remove old code and bring routing/caching and UI in line with the newer API structure.
d2c286b -
Change
5:46 AM
Status indicator fixes
aab7389 -
Change
5:20 AM
Profile widget fixes
e9f8bfa -
Change
4:59 AM
Steam IDd fixing
6d04b2b -
Change
4:36 AM
Better about me bio
fb5bd71 -
Maintenance
3:45 AM
Auto-fix code (+)
08cfa71 -
Maintenance
1:59 AM
Auto-fix code (+)
e2829ba -
Style
1:34 AM
CSS stuffs
91d79b9 -
Change
1:20 AM
More homepage stuff
f12eb68
13
-
Change
11:27 PM
Updated Homepage
941fe9b -
Change
8:14 PM
Org page filter fixes
d8ea292 -
Maintenance
8:06 PM
Auto-fix code (+)
85bac7e -
Maintenance
8:05 PM
Auto-fix code (+)
ed4db51 -
Maintenance
8:03 PM
Auto-fix code (+)
271ea3f -
Maintenance
8:00 PM
Auto-fix code (+)
c9fbaed -
Maintenance
7:50 PM
Auto-fix code (+)
c71a9d4 -
Style
7:49 PM
Css updating
cfc4433 -
Change
11:45 AM
Org overhaul page
a5fbb13 -
Change
10:51 AM
Removed the Star System
bd31160 -
Change
10:44 AM
Settings overhual
00ab581 -
Change
10:01 AM
Mcp related stuff
f84cbb9 -
Change
9:01 AM
SteamID Fixes, UI cleaning
4469803
18
-
Maintenance
8:25 PM
Auto-fix code (+)
30d51e8 -
Maintenance
7:57 PM
Better numbers in package stats
9df0902 -
Change
6:18 PM
Better secruity
8decebe -
Maintenance
4:37 PM
Session count breaking on certain packages, new api access message
61ae9c8 -
Maintenance
9:48 AM
Auto-fix code (+)
de04e1a -
Maintenance
8:11 AM
Auto-fix code (+)
f63341f -
Maintenance
7:18 AM
Auto-fix code (+)
63eae1d -
Refactor
7:13 AM
Leaderboard cleanups
54b6659 -
Change
6:56 AM
Improved api docs page
9fdf6f7 -
Maintenance
6:39 AM
Package leaderboard stats
d996e9b -
Maintenance
6:36 AM
Package reviews
e6d9b5d -
Maintenance
6:25 AM
Modernise packages view
3496d45 -
Maintenance
5:07 AM
Auto-fix code (+)
eb446b7 -
Change
5:06 AM
Another Admin Sweep
c97a781 -
Change
2:52 AM
Achievement stuff cleaning
08e39ba -
Maintenance
1:58 AM
Auto-fix code (+)
4299ec3 -
Change
1:23 AM
Removed Health Score, pointless
63d44cb -
Maintenance
1:10 AM
Auto-fix code (+)
daecd72
3
-
Maintenance
2:58 AM
Auto-fix code (+)
b1653fd -
Style
2:47 AM
More linting and theme fixes
6ea3b31 -
Change
2:09 AM
Settings scroll fixed
e2c8599
Generated from the project's commit history whenever the site is deployed. Times are server time.