Added
- Settings UI — manage runtime config without touching docker-compose. Most of what used to be env-only is now editable from a new admin Settings → System configuration card: CVE feed enable/key/interval, activity-log retention, monitor poll interval and concurrency, traffic and syslog retention, backup and upgrade scheduler intervals, JWT access/refresh expiry, WebAuthn RP ID / name / origins, log level, and the default SSH / REST API port for new devices. 21 knobs in 11 groups. Environment variables still win — anything set in
.env/ docker-compose stays read-only in the UI and shows a "from env" badge, so existing deployments don't change behaviour. Secrets (NVD API key) are encrypted at rest. Hot-reload — most changes apply on the next service tick without a restart. - Settings page redesign — sticky left subnav. The Settings page now uses a 200px-wide column on the left listing every section (Two-factor auth, Passkeys, OpenCelliD, plus every System config group); clicking jumps, scrolling highlights the active section. Each config group is its own card with clear spacing — no more wall of fields.
- Optional mirror of latest
.rscto/data/exports(closes #28). New toggle in Settings → External export. When enabled, every successful backup also writes the RouterOS script export to/data/exports/<site>/<device>.rsc— one file per device, overwritten on each new backup. The DB stays lean (keep the last N via the backup scheduler), the volume always has the current text config of every device — perfect for git-versioning, rclone'ing to a NAS, or disaster-recovery on a separate host disk. Mikr never deletes files here; cleanup is yours (git rm / shell). Mount/data/exportsto your own host volume in docker-compose.