Skip to content

Commit 7ed5a30

Browse files
ViacheslavKlimovclaude
authored andcommitted
Improve upgrade instructions: vulnerability warnings, Angular 20 notice, clearer versioning
- Replace vulnerable flag with known-vulnerabilities for 4.3.0.1 and 4.2.1.2 so they appear in upgrade instructions (with warning) but not in the table - Add warn banners for known-vulnerabilities and Angular 18→20 migration - Show "latest X.Y.x (version)" title only for the newest patch per family; older patches use plain "to version" title - Display "upgradable-from+" in the table for patch versions - Use "version X.Y.Z+" note for latest patches to clarify all prior versions apply Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 9df60fd commit 7ed5a30

9 files changed

Lines changed: 64 additions & 24 deletions

_data/upgrade-instructions-data.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
patch: "true"
66
x: "true"
77
4.3.0.1:
8-
vulnerable: "true"
8+
known-vulnerabilities: "true"
99
upgradable-from: "4.2.1.x"
1010
release-date: Feb 3 2026
1111
release-date-edge: Feb 4, 2026
@@ -26,7 +26,7 @@
2626
patch: "true"
2727
x: "true"
2828
4.2.1.2:
29-
vulnerable: "true"
29+
known-vulnerabilities: "true"
3030
upgradable-from: "4.2.0"
3131
release-date: Feb 3 2026
3232
release-date-edge: Feb 4, 2026

_includes/centos-upgrade-instructions.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@
4141
{%- assign prev_major = prev_parts[0] -%}
4242
{%- assign prev_minor = prev_parts[1] -%}
4343

44-
{% if patch_status == "true" %}
45-
### Upgrading {{ platform }} to latest {{ base_version }} ({{ current_version }})
44+
{% if include.is_latest_patch == "true" %}
45+
### Upgrading {{ platform }} to latest {{ curr_major }}.{{ curr_minor }}.x ({{ current_version }})
4646
{% else %}
4747
### Upgrading {{ platform }} to {{ current_version }}
4848
{% endif %}
@@ -71,7 +71,7 @@
7171
{% capture difference %}
7272
**NOTE:**
7373
{% if curr_major > "4" or (curr_major == "4" and curr_minor >= "2") %}
74-
These upgrade steps are applicable for ThingsBoard version {{ prev_version }}{% if patch_status == "true" %} or any {{ base_version }} patch{% endif %}.
74+
{% if include.is_latest_patch == "true" %}{% if prev_version contains ".x" %}{% assign prev_version_plus = prev_version | replace: ".x", "+" %}{% else %}{% assign prev_version_plus = prev_version | append: "+" %}{% endif %}These upgrade steps are applicable for ThingsBoard version {{ prev_version_plus }}.{% else %}These upgrade steps are applicable for ThingsBoard version {{ prev_version }}{% if patch_status == "true" %} or any {{ base_version }} patch{% endif %}.{% endif %}
7575
In order to upgrade to {{ current_version_with_platform | upcase }} you need to [**upgrade to {{ prev_version }} first**]({{ prev_version_href }}).
7676
{% else %}
7777
These upgrade steps are applicable for ThingsBoard version {{ prev_version_label }}{% if applicable_versions %}{% assign versions = applicable_versions | split: "," %}{% for v in versions %} and ThingsBoard version {{ v | strip }}{% endfor %}{% endif %}.
@@ -91,6 +91,8 @@ In order to upgrade to {{ current_version_with_platform | upcase }} you need to
9191
{% include templates/info-banner.md content=difference %}
9292
{% endif %}
9393

94+
{% include templates/install/upgrade-version-warning.md version=include.raw_version known_vulnerabilities=include.known_vulnerabilities %}
95+
9496
{%- if curr_major_n > 4 -%}
9597
{%- if docsPrefix == "pe/" -%}
9698
{% include templates/install/pe-tb-products-upgrade-compatibility.md %}

_includes/docker-compose-upgrade-instructions.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@
3838
{%- assign prev_major = prev_parts[0] -%}
3939
{%- assign prev_minor = prev_parts[1] -%}
4040

