Update-availability fixes:
- The backend read its version from npm_package_version, which is unset
when the container runs `node dist/index.js` directly, so current was
always "0.0.0" and every release looked newer — the "update available"
banner never cleared. Read the bundled package.json instead
(routes/system.ts), falling back to npm_package_version.
- Move the update notification out of the top-of-app banner into the
Operations dashboard (a dedicated notice under the network-status hero),
shown only when genuinely behind and cleared once up to date.
Security banner:
- Replace the now-dead jwt_secret_default / encryption_key_default checks
with the current secrets_not_persisted warning (auto-generated secrets
that couldn't be persisted), matching the self-healing secrets model.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>