What's new
- Active / Inactive route filter - status filter group (All / Active / Inactive) added to the Routes tab
- Traefik Manager dashboard icon - self-route cards now show the TM icon automatically
- Route map - switched to dagre layout engine - the route map now uses the dagre graph layout library (CDN) to automatically position nodes. Columns and bezier curves are computed from the graph structure rather than a fixed CSS flex layout, enabling proper multi-column routing through entry points, middlewares, and services with accurate edge connections. (#27)
- Static Config - Provider template editor - dropdown + Monaco YAML editor replaces the old add provider form; all 12 provider types supported with pre-filled templates
- Keyboard shortcuts -
Shift+?opens the shortcuts panel;Shift+Nnew route,Shift+Mnew middleware,Shift+R/W/S/Lnavigate tabs,Shift+Xraw YAML,Shift+Psettings. Button toggleable via Settings → Interface → Navbar
Bug fixes
- Target/IP shows N/A for file-provider routes - fixed for
@providersuffixes, cross-file service resolution, and non-file provider routes via the Traefik API (#28) - Certificates tab expiry shows "Invalid" on mobile
- Enabling a tab requires page refresh - toggling a tab on now reflects immediately without a reload
- Remember me not persisting -
session.permanentwas being set via the wrong key; sessions now correctly survive browser restarts when Remember me is checked
Security
Full audit completed - fixes across XSS (single quote injection, unescaped API data, toast messages), CSRF bypass with invalid API keys, OIDC nonce verification, SSRF logging, Remember Me inactivity timeout, and API key hashing switched from bcrypt to SHA-256.
Performance
- Route and middleware filter inputs now iterate a cached element array instead of a full DOM traversal on every keystroke
- Services render loop
indexOfO(n²) eliminated - index tracked during filter pass - Monaco theme sync fixed for the provider YAML editor