Switch every button inside .tb-details-buttons across all EntityComponent
templates (17 files, 102 buttons) from mat-raised-button to mat-stroked-button,
matching the device.component.html reference. Update the shared
.tb-details-buttons rule in styles.scss so outlined buttons inherit their
border color from the surrounding color context. copy-device-credentials
follows the same treatment and switches its host to display: contents so it
no longer takes layout space.
Drop hardcoded card-grid sizing and inline icon styles in the navigation-card / navigation-cards / home-links templates and stylesheets; tighten menu-models default seed map and menu-service helper accordingly.
The device-install wizard substituted ${...} placeholders via a plain
string replace, so a quoted boolean macro like "cleanSession":
"${mqttCleanSession}" parsed as the string "false" (truthy) instead of
the JSON boolean false. Unchecking a boolean field (e.g. clean session)
therefore had no effect and read as true in the resulting integration.
Add a type-aware resolveTemplateJson() that, using the form-field type
recorded in form.json, emits BOOLEAN/INTEGER placeholders occupying a
whole quoted token as raw JSON values (unquoted) while leaving string
fields and embedded placeholders quoted. Route all template-parse call
sites through it. Fixes cleanSession, ssl, port and connectTimeoutSec
across all existing device packages without any template changes.
Add a MenuId.platform pointing at the existing /settings path with the platform icon, retain MenuId.settings for the smaller "Settings" group, and re-point the SYS_ADMIN sidebar entry + admin-routing breadcrumb at the new platform id so each section can have its own icon and translation.
Reshape MenuId / MenuSection metadata in menu.models.ts so menu-toggle can read the new structure; align the admin/JS library and resources routing/table configs with that shape; tighten js-library-table-header and js-resource templates plus the image-gallery action header; add the matching English locale entries.