Subj : webv4/sidebar/003-systemStats.xjs To : Git commit to main/sbbs/master From : Rob Swindell (on Debian Linux) Date : Mon Aug 17 2026 02:07:18 https://gitlab.synchro.net/main/sbbs/-/commit/101d30166940f08b40929f64 Modified Files: webv4/sidebar/003-systemStats.xjs Log Message: webv4: read each system.stats property once per page render system.stats.total_users, .total_messages and .total_files are computed from disk on every property read: they enumerate the user base, every message base, and every file base respectively. Only the stats backed by the stats file are cached (286b4c4cd0, nurse-3-film, 2026-01-04) - these three sit outside that cache, since nothing persists or increments them. The System Info sidebar read each of them twice. hide_empty_stats defaults to true, so a guard of the form !settings.hide_empty_stats || system.stats.total_files cannot short-circuit: the guard evaluates the property to decide whether the row is worth showing, and then the row body evaluates it again to print it. Snapshot the properties into a local object and render from that. As a side effect the table becomes internally consistent, where previously each value could be read at a different moment. On a system with 144 sub-boards and 1,404 file directories, dropping the duplicate reads takes the front page from 18s to 9s when the data directory is reached over SMB. Co-Authored-By: Claude Opus 5 (1M context) --- SBBSecho 3.37-Linux * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705) .