41-
{% if patch_status == "true" %}
42-
### Upgrading {{ platform }} to latest {{ base_version }} ({{ current_version }})
41+
{% if include.is_latest_patch == "true" %}
42+
### Upgrading {{ platform }} to latest {{ curr_major }}.{{ curr_minor }}.x ({{ current_version }})
4343
{% else %}
4444
### Upgrading {{ platform }} to {{ current_version }}
4545
{% endif %}
@@ -68,7 +68,7 @@
6868
{% capture difference %}
6969
**NOTE:**
7070
{% if curr_major > "4" or (curr_major == "4" and curr_minor >= "2") %}
71-
These upgrade steps are applicable for ThingsBoard version {{ prev_version }}{% if patch_status == "true" %} or any {{ base_version }} patch{% endif %}.
71+
{% if include.is_latest_patch == "true" %}{% if prev_version contains ".x" %}{% assign prev_version_plus = prev_version | replace: ".x", "+" %}{% else %}{% assign prev_version_plus = prev_version | append: "+" %}{% endif %}These upgrade steps are applicable for ThingsBoard version {{ prev_version_plus }}.{% else %}These upgrade steps are applicable for ThingsBoard version {{ prev_version }}{% if patch_status == "true" %} or any {{ base_version }} patch{% endif %}.{% endif %}
7272
In order to upgrade to {{ current_version_with_platform | upcase }} you need to [**upgrade to {{ prev_version }} first**]({{ prev_version_href }}).
7373
{% else %}
7474
These upgrade steps are applicable for ThingsBoard version {{ prev_version_label }}{% if applicable_versions %}{% assign versions = applicable_versions | split: "," %}{% for v in versions %} and ThingsBoard version {{ v | strip }}{% endfor %}{% endif %}.
@@ -84,6 +84,8 @@ In order to upgrade to {{ current_version_with_platform | upcase }} you need to
8484
{% include templates/info-banner.md content=difference %}
8585
{% endif %}
8686

87+
{% include templates/install/upgrade-version-warning.md version=include.raw_version known_vulnerabilities=include.known_vulnerabilities %}
88+
8789
{% assign docker-compose-repo-link = "https://github.com/thingsboard/" %}
8890

8991
{% if docsPrefix == "pe/" %}

_includes/docker-upgrade-instructions.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@
3838
{%- assign prev_major = prev_parts[0] -%}
3939
{%- assign prev_minor = prev_parts[1] -%}
4040

41-
{% if patch_status == "true" %}
42-
### Upgrading {{ platform }} to latest {{ base_version }} ({{ current_version }})
41+
{% if include.is_latest_patch == "true" %}
42+
### Upgrading {{ platform }} to latest {{ curr_major }}.{{ curr_minor }}.x ({{ current_version }})
4343
{% else %}
4444
### Upgrading {{ platform }} to {{ current_version }}
4545
{% endif %}
@@ -68,7 +68,7 @@
6868
{% capture difference %}
6969
**NOTE:**
7070
{% if curr_major > "4" or (curr_major == "4" and curr_minor >= "2") %}
71-
These upgrade steps are applicable for ThingsBoard version {{ prev_version }}{% if patch_status == "true" %} or any {{ base_version }} patch{% endif %}.
71+
{% if include.is_latest_patch == "true" %}{% if prev_version contains ".x" %}{% assign prev_version_plus = prev_version | replace: ".x", "+" %}{% else %}{% assign prev_version_plus = prev_version | append: "+" %}{% endif %}These upgrade steps are applicable for ThingsBoard version {{ prev_version_plus }}.{% else %}These upgrade steps are applicable for ThingsBoard version {{ prev_version }}{% if patch_status == "true" %} or any {{ base_version }} patch{% endif %}.{% endif %}
7272
In order to upgrade to {{ current_version_with_platform | upcase }} you need to [**upgrade to {{ prev_version }} first**]({{ prev_version_href }}).
7373
{% else %}
7474
These upgrade steps are applicable for ThingsBoard version {{ prev_version_label }}{% if applicable_versions %}{% assign versions = applicable_versions | split: "," %}{% for v in versions %} and ThingsBoard version {{ v | strip }}{% endfor %}{% endif %}.
@@ -84,6 +84,8 @@ In order to upgrade to {{ current_version_with_platform | upcase }} you need to
8484
{% include templates/info-banner.md content=difference %}
8585
{% endif %}
8686

