{ "version": "4.25.0", "title": "Deep Audit & Stability Hardening", "audit_summary": { "php_files_checked": 136, "php_lint_errors": 0, "database_tables": 56, "foreign_keys": 104, "insert_statements_checked": 137, "update_statements_checked": 77, "alter_add_columns_checked": 95, "post_forms_checked": 147, "upload_sites_checked": 19, "missing_local_includes": 0, "missing_local_php_links": 0, "missing_critical_files": 0 }, "important_fixes": [ "Separated v4.24 schema ensure from default seeding so deleted services/member levels do not automatically return.", "Changed legacy service migration to preserve any service already referenced by transactions, service-product recipes, or operational usage history.", "Legacy referenced services are kept intact and merely deactivated; new defaults are inserted separately when needed.", "Synchronized service sort_order in POS, operational inventory, and QR catalog.", "Added services sorting/active index and payment verification/date index.", "Kept explicit manual restore-default buttons for services and member levels.", "Patched upgrade_v4_24_0.php so v4.24 default seeding occurs explicitly once rather than on every page load." ], "preservation": [ "Member registration + social/custom fields", "Member front/back card customization + Card Designer", "Membership levels + automatic evaluation", "POS services/products/mixed transactions", "QRIS/Transfer/E-Wallet proof upload + approval", "Retail + operational inventory and service usage recipes", "Custom receipt + thermal printers", "Pointman Nuvia N15 card printing", "Finance ledger/accounting/tax/payroll", "Staff portal + attendance", "ZKTeco SpeedFace V5L wizard/connection/step diagnostics/PUSH receiver", "Renovation module", "Central upload policies", "Backup/restore", "PWA/mobile" ], "checks": { "php_lint_all": true, "fresh_tables": true, "foreign_keys_valid": true, "foreign_key_order_valid": true, "insert_columns_valid": true, "update_columns_valid": true, "upgrade_vs_fresh_columns": true, "local_includes_valid": true, "local_links_valid": true, "post_forms_csrf": true, "upload_policy_no_hardcoded_limits": true, "pwa_assets_valid": true, "critical_files_preserved": true, "no_create_database": true, "no_use_database": true, "schema_release_425": true, "services_sort_index": true, "payment_verify_index": true, "default_deletion_persistent": true, "default_level_deletion_persistent": true, "history_safe_service_migration": true, "service_manual_seed": true, "level_manual_seed": true, "service_delete_guard": true, "level_delete_guard": true, "service_sort_pos": true, "service_sort_operational": true, "payment_approval_preserved": true, "central_upload_preserved": true, "member_card_custom_preserved": true, "zkteco_routes": true, "zkteco_step_preserved": true, "retail_operational_preserved": true, "finance_preserved": true, "backup_restore_preserved": true }, "notes": [ "Static and structural audit passes. Hosting-specific limits such as PHP extensions, MySQL version, filesystem permissions, upload_max_filesize, post_max_size, and network reachability remain environment-dependent.", "database.sql contains no CREATE DATABASE or USE statement." ] }