diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md
index b47972202..59a71491a 100644
--- a/CHANGELOG_LATEST.md
+++ b/CHANGELOG_LATEST.md
@@ -1,3 +1,9 @@
# Changelog
For more details go to [emsesp.org](https://emsesp.org/).
+
+## [3.8.5] 22 September 2026
+
+## Added
+
+- Change webUI message when upgrading to a major version of the firmware, in preparation for the upcoming 3.9.0 release.
\ No newline at end of file
diff --git a/interface/src/app/status/Version.tsx b/interface/src/app/status/Version.tsx
index a3326856b..d0cf4782e 100644
--- a/interface/src/app/status/Version.tsx
+++ b/interface/src/app/status/Version.tsx
@@ -316,16 +316,12 @@ const InstallDialog = memo(
)}
{upgradeImportantMessageType === 2 && LL.UPGRADE_IMPORTANT_MESSAGES_2()}
- {upgradeImportantMessageType === 1 && (
- <>
- {LL.UPGRADE_IMPORTANT_MESSAGES_1()}
+ {upgradeImportantMessageType === 1 && LL.UPGRADE_IMPORTANT_MESSAGES_1()}
{LL.DOWNLOAD_SYSTEM_BACKUP()}
- >
- )}
factory reset->import
+// 2 is a major upgrade
function upgradeImportantMessages(version: string) {
- // 0 is do nothing
- // 1 means 3.9 and factory reset required
- // 2 means a major version upgrade
let upgradeImportantMessageType_n = 0;
- // see if its a filename with a .bin extension
- if (version.endsWith('.bin')) {
- upgradeImportantMessageType_n = 1; // 1 means 3.9 and factory reset required
- } else if (version.endsWith('.md')) {
- upgradeImportantMessageType_n = 0;
+ // check file extensions first
+ if (version.endsWith('.md5') || version.endsWith('.json')) {
+ upgradeImportantMessageType_n = 0; // digest / backup restore: no upgrade warning
+ } else if (version.endsWith('.bin')) {
+ // extract the version number from the filename and if its going from 3.8.x to 3.9.x, then set upgradeImportantMessageType_n to 1
+ const versionNumber = version.split('.');
+ if (versionNumber[0] === '3' && versionNumber[1] === '8') {
+ upgradeImportantMessageType_n = 2; // major upgrade
+ }
} else {
- // this is a version string like "3.9.0"
- upgradeImportantMessageType_n = 2;
+ // the parameter is a version string like "3.9.0"
+ upgradeImportantMessageType_n = 2; // major upgrade
}
- console.log('upgradeImportantMessageType: ' + upgradeImportantMessageType_n);
+ console.log(
+ 'upgradeImportantMessageType: version=' +
+ version +
+ ' type=' +
+ upgradeImportantMessageType_n
+ );
return { upgradeImportantMessageType: upgradeImportantMessageType_n };
}
@@ -424,15 +433,15 @@ function check_upgrade(version: string) {
console.log(
'Upgrade this version (' +
- THIS_VERSION +
- ') to dev (' +
- dev_version +
- ') is ' +
- (DEV_VERSION_IS_UPGRADEABLE ? 'YES' : 'NO') +
- ' and to stable (' +
- stable_version +
- ') is ' +
- (STABLE_VERSION_IS_UPGRADEABLE ? 'YES' : 'NO')
+ THIS_VERSION +
+ ') to dev (' +
+ dev_version +
+ ') is ' +
+ (DEV_VERSION_IS_UPGRADEABLE ? 'YES' : 'NO') +
+ ' and to stable (' +
+ stable_version +
+ ') is ' +
+ (STABLE_VERSION_IS_UPGRADEABLE ? 'YES' : 'NO')
);
data = {
emsesp_version: THIS_VERSION,
diff --git a/src/core/system.cpp b/src/core/system.cpp
index eceff6e12..15908e121 100644
--- a/src/core/system.cpp
+++ b/src/core/system.cpp
@@ -954,6 +954,10 @@ void System::network_init() {
#else
eth_present_ = ETH.begin(type, phy_addr, mdc, mdio, power, clock_mode);
#endif
+ // show error if Eth is present but fails to start, so it can be automatically detected by the new installers
+ if (!eth_present_) {
+ LOG_ERROR("Failed to start Ethernet");
+ }
#endif
}
diff --git a/src/emsesp_version.h b/src/emsesp_version.h
index ef95d00d0..f9c215fa2 100644
--- a/src/emsesp_version.h
+++ b/src/emsesp_version.h
@@ -1 +1 @@
-#define EMSESP_APP_VERSION "3.8.4"
+#define EMSESP_APP_VERSION "3.8.5"