87+
{% include templates/install/upgrade-version-warning.md version=include.raw_version known_vulnerabilities=include.known_vulnerabilities %}
88+
8789
{%- if curr_major_n > 4 -%}
8890
{%- if docsPrefix == "pe/" -%}
8991
{% include templates/install/pe-tb-products-upgrade-compatibility.md %}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{% if include.known_vulnerabilities == "true" %}
2+
{% capture vuln_warning %}
3+
This version has known security vulnerabilities that are fixed in newer releases. We recommend upgrading to the latest patch version instead.
4+
{% endcapture %}
5+
{% include templates/warn-banner.md content=vuln_warning %}
6+
{% endif %}
7+
{% if include.version == "4.3.1" or include.version == "4.2.2" %}
8+
{% capture angular_warning %}
9+
This release includes a framework upgrade (Angular 18 → 20). The core platform remains fully backward compatible and no upgrade scripts are required. However, **custom UI code** (widgets or custom CSS) that relies on internal component structure or CSS variable names **may break**. This can affect up to ~1% of users with heavy customizations. We recommend testing custom UI in a staging environment before upgrading.
10+
{% endcapture %}
11+
{% include templates/warn-banner.md content=angular_warning %}
12+
{% endif %}

_includes/ubuntu-upgrade-instructions.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@
4141
{%- assign prev_major = prev_parts[0] -%}
4242
{%- assign prev_minor = prev_parts[1] -%}
4343

44-
{% if patch_status == "true" %}
45-
### Upgrading {{ platform }} to latest {{ base_version }} ({{ current_version }})
44+
{% if include.is_latest_patch == "true" %}
45+
### Upgrading {{ platform }} to latest {{ curr_major }}.{{ curr_minor }}.x ({{ current_version }})
4646
{% else %}
4747
### Upgrading {{ platform }} to {{ current_version }}
4848
{% endif %}
@@ -71,7 +71,7 @@
7171
{% capture difference %}
7272
**NOTE:**
7373
{% if curr_major > "4" or (curr_major == "4" and curr_minor >= "2") %}
74-
These upgrade steps are applicable for ThingsBoard version {{ prev_version }}{% if patch_status == "true" %} or any {{ base_version }} patch{% endif %}.
74+
{% if include.is_latest_patch == "true" %}{% if prev_version contains ".x" %}{% assign prev_version_plus = prev_version | replace: ".x", "+" %}{% else %}{% assign prev_version_plus = prev_version | append: "+" %}{% endif %}These upgrade steps are applicable for ThingsBoard version {{ prev_version_plus }}.{% else %}These upgrade steps are applicable for ThingsBoard version {{ prev_version }}{% if patch_status == "true" %} or any {{ base_version }} patch{% endif %}.{% endif %}
7575
In order to upgrade to {{ current_version_with_platform | upcase }} you need to [**upgrade to {{ prev_version }} first**]({{ prev_version_href }}).
7676
{% else %}
7777
These upgrade steps are applicable for ThingsBoard version {{ prev_version_label }}{% if applicable_versions %}{% assign versions = applicable_versions | split: "," %}{% for v in versions %} and ThingsBoard version {{ v | strip }}{% endfor %}{% endif %}.
@@ -91,6 +91,8 @@ In order to upgrade to {{ current_version_with_platform | upcase }} you need to
9191
{% include templates/info-banner.md content=difference %}
9292
{% endif %}
9393

94+
{% include templates/install/upgrade-version-warning.md version=include.raw_version known_vulnerabilities=include.known_vulnerabilities %}
95+
9496
{%- if curr_major_n > 4 -%}
9597
{%- if docsPrefix == "pe/" -%}
9698
{% include templates/install/pe-tb-products-upgrade-compatibility.md %}

_includes/upgrade-instructions-table.liquid

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@
2828
{% if item[1].vulnerable == 'true' %}
2929
{% continue %}
3030
{% endif %}
31+
{% if item[1].known-vulnerabilities == 'true' %}
32+
{% continue %}
33+
{% endif %}
3134

