The previous commit (4c58f85f) put class="log-table" on lh.php and
localtx.php too, which forced *every* header left - but only
Time/Mode/Callsign/Target are actually align="left" in those two
files. Source/Duration/Loss/BER have no align attribute at all (plain
<td>), so they were already correctly centered - the blanket fix just
moved the misalignment from the first 4 columns to the last 4.
Replace with a new `.al` class applied only to the specific <th>
elements whose column is genuinely align="left", leaving
Source/Duration/Loss/BER headers on the sitewide centered default to
match their centered data. last_herd.php/local_tx.php are untouched -
every column in those two really is align="left", so table.log-table
(all headers) remains correct there.
mmdvmhost/localtx.php and dstarrepeater/last_herd.php + local_tx.php
share the exact same pattern as mmdvmhost/lh.php (fixed in e8a569a7 /
2bc8f7b0): every data row is align="left" but headers inherited the
sitewide centered table text-align, so captions visually drift from
their column's actual content.
Deliberately did NOT touch dstarrepeater/active_starnet_groups.php's
two tables - checked their td alignment first and both are mostly
align="center" (only one column/cell is left-aligned in each), so
their headers already match their data; adding .log-table there would
have broken the columns that were already correct.
Last Heard (and other log-style tables sharing this pattern) render
every <td> with align="left", but headers inherit the sitewide
table { text-align: center; } with nothing overriding it - so the
caption drifts toward the middle of wide columns (most visible on
Target) while the actual data underneath hugs the left edge. Looks
like a column-boundary misalignment at a glance, but it's a text-align
mismatch; measured actual cell boundaries and they line up exactly.
Scoped via a new .log-table class rather than changing table th
sitewide, since ~90% of the dashboard's other tables intentionally
keep centered cells (only 6-7 files use align="left" data cells).
table th switched to background: transparent + text-transform: uppercase
in a past redesign, but a.tooltip (the link wrapping every <th>'s text
across the whole dashboard) still hardcoded color: #FFFFFF from the old
solid-indigo-background header design. With no colored block behind it
anymore, white text sits directly on --page-bg/--content-bg (near-white),
making every table header effectively unreadable.
Switch a.tooltip to color: var(--content-text) (dark, same variable the
th itself already uses) so header text is visible again.
- Remove admin/config_backup.php (backup/restore page) and all nav
links to it across the admin pages and the expert-mode shared header.
- Remove factory reset: the full-device version in configure.php
(JS confirm, POST handler that reset three git repos + wiped /etc
config, and the hidden form) and the CSS-only version in
expert/edit_dashboard.php.
- Remove the PiStar-Remote and BM API full editors
(admin/expert/fulledit_pistar-remote.php, fulledit_bmapikey.php)
and their links from the expert-mode menu.
- Add a "custom" option to the APRS server dropdown in configure.php
so operators can type their own server + port instead of picking
from APRSHosts.txt; wires the port through to ircDDBGateway,
YSFGateway/YSF2DMR/YSF2NXDN/YSF2P25, and APRSGateway (previously
only the hostname was ever configurable, port was hardcoded 14580).
- Extend the POCSAG frequency band validator (functions.js) to also
treat 150-160MHz as a valid/green range.
mmdvmhost/lh.php (and admin/mmdvmhost/lh.php) require_once this file
and call setEmbeddableSecurityHeaders(), but the file was never
committed to this repo (confirmed absent across main/dev/development
history), causing a fatal "failed opening required" 500 on the Last
Heard panel.
Restores both setSecurityHeaders() (full page: adds X-Frame-Options +
CSP frame-ancestors) and setEmbeddableSecurityHeaders() (AJAX partial
variant, omits the framing directives since it's loaded into the
parent via $.load(), not an iframe), matching the behavior described
in the comments already present in lh.php and functions.php.