Prevents UnrecognizedPropertyException during rolling upgrades when a
newer node writes a cached entity with an added field and an older node
reads it back. The Redis-backed TbJsonRedisSerializer now uses
JacksonUtil.IGNORE_UNKNOWN_PROPERTIES_JSON_MAPPER instead of the strict
OBJECT_MAPPER used by JacksonUtil.fromBytes.
Add verified field to CreatorView and creatorVerified to MpItemVersionView.
Show verified badge (32px teal icon + tooltip) on creator profile page.
Show 16px teal verified icon on item cards when creator is verified.
Make dlg-meta-bar always rendered and sticky in item detail dialog.
Relax version check to allow maintenance digit increases within the same
LTS family (e.g. 4.3.0 -> 4.3.1), not just patch digit increases.
Add LTS SQL schema patch execution from upgrade/lts/schema_update.sql,
running before views and widget updates so schema changes are in place
for dependent objects.
Add inline search inputs for filter panels with >= 10 items, "Most popular"
grouping for use cases with >= 11 items, scrollable filter items containers
with hover-visible scrollbar, and totalItems filtering. Convert *ngFor/*ngIf
to new Angular @for/@if flow syntax in the filter panel.
Replace hardcoded category/use-case/subtype enums and translation maps
with dynamic FilterParamInfo data from /api/item-listing/filterInfo/{itemType}.
Add inline search input for filter panels with >= 10 items, "Most popular"
grouping for use cases and vendors with >= 11 items, scrollable filter
items container with hover-visible scrollbar, and multi-vendor support
in MpItemVersionQuery. Remove redundant enums, maps, and locale translations.
Update dashboard widget select filter panel to use dynamic data.
When a device is already installed, show an "Install one more" button
next to the Remove button. Clicking it opens the install wizard to
provision another instance of the same device package.
Always fetch ZIP and open the device install review dialog (tabs with
instructions, forms, provisioning) — never fall back to the generic
detail dialog. The review dialog handles missing installState gracefully
(shows empty forms but instructions still render from ZIP).
Show the guide icon on device cards for ALL installed items, not just
those with installState. If installState is available, opens the
read-only review dialog. If not (items installed before the feature),
falls back to the item detail dialog — same pattern as the installed
items page info button.
When the browse component is used on /iot-hub/devices (via items page
component), the parent sets config in its own ngOnInit, so the child's
@Input setter fires AFTER the child's ngOnInit. The DEVICE-specific
loading (vendors + installed items) in ngOnInit never executed because
activeType was still the default WIDGET at that point.
Fix: trigger loading directly in the activeType setter when the value
changes to DEVICE.
The device card's "Installed" chip, guide button, and delete/update
buttons need the installed item data. Added installedDevices loading
when DEVICE tab is active, included in getInstalledItem() lookup
and reloadInstalledItems() refresh.
Without this, getInstalledItem() returned undefined for DEVICE type,
so cards showed "Install" instead of "Installed" and the guide button
was never visible.
Show a document icon button (📄) next to the "Installed" chip on
device cards that have stored install state. Clicking opens the
read-only review dialog with tabs (same as from Installed Items).
Visible in both "same version" and "update available" card states.
Tooltip: "View setup guide". Only shown for DEVICE items with
installState in their descriptor.
Hardware Types: update to 15 values (was 19):
Actuator, AI Accelerator, Analyzer, Camera, Controller, Data Logger,
Development Board, Display, Gateway, Meter, PLC, Relay, Sensor,
Single Board Computer, Tracker
Use Cases: flatten to 22 values (was 27 grouped into 8 industries):
Air Quality Monitoring, Asset Tracking, Cold Chain, Drones, ...
No more group headers — simple flat checkbox list.
Fetch distinct vendor list from IoT Hub API (GET /versions/published/vendors)
when DEVICE tab is activated. Render as checkboxes (same pattern as
Hardware Type filter). Vendor is the first filter section for devices.
Replaces the debounced text input approach with dynamic checkbox list.
Add Vendor as the first filter for DEVICE type in browse page:
- Text input with debounced search (400ms)
- Clear button when filter is active
- Passes vendor param to IoT Hub API query
- Included in filter count and clearAllFilters
- Positioned above Hardware Type and Connectivity filters
- Use Cases: add 27 grouped values (8 industry groups) with sub-headers
in the filter panel. Applied to all item types.
- Device filters: replace Category with Connectivity (55 values, 3 groups)
and Hardware Type (19 values) filters. Category hidden for DEVICE type.
- Query model: add hardwareTypes, connectivity, vendor params to
MpItemVersionQuery (IoT Hub API already supports these).
- Detail dialog: DEVICE type shows Hardware Type + Connectivity + Use Cases
instead of Category + Use Cases.
- Filter chips updated for new filter types.