3235
{%- comment -%}Filter versions based on edition{%- endcomment -%}
3336
{% if docsPrefix == "edge/" or docsPrefix == "pe/edge/" %}
@@ -119,15 +122,24 @@
119122
{%- if docsPrefix == "trendz/" -%}
120123
<div class="releases-table-content-item">Up to v{{ item[1].tbVersion }}</div>
121124
{%- else -%}
125+
{%- if item[1].patch == "true" -%}
126+
{%- if item[1].upgradable-from contains ".x" -%}
127+
{%- assign upgradable_display = item[1].upgradable-from | replace: ".x", "+" -%}
128+
{%- else -%}
129+
{%- assign upgradable_display = item[1].upgradable-from | append: "+" -%}
130+
{%- endif -%}
131+
{%- else -%}
132+
{%- assign upgradable_display = item[1].upgradable-from -%}
133+
{%- endif -%}
122134
<div class="releases-table-content-item">
123135
{% if docsPrefix == "edge/" or docsPrefix == "pe/edge/" %}
124136
{% if item[1].upgradable-from-edge %}
125137
v{{ item[1].upgradable-from-edge }}
126138
{% else %}
127-
v{{ item[1].upgradable-from }}
139+
v{{ upgradable_display }}
128140
{% endif %}
129141
{% else %}
130-
v{{ item[1].upgradable-from }}
142+
v{{ upgradable_display }}
131143
{% endif %}
132144
{%- if docsPrefix == "pe/" -%}PE
133145
{%- elsif docsPrefix == "edge/" -%}Edge

_includes/upgrade-instructions.liquid

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
{% assign family_major = family_parts[0] %}
77
{% assign family_minor = family_parts[1] %}
88

9+
{% assign latest_patch_found = false %}
910
{% for item in upgarde_instructions_data %}
1011
{% if item[1].vulnerable == 'true' %}
1112
{% continue %}
@@ -34,10 +35,15 @@
3435

3536
{% assign base_version = display_version %}
3637
{% assign patch_status = "false" %}
38+
{% assign is_latest_patch = "false" %}
3739

3840
{% if item[1].patch == "true" %}
3941
{% assign patch_status = "true" %}
4042
{% assign base_version = parts[0] | append: "." | append: parts[1] | append: "." | append: parts[2] %}
43+
{% if latest_patch_found == false %}
44+
{% assign is_latest_patch = "true" %}
45+
{% assign latest_patch_found = true %}
46+
{% endif %}
4147
{% endif %}
4248

4349
{% assign prev_version = data.upgradable-from %}
@@ -51,15 +57,15 @@
5157
{% endif %}
5258

5359
{% if os == "windows" %}
54-
{% include windows-upgrade-instructions.md family=family version=display_version patch_status=patch_status base_version=base_version prev_version=display_prev_version x=data.x update_status=data.upgrade zip=data.windows.zip applicable_versions=applicable_versions manual_version_upgrade=data.manual-version-upgrade manual_version_upgrade_label=data.manual-version-upgrade-label %}
60+
{% include windows-upgrade-instructions.md family=family version=display_version patch_status=patch_status base_version=base_version prev_version=display_prev_version x=data.x update_status=data.upgrade zip=data.windows.zip applicable_versions=applicable_versions manual_version_upgrade=data.manual-version-upgrade manual_version_upgrade_label=data.manual-version-upgrade-label known_vulnerabilities=data.known-vulnerabilities raw_version=version is_latest_patch=is_latest_patch %}
5561
{% elsif os == "ubuntu" %}
56-
{% include ubuntu-upgrade-instructions.md family=family version=display_version patch_status=patch_status base_version=base_version prev_version=display_prev_version x=data.x update_status=data.upgrade applicable_versions=applicable_versions manual_version_upgrade=data.manual-version-upgrade manual_version_upgrade_label=data.manual-version-upgrade-label %}
62+
{% include ubuntu-upgrade-instructions.md family=family version=display_version patch_status=patch_status base_version=base_version prev_version=display_prev_version x=data.x update_status=data.upgrade applicable_versions=applicable_versions manual_version_upgrade=data.manual-version-upgrade manual_version_upgrade_label=data.manual-version-upgrade-label known_vulnerabilities=data.known-vulnerabilities raw_version=version is_latest_patch=is_latest_patch %}
5763
{% elsif os == "centos" %}
58-
{% include centos-upgrade-instructions.md family=family version=display_version patch_status=patch_status base_version=base_version prev_version=display_prev_version x=data.x update_status=data.upgrade applicable_versions=applicable_versions manual_version_upgrade=data.manual-version-upgrade manual_version_upgrade_label=data.manual-version-upgrade-label %}
64+
{% include centos-upgrade-instructions.md family=family version=display_version patch_status=patch_status base_version=base_version prev_version=display_prev_version x=data.x update_status=data.upgrade applicable_versions=applicable_versions manual_version_upgrade=data.manual-version-upgrade manual_version_upgrade_label=data.manual-version-upgrade-label known_vulnerabilities=data.known-vulnerabilities raw_version=version is_latest_patch=is_latest_patch %}
5965
{% elsif os == "docker" %}
60-
{% include docker-upgrade-instructions.md family=family version=display_version patch_status=patch_status base_version=base_version prev_version=display_prev_version x=data.x update_status=data.upgrade applicable_versions=applicable_versions %}
66+
{% include docker-upgrade-instructions.md family=family version=display_version patch_status=patch_status base_version=base_version prev_version=display_prev_version x=data.x update_status=data.upgrade applicable_versions=applicable_versions known_vulnerabilities=data.known-vulnerabilities raw_version=version is_latest_patch=is_latest_patch %}
6167
{% elsif os == "docker-compose" %}
62-
{% include docker-compose-upgrade-instructions.md family=family version=display_version patch_status=patch_status base_version=base_version prev_version=display_prev_version x=data.x update_status=data.upgrade applicable_versions=applicable_versions %}
68+
{% include docker-compose-upgrade-instructions.md family=family version=display_version patch_status=patch_status base_version=base_version prev_version=display_prev_version x=data.x update_status=data.upgrade applicable_versions=applicable_versions known_vulnerabilities=data.known-vulnerabilities raw_version=version is_latest_patch=is_latest_patch %}
6369
{% endif %}
6470
{% endif %}
6571

