- CyberCP/urls.py: when emailMarketing app is missing/broken, register placeholder path with name='emailMarketing' so {% url 'emailMarketing' %} never raises Reverse not found.
- public/static/baseTemplate/custom-js/system-status.js: replace old copy with full system-status.js that registers dashboardStatsController and systemStatusInfo (fixes Angular [:ctrlreg] and raw {{$ cpuUsage $}} on overview).
- Search input: add firewall-search-input class, blue focus instead of red (avoids read-only/error look)
- Search button: use btn-search with round futuristic style (match Ban IP/Overview)
- Actions column: center Modify/Unban/Delete in Firewall Rules and Banned IPs tables
- system-status.js: increment() uses document.querySelectorAll (no jQuery), fixes $ is not defined
- upgrade_modules/09_sync.sh: sync firewall static to public/static during upgrade
- to-do/FIREWALL-LOAD-CHANGES.md: doc on file locations and deploy steps
- plogical/acl.py: use config.get() for DNS permissions so old ACLs without
deleteZone key do not cause KeyError
- baseTemplate: add deleteZone/addDeleteRecords CSS classes to DNS menu links
for correct permission-based hiding
- system-status.js: fix swapped selectors (deleteZone hides .deleteZone,
addDeleteRecords hides .addDeleteRecords instead of .deleteDatabase)
- Fix ReferenceError: use $timeout instead of timeout, store timer for cancel
- Add v2.5.5-dev to Select Branch dropdown (remove dev filter)
- Limit branch list to latest 10 by version
- Fix Upgrade Progress Log text visibility (light text on dark bg)