Summary
Release 1.3.3. The Logs viewer still pointed at the pre-2.7.3 /log/log.txt, which no longer exists — so the plain-text log was never listed and the tab showed only the Monolog files.
What changed
The log path. XOOPS 2.7.3 replaced /log/log.txt with a core file logger writing to logs/debug.log inside the configured XOOPS data directory. The viewer now reads that.
The filename is fixed rather than read from debug.php — convention over configuration: the core log has one standard location, so the viewer needs no setup to find it.
The source label. The plain-text slot was keyed legacy, accurate while it pointed at a retired file and misleading now that it holds the current log. Renamed to core. The key and filename are LogCatalog constants, so the catalog, resolver and viewer cannot drift apart.
Note this retires ?file=legacy; the listing links to ?file=core.
Timestamps. Analytics tables and the log listing called date('Y-m-d H:i:s', ...) directly, so they showed server time regardless of the site's timezone. They now go through formatTimestamp(). The 'mysql' selector is kept deliberately — it resolves to Y-m-d H:i:s, which is what you want in a sortable data table — so this is a timezone fix, not a formatting one.
Testing
composer test passes locally: 6 tests, 59 assertions.
Verified against a real 2.8 MB debug.log alongside two Monolog files:
core core 2,757.4 KB
monolog xoops-2026-07-27.log 74,810.3 KB
monolog xoops-2026-07-26.log 437,631.9 KB
read("core") -> 262,144 bytes (tail-capped as designed)
read("legacy") -> NULL (retired key no longer resolves)
absent file -> not listed, read returns NULL
Confirmed in the admin UI: the Source column reads core and the entry renders as plain text with the 2.7.3 labelled-rule format intact.
What's Changed
Full Changelog: v1.3.2...v1.3.3