_includes/windows-upgrade-instructions.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@
4242
{%- assign prev_major = prev_parts[0] -%}
4343
{%- assign prev_minor = prev_parts[1] -%}
4444

45-
{% if patch_status == "true" %}
46-
### Upgrading {{ platform }} to latest {{ base_version }} ({{ current_version }})
45+
{% if include.is_latest_patch == "true" %}
46+
### Upgrading {{ platform }} to latest {{ curr_major }}.{{ curr_minor }}.x ({{ current_version }})
4747
{% else %}
4848
### Upgrading {{ platform }} to {{ current_version }}
4949
{% endif %}
@@ -72,7 +72,7 @@
7272
{% capture difference %}
7373
**NOTE:**
7474
{% if curr_major > "4" or (curr_major == "4" and curr_minor >= "2") %}
75-
These upgrade steps are applicable for ThingsBoard version {{ prev_version }}{% if patch_status == "true" %} or any {{ base_version }} patch{% endif %}.
75+
{% if include.is_latest_patch == "true" %}{% if prev_version contains ".x" %}{% assign prev_version_plus = prev_version | replace: ".x", "+" %}{% else %}{% assign prev_version_plus = prev_version | append: "+" %}{% endif %}These upgrade steps are applicable for ThingsBoard version {{ prev_version_plus }}.{% else %}These upgrade steps are applicable for ThingsBoard version {{ prev_version }}{% if patch_status == "true" %} or any {{ base_version }} patch{% endif %}.{% endif %}
7676
In order to upgrade to {{ current_version_with_platform | upcase }} you need to [**upgrade to {{ prev_version }} first**]({{ prev_version_href }}).
7777
{% else %}
7878
These upgrade steps are applicable for ThingsBoard version {{ prev_version_label }}{% if applicable_versions %}{% assign versions = applicable_versions | split: "," %}{% for v in versions %} and ThingsBoard version {{ v | strip }}{% endfor %}{% endif %}.
@@ -88,6 +88,8 @@ In order to upgrade to {{ current_version_with_platform | upcase }} you need to
8888
{% include templates/info-banner.md content=difference %}
8989
{% endif %}
9090

91+
{% include templates/install/upgrade-version-warning.md version=include.raw_version known_vulnerabilities=include.known_vulnerabilities %}
92+
9193
{%- if curr_major_n > 4 -%}
9294
{%- if docsPrefix == "pe/" -%}
9395
{% include templates/install/pe-tb-products-upgrade-compatibility.md %}

0 commit comments

Comments
 (0)