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
304 changes Clear filters
December 2025
2
-
Refactor
1:50 PM
Switch to dynamic CSS bundle loading
Details
Removed hardcoded references to styles.css in admin and compare pages. Updated static-assets.php to load bundle.min.css if available, falling back to styles.css, improving asset management and supporting CSS bundling.
eb8a0d7 -
Refactor
1:29 PM
Refactor HTTP requests to use HttpService class
Details
Replaces direct cURL usage with the new HttpService class for all backend API calls, improving code maintainability and centralizing HTTP logic. Also updates NotificationDispatcher to support new user tables and watchlists, and enables cache compression for large entries in cache_manager.php. Cleans up formatting and minor logic in several backend files.
1d414cb
4
-
Refactor
7:27 PM
Clean up spammy error logging - keep only actual errors
62ec16c -
Change
7:14 PM
SUM(CASE WHEN success = false THEN 1 ELSE 0 END) as misses
1c352f9 -
Maintenance
12:17 AM
Sync all CSS and config changes
d076fe7 -
Style
12:16 AM
Enhance profile badge styling with modern glassmorphism effects
111eb8b
3
-
Refactor
8:28 PM
Add MVC architecture with services and repositories
Details
- Add authentication helpers (requireAuth, requireAdmin, isAuthenticated, isAdmin, getCurrentUser)
- Add CSRF protection helpers (generateCsrfToken, validateCsrfToken, getCsrfToken, renderCsrfField)
- Add named constants for cache TTL, pagination, rate limits, and timeouts
- Create controller layer (BaseController, PackageController, UserController, AdminController)
- Create service layer (PackageService, UserService, CacheService)
- Create repository layer (BaseRepository, UserRepository, CacheRepository)
- Enhance CacheManager with key building methods (buildOrgKey, buildUserKey, buildPackageKey)
- Migrate 22 admin files to use centralized requireAdmin() function
- Migrate CSRF handling in admin forms to use new helpers
- Add comprehensive unit tests (25 tests, 100% passing)
- Eliminate 440 lines of duplicate authentication/CSRF code
- Zero breaking changes - fully backward compatible
faacc35 -
Refactor
10:30 AM
Remove package type badge from detail pages
Details
- Removed package-type badge element from package-detail.php
- Simplified CSS for package-meta-primary
- Cleaner detail page layout without redundant type indicator
59ef82c -
Refactor
9:46 AM
Eliminate duplicates and fix opacity issues
Details
- Consolidated 26 animations into utilities/animations.css
- Removed 50+ duplicate selector blocks (.package-card, .hero, .package-type-buttons)
- Removed 100+ duplicate variables from theme files
- Fixed package-card opacity causing invisible content on load
- Fixed orphaned CSS rules from cleanup
- Expected 20-25% bundle size reduction
- Improved maintainability with single source of truth
3b82574
November 2025
10
-
Refactor
12:00 PM
Improve CSS design system compliance
Details
- Updated announcement-banner.css to use design system variables
- Fixed profile-analytics.css undefined variables
- Fixed progressive-loader.css to use design system colors
- Fixed charts.css hardcoded colors and undefined variables
- Updated offline.html to use standardized transition variables
- Fixed admin announcements.php to use design system variables
- Improved announcement banner visibility with 35% opacity
- Added top margin to announcement banner for better spacing
cb34019 -
Style
11:30 AM
Increase news post container width to 1400px and fix Read Full Article button text color to white
d318f0c -
Refactor
10:54 AM
Break down monolithic index.php into maintainable components
Details
- Reduced index.php from 1,593 to 68 lines (96% reduction)
- Created modular view structure in frontend/views/
- Separated package detail into logical sections
- Added head-content.php and body-scripts.php for better organization
- Fixed PHP 8.4 type compatibility issues with htmlspecialchars()
- All routes tested and working correctly
d12cc6c -
Style
7:31 AM
Update admin pages, API endpoints, and CSS styling
619464e -
Docs
5:31 AM
Update README and system-info to reflect PostgreSQL cache architecture
42ffb95 -
Refactor
4:16 AM
Reorganize root directory - move config files to /config and utility scripts to /tools
12da658 -
Refactor
1:40 AM
Replace placeholder.png with profile.png for profile images, keep placeholder.png for org news
f7ee257 -
Maintenance
12:43 AM
Suppress verbose debug logs in production
9a723b1 -
Maintenance
12:33 AM
Use placeholder image for orgnews posts without media
7c6b359 -
Refactor
12:12 AM
Consolidate duplicate styles and enforce design system consistency
Details
- Remove duplicate animations (spin, pulse, fadeIn, skeleton-loading)
- Unify package-card hover effects with search-results override
- Replace hardcoded colors with CSS variables (--color-primary-*, --text-*, --bg-*)
- Standardize spacing using design system tokens (--space-*, --gap-*, --radius-*)
- Remove duplicate badge/skeleton/loading definitions
- Apply consistent design system variables across all CSS files
0e77eb7
1
-
CI
12:07 AM
Migrate all SQLite-specific code to PostgreSQL
Details
- Convert strftime() to EXTRACT()/TO_CHAR() for date/time operations
- Replace datetime() with PostgreSQL NOW() and INTERVAL syntax
- Update INSERT OR REPLACE to INSERT ... ON CONFLICT ... DO UPDATE
- Remove all SQLite DSN connections, use DatabaseManager exclusively
- Remove all PRAGMA statements (PostgreSQL doesn't support them)
- Convert INTEGER PRIMARY KEY AUTOINCREMENT to BIGSERIAL PRIMARY KEY
- Change DATETIME to TIMESTAMP for PostgreSQL compatibility
- Update 8 files across backend, config, and API layers
All SQLite-specific patterns removed from production codebase. Codebase now fully PostgreSQL-native.
b7ac622
4
-
Docs
8:16 PM
Replace hardcoded API documentation with Swagger references
Details
- Update README.md to reference interactive API docs at /api-doc.php
- Add deprecation notice to legacy API documentation page
- Update admin panel link to point to Swagger UI
- Change icon from menu_book to api for better clarity
- Encourage use of interactive documentation over static docs
9b6aa9d -
Refactor
8:12 PM
Refactor API routing and consolidate endpoint files
Details
- Consolidated favorites, followed, and notifications APIs into main api.php
- Added legacy API documentation page for reference
- Updated routing in .htaccess and router.php
- Added API sync verification script
- Updated frontend pages to use new API endpoints
- Fixed advanced search and main.js API calls
- Updated tests for new API structure
8f3c449 -
Docs
5:18 PM
Update documentation to reflect current architecture
Details
- Updated about.php with OPcache and Redis integration details
- Updated credits.php with accurate Redis references
- Enhanced README.md with current tech stack and performance info
- Added OPcache status detection to system-info.php
- Updated warmup-redis.php terminology to be cache-agnostic
- Clarified Redis session handler comment in bootstrap.php
- Added cache configuration section to .env.example
- Added translation keys for all new documentation text
All documentation now accurately reflects:
- PostgreSQL as primary database (SQLite as legacy)
- SQLite as default cache with optional Redis integration
- OPcache enabled for 10-50x PHP execution speed
- 10 production-ready Redis classes available as optional enhancement
ef87c03 -
Refactor
3:46 PM
Update static page translations and backend tech info
Details
Revised static page translations across multiple languages to improve clarity and consistency. Updated backend technology references from SQLite to PostgreSQL and Redis in all affected locales, and added new translation keys for supporter acknowledgments and analytics in profile sections.
40c565c
1
-
Style
5:12 PM
Compact search results layout with multi-column grid and 10 results per category
e0453d7
9
-
Maintenance
7:36 PM
Updated multi-lang
6ef5810 -
Refactor
5:43 PM
Update locale translations
b3e43e6 -
Docs
4:53 PM
Add notification dispatcher to README utility tools
023ce67 -
Maintenance
4:28 PM
Remove Docker support and update packaging script
d20f9c2 -
Style
4:07 PM
Update hero title gradient to use blue color
37f071f -
Refactor
4:06 PM
Update translations and about page footer
7f9d2ba -
Change
3:15 PM
Modernize CSS syntax and remove vendor prefixes
24fb657 -
Refactor
2:35 PM
Standardize HTML head template across all frontend pages
Details
- Unified head structure with consistent include order
- All pages now use identical meta tags, charset, viewport
- Standardized css() helper usage via helpers.php
- Fixed inconsistent paths (includes/meta-tags.php → ../backend/includes/meta-tags.php)
- Added missing head.php and google-analytics.php includes
- Consistent title format across all pages
c0f94ae -
Style
12:51 PM
Polish CSS: improve design system compliance and reduce animations
Details
- Replace hardcoded colors with design system variables
- Convert px values to rem units for better scalability
- Replace hardcoded spacing with --space-* and --gap-* variables
- Reduce animation durations (0.6s → 0.3s, 0.4s → 0.25s)
- Remove 15+ excessive animations (float, sway, shake, wiggle, etc.)
- Simplify hover effects and transitions
- Improve property ordering and code organization
- Add css-polish tools to .gitignore
4aa724d
Generated from the project's commit history whenever the site is deployed. Times are server time.