{{define "base"}} {{if .RetryAfter}}{{end}} {{.PageTitle}}
{{/* Device identity (hostname + location/contact popover), loaded async so it stays out of every page's data path. Replaces itself on load. */}}
{{if .Capabilities.Has "docs"}} {{/* On-device User's Guide (static mkdocs site at /guide/). */}} {{template "icon-book"}} {{end}} {{if .Capabilities.Has "netbrowse"}} {{/* mDNS network browser — fixed network.local vhost, so a static href (no JS, no CSP concern). */}} {{template "icon-radar"}} {{end}} {{if .Capabilities.Has "console"}} {{/* Web console (ttyd) on :7681. href is set by JS from the current hostname since the port differs and CSP forbids inline script. */}} {{template "icon-terminal"}} {{end}}
{{if or (.Capabilities.Has "docs") (.Capabilities.Has "netbrowse") (.Capabilities.Has "console")}} {{if .Capabilities.Has "docs"}} {{template "icon-book"}} User Guide {{end}} {{if .Capabilities.Has "netbrowse"}} {{template "icon-radar"}} Network Browser {{end}} {{if .Capabilities.Has "console"}} {{/* href filled in by JS from the current hostname (ttyd on :7681). */}} {{template "icon-terminal"}} Console {{end}} {{end}}
{{template "sidebar" .}}
{{if .CfgUnsaved}}
{{template "icon-triangle-alert"}} Running config has unsaved changes — will be lost on reboot.
{{end}}
{{block "content" .}}{{end}}

Configuration diff startup → running

Loading…
{{end}}