From c2ef7b022e5486908eb8ad3fb6f3a547b0e77709 Mon Sep 17 00:00:00 2001 From: Vladyslav_Prykhodko Date: Wed, 1 Jul 2026 19:35:02 +0300 Subject: [PATCH 1/2] fix(iot-hub): relocate device-library resources under /iot-hub/devices/ Move public/device-library/resources/ -> public/iot-hub/devices/resources/ so the existing device-library -> IoT Hub splat redirects resolve to real files. Both /docs/devices-library/resources/* and /device-library/resources/* already 301 into /iot-hub/devices/:splat; the assets now live at that target, fixing broken links (e.g. the lrs10701 air-quality dashboard JSON referenced from external sites we cannot edit). No project code references these paths. --- ...at1_check_and_control_device_data_dashboard.json | 0 .../check_and_control_device_data_dashboard.json | 0 .../lrs10701_air_quality_monitor_dashboard.json | 0 ...0_temperature_and_humidity_sensor_dashboard.json | 0 .../lw001-bg_pro_lorawan_tracker_dashboard.json | 0 .../microcontrollers/basic/dashboard.json | 0 .../microcontrollers/camera/dashboard.json | 0 .../microcontrollers/display/dashboard.json | 0 .../microcontrollers/rgb-led/dashboard.json | 0 .../dashboards/minicomputers/dashboard.json | 0 .../ready-to-go-devices/ACE-rule-chain.json | 0 .../ready-to-go-devices/ace-dashboard.json | 0 .../ready-to-go-devices/am308-device-dashboard.json | 0 .../teltonika-rtu955-dashboard.json | 0 .../teltonika-rut-955-rule-chain.json | 0 .../temco-t3e-6ct-dashboard.json | 0 .../temco-tstat10-dashboard.json | 0 .../vs-121-sensor-dashboard.json | 0 .../ws202_pir_and_light_sensor.json | 0 .../ready-to-go-devices/ws_101_smart_button.json | 0 .../dashboards/rn172plus/temp-and-rh-dashboard.json | 0 .../dashboards/sensy32/sensy32-demo-dashboard.json | 0 .../devices}/resources/exxn/config.json | 0 .../devices}/resources/fusiondaq/config.json | 0 .../manuals/rn172wcd-user-manual-v1.01.pdf | Bin .../devices}/resources/manuals/vibit-bp.pdf | Bin .../devices}/resources/manuals/vibit.pdf | Bin ...cd-vibration-sensor-t80-to-thingsboard-mqtt.json | 0 .../devices}/resources/sensy32/thingsboard.ino | 0 29 files changed, 0 insertions(+), 0 deletions(-) rename public/{device-library => iot-hub/devices}/resources/dashboards/lansitec-lorawan/cat1_check_and_control_device_data_dashboard.json (100%) rename public/{device-library => iot-hub/devices}/resources/dashboards/lansitec-lorawan/check_and_control_device_data_dashboard.json (100%) rename public/{device-library => iot-hub/devices}/resources/dashboards/lrs10701/lrs10701_air_quality_monitor_dashboard.json (100%) rename public/{device-library => iot-hub/devices}/resources/dashboards/lrs20100/lrs20100_temperature_and_humidity_sensor_dashboard.json (100%) rename public/{device-library => iot-hub/devices}/resources/dashboards/lw001-bg-pro/lw001-bg_pro_lorawan_tracker_dashboard.json (100%) rename public/{device-library => iot-hub/devices}/resources/dashboards/microcontrollers/basic/dashboard.json (100%) rename public/{device-library => iot-hub/devices}/resources/dashboards/microcontrollers/camera/dashboard.json (100%) rename public/{device-library => iot-hub/devices}/resources/dashboards/microcontrollers/display/dashboard.json (100%) rename public/{device-library => iot-hub/devices}/resources/dashboards/microcontrollers/rgb-led/dashboard.json (100%) rename public/{device-library => iot-hub/devices}/resources/dashboards/minicomputers/dashboard.json (100%) rename public/{device-library => iot-hub/devices}/resources/dashboards/ready-to-go-devices/ACE-rule-chain.json (100%) rename public/{device-library => iot-hub/devices}/resources/dashboards/ready-to-go-devices/ace-dashboard.json (100%) rename public/{device-library => iot-hub/devices}/resources/dashboards/ready-to-go-devices/am308-device-dashboard.json (100%) rename public/{device-library => iot-hub/devices}/resources/dashboards/ready-to-go-devices/teltonika-rtu955-dashboard.json (100%) rename public/{device-library => iot-hub/devices}/resources/dashboards/ready-to-go-devices/teltonika-rut-955-rule-chain.json (100%) rename public/{device-library => iot-hub/devices}/resources/dashboards/ready-to-go-devices/temco-t3e-6ct-dashboard.json (100%) rename public/{device-library => iot-hub/devices}/resources/dashboards/ready-to-go-devices/temco-tstat10-dashboard.json (100%) rename public/{device-library => iot-hub/devices}/resources/dashboards/ready-to-go-devices/vs-121-sensor-dashboard.json (100%) rename public/{device-library => iot-hub/devices}/resources/dashboards/ready-to-go-devices/ws202_pir_and_light_sensor.json (100%) rename public/{device-library => iot-hub/devices}/resources/dashboards/ready-to-go-devices/ws_101_smart_button.json (100%) rename public/{device-library => iot-hub/devices}/resources/dashboards/rn172plus/temp-and-rh-dashboard.json (100%) rename public/{device-library => iot-hub/devices}/resources/dashboards/sensy32/sensy32-demo-dashboard.json (100%) rename public/{device-library => iot-hub/devices}/resources/exxn/config.json (100%) rename public/{device-library => iot-hub/devices}/resources/fusiondaq/config.json (100%) rename public/{device-library => iot-hub/devices}/resources/manuals/rn172wcd-user-manual-v1.01.pdf (100%) rename public/{device-library => iot-hub/devices}/resources/manuals/vibit-bp.pdf (100%) rename public/{device-library => iot-hub/devices}/resources/manuals/vibit.pdf (100%) rename public/{device-library => iot-hub/devices}/resources/ncd-vibration-sensor-t80-to-thingsboard-mqtt.json (100%) rename public/{device-library => iot-hub/devices}/resources/sensy32/thingsboard.ino (100%) diff --git a/public/device-library/resources/dashboards/lansitec-lorawan/cat1_check_and_control_device_data_dashboard.json b/public/iot-hub/devices/resources/dashboards/lansitec-lorawan/cat1_check_and_control_device_data_dashboard.json similarity index 100% rename from public/device-library/resources/dashboards/lansitec-lorawan/cat1_check_and_control_device_data_dashboard.json rename to public/iot-hub/devices/resources/dashboards/lansitec-lorawan/cat1_check_and_control_device_data_dashboard.json diff --git a/public/device-library/resources/dashboards/lansitec-lorawan/check_and_control_device_data_dashboard.json b/public/iot-hub/devices/resources/dashboards/lansitec-lorawan/check_and_control_device_data_dashboard.json similarity index 100% rename from public/device-library/resources/dashboards/lansitec-lorawan/check_and_control_device_data_dashboard.json rename to public/iot-hub/devices/resources/dashboards/lansitec-lorawan/check_and_control_device_data_dashboard.json diff --git a/public/device-library/resources/dashboards/lrs10701/lrs10701_air_quality_monitor_dashboard.json b/public/iot-hub/devices/resources/dashboards/lrs10701/lrs10701_air_quality_monitor_dashboard.json similarity index 100% rename from public/device-library/resources/dashboards/lrs10701/lrs10701_air_quality_monitor_dashboard.json rename to public/iot-hub/devices/resources/dashboards/lrs10701/lrs10701_air_quality_monitor_dashboard.json diff --git a/public/device-library/resources/dashboards/lrs20100/lrs20100_temperature_and_humidity_sensor_dashboard.json b/public/iot-hub/devices/resources/dashboards/lrs20100/lrs20100_temperature_and_humidity_sensor_dashboard.json similarity index 100% rename from public/device-library/resources/dashboards/lrs20100/lrs20100_temperature_and_humidity_sensor_dashboard.json rename to public/iot-hub/devices/resources/dashboards/lrs20100/lrs20100_temperature_and_humidity_sensor_dashboard.json diff --git a/public/device-library/resources/dashboards/lw001-bg-pro/lw001-bg_pro_lorawan_tracker_dashboard.json b/public/iot-hub/devices/resources/dashboards/lw001-bg-pro/lw001-bg_pro_lorawan_tracker_dashboard.json similarity index 100% rename from public/device-library/resources/dashboards/lw001-bg-pro/lw001-bg_pro_lorawan_tracker_dashboard.json rename to public/iot-hub/devices/resources/dashboards/lw001-bg-pro/lw001-bg_pro_lorawan_tracker_dashboard.json diff --git a/public/device-library/resources/dashboards/microcontrollers/basic/dashboard.json b/public/iot-hub/devices/resources/dashboards/microcontrollers/basic/dashboard.json similarity index 100% rename from public/device-library/resources/dashboards/microcontrollers/basic/dashboard.json rename to public/iot-hub/devices/resources/dashboards/microcontrollers/basic/dashboard.json diff --git a/public/device-library/resources/dashboards/microcontrollers/camera/dashboard.json b/public/iot-hub/devices/resources/dashboards/microcontrollers/camera/dashboard.json similarity index 100% rename from public/device-library/resources/dashboards/microcontrollers/camera/dashboard.json rename to public/iot-hub/devices/resources/dashboards/microcontrollers/camera/dashboard.json diff --git a/public/device-library/resources/dashboards/microcontrollers/display/dashboard.json b/public/iot-hub/devices/resources/dashboards/microcontrollers/display/dashboard.json similarity index 100% rename from public/device-library/resources/dashboards/microcontrollers/display/dashboard.json rename to public/iot-hub/devices/resources/dashboards/microcontrollers/display/dashboard.json diff --git a/public/device-library/resources/dashboards/microcontrollers/rgb-led/dashboard.json b/public/iot-hub/devices/resources/dashboards/microcontrollers/rgb-led/dashboard.json similarity index 100% rename from public/device-library/resources/dashboards/microcontrollers/rgb-led/dashboard.json rename to public/iot-hub/devices/resources/dashboards/microcontrollers/rgb-led/dashboard.json diff --git a/public/device-library/resources/dashboards/minicomputers/dashboard.json b/public/iot-hub/devices/resources/dashboards/minicomputers/dashboard.json similarity index 100% rename from public/device-library/resources/dashboards/minicomputers/dashboard.json rename to public/iot-hub/devices/resources/dashboards/minicomputers/dashboard.json diff --git a/public/device-library/resources/dashboards/ready-to-go-devices/ACE-rule-chain.json b/public/iot-hub/devices/resources/dashboards/ready-to-go-devices/ACE-rule-chain.json similarity index 100% rename from public/device-library/resources/dashboards/ready-to-go-devices/ACE-rule-chain.json rename to public/iot-hub/devices/resources/dashboards/ready-to-go-devices/ACE-rule-chain.json diff --git a/public/device-library/resources/dashboards/ready-to-go-devices/ace-dashboard.json b/public/iot-hub/devices/resources/dashboards/ready-to-go-devices/ace-dashboard.json similarity index 100% rename from public/device-library/resources/dashboards/ready-to-go-devices/ace-dashboard.json rename to public/iot-hub/devices/resources/dashboards/ready-to-go-devices/ace-dashboard.json diff --git a/public/device-library/resources/dashboards/ready-to-go-devices/am308-device-dashboard.json b/public/iot-hub/devices/resources/dashboards/ready-to-go-devices/am308-device-dashboard.json similarity index 100% rename from public/device-library/resources/dashboards/ready-to-go-devices/am308-device-dashboard.json rename to public/iot-hub/devices/resources/dashboards/ready-to-go-devices/am308-device-dashboard.json diff --git a/public/device-library/resources/dashboards/ready-to-go-devices/teltonika-rtu955-dashboard.json b/public/iot-hub/devices/resources/dashboards/ready-to-go-devices/teltonika-rtu955-dashboard.json similarity index 100% rename from public/device-library/resources/dashboards/ready-to-go-devices/teltonika-rtu955-dashboard.json rename to public/iot-hub/devices/resources/dashboards/ready-to-go-devices/teltonika-rtu955-dashboard.json diff --git a/public/device-library/resources/dashboards/ready-to-go-devices/teltonika-rut-955-rule-chain.json b/public/iot-hub/devices/resources/dashboards/ready-to-go-devices/teltonika-rut-955-rule-chain.json similarity index 100% rename from public/device-library/resources/dashboards/ready-to-go-devices/teltonika-rut-955-rule-chain.json rename to public/iot-hub/devices/resources/dashboards/ready-to-go-devices/teltonika-rut-955-rule-chain.json diff --git a/public/device-library/resources/dashboards/ready-to-go-devices/temco-t3e-6ct-dashboard.json b/public/iot-hub/devices/resources/dashboards/ready-to-go-devices/temco-t3e-6ct-dashboard.json similarity index 100% rename from public/device-library/resources/dashboards/ready-to-go-devices/temco-t3e-6ct-dashboard.json rename to public/iot-hub/devices/resources/dashboards/ready-to-go-devices/temco-t3e-6ct-dashboard.json diff --git a/public/device-library/resources/dashboards/ready-to-go-devices/temco-tstat10-dashboard.json b/public/iot-hub/devices/resources/dashboards/ready-to-go-devices/temco-tstat10-dashboard.json similarity index 100% rename from public/device-library/resources/dashboards/ready-to-go-devices/temco-tstat10-dashboard.json rename to public/iot-hub/devices/resources/dashboards/ready-to-go-devices/temco-tstat10-dashboard.json diff --git a/public/device-library/resources/dashboards/ready-to-go-devices/vs-121-sensor-dashboard.json b/public/iot-hub/devices/resources/dashboards/ready-to-go-devices/vs-121-sensor-dashboard.json similarity index 100% rename from public/device-library/resources/dashboards/ready-to-go-devices/vs-121-sensor-dashboard.json rename to public/iot-hub/devices/resources/dashboards/ready-to-go-devices/vs-121-sensor-dashboard.json diff --git a/public/device-library/resources/dashboards/ready-to-go-devices/ws202_pir_and_light_sensor.json b/public/iot-hub/devices/resources/dashboards/ready-to-go-devices/ws202_pir_and_light_sensor.json similarity index 100% rename from public/device-library/resources/dashboards/ready-to-go-devices/ws202_pir_and_light_sensor.json rename to public/iot-hub/devices/resources/dashboards/ready-to-go-devices/ws202_pir_and_light_sensor.json diff --git a/public/device-library/resources/dashboards/ready-to-go-devices/ws_101_smart_button.json b/public/iot-hub/devices/resources/dashboards/ready-to-go-devices/ws_101_smart_button.json similarity index 100% rename from public/device-library/resources/dashboards/ready-to-go-devices/ws_101_smart_button.json rename to public/iot-hub/devices/resources/dashboards/ready-to-go-devices/ws_101_smart_button.json diff --git a/public/device-library/resources/dashboards/rn172plus/temp-and-rh-dashboard.json b/public/iot-hub/devices/resources/dashboards/rn172plus/temp-and-rh-dashboard.json similarity index 100% rename from public/device-library/resources/dashboards/rn172plus/temp-and-rh-dashboard.json rename to public/iot-hub/devices/resources/dashboards/rn172plus/temp-and-rh-dashboard.json diff --git a/public/device-library/resources/dashboards/sensy32/sensy32-demo-dashboard.json b/public/iot-hub/devices/resources/dashboards/sensy32/sensy32-demo-dashboard.json similarity index 100% rename from public/device-library/resources/dashboards/sensy32/sensy32-demo-dashboard.json rename to public/iot-hub/devices/resources/dashboards/sensy32/sensy32-demo-dashboard.json diff --git a/public/device-library/resources/exxn/config.json b/public/iot-hub/devices/resources/exxn/config.json similarity index 100% rename from public/device-library/resources/exxn/config.json rename to public/iot-hub/devices/resources/exxn/config.json diff --git a/public/device-library/resources/fusiondaq/config.json b/public/iot-hub/devices/resources/fusiondaq/config.json similarity index 100% rename from public/device-library/resources/fusiondaq/config.json rename to public/iot-hub/devices/resources/fusiondaq/config.json diff --git a/public/device-library/resources/manuals/rn172wcd-user-manual-v1.01.pdf b/public/iot-hub/devices/resources/manuals/rn172wcd-user-manual-v1.01.pdf similarity index 100% rename from public/device-library/resources/manuals/rn172wcd-user-manual-v1.01.pdf rename to public/iot-hub/devices/resources/manuals/rn172wcd-user-manual-v1.01.pdf diff --git a/public/device-library/resources/manuals/vibit-bp.pdf b/public/iot-hub/devices/resources/manuals/vibit-bp.pdf similarity index 100% rename from public/device-library/resources/manuals/vibit-bp.pdf rename to public/iot-hub/devices/resources/manuals/vibit-bp.pdf diff --git a/public/device-library/resources/manuals/vibit.pdf b/public/iot-hub/devices/resources/manuals/vibit.pdf similarity index 100% rename from public/device-library/resources/manuals/vibit.pdf rename to public/iot-hub/devices/resources/manuals/vibit.pdf diff --git a/public/device-library/resources/ncd-vibration-sensor-t80-to-thingsboard-mqtt.json b/public/iot-hub/devices/resources/ncd-vibration-sensor-t80-to-thingsboard-mqtt.json similarity index 100% rename from public/device-library/resources/ncd-vibration-sensor-t80-to-thingsboard-mqtt.json rename to public/iot-hub/devices/resources/ncd-vibration-sensor-t80-to-thingsboard-mqtt.json diff --git a/public/device-library/resources/sensy32/thingsboard.ino b/public/iot-hub/devices/resources/sensy32/thingsboard.ino similarity index 100% rename from public/device-library/resources/sensy32/thingsboard.ino rename to public/iot-hub/devices/resources/sensy32/thingsboard.ino From f5dd02046d7e69b67f44e13291ddb117d8c92d61 Mon Sep 17 00:00:00 2001 From: Vladyslav_Prykhodko Date: Wed, 1 Jul 2026 20:16:00 +0300 Subject: [PATCH 2/2] fix(seo): alt text on remaining IoT Hub images; keep search page noindexed Follow-up to the Ahrefs audit (#531): - Give the last four empty-alt IoT Hub images meaningful alt text: the no-results and fetch-error illustrations (aria-hidden kept so screen readers aren't given a redundant announcement), the detail creator avatar, and the listing-link thumbnail. - Revert /iot-hub/search/ to its original title and restore noIndex. Removing it wholesale also un-noindexed the paginated variants (/iot-hub/search/2/ ...), which self-canonicalize and would be indexed as near-duplicates; keep the page out of the index for now. --- src/components/IotHub/DetailMeta.astro | 2 +- src/components/IotHub/IotHubFetchError.astro | 2 +- src/components/IotHub/IotHubListingLink.astro | 2 +- src/components/IotHub/IotHubNoResults.astro | 2 +- src/pages/iot-hub/search/[...page].astro | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/IotHub/DetailMeta.astro b/src/components/IotHub/DetailMeta.astro index d11bc2d7e2..f6e2823b16 100644 --- a/src/components/IotHub/DetailMeta.astro +++ b/src/components/IotHub/DetailMeta.astro @@ -119,7 +119,7 @@ const hasAnyColumn = creator || secondColumn || thirdColumn || useCasesColumn; +