Why
An instance admin had two separate admin surfaces and no way to read the audit log in the browser. This puts instance state, the account roster, and the record of privileged actions on one page, and keeps the old URLs working.
What changed
/adminis the instance-admin surface, gated before any tab is read. Its tabs are Overview, Storage, Runners, Configuration, Accounts, and Audit log.- The status tabs and the accounts roster are sections of that page now, not copies: the handlers fill one view, and the templates keep their existing markup.
/status,/runners, and/usersredirect to the tab they named./users/<name>still serves the account detail page.- The Audit log tab pages newest first.
internal/auditgainedParseandTail, which read the file backwards in chunks and ask for one extra record to know whether an older page exists. A missing file is an empty log; a malformed line is skipped; a symlink or non-regular file is refused. - The admin surface is excluded from page-view counts, including the new tab, so the metric still measures reading rather than administration.
- The audit tab is sent with
Cache-Control: no-store, and detail text is escaped by the template. - Docs and tests updated.
Checks
./vole workflow run verify passes: format, vet, build, licenses, govulncheck,
packages, markdown links, and the race test suite.
Closes #198.