Version 4.0 - 2025-11-29

Performance Optimizations

    Database Query Optimization: Implemented static caching for flatDB::readEntry() and flatDB::listEntry() to reduce redundant file system operations
    N+1 Query Fixes: Eliminated N+1 query problems in feed.php, view.php, search.php, and other core files
    Parser Optimization: Added static cache for Parser::title() and optimized Parser::content() and Parser::summary()
    Plugin System: Implemented static caching for plugin configurations and hook validations
    BBCode/BBlight Optimization: Added static cache for quote entries to prevent repeated database reads
    User Management: Implemented static cache for ban list with 60-second TTL
    Search Enhancement: Optimized search functionality with relevance scoring, result limiting, and content preview optimization



Library Improvements

    flatDB Library: Added static caching system with automatic invalidation (5-second TTL)
    Plugin Library: Added cache for hook validation checks
    HTMLForm Library: Added cache for description sanitization
    GlobalRequestLimiter: Fixed potential undefined variable error



RSS Feed Fixes

    Fixed RSS feed redirection issue - now returns valid Atom XML error feed instead of redirecting
    Improved date validation in feed generation
    Optimized topic caching in feed.php



Date Formatting

    Fixed date formatting issues with strftime codes
    Added convertStrftimeToDateTime() function for proper format code conversion
    Enhanced config.php with select dropdowns for date format presets
    Added &quot;Custom&quot; option with dynamic text input for date formats



Security Enhancements

    Ban System Overhaul:
    [list]
    Replaced strpos() with ipInCidr() for accurate IP/CIDR range checking
    Added isValidIpOrCidr() for robust IP and CIDR validation (IPv4/IPv6)
    Improved ban list management with search, sort, and add functionality
    Added confirmation for ban removal
    Implemented static cache for ban list with automatic invalidation


[*] CSRF Protection: Enhanced CSRF token generation and validation
[*] Input Sanitization: Improved HTML sanitization in help descriptions with whitelist-based approach
[*] IP Validation: Enhanced IP address validation including CIDR support
[/list]

User Interface Improvements

    Added logout button to frontend header for all logged-in users
    Tags field now only displays if visible tags are configured
    Improved responsive design for various screen sizes
    Enhanced form validation and error display



Plugin Enhancements

    Identicon Plugin (v3.6.0):
    [list]
    Added configurable options for status dot (online/offline) display
    Added configurable options for role badge (admin/moderator) display
    Improved caching for online status checks
    Enhanced role detection with optimized caching
    Fixed CSS positioning for status dots and badges


[*] Online Plugin:

    Implemented static caching for plugin data, hits, and authenticated users
    Optimized cleanup of inactive IPs and authenticated users
    Added configuration options for timeout and max_entries
    Enhanced modal to display authenticated users, visitors, and bots
    Improved IPv6 masking for privacy
    Added crawler detection with static caching


[*] FlatBBeditor Plugin:

    Fixed conflicts with TinyMCE editor in page plugin
    Added conditional loading to prevent conflicts
    Fixed undefined array key warnings in markdown editor
    Implemented static cache for plugin data


[*] Darkmode Plugin:

    Fixed Firefox crashing issues
    Added color format validation
    Improved error handling and initialization
    Added static caching for plugin configuration


[*] Page Plugin:

    Ensured TinyMCE editor doesn&#039;t conflict with FlatBBeditor
    Added proper content field handling
    Improved translation support


[/list]

Content Parsing Improvements

    Markdown Editor:
    [list]
    Fixed HTML tag display issue in homepage summaries
    Added HTML-to-Markdown conversion for pre-existing HTML content
    Improved content parsing in Parser::content() and Parser::summary()


[*] BBCode Processing: Optimized quote processing with static caching
[/list]

JavaScript Enhancements

    Improved plugin activation/deactivation with better error handling
    Added comprehensive AJAX error handling with timeouts
    Enhanced UI feedback for user actions
    Fixed TypeError issues in flatboard.js



[h2]Bug Fixes[/h2]

    Fixed white page error in identicon plugin
    Fixed undefined array key warnings in multiple files
    Fixed date formatting display issues
    Fixed search functionality optimization
    Fixed tag display logic in forms
    Fixed various PHP warnings and notices



Code Quality

    Improved error handling throughout the application
    Added comprehensive logging for debugging
    Enhanced code documentation
    Improved code organization and structure